AxisFunction.TcPOU 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4024.12">
  3. <POU Name="AxisFunction" Id="{23fbbc65-50c0-4a15-b3af-7ce3a033266f}" SpecialFunc="None">
  4. <Declaration><![CDATA[FUNCTION_BLOCK AxisFunction
  5. VAR_INPUT
  6. AxisControl :DUT_AxisControl; //命令的触发
  7. END_VAR
  8. VAR_IN_OUT RETAIN
  9. AxisData :DUT_AxisData; //位置/速度数据
  10. END_VAR
  11. VAR_OUTPUT
  12. AxisState :DUT_AxisState; //轴反馈数据状态
  13. END_VAR
  14. VAR
  15. Axis :AXIS_REF;//定义轴
  16. Axis_Power :MC_Power;
  17. Axis_Reset :MC_Reset;
  18. Axis_Jog :MC_Jog;
  19. Axis_Home :MC_Home;
  20. Axis_MoveRelative :MC_MoveRelative;
  21. Axis_MoveVelocity :MC_MoveVelocity;
  22. Axis_MoveAbsolute :MC_MoveAbsolute;
  23. Axis_TorqueControl :MC_TorqueControl;
  24. Axis_Stop :MC_Stop;
  25. AxisActPos :MC_ReadActualPosition;
  26. AxisActVel :MC_ReadActualVelocity;
  27. AxisError :MC_ReadAxisError;
  28. T :ARRAY[0..31]OF TON;
  29. P :ARRAY[0..31]OF BOOL;
  30. RisingEdge :ARRAY[0..31]OF R_TRIG;
  31. MCWritePosBiasPersistent :MC_WriteParameterPersistent;
  32. Istep: INT;
  33. tPos: LREAL;
  34. AxisDisabled: BOOL;
  35. hTorqueControlEx: BOOL;
  36. hStopEx: BOOL;
  37. hMoveRelativeEx: BOOL;
  38. Axis_FinishHoming: MC_FinishHoming;
  39. Axis_StepReferencePulse: MC_StepReferencePulse;
  40. Axis_StepAbsoluteSwitch: MC_StepAbsoluteSwitch;
  41. StepAbsoluteSwitch_Ref_Signal :MC_Ref_Signal_Ref;
  42. mcHomingParameter :MC_HomingParameter;
  43. mcPositiveDirection: MC_Home_Direction;
  44. MCSwitchMode: MC_Switch_Mode;
  45. END_VAR
  46. ]]></Declaration>
  47. <Implementation>
  48. <ST><![CDATA[ //************************************************************************
  49. //Title: Axis Function Blocks
  50. //Version: Ver0.01
  51. //Author: zhangzhiwei
  52. //Modify: Initial Release 2024.11.20
  53. //************************************************************************
  54. //=============================01.Axis Power==============================
  55. Axis_Power.Enable:= ((AxisControl.PcToAxisEnable AND AxisControl.TPMode)OR
  56. (AxisControl.RobotToAxisEnable AND NOT AxisControl.TPMode)) AND
  57. NOT Axis.Status.Error AND NOT Axis.Status.DriveDeviceError;
  58. //=============================02.Axis Jog================================
  59. Axis_Jog.JogForward := AxisControl.TPToAxisJogForward AND
  60. NOT AxisControl.TPToAxisJogBackwards AND
  61. Axis.Status.ControlLoopClosed AND NOT Axis.Status.Error AND
  62. NOT Axis.Status.DriveDeviceError;
  63. Axis_Jog.JogBackwards:= NOT AxisControl.TPToAxisJogForward AND
  64. AxisControl.TPToAxisJogBackwards AND
  65. Axis.Status.ControlLoopClosed AND NOT Axis.Status.Error AND
  66. NOT Axis.Status.DriveDeviceError;
  67. //=============================03.Axis Home===============================
  68. T[0](IN:=(AxisControl.TPMode AND AxisControl.PcToCmdHome) OR
  69. (NOT AxisControl.TPMode AND AxisControl.RobotToCmdHome) AND
  70. NOT Axis.Status.DriveDeviceError AND
  71. Axis.Status.ControlLoopClosed AND Axis.Status.NotMoving,PT:=T#3S);
  72. RisingEdge[0](CLk:=T[0].Q);
  73. IF RisingEdge[0].Q THEN
  74. IF AxisControl.HomeType = 1 THEN
  75. Istep := 100;
  76. END_IF;
  77. IF AxisControl.HomeType= 2 THEN
  78. Istep := 200;
  79. END_IF
  80. END_IF
  81. //=============================04.Axis TroqueControl======================
  82. RisingEdge[1](CLk:=(AxisControl.TPMode AND AxisControl.PcToCmdTroqueControl)OR
  83. (NOT AxisControl.TPMode AND AxisControl.RobotToCmdTroqueControl)OR
  84. (0<Istep AND Istep<900 AND hTorqueControlEx)
  85. AND
  86. NOT Axis.Status.DriveDeviceError AND Axis.Status.ControlLoopClosed
  87. );
  88. Axis_TorqueControl.Execute := RisingEdge[1].Q;
  89. //=============================05.Axis Veliocity==========================
  90. Axis_MoveVelocity.Velocity:=AxisData.vel[AxisData.No];
  91. RisingEdge[2](CLk:=(AxisControl.TPMode AND AxisControl.PcToCmdVeliocity)OR
  92. (NOT AxisControl.TPMode AND AxisControl.RobotToCmdVeliocity) AND
  93. NOT Axis.Status.DriveDeviceError AND
  94. Axis.Status.ControlLoopClosed AND Axis.Status.NotMoving);
  95. Axis_MoveVelocity.Execute := RisingEdge[2].Q;
  96. //=============================06.Axis MoveAbsolute=======================
  97. Axis_MoveAbsolute.Velocity:=AxisData.vel[AxisData.No];
  98. Axis_MoveAbsolute.Position:=AxisData.Pos[AxisData.No]+AxisData.PositionBias;
  99. RisingEdge[3](CLk:=((AxisControl.TPMode AND AxisControl.PcToCmdMoveAbsolute)OR
  100. (NOT AxisControl.TPMode AND AxisControl.RobotToCmdMoveAbsolute )) AND
  101. NOT Axis.Status.DriveDeviceError AND
  102. Axis.Status.ControlLoopClosed AND Axis.Status.NotMoving);
  103. Axis_MoveAbsolute.Execute := RisingEdge[3].Q;
  104. //=============================07.Axis MoveRelative=======================
  105. RisingEdge[4](CLk:=(AxisControl.TPMode AND AxisControl.PcToCmdMoveRelative)OR
  106. (NOT AxisControl.TPMode AND AxisControl.RobotToCmdMoveRelative )OR
  107. (0<Istep AND Istep<900 AND hMoveRelativeEx )
  108. AND NOT Axis.Status.DriveDeviceError AND Axis.Status.ControlLoopClosed);
  109. Axis_MoveRelative.Execute := RisingEdge[4].Q;
  110. //=============================08.Axis Stop===============================
  111. Axis_Stop.Execute:= (AxisControl.TPMode AND AxisControl.PcToCmdStop)OR
  112. (NOT AxisControl.TPMode AND AxisControl.RobotToCmdStop)OR
  113. Axis.Status.Error OR
  114. Axis.Status.DriveDeviceError OR hStopEx;
  115. //=============================09.Axis Reset==============================
  116. Axis_Reset.Execute:= (AxisControl.TPMode AND AxisControl.PcToCmdReset)OR
  117. (NOT AxisControl.TPMode AND AxisControl.RobotToCmdReset);
  118. //=============================10.Axis Statue=============================
  119. AxisState.ErrorID:=AxisError.AxisErrorID;
  120. AxisState.Enabled:=Axis.Status.ControlLoopClosed;
  121. AxisState.Busy:=Axis.Status.Moving;
  122. AxisState.Done:=Axis.Status.StandStill AND Axis.Status.ControlLoopClosed AND
  123. NOT Axis.Status.DriveDeviceError AND NOT Axis.Status.Error AND
  124. Axis.Status.NotMoving;
  125. AxisState.Error:=NOT Axis.Status.DriveDeviceError AND NOT Axis.Status.Error AND
  126. AxisError.Error;
  127. //=============================12.Axis DataSave===========================
  128. T[1](IN:=AxisControl.DataSave AND NOT AxisControl.TPMode AND Axis.Status.ControlLoopClosed
  129. ,PT:=T#3S);
  130. RisingEdge[5](CLk:=T[1].Q);
  131. IF T[1].Q THEN
  132. AxisData.Pos[AxisData.No]:=AxisState.Pos;
  133. AxisData.Vel[AxisData.No]:=AxisState.vel;
  134. END_IF
  135. AxisActPos.Enable:=1;
  136. AxisActVel.Enable:=1;
  137. AxisError.Enable:=1;
  138. //=============================13.Home Mode===================================
  139. T[10](IN:=T[11].Q AND T[13].Q AND T[14].Q AND AxisState.Enabled,PT:=T#10S);
  140. T[11](IN:=ABS( AxisState.Pos-tPos)<=0.001,PT:=T#200MS);
  141. IF T[12].Q THEN
  142. tPos:=AxisState.Pos;
  143. END_IF
  144. T[12](IN:=NOT p[12],PT:=T#200MS);
  145. p[12]:=T[12].Q;
  146. T[13](IN:=ABS(AxisState.vel)<=0.1,PT:=T#200MS);
  147. T[14](IN:=ABS(AxisData.ActTorque-Axis_TorqueControl.Torque*10)<=50,PT:=T#200MS);
  148. T[15](IN:=Axis.Status.Moving,PT:=T#500MS);
  149. T[16](IN:=Axis.Status.NotMoving,PT:=T#500MS);
  150. CASE Istep OF
  151. 100:
  152. Axis_FinishHoming.Execute:=FALSE;
  153. Axis_MoveRelative.Velocity:=10;
  154. Axis_MoveRelative.Distance:=30.0;
  155. hMoveRelativeEx:=TRUE;
  156. IF AxisState.Enabled AND Axis_MoveRelative.Done
  157. THEN
  158. hMoveRelativeEx:=FALSE;
  159. Istep:=101;
  160. END_IF
  161. 101:
  162. Axis_StepAbsoluteSwitch.Execute:=TRUE;
  163. IF Axis_StepAbsoluteSwitch.Done THEN
  164. Istep:=103;
  165. END_IF
  166. 102:
  167. Axis_StepReferencePulse.Execute:=TRUE;
  168. IF Axis_StepReferencePulse.Done THEN
  169. Istep:=103;
  170. END_IF
  171. 103:
  172. Axis_StepAbsoluteSwitch.Execute:=FALSE;
  173. Axis_FinishHoming.Execute:=TRUE;
  174. IF Axis_FinishHoming.Done THEN
  175. Axis_FinishHoming.Execute:=FALSE;
  176. Istep:=999;
  177. END_IF
  178. 200:
  179. Axis_TorqueControl.Torque:=AxisData.hTorque;
  180. Axis_TorqueControl.TorqueRamp:=AxisData.hTorqueRamp;
  181. Axis_TorqueControl.VelocityLimitHigh:=AxisData.hTorqueVelLimitHigh;
  182. Axis_TorqueControl.VelocityLimitLow:=AxisData.hTorqueVelVelocityLimitLow;
  183. hTorqueControlEx:=TRUE;
  184. IF T[15].Q THEN
  185. Istep:=201;
  186. END_IF
  187. 201:
  188. IF T[16].Q AND T[10].Q
  189. THEN
  190. hTorqueControlEx:=FALSE;
  191. hStopEx:= TRUE;
  192. Istep:=202;
  193. END_IF
  194. 202:
  195. hStopEx:= FALSE;
  196. Axis_MoveRelative.Velocity:=10;
  197. Axis_MoveRelative.Distance:=-10.0;
  198. IF Axis_Stop.Done THEN
  199. Istep:=203;
  200. END_IF
  201. 203:
  202. hMoveRelativeEx:=TRUE;
  203. IF AxisState.Enabled AND Axis_MoveRelative.Done
  204. THEN
  205. Istep:=204;
  206. END_IF
  207. 204:
  208. hMoveRelativeEx:=FALSE;
  209. IF AxisState.Enabled AND T[16].Q THEN
  210. Istep:=205;
  211. END_IF
  212. 205:
  213. AxisData.PositionBias:=AxisActPos.Position;
  214. IF AxisData.PositionBias=AxisActPos.Position THEN
  215. Istep:=206;
  216. END_IF
  217. //Istep:=206;
  218. 206:
  219. IF AxisState.Enabled THEN
  220. Istep:=999;
  221. END_IF
  222. END_CASE
  223. IF Istep=0 OR Istep=999 OR (Istep<0 AND Istep >999 )
  224. THEN
  225. hMoveRelativeEx:=FALSE;
  226. hTorqueControlEx:=FALSE;
  227. hStopEx:= FALSE;
  228. Axis_StepAbsoluteSwitch.Execute:=FALSE;
  229. Axis_StepReferencePulse.Execute:=FALSE;
  230. Axis_FinishHoming.Execute:=FALSE;
  231. END_IF
  232. //=============================14.Axis Execute============================
  233. AxisState.vel:=AxisActVel.ActualVelocity;
  234. AxisState.Pos:=AxisActPos.Position-AxisData.PositionBias;
  235. //AxisState.Pos:=AxisActPos.Position;
  236. Axis.ReadStatus();
  237. Axis_Power(Axis:=Axis,Enable:= , Enable_Positive:=TRUE,Enable_Negative :=TRUE,Override:=100.0, Status=>,);
  238. Axis_Jog(Axis:=Axis,JogForward :=, JogBackwards :=,Velocity :=AxisData.Vel[31],Acceleration :=,Deceleration :=,Jerk :=,Mode :=MC_JOGMODE_CONTINOUS,Done=>,Busy =>,Active=>,CommandAborted=>,Error=>,ErrorID=>);
  239. Axis_Home(Axis:=Axis, Execute:= ,Position:=0-AxisState.Pos,HomingMode:= ,BufferMode:= , Options:= ,bCalibrationCam:= ,Done=> , Busy=>, Active=> ,CommandAborted=> ,Error=> , ErrorID=> );
  240. Axis_TorqueControl(Axis:=Axis,Execute:= , ContinuousUpdate:= , Relative:= , Torque:= , TorqueRamp:= , VelocityLimitHigh:= , VelocityLimitLow:= , BufferMode:= , Options:= , InTorque=> , Busy=> ,Active=> , CommandAborted=> , Error=> , ErrorId=> );
  241. Axis_MoveVelocity(Axis:=Axis,Execute:=,Velocity :=,Acceleration :=,Deceleration :=,Jerk:=,Direction:=,BufferMode:=,Options:=,InVelocity =>,Busy =>,Active =>,CommandAborted=>,Error=>, ErrorID=>);
  242. Axis_MoveRelative(Axis:=Axis ,Execute:=, Distance:=, Velocity:=, Acceleration:=, Deceleration:=, Jerk:=, BufferMode:=, Options:=, Done=>,Busy=>,Active=>,CommandAborted=>,Error=>,ErrorID=>);
  243. Axis_Stop( Axis:=Axis, Execute:= , Deceleration:= , Jerk:= ,Options:= , Done=> ,Busy=> ,Active=> ,CommandAborted=> ,Error=> , ErrorID=> );
  244. Axis_Reset(Axis:=Axis, Execute:=,Done=>,Busy=>,Error=>,ErrorID=>);
  245. Axis_MoveAbsolute( Axis:=Axis,Execute:=,Position:=,Velocity:=,Acceleration:=,Deceleration:=,Jerk:=,BufferMode:=,Options:=,Done=>,Busy=>,Active=>,CommandAborted=>,Error =>, ErrorID=>);
  246. AxisActPos(Axis:=Axis ,Enable:= , Valid=> , Busy=> , Error=> , ErrorID=> , Position=> );
  247. AxisActVel(Axis:=Axis , Enable:= , Valid=> , Busy=> , Error=> , ErrorID=> , ActualVelocity=>AxisState.vel );
  248. AxisError(Axis:= Axis,Enable:= , Valid=> ,Busy=> ,Error=> ,ErrorID=> ,AxisErrorID=> );
  249. MCWritePosBiasPersistent(Axis:=Axis, Execute:= , ParameterNumber:=MC_AxisParameter.AxisEncoderOffset,Value:=AxisData.PositionBias,Done=> , Busy=> , Error=> , ErrorID=> );
  250. Axis_StepAbsoluteSwitch.ReferenceSignal.Level:=AxisControl.HomeSW;
  251. Axis_StepAbsoluteSwitch.Options.DisableDriveAccess:=TRUE;
  252. Axis_StepReferencePulse.Options.DisableDriveAccess:=TRUE;
  253. Axis_FinishHoming.Options.DisableDriveAccess:=TRUE;
  254. Axis_StepAbsoluteSwitch(
  255. Axis:=Axis ,
  256. Parameter:=mcHomingParameter ,
  257. Execute:= ,
  258. Direction:=mcPositiveDirection ,
  259. SwitchMode:= MCSwitchMode,
  260. ReferenceSignal:= ,
  261. Velocity:=50 ,
  262. Acceleration:= ,
  263. Deceleration:= ,
  264. Jerk:= ,
  265. SetPosition:= ,
  266. TimeLimit:= ,
  267. DistanceLimit:= ,
  268. TorqueLimit:=100 ,
  269. PositiveLimitSwitch:= ,
  270. NegativeLimitSwitch:= ,
  271. BufferMode:= ,
  272. Options:= ,
  273. Done=> ,
  274. Busy=> ,
  275. Active=> ,
  276. CommandAborted=> ,
  277. Error=> ,
  278. ErrorID=> );
  279. Axis_StepReferencePulse(
  280. Axis:=Axis ,
  281. Parameter:=mcHomingParameter ,
  282. Execute:= ,
  283. Direction:=mcPositiveDirection ,
  284. ReferenceSignal:= ,
  285. Velocity:=100 ,
  286. Acceleration:= ,
  287. Deceleration:= ,
  288. Jerk:= ,
  289. SetPosition:= ,
  290. TimeLimit:= ,
  291. DistanceLimit:= ,
  292. TorqueLimit:=100 ,
  293. BufferMode:= ,
  294. Options:= ,
  295. Done=> ,
  296. Busy=> ,
  297. Active=> ,
  298. CommandAborted=> ,
  299. Error=> ,
  300. ErrorID=> );
  301. Axis_FinishHoming(
  302. Axis:=Axis ,
  303. Parameter:=mcHomingParameter ,
  304. Execute:= ,
  305. Distance:=0-AxisActPos.Position ,
  306. Velocity:=100 ,
  307. Acceleration:= ,
  308. Deceleration:= ,
  309. Jerk:= ,
  310. BufferMode:= ,
  311. Options:= ,
  312. Done=> ,
  313. Busy=> ,
  314. CommandAborted=> ,
  315. Error=> ,
  316. ErrorID=> );
  317. ]]></ST>
  318. </Implementation>
  319. <LineIds Name="AxisFunction">
  320. <LineId Id="4143" Count="5" />
  321. <LineId Id="4366" Count="0" />
  322. <LineId Id="4365" Count="0" />
  323. <LineId Id="4150" Count="0" />
  324. <LineId Id="4152" Count="4" />
  325. <LineId Id="4158" Count="7" />
  326. <LineId Id="4167" Count="1" />
  327. <LineId Id="4170" Count="9" />
  328. <LineId Id="4183" Count="3" />
  329. <LineId Id="4371" Count="0" />
  330. <LineId Id="4647" Count="1" />
  331. <LineId Id="4718" Count="0" />
  332. <LineId Id="4717" Count="0" />
  333. <LineId Id="4716" Count="0" />
  334. <LineId Id="4711" Count="0" />
  335. <LineId Id="4196" Count="0" />
  336. <LineId Id="4719" Count="0" />
  337. <LineId Id="4197" Count="0" />
  338. <LineId Id="4199" Count="7" />
  339. <LineId Id="4208" Count="8" />
  340. <LineId Id="4652" Count="0" />
  341. <LineId Id="4220" Count="1" />
  342. <LineId Id="4729" Count="0" />
  343. <LineId Id="4727" Count="0" />
  344. <LineId Id="4655" Count="0" />
  345. <LineId Id="4224" Count="1" />
  346. <LineId Id="4662" Count="0" />
  347. <LineId Id="4708" Count="2" />
  348. <LineId Id="4725" Count="0" />
  349. <LineId Id="4722" Count="2" />
  350. <LineId Id="4233" Count="0" />
  351. <LineId Id="4235" Count="3" />
  352. <LineId Id="4240" Count="8" />
  353. <LineId Id="4251" Count="0" />
  354. <LineId Id="4253" Count="8" />
  355. <LineId Id="4263" Count="0" />
  356. <LineId Id="4299" Count="1" />
  357. <LineId Id="4634" Count="0" />
  358. <LineId Id="4768" Count="0" />
  359. <LineId Id="4767" Count="0" />
  360. <LineId Id="4763" Count="3" />
  361. <LineId Id="4758" Count="2" />
  362. <LineId Id="4769" Count="0" />
  363. <LineId Id="4761" Count="0" />
  364. <LineId Id="4757" Count="0" />
  365. <LineId Id="4641" Count="1" />
  366. <LineId Id="4638" Count="0" />
  367. <LineId Id="4301" Count="0" />
  368. <LineId Id="5019" Count="0" />
  369. <LineId Id="5037" Count="0" />
  370. <LineId Id="5021" Count="1" />
  371. <LineId Id="5025" Count="0" />
  372. <LineId Id="5032" Count="1" />
  373. <LineId Id="5035" Count="0" />
  374. <LineId Id="5034" Count="0" />
  375. <LineId Id="5018" Count="0" />
  376. <LineId Id="4302" Count="0" />
  377. <LineId Id="4305" Count="0" />
  378. <LineId Id="4349" Count="0" />
  379. <LineId Id="4945" Count="1" />
  380. <LineId Id="4940" Count="1" />
  381. <LineId Id="4947" Count="2" />
  382. <LineId Id="4942" Count="1" />
  383. <LineId Id="4950" Count="0" />
  384. <LineId Id="5036" Count="0" />
  385. <LineId Id="4954" Count="1" />
  386. <LineId Id="4959" Count="0" />
  387. <LineId Id="4956" Count="0" />
  388. <LineId Id="4952" Count="0" />
  389. <LineId Id="4944" Count="0" />
  390. <LineId Id="4306" Count="0" />
  391. <LineId Id="4308" Count="3" />
  392. <LineId Id="4720" Count="0" />
  393. <LineId Id="4313" Count="2" />
  394. <LineId Id="5093" Count="5" />
  395. <LineId Id="4319" Count="0" />
  396. <LineId Id="4665" Count="0" />
  397. <LineId Id="4745" Count="0" />
  398. <LineId Id="4753" Count="1" />
  399. <LineId Id="4667" Count="2" />
  400. <LineId Id="4323" Count="0" />
  401. <LineId Id="4326" Count="1" />
  402. <LineId Id="4329" Count="0" />
  403. <LineId Id="4331" Count="0" />
  404. <LineId Id="4330" Count="0" />
  405. <LineId Id="4332" Count="0" />
  406. <LineId Id="4771" Count="0" />
  407. <LineId Id="4334" Count="0" />
  408. <LineId Id="4336" Count="2" />
  409. <LineId Id="4742" Count="2" />
  410. <LineId Id="4342" Count="0" />
  411. <LineId Id="4741" Count="0" />
  412. <LineId Id="4343" Count="0" />
  413. <LineId Id="4346" Count="2" />
  414. <LineId Id="4303" Count="0" />
  415. <LineId Id="4264" Count="0" />
  416. <LineId Id="4732" Count="0" />
  417. <LineId Id="4734" Count="2" />
  418. <LineId Id="4961" Count="1" />
  419. <LineId Id="4960" Count="0" />
  420. <LineId Id="4733" Count="0" />
  421. <LineId Id="4265" Count="0" />
  422. <LineId Id="4738" Count="2" />
  423. <LineId Id="4748" Count="0" />
  424. <LineId Id="4297" Count="0" />
  425. <LineId Id="4538" Count="0" />
  426. <LineId Id="4389" Count="0" />
  427. <LineId Id="4539" Count="0" />
  428. <LineId Id="4396" Count="0" />
  429. <LineId Id="4540" Count="0" />
  430. <LineId Id="4411" Count="0" />
  431. <LineId Id="4541" Count="0" />
  432. <LineId Id="4424" Count="0" />
  433. <LineId Id="4542" Count="0" />
  434. <LineId Id="4440" Count="0" />
  435. <LineId Id="4543" Count="0" />
  436. <LineId Id="4455" Count="0" />
  437. <LineId Id="4544" Count="0" />
  438. <LineId Id="4470" Count="0" />
  439. <LineId Id="4545" Count="0" />
  440. <LineId Id="4484" Count="0" />
  441. <LineId Id="4546" Count="0" />
  442. <LineId Id="4490" Count="0" />
  443. <LineId Id="4547" Count="0" />
  444. <LineId Id="4505" Count="0" />
  445. <LineId Id="4548" Count="0" />
  446. <LineId Id="4516" Count="0" />
  447. <LineId Id="4549" Count="0" />
  448. <LineId Id="4523" Count="0" />
  449. <LineId Id="4550" Count="0" />
  450. <LineId Id="4530" Count="0" />
  451. <LineId Id="4515" Count="0" />
  452. <LineId Id="5010" Count="1" />
  453. <LineId Id="5013" Count="1" />
  454. <LineId Id="5012" Count="0" />
  455. <LineId Id="4911" Count="23" />
  456. <LineId Id="4277" Count="0" />
  457. <LineId Id="4827" Count="1" />
  458. <LineId Id="4831" Count="0" />
  459. <LineId Id="4895" Count="0" />
  460. <LineId Id="4894" Count="0" />
  461. <LineId Id="4893" Count="0" />
  462. <LineId Id="4892" Count="0" />
  463. <LineId Id="4891" Count="0" />
  464. <LineId Id="4890" Count="0" />
  465. <LineId Id="4838" Count="1" />
  466. <LineId Id="4877" Count="12" />
  467. <LineId Id="4280" Count="0" />
  468. <LineId Id="4354" Count="0" />
  469. <LineId Id="4282" Count="3" />
  470. <LineId Id="4896" Count="14" />
  471. <LineId Id="4286" Count="8" />
  472. <LineId Id="633" Count="0" />
  473. </LineIds>
  474. </POU>
  475. </TcPlcObject>