初学者对于西门子的通信非常头疼,为什么要搞那么多的通信服务,简单的几种不就行了吗?能通不就可以了吗?其实不是这样的,每一种通信服务都有它的特性,就相当一个工具箱中有许多的工具一样,你希望是多呢还是少呢?当然希望越多越好,但是去现场又不想带太多,总是想现场需要什么带什么,因为很沉,同样每种通信服务也是一样,有它的专一性,有好的一面,也有你意想不到的一面。
刚来西门子时,大家一起讨论Wincc死机与Windows版本兼容的问题,突然有一个同事大叫一声,“如果WIncc死机,PLC的设定值会不会清零”,我说肯定不会的,如果是这样,那Wincc就别买了,那位同事还是不放心,测试了一下,果然没有问题,这下放心了,但是好景不长,一天突然有一个用户抱怨说,Wincc死机后,PID的设定值都清零了,正好是我的哪位同事接的电话,肯定地回答:“不会的,我们都做过测试”,但是用户强调也做过测试,两个人的说法就有出入了,再详细询问了一下用户连接PLC使用的通信服务,结果是PROFIBUS-DP方式,而同事做的测试是使用PROFIBUS-S7(当时不会DP通信,而且非常麻烦)。问问用户为什么不使用S7通信服务,用户回答说S7-200用不了,只能使用DP方式,即使可以也不能使用 S7 OPC) ,因为连接的数量超过S7通信的连接数, 一个CP5611可以连接超过60个DP站点,而S7的数量非常有限。后来使用DP方式进行测试,确实像用户描述的一样。最后总结,使用DP的方式可以连接的站点多,但是通信数据量受到DP通信服务的限制,另外Wincc死机后,输出清零。解决的方案是在Wincc和PLC中同时进行处理,例如在Wincc中输入设定值后,再点击一个按钮进行确认,这个按钮在PLC程序中作为一个MOVE指令的一个条件就可以了,可见,不同的通信服务都可以通,但是后面的东西还需要考虑。
有一次碰到一个用户需要简单的定位控制,由于S7-1500没有脉冲输出的定位方式,所以选择一个S7-1200作为定位控制器,再选择一个S7-1500作为主控PLC,S7-1500与S7-1200进行通信。用户反映正常的情况下没有问题,一旦S7-1500与S7-1200通信中断后,S7-1200控制的定位操作也不工作了,定位与通信没有关系,怎么能影响到定位控制?我说肯定有关系,问用户定位操作的设定值是谁给的,用户回答说是S7-1500经过计算发出的,我又问用户,S7-1500与S7-1200是不是使用PROFINET IO进行通信的,用户回答说是,我说这就是问题的所在了,因为主从通信的特点是快速、通信数据量小,但是通信故障后,主站发送的设定值就会清零,如果S7-1200定位的使能信号也是S7-1500发送的,定位操作不就不能工作了吗?这里可以选择主主的通信方式避免这样的问题,例如S7通信或者TCP通信等。
还有一个用户说,现场设备故障后,主控室的操作人员要立刻按按钮操作,是不是要选择PROFINET通信服务,这样可以保证操作的实时性,其实这也是误解,这里主要看的是现场设备故障后的响应时间,实时的通信只是其中一个环节,例如故障出现后,操作人员离操作台比较远或者正好不在现场,这样将大大影响响应时间,即使选择非实时的主主通信,在通信上花费的时间与人的因素比也是微不足道,这里应该选择主主通信服务,快速的响应应该交给PLC去处理。
总之不能因为PROFINET好就所有的通信都使用,应该选择正确的通信服务。