Advertisement
Guest User

Untitled

a guest
Mar 16th, 2015
341
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.62 KB | None | 0 0
  1. //Инициализация портов
  2. //Ведущий - Внутренняя сеть RS485
  3. ComConn2(
  4. enable:= TRUE,
  5. PortNum:= 2,
  6. PortBaudrate:= 115200, //9600
  7. PortParity:= 0,
  8. PortStopBits:= 1,
  9. PortByteSize:= 8,
  10. Handle=> ComHandle2,
  11. Done=> ,
  12. ErrCode=> );
  13.  
  14. //Ведомый - Связь с ПК по RS232/RS485
  15. ComConn3(
  16. enable:= TRUE,
  17. PortNum:= 3,
  18. PortBaudrate:= 9600,
  19. PortParity:= 0,
  20. PortStopBits:= 1,
  21. PortByteSize:= 8,
  22. Handle=> ComHandle3,
  23. Done=> ,
  24. ErrCode=> );
  25.  
  26. //Ведомый - Связь с СП270
  27. ComConn4(
  28. enable:= TRUE,
  29. PortNum:= 4,
  30. PortBaudrate:= 115200,
  31. PortParity:= 0,
  32. PortStopBits:= 1,
  33. PortByteSize:= 8,
  34. Handle=> ComHandle5,
  35. Done=> ,
  36. ErrCode=> );
  37.  
  38. //Ведущий - Внутренняя сеть RS232/RS485
  39. ComConn5(
  40. enable:= TRUE,
  41. PortNum:= 5,
  42. PortBaudrate:= 9600,
  43. PortParity:= 0,
  44. PortStopBits:= 1,
  45. PortByteSize:= 8,
  46. Handle=> ComHandle4,
  47. Done=> ,
  48. ErrCode=> );
  49.  
  50. //Триггер инициализации модулей ввода
  51. TP1(IN:= NOT TP1.Q, PT:=T#50MS, Q=> , ET=> );
  52.  
  53. OnD(CLK:= MB_Buffer[1].0);
  54. IF OnD.Q THEN M:=H; END_IF;
  55. //SW1:=MB_Buffer[3].0;
  56. SW2:=MB_Buffer[3].1;
  57. SW3:=MB_Buffer[3].2;
  58. SW4:=MB_Buffer[3].3;
  59. IF (H>=M) AND MB_Buffer[1].0 THEN SW1:=TRUE; ELSE SW1:=FALSE; END_IF;
  60. CASE Master1 OF
  61. //Модуль дискретного вывода от МК110-8Д.4Р
  62. 0: MK110_4R1(
  63. Handle:= ComHandle2,
  64. Enabl:= ComConn2.Done AND (NOT TP1.Q),
  65. Modd:= ,
  66. Addr:= 15, //17
  67. TimeOut:= T#50MS,
  68. ErCL:= 3,
  69. out1:=SW1,
  70. out2:=SW2,
  71. out3:=SW3,
  72. out4:=SW4,
  73. wErrCode=> Err,
  74. done=> Cpmlt);
  75.  
  76. IF Cpmlt THEN
  77. MB_Buffer[2]:=Err;
  78. Master1:= 1;
  79. IF Err=0 THEN ModuleErr:= FALSE;
  80. ELSE ModuleErr:= TRUE;
  81. END_IF;
  82. END_IF;
  83.  
  84. //Модуль дискретного ввода от МК110-8Д.4Р
  85. 1: MV110_16D3(
  86. Handle:= ComHandle2,
  87. Enabl:= ComConn2.Done AND (NOT TP1.Q),
  88. Modd:= ,
  89. Addr:= 15, //17
  90. TimeOut:= T#50MS,
  91. ErCL:= 3,
  92. inp => ,
  93. wErrCode=> Err,
  94. done=> Cpmlt);
  95.  
  96. IF Cpmlt THEN Master1:= 3;
  97. MB_Buffer[0]:=Err;
  98. IF Err=0 THEN MB_Buffer[1]:=MV110_16D3.inp;
  99. ELSE ModuleErr:= TRUE;
  100. END_IF;
  101. END_IF;
  102.  
  103. 3: MV110_8a1(
  104. Handle:= ComHandle2,
  105. Enabl:= ComConn2.Done AND (NOT TP1.Q),
  106. Modd:= ,
  107. Addr:= 16,
  108. TimeOut:= T#50MS,
  109. ErCL:= 5,
  110. inp=> ,
  111. inpExcSCode=> ,
  112. wErrCode=> Err3,
  113. done=> Cpmlt);
  114.  
  115. IF Cpmlt THEN Master1:= 0;
  116. Channal:=Channal + 1;
  117. MB_Buffer[4]:=Err3;
  118. IF Err3=0 THEN
  119. FOR J:=1 TO 8 BY 1 DO
  120. MB_Buffer[4+J]:=MV110_8a1.inpExcSCode[J];
  121. MB_Buffer[12+J]:=REAL_TO_WORD(MV110_8a1.inp[J]);
  122. END_FOR;
  123. L:= MV110_8a1.inp[2];
  124. a:= MV110_8a1.inp[4];
  125. H:=L*SIN(a);
  126. ELSE ModuleErr:= TRUE;
  127. END_IF;
  128. END_IF;
  129.  
  130. END_CASE;
  131.  
  132. //Обмен через ведомые порты
  133. IF ComConn3.Done THEN (*Удачно проинициализировали*)
  134. MB_func(
  135. ComHandle:=ComHandle3, (*номер COM-порта*)
  136. DevAddr := 8,
  137. pBuffer := ADR(MB_Buffer),
  138. BufSize := SIZEOF(MB_Buffer),
  139. NewData => MB_NewData3,
  140. Error => MB_Error3
  141. );
  142. IF MB_Error3 <> MB_OK THEN
  143. MB_NewData3 := FALSE;
  144. END_IF
  145. IF MB_NewData3 = TRUE THEN
  146. MB_Error3 := MB_OK;
  147. END_IF
  148. END_IF;
  149.  
  150. IF ComConn4.Done THEN (*Удачно проинициализировали*)
  151. MB_func(
  152. ComHandle:=ComHandle5, (*номер COM-порта*)
  153. DevAddr := 1,
  154. pBuffer := ADR(MB_Buffer),
  155. BufSize := SIZEOF(MB_Buffer),
  156. NewData => MB_NewData4,
  157. Error => MB_Error4
  158. );
  159. IF MB_Error4 <> MB_OK THEN
  160. MB_NewData4 := FALSE;
  161. END_IF
  162. IF MB_NewData4 = TRUE THEN
  163. MB_Error4 := MB_OK;
  164. END_IF
  165. END_IF;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement