小弟新学PLC,最近在搞自由口通讯,调试中发送数据一路顺风。
但是接收数据遇到问题:有时候接收正常,有时候不能接收,提示同时执行XMT/RCV指令。。。
实在是无语了,请大哥们帮我看看程序,看哪里有问题,多谢!!!
驱动器是接收到查询命令后返回查询值。我用I0.0触发查询命令,I0.1清零。
程序如下:
ORGANIZATION_BLOCK MAIN:OB1
TITLE=
// PROGRAM COMMENTS
BEGIN
Network 1
// 将查询命令写入VB200及以后的字节
LD SM0.1
MOVW +7, VW198
MOVD 16#7E80047C, VD200
MOVD 16#0, VD204
Network 2 // NETWORK TITLE (single line)
LD SM0.1
MOVB 16#45, SMB30 //端口0,19200,偶校验,8位
MOVB 2#11000100, SMB87 //启用接收,使用SMB88做信息开始,超出SMW92时间后接收终止
MOVB 16#7E, SMB88 //开始信息
MOVW 10, SMW92 //超时时间
MOVB 10, SMB94 //最大接收长度
FILL 0, VW100, 5 //清零
ATCH INT2, 9 //连接中断2到传输完成事件
ENI //启用中断
Network 3
LD I0.0
EU
XMT VB199, 0 //发送查询信息从端口0
Network 4
LD I0.1
EU
FILL 0, VW100, 5 //清零
END_ORGANIZATION_BLOCK
INTERRUPT_BLOCK INT_2:INT2
TITLE=中断程序注释
BEGIN
Network 1 // 网络标题
// 网络注释
LD SM0.0
RCV VB100, 0 //接收信息
Network 2
LD SM0.0
CRETI //返回
END_INTERRUPT_BLOCK
正常的时候返回数据如下:

错误的时候SMB86变成0了。