记得第一次接触的plc是西门子的226,当时看到老师通过这么一个灰色的大方块就能使电机/气缸/指示灯等东西执行不同的动作,感觉很神奇。
参加工作后,因西门子的变频器价格高,要使用通讯的方式与第三方的变频器进行通信,查看设备手册后,发现都支持modbus-rtu协议,既节约了成本又可以实现需要的功能,就它了。可是接下来问题不断,解决了pid问题,通信的问题一大堆,要么3号错误,要么6号错误,看了帮助,看了例程,才发现轮询机制没有做好,好吧,最简单的使用上个指令的完成位激活下个指令的起始位,不报错了,心中窃喜,这下可以搞定了吧,结果读不到数据,这又是为什么?一个头比两个大!看了老半天资料,灵光一闪,是不是地址不对啊,结果最终发现读取的变频器的参数的地址没有与plc中的地址对应上,终于搞定了这个问题。成功通信,可以实现对变频器的控制,可以读写参数,使用效果良好啊,当然项目做成,得到老板嘉奖,来个自驾游,放松下心情,老板还是不错滴!
还有一次调试西门子pcs7系统,使用的是s7-400fh,需要modbus通信,采购了cp341和硬狗,写好cfc程序,当然轮询机制必须没问题啊,结果调试的时候不能和第三方仪表通信,奇怪啊,检查接线和程序,没问题,检查第三方仪表,可以用modscan读到数据,百思不得其解啊!
后来实在没办法,拆了,换一个,结果拆下来的时候,突然瞄到cp341后面缺了点什么,晕菜,硬狗呢?装好,搞定,看到了让人兴奋的指示灯的交替闪烁。窃喜后,在db块中修改个地址参数,继续联机通信,傻眼了,不能通信了,一个指示灯常亮,这又是为什么?好吧,同事说是不是程序有问题?重新写,建好两个db块,通信,结果没有问题,修改了一个db块中的地址参数,问题又来了,无奈只能求助于西门子工程师,原来是没有在更改db块后进行数据块更新。
所以总结了下:
1:进行modbus通讯时要做好软件及硬件的准备工作。首先软件modscan,modsim软件,也有用vspd的;硬件部分:我们一般都使用笔记本那就需要准备usb-rs232的串口线,我一般用z-tek的,然后就是rs232-rs485的模块,我一般会用moxa的,有人问买那么贵的干什么,我有惨痛教训啊,在实验室环境下用一般的模块没有问题,可以通讯,但是有时在现场就出问题了。
2:第三方设备通讯参数,特别是地址要搞清楚,然后就是西门子的通讯程序必须做好,注意不管是200还是300、400plc都要做好轮询机制,300、400plc需要配置硬件狗。接线问题就带过吧,注意屏蔽等问题,防止电磁干扰等。
3:关于冗余plc,使用cp341进行驱动下载时,特别要注意:rack1的cpu需要断电,rack0 的cpu要处于stop位置,才能下载。
4:关于300、400plc中对通讯程序的db块进行参数修改后必须进行数据更新,方法:“视图”--切换为“数据视图”---“编辑”---“初始化数据块”,然后将修改后的程序下载。