由于PLC控制系统可靠,方便等特点,其已在集装箱起重机上广泛使用,目前已取代了早期的继电器控制回路系统。同时由于总线系统的发展,PLC所需采集的各类开关,传感器信号可以通过远程I/O站实现,大大节省了电缆布线成本,也节约了故障查询时间。本文主要阐述的就是岸桥控制系统的核心内容设计:岸桥PLC程序的设计与实现。
在这套系统中,控制系统的主要元件PLC是采用了SIEMENS公司的S7-400作为PLC主站,ET200作为远程模块站。整个系统通过PROFIBUS总线将PLC主站与各远程模块站及控制传动机构的变频器相连,见如下单线图1-1所示:
图1-1中,S7-400 PLC是整个系统的核心所在,它有两个PROFIBUS总线接口,一条总线连接所有传动机构变频器(变频器由整流器与逆变器组成),这样一来变频器所需要的命令,运行状态的反馈等信号均可以通过PROFIBUS通讯来实现。另一条总线则连接所有的I/O远程站,实现采集信号和输出信号,大大节约了布线。PLC同时也带有以太网接口,可以方便的与计算机连接,这样一来工程技术人员可以通过计算机的人机界面来监控岸桥的运行,同时该计算机也可以作为编程器,用来配置PLC硬件,修改PLC程序。
2.岸桥PLC程序编写
对岸桥的PLC系统来说,其需要控制的内容有岸桥的起升,大车,小车,俯仰这四个主要机构的运行与辅助机构的运行,四个主要机构都有相同的运行过程,如下图2-1所示图2-1:岸桥主要机构运行过程
因此在这过程中的“是否满足运行条件”与“是否存在减速命令”是编写岸桥PLC程序所必须清楚的情况,我们在这里必须通过工况分析,有了清楚的了解之后,才能正确的编写程序。以下我们将以起升机构为例,对工况进行详细的分析。
起升机构的主要作用是通过钢丝绳与吊具上的滑轮将吊具作上下的移动。当吊具吊了集装箱之后,集装箱就可以通过起升机构实现上下移动,比如将集装箱从船舱或集装箱卡车上提取。起升机构的组成除了吊具与钢丝绳之外,还包括两套并行连接的机械传动装置,每套传动装置的组成如图2-2所示:有一个交流电机联接一个减速箱。在电机与减速箱之间的主轴上装有一个液压推杆盘式制动器。电机非驱动侧出轴安装有测速编码器和超速开关。在卷筒的一侧出轴上装有一个凸轮限位开关。
起升机构运行过程控制如下:
lPLC采集司机发出的运行指令及速度给定指令。
l通过PLC程序进行逻辑判断,判断是否满足“运行允许”的情况。
l如果PLC程序逻辑判断满足“运行允许”的情况,接下来要进行的就是起升速度的处理,其处理如下:
n如果不存在减速运行命令,则传动机构按司机给定的速度运行。
n如果PLC收到减速运行信号,PLC则将速度处理为司机给定速度的10%。
l最终,PLC需将这些运行命令,运行速度通过PROFIBUS总线传输给变频器,变频器带动电机运行,实现起升机构的运行。
2.2.1.Symbol表的编写
在编写PLC程序之前,对于I/O变量,由于其在原理图上已定义,我们可以先将其在SYMBOLS中输入。
图2-1:SYMBOLS表
下面我们以起升机构为例,编写一段岸桥起升运行程序。
步骤一:编写“起升允许”程序。我们编写的“起升允许”程序如下图2-2所示:
步骤二:编写“起升命令控制”程序。当起升机构满足了“起升允许“,PLC就可以发出起升向上/下的命令。如图2-3所示:
图2-3:起升运行命令
步骤三:编写“起升速度的控制”程序。在这段程序中:当司机在驾驶室把控制电源合上,并发出起升命令,如果有减速命令存在,则将给定值变为原来的10%,程序如下图2-4所示。
图2-4:速度给定信号处理
步骤四:编写“起升命令与速度控制”程序。以上的程序完成了岸桥起升运行的命令和速度给定的产生,最终我们就是要将这命令与速度给定通过PROFIBUS总线传输给变频器,如图2-6是调用了西门子公司功能块库中的一个PROFIBUS数据传送功能块PCD_SEND,用来传送数据块DB123中的16个字。。
图2-6总线数据传输
2.2.3.岸桥主要机构程序对应的功能FC(Function)
以上分析了岸桥起升机构的程序编写,与起升机构的程序类似,岸桥的大车,小车,俯仰机构程序也要处理运行允许,命令与速度给定,数据传输等。为了使整个项目程序结构清晰,我们将各个功能细分,如下图3-14所示是:主要机构运行控制的功能FC,以及用于命令与速度给定传输的PROFIBUS总线数据传输功能块FB:
图2-7:岸桥主要机构对应功能FC
这些功能FC的作用如下:
lFB22起升/大车1#变频器PROFIBUS总线数据传输
lFB23起升/大车2#变频器PROFIBUS总线数据传输
lFB24小车/俯仰变频器PROFIBUS总线数据传输
lFC31起升运行控制
lFC41大车运行控制
lFC51小车运行控制
lFC61俯仰运行控制
2.2.4.岸桥辅助机构的运行程序
在岸桥上还有一些辅助机构需由PLC程序来控制。这些功能FC如下图2-8所示:
图2-8:辅助机构控制
这些功能FC的作用如下:
lFC12投光灯,空调的启动,停止控制。
lFC13风速处理:当风速达到警报值时发出信号。
lFC16指示灯显示:控制各个操作站的指示灯。
lFC34起升编码器位置处理:判断起升上下的停止,减速位置等。
lFC36负载重量处理:判断负载是否超过额定。
lFC54小车编码器位置处理:判断小车前后的停止,减速位置等。
lFC63俯仰编码器位置处理:判断俯仰上下的停止,减速位置等。
lFC71吊具控制:吊具在起吊集装箱时的控制,如吊具锁头的开闭功能。
结合岸桥主要机构,辅助机构控制的功能FC,以及PROFIBUS总线通讯数据传输的功能块FB等,完成了岸桥PLC程序的设计。
3.PLC程序的统一性问题
3.1.PLC程序统一性问题的发现
在岸桥的PLC程序编写完成后,我们随即在岸桥上进行了调试,由此发现了程序的统一性问题,该问题是这样的:我们所进行的这个项目有12台岸桥,在岸桥上,有些数据的定义需根据现场的实际情况来定义,举一简单的例子:
比如小车机构位置编码器的零位数据OFFSET,对于调试的第一台岸桥,我们可以很容易加以这样定义:将小车机构行驶到最后面的终点位置,读出小车在该位置时位置编码器的读数,以此作为小车机构位置编码器的零位数据OFFSET。但我们在调试第二台岸桥时发现,由于机械安装的误差,第二台小车机构行驶到最后面的终点位置时,读出的小车位置编码器读数与第一台岸桥的数值不相同。也就是说,我们必须将第二台岸桥的小车机构位置编码器的零位数据OFFSET设置成不一样的数据。
与此有相同问题的数据还有诸如重量传感器的比例系数,小车自动停车时停车位置点,俯仰机构的上升终点位置等等。这些问题都产生了一个后果,调试结束后每台岸桥都有对应的PLC程序,彼此之间不统一。
3.2.解决PLC程序统一性问题的分析
分析这个问题,我们设想了以下解决问题的方法:
n我们可以增加设计这样一段解决问题的“岸桥编号识别”程序:首先让各台岸桥编号:比如岸桥1,岸桥2。。。。。。岸桥12,PLC程序运行“岸桥编号识别”程序来判定该岸桥的编号,如果是岸桥1,“岸桥编号识别”程序就执行将岸桥1的数据装载到一“共用数据块”。
“岸桥编号识别”执行完毕后,我们所需要的数据都在这“共用数据块”中,之后PLC在程序运行时,如需要用到那些各台岸桥有差异的数据,就可以从该“共用数据块”中读取所需要的数据。整个过程如图3-1所示:
3.3.PLC程序统一性问题的处理
有了以上的思路,接下来我们就着手开始解决这个PLC程序统一性问题:
l第一步:对岸桥进行编号:
将岸桥定义为岸桥1#至岸桥12#,但是如果要让PLC能够识别这些编号,那么我们必须设置输入信号送给PLC,我们利用了一个备用的输入字节IB256来定义岸桥的编号,在PLC系统的硬件输入上,我们按此定义对各台岸桥接入高电平,每台岸桥不同,如下图3-2所示:
位(BIT)
岸桥编号 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
岸桥1# |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
岸桥2# |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
岸桥3# |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
岸桥4# |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
岸桥5# |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
1 |
岸桥6# |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
0 |
岸桥7# |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
岸桥8# |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
岸桥9# |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
1 |
岸桥10# |
0 |
0 |
0 |
0 |
1 |
0 |
1 |
0 |
岸桥11# |
0 |
0 |
0 |
0 |
1 |
0 |
1 |
1 |
岸桥12# |
0 |
0 |
0 |
0 |
1 |
1 |
0 |
0 |
图3-2:对岸桥进行编号
l在程序中为每台岸桥设置一个DB数据块(DATABASE),分别为DB201~DB212,分别对应岸桥1~12的数据,如下图3-3所示:
图3-3:岸桥1~12数据块
l编写“岸桥编号识别”程序:创建一功能FC74用于处理不同岸桥编号识别,然后将对应岸桥的数据块DB20X数据传输给一共用数据块DB74。如下图3-4所示:当岸桥编号CRANEID是2的时候,将岸桥2的数据块DB202的44个字节传输到共用数据块DB74中。
图3-4:“岸桥编号识别”程序
lPLC读取共用数据块中的数据:PLC可以任意读取共用数据块中的数据,该数据就是对应相应岸桥的数据,如下图3-5所示程序:
图3-5:读取“共用数据块DB
由此,我们通过程序的修改完全解决了PLC程序统一性的问题,使该PLC程序更加完善,可靠。
4.应用与结果分析
4.1.PLC程序在岸桥上的应用情况
4.1.1.实际应用情况
我们将该PLC程序应用于外高桥四期集装箱码头前六台岸桥设备(整个项目共十二台)六台岸桥开始投入使用并成功地使用至今,根据码头工程部工程师的反映,该程序运行得非常可靠,从未出现过由于程序原因造成的故障,而且整个程序运行速度快,思路清晰,易于理解,变量名通俗易记,对岸桥的监控,故障查询方便。同时,由码头合资方马士基船务公司聘请的外方咨询公司对该程序也进行了鉴定并予以肯定。
4.2.与其他岸桥PLC程序的比较
在本程序的开发设计和实现中,我们也参考比较了GE,ABB等一些著名电控供应商的岸桥PLC程序:相比而言,我们的PLC程序有如下优点:
l合理地采用主程序调用子程序的结构,这样的好处是:
n整个程序思路清晰:各个主要机构的控制,各个辅助机构的控制,都有相应的子程序,即功能FC来实现。最终这些功能FC在主程序OB1中调用。
n对岸桥的监控方便,快捷:用户如果想查找到监控的某一装置,比如需查看指示灯,那只要找到“指示灯”这一功能FC,将其打开,不用花很多时间就能找到,大大缩短了查找时间。
l整个程序的变量名采用缩写,通俗易懂,加上变量附带的注释,方便了码头工程人员对程序的掌握,而且工程人员很容易记住一些常用的变量名,如起升上升允许的变量命是HUPPRM是HOIST UP PERMIT的缩写,在熟悉了变量名后,可利用PLC软件SIMATIC MANAGER自带的查找功能(GO TO LOCATION),很快找到该变量对应的程序行,进一步缩短查找时间。
l程序的编写采用PLC特有的“梯形图”语言,十分直观。“梯形图”语言是一种类型继电器图纸表示方法的语言,对电气工程技术人员来说具有亲切感,看程序就象查看原理图一样,更容易理解。
l整个程序简洁,实用,使用嵌套少。在程序编写思想上较多地考虑利于用户监控,查找与理解,而不是单纯从我们怎样编写方便的角度出发。