关于smart200的串口自由通迅

最近用smart200做个数据采集,采另一台设备上的数据,发送一个指令后,然后就会接收到另一台设备上发过来的数据,调了几天了,发送没问题,接收也没问题,用的XMT和RCV,看教程,看资料,下例程,一个个都试了,用了XMT后,发送出了数据后,再用RCV指令就接收不到任何数据,PLC关电后再用RCV又可以,连续用XMT,或连续用RCV都可以发,也可以收,但两个指令就没法一起用了,发了就用不了收,SM87也试恢复设置的值,但是没有用,不知道需要复位哪位置!!求求各种大师了!!

问题补充:
问题解决了,是看好例子,一个个试,找到办法了,但还是弄不清原因,发送前给SMB87送个16#14,再调用个rcv,再发送,发送指令就不受前面接收指令的影响,如果要接收,先给smb87置成16#94,再接着调用rcv指令,这样RCV也不受前面XMT指令的影响的,而且指令要连续着,我分开手动发给SB87也不行,谢谢大家解答,解决问题的办法如图,但我还是搞不明白为什么要这么做!!!

图片说明:

关于smart200的串口自由通迅    关于smart200的串口自由通迅   

钻石用户推荐最佳答案

1、自由口通讯,你这个用主站的方式,按以下的思路编程,
自由口编程-中断方式-主站  RCV和XMT指令实现步骤:
A)根据协议的内容定义好发送缓冲区;
B)在首次扫描中设置相关通讯参数;
C)在首次扫描中连接“接收完成中断”和“发送完成中断”;
D)用沿触发激活发送 XMT 指令,把缓冲区数据发送出去;
E)在发送完成中断程序里,用沿触发激活 RCV 指令,进行接收等待状态;
F)在接收完成中断程序里,我们需要判断接收是否正确,如果我们的协议中有结束符,我们可以判断 SMB86 是否等于 16#20 ,如果相等,则表示正确地接收了到了结束符,如果有校验码,还要判断校验是否正确。如果前两部分判断都通过了,则表明接收到的帧是正确的,然后调用 XMT 指令请求下一次数据,如果前两部分判断没有通过,我们也要调用 XMT 指令请求重发一次数据。
按上面的思路让发送和接收循环起来。
2、
系统手册中的 7.3.2 中的实例,是自由口从站的编程方式,你可以用来参考,但是不适合你的这个应用。
其编程思路是
自由口编程-中断方式-从站  RCV和XMT指令实现步骤:
A)在首次扫描中设置相关通讯参数;
B)在首次扫描中连接“接收完成中断”和“发送完成中断”;
C)用沿触发激活 RCV 指令,进行接收等待状态;
D)在接收完成中断程序里,我们需要判断接收是否正确,如果我们的协议中有结束符,我们可以判断 SMB86 是否等于 16#20 ,如果相等,则表示是正确地接收了到了结束符,如果有校验码,还要判断校验是否正确。
如果前两部分判断都通过了,则表明接收到的帧是正确的。此时我们要分析主站发送来的指令代码,要让从站干什么,按指令代码要求组织发送缓冲区,组织好发送缓冲区后,用沿触发激活 XMT 指令响应主站的请求。
如果前两部分判断有一个没有通过,则表明没有接收到正确的请求帧,则重新调用 RCV 接收指令。
E)在发送完成中断程序里,调用 RCV 指令,使从站处于等待接收状态。
但理解这个实例有助于理解自由口主站模式编程的方式。
S7-200 SMART V2.3系统手册
https://support.industry.siemens.com/cs/document/109745610
3、另外《自由口通信常见问题》可以做为参考
http://www.ad.siemens.com.cn/productportal/Prods/s7-200-smart-portal/200SmartTop/communication/serial_port/freeport/FAQ.htm

提问者对于答案的评价:

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

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

相关推荐