对于PLC的新手来说,一上手就面对“高大上”的modbus通讯,我也估计算是新手中的一朵“奇葩”了吧。
做设备维护的工作很多年了,主要接触的还是DCS控制系统,对PLC涉足较少,接触过的也就是一些现有PLC程序的小修改,主要是一些小型PLC,如欧姆龙CJ1W、光洋的SL260以及西门子的S7-200。对于西门子S7-300这些中大型PLC,虽“仰慕已久”,但却总是“望而却步”,不用说其他,STEP7的那一套程序的安装,我都装不好。但工作就是工作,设备维护的工作性质决定了你必须要不断的接触和学习新的东西。公司生产线上有一套老系统需要进行改装,将上面一些重要数据点接入到DCS系统中,通过接线肯定是不现实的,正好身边有一些旧的S7-200的PLC,于是决定用通讯来实现两个系统的数据连通,用S7-200实现modbus和DP通讯的转换。
以前在工作过程中也接触过一些modbus通讯,都是别个工程师在弄,我在边上观摩,觉的也简单,不就两根线,然后两边软件里面设置一下就OK了,但自己亲手一弄,才知道远不是想的那样。
收集资料是解决问题的第一步,通过对资料的学习,可以加深对modbus通讯的了解。资料收集好了,也充分做了学习研究,这“软”的准备好了,那接下来就是准备“硬”的了。PLC是有了,通过查资料,PLC和第三方设备的通讯线也制作完成,接下来就是编程调试。调试是个漫长和繁杂的过程,尤其是一个人调试,很容易钻进死胡同出不来,所以,做好通讯调试记录是很有必要的。调试花费了我好几天的时间,每天我都会带着这几样东西往返于办公室和生产线:装了相应转件的电脑、USB转RS232数据线、RS232转RS485转换头、S7-200通讯电缆。皇天不负有心人,经过几天的努力,成功实现了modbus通讯。
通讯是成功了,各位看官是否忘记,我可是个PLC入门级新手。新手的含义就是对PLC的很多方面还不是很熟悉,我想,很多“老手”在看了我编写的程序后都会捧腹大笑的。由于modbus通讯不能同时进行两次通讯口的调用,所以要分批次进行读写操作,在网上学习的时候也听说过“轮询”这个词,但对于新手的我来说,实在是无法理解,最后,只有采用最笨的办法,用时间来控制通讯的读写,这也是没有办法的办法了。
这次改造后,我又对公司的一些其他设备进行了改造,比如与第三方的无纸记录仪通讯、与白光触摸屏通讯,对S7-200的modbus更加熟悉,运用的也更加熟练,我也渐渐爱上了S7-200的modbus通讯,只要有通讯的地方,我就会第一时间想到她。但我自己心里清楚,这份爱来的真是不容易。
最后,虽为新手,但也是花了心血钻研学习,将自己学习的一些心得与大家分享,让其他学习的人少走点弯路吧:
1、资料准备:西门子的用户手册是必备的,上面有详细的讲解;第三方通讯设备的modbus协议资料;其他一些通讯案例的资料;
2、调试软件、硬件准备:软件主要包括PLC的编程软件、modbus调试软件(我用的ModScan32),硬件主要包括PLC和一些数据线、转接头等。
3、调试中的一些注意事项:a.PLC的版本问题。S7-200PLC作为modbus主站是有版本要求的,这一点必须要注意;b.程序同时只能对通讯口调用一次,从复调用会产生报警;c.调试中要“在战略上藐视敌人,在战术上重视敌人”。其实modbus在结构上很简单,作为主站时,S7-200侧只需要对主站进行初始化,然后执行读写命令就可以了。d.要注意modbus地址的排列规则。这些内容一般在对应设备的用户手册上有详细说明。我在调试过程中会建立一个EXCEL文档,来对应各个变量的地址,这样就不会出错。e.要做好调试记录。这个我在前面也提到过,这点是非常重要的,可以避免你重复以前犯下的错误。f.善于使用modbus调试软件,在通讯调试不顺利的时候,可以用电脑模拟主站、从站,从而找出问题所在。