技术论坛

 关于modbus rtu通讯调试过程的那些事3

返回主题列表
作者 主题
WWCWWC
至圣

经验值:79166
发帖数:9103
精华帖:157
楼主    2025-06-04 08:44:12
主题:关于modbus rtu通讯调试过程的那些事3 精华帖 

关于modbus rtu通讯调试过程的那些事3

s7-1214C Modbus rtu低版本通讯指令调用错误的认识

  近段时间,为配合集团公司OA数据采集优化方案的落实,将公司内部各设备具有流量、电能管理硬件特性的设备,创建Modbus rtu通讯从站条件,在调试过程中遇到的一些错误,进行重新认识和学习。

对于cpu版本在V2.2以下的,在通讯指令调用时,该版本尚不支持Modbus rtu指令,只能调用Modbus的指令应用,现将自己测试过程中的应用错误认识整理。

组态及应用:

1) 组态cpu,图示:CPU  S7-1214C,版本 V2.2

 

2) 添加CB1241 RS485信号板,版本V1.0,图示:

  通讯测试参数基本按按默认值,等待时间有修改。

3) Modbus rtu通讯指令的调用情况,图示:

Modbus rtu下面是没有可以调用的通讯指令,在Modbus指令下有可以调用的通讯指令。

4) 将Modbus rtu初始化及从站指令拖放到编辑区,填写管脚,图示: 

初始化指令。

供主站读写DB3.DBD0和DB3.DBD4的2个REAL数据。

5) 将这些“正常”的组态及程序下载到cpu中,监控没有报警,图示:

初始化指令正确完成。

 

从站SLAVE指令也没有报警。

6) 启动串口调试软件,设置相同的通讯参数,在发送器编辑读取5#从站的DB3.DBD0和DB3.DBD4的数据,16#进制数表示,图示:

 

发送读取从站数据给PLC,接收区无反应,重新检查、确认硬件接线,具体描述在帖子中有具体说明双方的硬件连接,【S7-200smart主站与s7-1200从站的Modbus rtu通讯】,https://www.ad.siemens.com.cn/club/bbs/post_1950172_50_0_1.html#anch,没有错误。但是,串口调试软件的接收区就是没有从站数据的接收,检查数据块DB3,确实有测试数据写入,且这个并不是调试软件没有接收到从站数据的要因。反反复复检查,始终没有找到问题的所在,调试一度进入死胡同。

7) 从西门子技术手册中的例子程序,都是在MB_COMM_LOAD的REQ管脚,应该是沿触发的思路,将测试初始化触发位M10.0设置为0,图示:

 

8) 重新在串口调试软件中发送同样的读取从站数据,图示:

05:5#从站

03:功能码,读取从站数据

08:8个字节长度的数据

41:实际的起始数据

。。。:。。。

00:实际的结束数据

34:CRC校验

FB:CRC校验

数据能够正常读取从站的数据。

  无法正常通讯的原因是:MB_COMM_LOAD的REQ管脚始终为ON值引起!希望在调用低版本CPU的用户引起注意。

小结:

  没有理解官方技术手册中的具有说明,图示:

  OB100的MB_COMM_LOAD的REQ管脚TRUE,是建立在OB100,相当于沿触发,而我在实际应用是OB1中调用,正确应用应该是沿触发,修改M10.0 = 0,也相当于沿触发。如果没有将M10.0设置为0,相当于每应该周期始终初始化,由此与串口调试软件通讯不成功。


您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。