diff -r fc1bc441cf71 -r c317b1aaf920 etherlab/plc_cia402node.c --- a/etherlab/plc_cia402node.c Thu Apr 04 17:50:43 2013 +0900 +++ b/etherlab/plc_cia402node.c Fri Apr 05 00:09:54 2013 +0200 @@ -55,10 +55,8 @@ int __init_%(location)s() { + __FirstTick = 1; %(init_entry_variables)s - *__IW%(location)s_0 = __MK_Alloc_AXIS_REF(); - __CIA402Node_%(location)s.axis = __MK_GetPublic_AXIS_REF(*__IW%(location)s_0); - __CIA402Node_%(location)s.axis->NetworkPosition = %(slave_pos)d; *(__CIA402Node_%(location)s.ModesOfOperation) = 0x08; return 0; } @@ -69,13 +67,15 @@ void __retrieve_%(location)s() { -%(fieldbus_interface_definition)s - IEC_UINT statusword_inactive = *(__CIA402Node_%(location)s.StatusWord) & __InactiveMask; IEC_UINT statusword_active = *(__CIA402Node_%(location)s.StatusWord) & __ActiveMask; if (__FirstTick) { + *__IW%(location)s_0 = __MK_Alloc_AXIS_REF(); + __CIA402Node_%(location)s.axis = __MK_GetPublic_AXIS_REF(*__IW%(location)s_0); + __CIA402Node_%(location)s.axis->NetworkPosition = %(slave_pos)d; %(init_axis_params)s +%(fieldbus_interface_definition)s __FirstTick = 0; }