通讯规约
说明:()内为内容说明,通讯数据均为ASCII码
通讯规则
发(上位机发送ASCII码) @XX(站号00至15)R(r大小写均可)
回 (下位机返回ASCII码) :(前导符)XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX (8路通道数据,范围0000~9999) XXXX(站号,板号)CRLF(两字节表示回车、换行)。
通过S7 200自由口通讯怎样循环发送接收
3块相同仪表的数据。如何做到通讯故障检测,
自动跳过故障仪表。
问题补充:
单块仪表通讯已建立,如何实现3块仪表的循环和通讯故障检测。程序如下:
主程序
网络1
LD SM0.1
MOVB 16#09, SMB30
MOVB 16#B0, SMB87
MOVB 16#0A, SMB89
MOVW +5, SMW90
网络2
LD SM0.1
MOVB 200, SMB34
ATCH INT_0:INT0, 10
网络3
LD SM0.1
ATCH INT_1:INT1, 9
ATCH INT_2:INT2, 23
ENI
INT0
LD SM0.0
DTCH 10
MOVB 4, VB200
MOVB 16#40, VB201
MOVB 16#30, VB202
MOVB 16#31, VB203
MOVB 16#52, VB204
XMT VB200, 0
INT1
LD SM0.0
DTCH 10
RCV VB100, 0
INT2
LD SM0.0
ATCH INT_0:INT0, 10
我想将 MOVB 16#31, VB203 用MOVB VB300 VB203代替
用LD SM86.5
EU
INCB VB300
做累加
当无反馈数据时如何累加地址
比如第三个模块损坏
最佳答案
用LD SM86.5
EU
INCB VB300
用这个你能测试哪个仪表?
MOVB 16#B0, SMB87
如果仪表有问题,或者有干扰,收不到结束字符,那怎么停止RCV?
MOVB 4, VB200
MOVB 16#40, VB201
MOVB 16#30, VB202
MOVB 16#31, VB203
MOVB 16#52, VB204
这些放到数据块里就可以了,数据块空间那么大。
1 说一下思路:
先通讯初始化
向仪表1发数据,发送完成中断里接收,接收完成里定时,定时中断里向仪表2发送数据,发送完成中断里接收,接收完成里定时,定时完成中断里向仪表3发送数据,发送完成中断里接收,接收完成里定时,定时中断里向仪表1发送数据,如此循环。
这样做的目的是思路清晰,但中断程序较多,如果从站更多的话,就没必要这样做了,用间址的方式,只要两个中断就可以和若干个从站通讯。
2 3块相同仪表的数据。如何做到通讯故障检测?
当向仪表发数据时,它不回数据,那就证明通讯有问题了。
LDB= VB3070, 0
TON T254, 15
LD T254
= V3200.0 (通讯故障位)
3 西门子提供的modbus主站库只支持RTU的方式。
提问者对于答案的评价:
分析透彻 思路清晰 多谢支持
原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc353496.html