AnalogConverter.TcPOU 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4024.12">
  3. <POU Name="AnalogConverter" Id="{fa860dda-8708-450a-850d-194662f00558}" SpecialFunc="None">
  4. <Declaration><![CDATA[FUNCTION_BLOCK AnalogConverter
  5. VAR_INPUT
  6. AnalogRdValue_In_Int : INT;//实际通道值
  7. AnalogResMax_In_Int : INT;//通道最大值
  8. AnalogResMin_In_Int : INT;//通道最小值
  9. AnalogPhyMax_In_Real : REAL;//工程量最大值
  10. AnalogPhyMin_In_Real : REAL;//工程量最小值
  11. AnalogRdOffset_In_Real : REAL;//偏移值
  12. END_VAR
  13. VAR_OUTPUT
  14. ActRdValue_Out_Real : REAL;
  15. END_VAR
  16. VAR
  17. END_VAR]]></Declaration>
  18. <Implementation>
  19. <ST><![CDATA[
  20. //模拟量输入下限
  21. IF AnalogRdValue_In_Int < AnalogResMin_In_Int THEN
  22. AnalogRdValue_In_Int := AnalogResMin_In_Int ;
  23. END_IF
  24. //模拟量输入上限
  25. IF AnalogRdValue_In_Int > AnalogResMax_In_Int THEN
  26. AnalogRdValue_In_Int := AnalogResMax_In_Int ;
  27. END_IF
  28. ActRdValue_Out_Real :=
  29. ( INT_TO_REAL (AnalogRdValue_In_Int) - INT_TO_REAL (AnalogResMin_In_Int) ) / ( INT_TO_REAL (AnalogResMax_In_Int ) - INT_TO_REAL (AnalogResMin_In_Int) ) *
  30. ( AnalogPhyMax_In_Real - AnalogPhyMin_In_Real ) + AnalogPhyMin_In_Real + AnalogRdOffset_In_Real ;
  31. ]]></ST>
  32. </Implementation>
  33. <LineIds Name="AnalogConverter">
  34. <LineId Id="68" Count="0" />
  35. <LineId Id="96" Count="6" />
  36. <LineId Id="67" Count="0" />
  37. <LineId Id="104" Count="2" />
  38. <LineId Id="103" Count="0" />
  39. <LineId Id="9" Count="0" />
  40. </LineIds>
  41. </POU>
  42. </TcPlcObject>