DataHold.TcPOU 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4024.12">
  3. <POU Name="DataHold" Id="{22ba336d-8164-4b85-a136-eb4e412d61f5}" SpecialFunc="None">
  4. <Declaration><![CDATA[PROGRAM DataHold
  5. VAR
  6. fb1sUPS: FB_S_UPS_BAPI; //FB_S_UPS_BAPI用于CX5230,
  7. // fb1sUPS: FB_S_UPS_CX51x0; //FB_S_UPS_CX51x0用于CX5120
  8. bPowerFailDetect: BOOL;
  9. eState : E_S_UPS_State;
  10. eUpsMode : E_S_UPS_Mode := eSUPS_WrPersistData_Shutdown; (* UPS mode (w/wo writing persistent data, w/wo shutdown) *)
  11. fbWritePersistent : FB_WritePersistentData;
  12. bWritePersistent : BOOL;
  13. END_VAR
  14. ]]></Declaration>
  15. <Implementation>
  16. <ST><![CDATA[(* eUpsMode:
  17. eSUPS_WrPersistData_Shutdown: 写完persistent 数据再关机 QuickShutdown
  18. eSUPS_WrPersistData_NoShutdown: 只写persistent data数据,不关机——储电耗尽非正常关机,可能对操作系统造成破坏,但如果很快供电恢复,可以避免系统重启 (no QuickShutdown)
  19. eSUPS_ImmediateShutdown: 不写数据,直接关机
  20. eSUPS_CheckPowerStatus: 不写数据,也不关机,只监视供电状态,等同于没有UPS的效果
  21. *)
  22. //断电时自动保存
  23. //当bPowerFailDetect为True时,表明检测到了供电故障(断电)
  24. fb1sUPS(sNetID:= ,iPLCPort:= 851,tTimeout:= ,eUpsMode:=eUpsMode , ePersistentMode:= ,tRecoverTime:= ,bPowerFailDetect=>bPowerFailDetect,eState=>,nCapacity=> ,bBusy=> ,bError=> ,nErrID=> );
  25. //受控的数据保存
  26. //bWritePersistent人为触发保存动作,上升沿触发
  27. fbWritePersistent(NETID:= ,PORT:=851 ,START:=bWritePersistent ,TMOUT:=T#1S , MODE:= , BUSY=> ,ERR=> , ERRID=> );
  28. IF fbWritePersistent.BUSY THEN
  29. bWritePersistent:=FALSE;
  30. END_IF]]></ST>
  31. </Implementation>
  32. <LineIds Name="DataHold">
  33. <LineId Id="6" Count="7" />
  34. <LineId Id="49" Count="0" />
  35. <LineId Id="14" Count="0" />
  36. <LineId Id="27" Count="2" />
  37. <LineId Id="50" Count="0" />
  38. <LineId Id="30" Count="0" />
  39. <LineId Id="40" Count="1" />
  40. <LineId Id="5" Count="0" />
  41. </LineIds>
  42. </POU>
  43. </TcPlcObject>