各位大侠们,我现在碰到一个头疼的问题。我用CPU226的PLC的端口0和一台仪器进行485通信(自由口协议,9600bit,8位,无校验),PLC负责接收数据,那台仪器负责发送数据(每15分钟发一次数据如:12092512015400010000115,其中按顺序依次为——120925为日期,120154为时间,00010为主数值,0001为偏差值,15为周期15分钟)。
我现在只需要负责接收这个主数值,也就是第13-17位的数据。在多数情况下,这个数据和仪器显示的数据是一致的,偶有偏差,有时如错位一样,有时又比较离谱。
我在用两台电脑,一台监控仪器发送过来到串口的数据,均正常;另外一台监控PLC显示的地址位,发现日期位老是不对,时间位基本都正常,主数值偶有差异等。当时怀疑是仪器有干扰,单独给它加一个滤波器供电,并穿上磁环,和PLC的通信口也用西门子原装的MPI通信线(6ES7 901-0BF00-0AAO),但还是会有主数值偏差的现象。
我做的程序如下,请帮忙指导下,多谢啦!
NET1
LDN M5.5
A Always_On:SM0.0
MOVB 16#09, SMB30
MOVB 16#9C, SMB87
MOVW +200, P0_Timeout:SMW92
MOVW +0, P0_Idle_Time:SMW90
MOVB 200, SMB94
RCV VB1100, 0
NET2
LDB<= VB1100, 1
AB<= VB1101, 2
AB<= VB1102, 3
AB<= VB1103, 4
AB<= VB1104, 5
AB<= VB1105, 6
AB<= VB1106, 7
AB>= VB1107, 8
AB>= VB1108, 9
AB>= VB1109, 10
AB>= VB1110, 11
AB>= VB1111, 12
AB>= VB1112, 13
AB>= VB1113, 14
AB>= VB1114, 15
AB>= VB1115, 16
AB>= VB1116, 17
AB>= VB1117, 18
AB>= VB1118, 19
= M1.7
NET3
LD Always_On:SM0.0
BTI VB1115, VW1015
BTI VB1116, VW1017
BTI VB1117, VW1019
BTI VB1113, VW1011
BTI VB1114, VW1013
NET4
LD Always_On:SM0.0
MOVW VW1011, VW1031
-I +48, VW1031
MOVW VW1013, VW1029
-I +48, VW1029
MOVW VW1015, VW1027
-I +48, VW1027
MOVW VW1017, VW1025
-I +48, VW1025
MOVW VW1019, VW1023
-I +48, VW1023
NET5
LD Always_On:SM0.0
MOVW VW1031, VW989
*I +10000, VW989
MOVW VW1029, VW987
*I +1000, VW987
MOVW VW1027, VW985
*I +100, VW985
MOVW VW1025, VW983
*I +10, VW983
MOVW VW989, VW981
+I VW987, VW981
MOVW VW985, VW1119
+I VW981, VW1119
MOVW VW1119, VW1217
+I VW983, VW1217
MOVW VW1217, 当前浓度显示:VW1134
+I VW1023, 当前浓度显示:VW1134
NET6
LD Always_On:SM0.0
AN T202
TON T201, +6000
NET7
LD Always_On:SM0.0
A T201
TON T202, +1
NET8
LD T201
EU
MOVW 当前浓度显示:VW1134, 当前浓度值:VW1136
MOVW 当前浓度值:VW1136, VW1138
MOVW VW1138, VW1140
MOVW VW1140, VW1142