etherlab/plc_cia402node.c
changeset 2084 579af800b359
parent 2082 caae3ad2d03b
child 2088 c0952932d74b
equal deleted inserted replaced
2083:0f7ab170c862 2084:579af800b359
   102 	}
   102 	}
   103 	if (__CIA402Node_%(location)s.state == __Unknown) {
   103 	if (__CIA402Node_%(location)s.state == __Unknown) {
   104 		return;
   104 		return;
   105 	}
   105 	}
   106 
   106 
       
   107 	// Default variables retrieve
   107 	__CIA402Node_%(location)s.axis->PowerFeedback = __CIA402Node_%(location)s.state == __OperationEnabled;
   108 	__CIA402Node_%(location)s.axis->PowerFeedback = __CIA402Node_%(location)s.state == __OperationEnabled;
   108 	__CIA402Node_%(location)s.axis->ActualPosition = (IEC_LREAL)(*(__CIA402Node_%(location)s.ActualPosition)) * __CIA402Node_%(location)s.axis->RatioDenominator / __CIA402Node_%(location)s.axis->RatioNumerator;
   109 	__CIA402Node_%(location)s.axis->ActualPosition = (IEC_LREAL)(*(__CIA402Node_%(location)s.ActualPosition)) * __CIA402Node_%(location)s.axis->RatioDenominator / __CIA402Node_%(location)s.axis->RatioNumerator;
       
   110 
       
   111 	// Extra variables retrieve
       
   112 %(extra_variables_retrieve)s
   109 }
   113 }
   110 
   114 
   111 void __publish_%(location)s()
   115 void __publish_%(location)s()
   112 {
   116 {
   113 	IEC_BOOL power = ((*(__CIA402Node_%(location)s.StatusWord) & __PowerMask) > 0) && __CIA402Node_%(location)s.axis->Power;
   117 	IEC_BOOL power = ((*(__CIA402Node_%(location)s.StatusWord) & __PowerMask) > 0) && __CIA402Node_%(location)s.axis->Power;
   133 	    	break;
   137 	    	break;
   134 	    default:
   138 	    default:
   135 	    	break;
   139 	    	break;
   136 	}
   140 	}
   137 
   141 
       
   142 	// Default variables publish
   138 	if (__CIA402Node_%(location)s.axis->CSP && *(__CIA402Node_%(location)s.ModesOfOperationDisplay) == 0x08) {
   143 	if (__CIA402Node_%(location)s.axis->CSP && *(__CIA402Node_%(location)s.ModesOfOperationDisplay) == 0x08) {
   139 		*(__CIA402Node_%(location)s.TargetPosition) = (IEC_DINT)(__CIA402Node_%(location)s.axis->PositionSetPoint * __CIA402Node_%(location)s.axis->RatioNumerator / __CIA402Node_%(location)s.axis->RatioDenominator);
   144 		*(__CIA402Node_%(location)s.TargetPosition) = (IEC_DINT)(__CIA402Node_%(location)s.axis->PositionSetPoint * __CIA402Node_%(location)s.axis->RatioNumerator / __CIA402Node_%(location)s.axis->RatioDenominator);
   140 	}
   145 	}
   141 	else {
   146 	else {
   142 		*(__CIA402Node_%(location)s.TargetPosition) = *(__CIA402Node_%(location)s.ActualPosition);
   147 		*(__CIA402Node_%(location)s.TargetPosition) = *(__CIA402Node_%(location)s.ActualPosition);
   143 	}
   148 	}
       
   149 
       
   150 	// Extra variables publish
       
   151 %(extra_variables_publish)s
   144 }
   152 }