利用modbus协议实现对S7-200 +EM253模块的位置控制

最近在做一个项目,利用S7-200实现对4台步进电机的位置控制,其中的两台是用EM253控制的,另两台是用PLC自有的Q0.0和Q0.1来实现的。在控制室有一台PC机,利用modbus协议实现与现场PLC 200的通讯(PC机做主站,PLC做从站),现场也有一些按钮开关能实现各个电机的前后移动。上位PC机能实现距离的精确定位!现在有一个问题就是,当我在现场让EM253控制的那两台电机运行起来后,如果上位机在这两台电机运行期间发出任何的读写从站(下位PLC)的命令,都会导致电机的停转!这显然不是我所需要的!请问是什么原因?有哪位碰到过?说到底就是感觉modbus协议好像在干扰我的EM253!我的V存储区是没有什么问题的,电机在没有上位机的modbus读写命令时也是正常的!

问题补充:
1.我只是通过功能2读取输出数字量的状态,此时并没有发送电机的控制命令,这时开关量状态是读回来了,但电机还是停止了!V变量区也没有重叠的地方!
2.在交叉表中的确看到一些L变量在EM253和MOdbus协议功能都用到的变量,但我感觉这也没多大关系啊!毕竟每个函数独有自己的临时局部变量区啊!
3.我在交叉引用表中还发现Modbus_slave功能块与IB0(输入字节)和QB0(输出字节)有联系,而实际上我只是调用了它,没有编写与它相关的语句啊!不知是怎么原因!请帮我分析下!
4.顺便问下,有什么简单的方法查看EM253配置时占用的V区空间啊?
5.我的系统中有两个EM253模块,其中最右边的那个在重新PLC上电后回出现MG灯闪的情况(表明配置有错误,而我再将以前的配置和程序下载到CPU中后就正常了。再次断电-通电后又是这样的闪的情况,不知是不是EM253坏了?

最佳答案

1、检查与上位机交互的数据里面,有没有对电机控制位的误操作;
2、modbus库函数需要一定的V存储器作为运算区,检查一下是否有与电机控制重复使用的情况;
3、再编译一下程序,在交叉引用中看看被modbus库函数调用的变量中有没有与电机控制相关的,modbus库函数编译后会生成中断程序,并自动调用一些L、SM以及根据参数设定调用I、Q、M点,也请楼主留意。

提问者对于答案的评价:
最终的问题找到了,还是在构造函数时,temp变变量引起的相互干扰!

原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc302664.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2020年10月31日 下午3:04
下一篇 2020年10月31日 下午3:04

相关推荐