马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?请使用中文注册
×
关于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#进制数表示,图示: 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,相当于每应该周期始终初始化,由此与串口调试软件通讯不成功。
|