第一次使用S7-1200系列,硬件为1214C(214-1AG40)+CB1241,软件为V14SP1,目的是实现Modbus主从站。
在实验过程中遇到各种问题,有些问题匪夷所思,多亏有强大的论坛和找答案,在各前辈的帮助下终于达到目的,现在讲过程写出来,算留个纪念,也给像我一样的初次使用者一个参考。
1. 无法下载程序
写了一个简单程序,但是下载的时候提示“到PLC_1的连接已中断止”,反复试验多次都如此。
出师不利啊,第一步就遇到问题。论坛上有人说是版本的问题。
2. 查看版本
新建一个项目,选择plc为“非特定的S7-1200”,然后上载项目,在“在线和诊断”中可以看到硬件版本版本为V4.1.3,而我软件里的版本为V4.2。当然这也是在论坛里看到的方法。
3. 更新硬件版本
首先下载升级包,我下载的是V4.2.1
有三种方法:内存卡、TIA和浏览器。选择直接在TIA中升级,也是在“在线和诊断”中。
更新版本后,终于可以下载了。
4. 选择哪个Modbus指令
接下来先实现Modbus从站,因为这个简单点。
右侧指令表里有两组Modbus指令,一组是Modbus(RTU),下面的三条指令以 Modbus_前缀,另一组是Modbus,三条指令以MB_前缀。
论坛上说CPU版本在4.1以上的可以使用第一组,我的硬件已升级到4.2.1,所以使用前缀为Modbus_的指令。
5. Modbus_Comm_Load的MD_DB参数
看到的视频和例程上都说在插入Modbus_Master或Modbus_Slave指令后,Modbus_Comm_Load的MD_DB参数直接选择生成的背景数据块就行,但我的为什么是红色?
偶然发现背景数据块下有一个名叫MB_DB的数据,选中这个后编译通过。
6. Modbus_Slave 8280故障
编译通过,将程序下载到PLC,还没有接485的线,却发现Modbus_Salve的Error位0和1交替闪,Error为1时Status为8280。
网上搜索,很快找到了答案。MODBUS(RTU)里的MODBUS 指令需要CPU V4.1 串口模块V2.1支持,需要将Modbus_Comm_Load背景数据块的static变量MODE改成4(默认是0 232接口)。参考如下:
https://www.ad.siemens.com.cn/service/answer/solution.aspx?Q_ID=149492&cid=1072
将Mode改成4后从站功能正常。
7. PLC停机
从站正常后改成主站程序,但是下载时又遇到问题,CPU直接停在STOP模式,启动不起来。
状态栏显示如下:
有人说需要将PLC恢复出厂设置。同样还是在“在线和诊断”中完成。
8. 读命令被当成写命令
写了三条Modbus_Master指令,Mode分别为0、1、2,没有轮训,因为都是实际输入点触发的。
其中出问题的是Mode为0的那一条,也就是读命令。
明明是读命令,可是通过串口调试助手看,为什么发出来的确实写指令呢?
应该是: 01 03 00 00 00 05 CRC
实际却是: 01 10 00 00 00 05 08 00 00 00 00 00 00 00 00 00 00 CRC
把DATA_ADDR改成30001,触发后并不发送数据。
把DATA_ADDR改成00001,
应该是: 01 01 00 00 00 05 CRC
实际却是:01 0F 00 00 00 05 00 00 CRC
这不对啊,把读命令当成写命令了。反复看帮助文档,确定没有写错。偶然发现Mode前面的“0”颜色发黄,试着改了一下,颜色变成蓝色了,然后编译下载测试,正常了,正常了,正常了,重要的事说三遍。这个说出来可能都没有人信,但却让我给遇上了,西门子是不是出来解释一下。
楼主最近还看过