找答案的高端用户(找答案钻石及双钻级别的用户)将尽可能从此问题下的所有回
答中,为您推荐最佳答案。届时您可以根据推荐数采纳答案。
如果自提问时间起7天内您仍无法选出最佳答案,您可以选择“无满意答案”关闭此问题。
手机扫码追踪该问题,
觉得实用,立即去分享!
点击复制链接
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
首次回答问题,获得
双倍西币积分!
立即成为技术知识分享的一员!
找答案微信小程序
提问
搜索
欢迎您访问支持中心!
丰富的视频,全方位的文档,大量的网友交流精华……
为了更好的完善这些内容,我们诚邀您在浏览结束后,花20秒左右的时间,完成一个用户在线调查!
感谢您的支持!