专家大讲堂《PLC通信原理探秘》系列视频:https://www.ad.siemens.com.cn/service/elearning/series/288.html
最新更新:
连载之二十一: 【PLC通信原理探秘】大讲堂幕后彩蛋之残余
连载之二十二: 【PLC通信原理探秘】大讲堂幕后彩蛋之新敌
连载之二十三: 【PLC通信原理探秘】大讲堂幕后彩蛋之老生
连载之二十四: 【PLC通信原理探秘】大讲堂幕后彩蛋之常谈
连载之二十五: 【PLC通信原理探秘】大讲堂幕后彩蛋之征程
对于测试WinCC和S7 PLC之间的通信性能,现在回忆起来在当时并没有想真的去测试,一方面是日常工作我并不支持WinCC,对WinCC并不熟悉。就是在我刚刚毕业工作时,曾经用过WinCC5.1,觉得最高光的时刻就是使用VB脚本在WinCC中编了大约1000条的代码。另一方面我对测试结果心里没底,不知道未来还要有多少沟沟坎坎在等着我,对于测试时间片和CCP的辛苦过程仍然心有余悸。所以当时并没有想展开测试,觉得先看看到底情况如何,然后再做打算,然而人算不如天算,加上自己的好奇心泛滥,就一步一步的上了贼船,却发现船上竟然有大量的稀世珍宝,于是再次历尽千辛万苦终于揭开披在这些珍宝的神秘面纱,使它们呈现到世人面前。
由于1500PLC是后面新推出的,这里的PLC指300/400PLC,针对1500与WinCC通信的行为特性会在后面会明确提到。
那么在哪里入手呢?我们知道WinCC与西门子的PLC建立通信连接,在PLC中无需设置任何参数,除了前面所谈的通信负荷,没有明显设置通信的相关参数。而在WinCC,在Step7或者TIA Portal中连接设置是有参数界面的。其中有两个最重要的参数“By PLC” 和 “Chang driven transfer”,查看帮助文件,可以看到前者表示WinCC与PLC之间的数据交换是Cycle management的,可以由PLC来管理,也可以不用PLC来管理,如果由PLC进行管理,意味着PLC组织数据发送给WinCC,否则由WinCC组织数据发送给PLC。如果由PLC来管理Cycle management,其中可以数据变化才进行传输。这就是两个参数的字面意思,也很好理解。然而当我仔细思考的时候,数据无论从哪侧发出,到底是什么样的方式呢?而对于帮助文件的说明,也有这不理解的地方,例如启用循环模式时,HMI设备会根据不同的PLC将多个作业传送到PLC,以及禁止循环模式时,HMI设备只能将一个作业传送到PLC,这里提到参数的使能与否,关联着作业的数量,那么作业到底是什么意思?这两句话表达的明确意思是什么?以及这两个参数的真正作用或者意义到底是什么?在数据通信的时候,到底是什么参数或者机制制约着通信的性能?思考到这里,只看到前方一片风云,还没有看到船的样子。
不管如何,既然有前面对于PLC的通信理论的理解和多种测试方法和经验,还是先试试看看到底WinCC与PLC的通信是个什么样子。先拿300PLC做测试,因为我前面多次强调300PLC对于测试的重要性,因为其得天独厚的性能所限。首先还是把这个System Parameter界面中的所有的参数禁掉去做测试,因为在未知的情况下,最好就是从零开始。看看这样的结果会是什么样子?
在测试之前,我就思考该如何组态WinCC和PLC的一些因素,因为画面上的变量和PLC之间是要通信,这样变量的数值才能进行显示在画面上或者写入到PLC中。那么就应该从时间因素上入手,即WinCC画面上的变量是可以设置刷新时间的,而PLC也有自己的循环周期,而且前面介绍的延时程序是可以把CPU的时间拉长,让我可以看清通信的慢动作,从而理解通信交换的方式。
那么就可以从这里入手,首先设置PLC的循环周期>WinCC的变量周期,例如:PLC循环周期通过延时程序设定为5秒,WinCC画面上仅有一个变量M0.0, 周期为画面周期2秒。看一看一个变量与PLC通信的结果,从小见大,慢慢展开,去看看通信的结果如何。
开始的测试是没有头绪的,我当时竟然在画面上同时对该变量还进行了修改,试图看看有什么样的情况,然而就这样的操作,给我的分析带来了复杂性。通过Wireshark抓包,虽然看到了结果,但是不知如何分析,只能猜测,通过一步一步的摸索,最终才能找到那个答案。
----------未完待续----------
连载之二十七: 【PLC通信原理探秘】大讲堂幕后彩蛋之再起
连 载 汇 总: 【PLC通信原理探秘】系列连载故事汇总