S7-200SMART 与仪表自由口通讯

背景:仪表只支持RS485自由口通讯
报文格式: 接收(AA ID 52 CHK)应答(AA ID 52 FNOW FALL UNIT CHK),其中ID为仪表地址,CHK为校验码,AA+ID+52=CHK,取16 进制后两位。
连接:PLC为ST20, 5块表,采用串接的形式,地址为1~5。
现状:PLC和串口调试工具可以正常通讯,即发送询问指令并正常接收应答。仪表可以响应串口调试工具的询问指令并及时应答。
思路:采用定时器,每秒钟按照地址轮询仪表,轮询指令发送完成后采用中断读取仪表的应答信息。
问题:PLC和仪表直接的话无法接收。附件是单对单的程序,也不能成功,求大神过目指点。

问题补充:
TITLE=程序注释
Network 1 
// 程序段注释
LD     SM0.0
AN     M10.0
TON    T100, 1000
Network 2 
LDW=   T100, 1000
EU
=      M10.0
Network 3 
// 设置端口0自由口通讯
// 9600, 8位, 无校验
LD     SM0.1
MOVB   2#1001, SMB30
Network 4 
LD     SM0.0
MOVB   13, VB200
MOVB   4, VB99
MOVB   16#AA, VB100
MOVB   16#52, VB102
MOVB   16#1, VB101
MOVB   16#FD, VB103
Network 5 
LD     SM0.0
MOVB   16#F4, SMB87
MOVW   2, SMW90
MOVW   200, SMW92
MOVB   13, SMB94
MOVB   16#AA, SMB88
MOVB   16#1D, SMB89
Network 6 
LD     SM0.0
AW=    T100, 150
XMT    VB99, 0
Network 7 
LD     SM0.0
ATCH   INT0, 9
ENI

INT_0
LD     Always_On
RCV    VB200, 0

最佳答案

说说我的想法。
首先是采用定时器轮询(1S)时间,如果按9600的通讯速率,你的通讯数据一般是足够发送一条数据了的。轮询发送完成后用什么中断?在中断中能够正常读取到从站的数据?中断执行一次仅仅只是一个周期。
另外,无法通讯查外部接线是否正确,这个在通讯中经常性的问题,因为各家对通讯口都有各家 的定义,西门子侧3+、8-

提问者对于答案的评价:
谢谢回复。接线应该不会有问题,而且我也尝试更换了A,B..... 中断执行时,用串口工具发送给PLC,PLC可以正常收取(就13个字节)。现在的问题就是PLC和仪表直联不能收到或者读取到仪表的应答信息。。。。

最佳答案作者回复:
你检查中断的定义用SM0.1。

原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc285483.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2020年10月30日
下一篇 2020年10月30日

相关推荐