自由口接收数据时需要执行RCV指令,那么比喻要从自由口发送和接收数据 发送XMT由程序控制 接收数据是由于不知RS485总线什么时候会发送数据过来(由对方控制)那么难道要一直执行RCV等待数据发送过来?这样的话那么双向通信太死板意义不大
是否可以在RS485总线空闲时期 通过侦测总线上的数据流(比喻先导字节)来启动RCV指令接收 这样的话双向通信就灵活多了
问题补充:
是否可以侦测RS485总线字符 触发RCV 比喻自由口接收DTU发过来的短信息 因为DTU传过来的消息是随机不定时的 PLC不知道生么时候该启动接收指令
最佳答案
西门子自由口通讯协议:起始位为0,停止位为1。所以空闲状态的逻辑状态一个是为1的状态。
其中,一个数据帧包含(1位起始位;7--8位数据位;1位校验位(奇/偶);1位停止位)。
具体发送和接受数据帧的完成与否是看SMB86/SMB186(PROT0/PROT1)的状态,如果=0,是表示正在发送或接受,如果=1,则表示发送或接受已停止,这样可以很方便地侦测到发送和接受是否完成的结果。
你提及到的空闲线检测,实际上西门子仍然有标志字来让用户使用,即SMW90/SMW190来确定。
参考西门子200 F1的帮助。
补充问题回复:
XMT(发送)指令的使用比较简单,RCV(接收)指令所需要的控制稍多一些。
参考系统手册H11案例.
提问者对于答案的评价:
OK
专家置评
已阅,最佳答案正确。
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc190862.html