各位前辈,今天自己按照例子学着写了个自由口通信程序,但是运行程序后发现数据校验一直出错,恳请前辈们能给予指正。我是把上位机程序传给PLC的数据存放在VB101、VW102三个字节中,三个字节的和校验值放在VB104中,通过PLC实时监控证明PLC已经能正确接受到上位机的数据,但是在PLC程序中计算出的三个字节的和校验值(通过计算后存放在字节VB611中)却一直为零,由于VB104(通过PLC实时监控该值也是正确的)不等于VB611,所以QB0就一直没有输出。下面是我的PLC程序:
MAIN:OB1
Network 1
LD SM0.1
MOVB 9, SMB30
MOVB 16#E0, SMB87
MOVB 16#67, SMB88
MOVB 16#47, SMB89
MOVB 7, SMB94
FILL 0, VW100, 10
Network 2
LD SM0.0
ATCH INT0, 8
Network 3
LD SM0.0
ENI
Network 4
LD SM4.5
RCV VB99, 0
INT_0:INT0
Network 1
LD SM0.0
MOVW 0, VW500
MOVD &VB500, VD502
MOVD &VB101, VD506
Network 2 // 网络标题
// 网络注释
LD SM0.0
FOR C100, 1, 3
+I *VD506, *VD502
INCD VD506
Network 3
NEXT
Network 4
LD SM0.0
MOVW VW500, VW510
Network 5 // 网络标题
// 网络注释
LDB= VB511, VB104
MOVW VW102, VW302
MOVB VB105, VB305
MOVB VB104, VB304
MOVB VB101, QB0
MOVB VB99, VB299
MOVB VB100, VB300