找答案的高端用户(找答案钻石及双钻级别的用户)将尽可能从此问题下的所有回
答中,为您推荐最佳答案。届时您可以根据推荐数采纳答案。
如果自提问时间起7天内您仍无法选出最佳答案,您可以选择“无满意答案”关闭此问题。
小程序查看
手机扫码追踪该问题
手机扫码追踪该问题,
觉得实用,立即去分享!
点击复制链接
我现在的问题是不知道master什么时候发送查询命令过来?请问用FB7的参数怎么知道主站发送查询数据的命令过来了?然后好对此做出响应,对要发送的数据计算CRC码,然后附在要发送的数据后面,然后启动FB8发送数据!
-----------------------------------------------------------------------------
1、大部分时候FB7是一直处于接收状态,除非收到了master发来的报文,然后需要返回一条报文给master(调用FB8),发送完成后继续调用FB7等待master的下一条报文
因此,不管是自己写master程序还是slave程序,都是采用一发一收的形式,只是master是先发一条请求报文给slave然后开始等待接收,而slave则是上来就开始等待接收,收到报文以后则返回一条报文给master,如此周而复始。
2、FB7有两个输出管脚可以指示接收状态,一个是NDR(指示完成接收,但仅仅一个周期内有效,想监控的话最好用SR触发器保持一下),一个是ERROR(具体数值含义可以查软件help)
问题补充:通讯不是采用“一问一答”,或者说“一收一发”的方式吗? 自己做通讯肯定要知道对方何时“发问”,以便可以据此做出“应答”,而不至于导致通讯timeout!
另弱弱的问下,MODBUS RTU的应答帧是:
“地址+功能码+数据量(1字节)+数据1+数据2+...+数据n+CRC码”的结构吗?谢谢!
-------------------------------------------------------------------------------------------------------------------
3、串口通讯基本采用485接口,这就决定了软件是一收一发的模式,即不能同时调用发送和接收模块
4、modbus rut的应答祯其实不完全一样,你说的是读报文的基本格式,而写报文(05/06/15/16)则不一样,具体在网上搜一下modbus 协议即可,也可以安装西门子的modbus驱动包以后,会多出相关的pdf文档,里面也有关于modbus报文结构的描述
首次回答问题,获得
双倍西币积分!
立即成为技术知识分享的一员!
找答案微信小程序
提问
搜索
欢迎您访问支持中心!
丰富的视频,全方位的文档,大量的网友交流精华……
为了更好的完善这些内容,我们诚邀您在浏览结束后,花20秒左右的时间,完成一个用户在线调查!
感谢您的支持!