
图2-7:岸桥主要机构对应功能FC
这些功能FC的作用如下:
l FB22 起升/大车1#变频器PROFIBUS总线数据传输
l FB23 起升/大车2#变频器PROFIBUS总线数据传输
l FB24 小车/俯仰变频器PROFIBUS总线数据传输
l FC31 起升运行控制
l FC41 大车运行控制
l FC51 小车运行控制
l FC61 俯仰运行控制
在岸桥上还有一些辅助机构需由PLC程序来控制。这些功能FC如下图2-8所示:

图2-8:辅助机构控制
这些功能FC的作用如下:
l FC12 投光灯,空调的启动,停止控制。
l FC13 风速处理:当风速达到警报值时发出信号。
l FC16 指示灯显示:控制各个操作站的指示灯。
l FC34 起升编码器位置处理:判断起升上下的停止,减速位置等。
l FC36 负载重量处理:判断负载是否超过额定。
l FC54 小车编码器位置处理:判断小车前后的停止,减速位置等。
l FC63 俯仰编码器位置处理:判断俯仰上下的停止,减速位置等。
l FC71 吊具控制:吊具在起吊集装箱时的控制,如吊具锁头的开闭功能
结合岸桥主要机构,辅助机构控制的功能FC,以及PROFIBUS总线通讯数据传输的功能块FB等,完成了岸桥PLC程序的设计。
3 PLC程序统一性问题
3.1.1 PLC程序统一性问题的发现
在岸桥的PLC程序编写完成后,我们随即在岸桥上进行了调试,由此发现了程序的统一性问题,该问题是这样的:我们所进行的这个项目有12台岸桥,在岸桥上,有些数据的定义需根据现场的实际情况来定义,举一简单的例子:
比如小车机构位置编码器的零位数据OFFSET,对于调试的第一台岸桥,我们可以很容易加以这样定义:将小车机构行驶到最后面的终点位置,读出小车在该位置时位置编码器的读数,以此作为小车机构位置编码器的零位数据OFFSET。但我们在调试第二台岸桥时发现,由于机械安装的误差,第二台小车机构行驶到最后面的终点位置时,读出的小车位置编码器读数与第一台岸桥的数值不相同。也就是说,我们必须将第二台岸桥的小车机构位置编码器的零位数据OFFSET设置成不一样的数据。
与此有相同问题的数据还有诸如重量传感器的比例系数,小车自动停车时停车位置点,俯仰机构的上升终点位置等等。这些问题都产生了一个后果,调试结束后每台岸桥都有对应的PLC程序,彼此之间不统一。
分析这个问题,我们设想了以下解决问题的方法:
n 我们可以增加设计这样一段解决问题的“岸桥编号识别”程序:首先, 让各台岸桥编号:比如岸桥1,岸桥2。。。。。。岸桥12,PLC程序运行“岸桥编号识别”程序来判定该岸桥的编号,如果是岸桥1,“岸桥编号识别”程序就执行将岸桥1的数据装载到一“共用数据块”。
“岸桥编号识别”执行完毕后,我们所需要的数据都在这“共用数据块”中,之后PLC在程序运行时,如需要用到那些各台岸桥有差异的数据,就可以从该“共用数据块”中读取所需要的数据。整个过程如图3-1所示:

图3-1:“岸桥编号识别”程序
有了以上的思路,接下来我们就着手开始解决这个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:“岸桥编号识别”程序
l PLC读取共用数据块中的数据:PLC可以任意读取共用数据块中的数据,该数据就是对应相应岸桥的数据,如下图3-5所示程序:

图3-5:读取“共用数据块DB74”数据程序
由此,我们通过程序的修改完全解决了PLC程序统一性的问题,使该PLC程序更加完善,可靠。
4.应用与结果分析
我们将该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 整个程序简洁,实用,使用嵌套少。在程序编写思想上较多地考虑利于用户监控, 查找与理解,而不是单纯从我们怎样编写方便的角度出发。
|