| 作者 | 主题 |
|---|---|
|
WWCWWC 至圣
经验值:79166 发帖数:9103 精华帖:157 |
楼主
主题:关于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,相当于每应该周期始终初始化,由此与串口调试软件通讯不成功。 |