1. 引言
当前很多简单的逻辑控制设备都采用单片来实现,但随着现场环境的日益复杂化,单片机受环境的干扰也逐渐提升,造成设备的运转不稳定。这里就以LED霓虹灯焊接机为例,焊接过程容易导致错误判断LED的好坏以及焊接质量的降低。因为霓虹灯为一串的LED串联焊接,只要有一盏LED损坏。要么花费较大的人力来返工,要么造成整条霓虹邓的报废。这里就针对该设备改造为PLC的控制。根据控制方式,主要介绍控制的重点部分内容。
2. LED焊接设备介绍
LED焊接设备的工做原理如下所释。
LED供料转盘:
有一个LED供料盘,共16个工位;震动盘提供原始焊接LED到转盘;开始有做引脚处理的工位,以及极性的调整工位。这些工位为凸轮控制。从LED检测好坏开始,由PLC来控制。PLC控制汽缸来实现动作是否执行或者关闭。LED开始的工艺如下:
由LED的判断好坏,决定工序走哪个过程。LED正常时的工序在每个工位中都有执行汽缸。在LED转盘的凸轮控制轴上安装有检测光电输入。
还有一个供导线的转盘,从导线进入到焊接点有14个工位,这个在初始化时,必须先裁剪好14段导线,并移位到焊接工位。在凸轮转轴上安装有计数输入开关。做移位的计数,在距离焊接工位第7个工位是做安装工字塑胶。工字塑胶主要是防止引脚接触。再移动4个工位,安装热缩管。到此处。PLC控制汽缸完毕。送工字塑胶与套管工艺如下:
原有的机械设备是采用整合的单片机控制箱控制,总共控制8个汽缸,来完成LED的检测,修脚,焊电阻,焊接导线直到封装完毕。其他单元由凸轮来控制传动。但在正控制过程中,往往会因环境的因素,干扰单片机,使得动作出现问题,从而导致产品不合格率提高。影响效率。就这里我们采用台湾永宏PLC对单片机控制进行改造。PLC的抗干扰能力比单片机好,对环境的适应能力也很好。在成本上,简单的开关量控制与单片机相差不大。PLC的程序编程比单片机灵活,对程序的修正等更好的做修改。
3. 永宏PLC简介与PLC选型
永宏PLC有17年的历史,在台湾由一群技术人员专门研制与开发。硬件上整合为一块SoC芯片,集高速计数器,高速脉冲,多通讯端口以及中断控制等为一体,是的产品的性能与稳定性在小型PLC中独立一帜。
永宏PLC主推FBs系列,有经济型FBs-MA,高功能型FBs-MC和NC定位型FBs-MN3个档次PLC。根据不同的应用场合,客户可以选择不同档次的PLC来实现设备的控制要求。
在这里我们改造的设备主要控制汽缸的打开与关闭,为简单的开关量控制。我们选择经济型主机。因为有8个汽缸阀门控制。输入点有启动与关闭,以及3个检测输入。选择FBs-24MAT机型,外部接有中间继电器。I/O配置如下表
4. PLC程序控制
4.1启动与停止控制要求。
在启动中有启动按钮X3,为常开状态,按下按钮即可启动电机。另有停止按钮X4,状态为常闭状态。要求停止按钮在设备停止运转时可以实现点动输入程序控制如下图。
图4.1 通讯线接线示意图
4.2LED检测输入程序。
LED检测方式是通过机械结构来点亮LED来判断LED的好坏。这是再配合外界电子线路向PLC的X0提供一个开关信号。LED亮,有信号输入,判断为好的LED;LED不亮则判断为坏的LED。这时工作的重点是要将LED的好与坏位置记录起来,以现实下一步的动作。
如果好的LED将在下一步切脚、供助焊剂和送电阻焊接;若坏的LED则切脚等动作不动作;知道转动LED供料盘到吹废料工位时,实现吹废料。
记忆LED好坏使用对位写入指令。即若是好的LED对寄存器WM16写入1,则为0。因为凸轮控制在转动时要考虑其位置,根据X1的导通与关闭时序来判断。X1有导通240度角,120度角为关闭状态。通过上下缘来控制LED好坏置位的时间和位移的时间。程序如下:
图4.2 一般数据链路程序
在LED检测正常时,FUN41将对WM16进行置位。在电机带动下,X1来判断位置,当到X1为ON时,一个LED检测将向左一个移位。再进行下一个LED检测。这时LED检测信号将有M16送至M17。M17的状态将有M16来决定,以此类推。因为吹废料状态正好是置位为0时才吹料。M21去反状态。
将以上中间继电器直接送至Y点输出,即可以实现汽缸阀门的控制。但在机械结构上要求吹废料时汽缸顶起只能保持一段时间。因为LED在一下个LED送料时要转动,此时吹料顶起汽缸要下来。经过调试,顶起吹料汽缸保持0.4秒,可以保证废料被除掉,以及LED送料转盘转动不卡住。
4.3 导线转盘的离合控制。
当检测到有坏的LED时,在吹料工位时,将吹掉废料,这时将有一个工位是空的。这时当空工位移到焊接焊接导线工位时,导线转盘必须要离合,等待下一个LED的到来,才能焊接导线以及转动开始的焊接工作。转盘离合控制程序如下:
M10信号来之吹废料,在有吹废料时,M10导通,这时对D50的位写入“1”,表示要离合气缸。在间隔一个机械工位后,若无LED,则这时离合气缸。
4.4 送工字塑胶与套管控制。
其中在导线转盘中送工字塑胶与套管的原理,重点也是要采用FUN41来记录移动工位数,开始送工字塑胶与套管,主要输入信号来自X2的计数输入;计数在14位后即送工字塑胶工位。在过4个工位位送套管工位。因为这里送导线转盘有焊接肯定会计数,若是废料则离合,直接对X2信号做处理。简单程序如下:
这里注意的是采用32位寄存器,因为从开始计数到送套管工位时为18个工位。
5. 结束语
通过上文,主要对常规的LED成型设备作改造,在复杂的设备中还会涉及到分段的问题。本章节重点讲常规控制要领,其他额衍生功能,读者可以在这个基础上进行添加。这里不再做介绍。
在工业控制中,用PLC控制的工程在上/下位机通讯上一般采用RS-232/RS-485串口通讯,这种方法对于数据量较大,通讯距离较远,实时性要求高的控制系统,很难满足通讯需要。
近年来随着计算机网络技术的飞速发展,网络化数控已经成为现代制造业发展的必然趋势, 控制系统正向虚拟化、网络化、集成化、分布化和节点智能化的方向发展。[1]许多大型PLC厂商生产的PLC都配备了相应的以太网通信模块,本文讨论了OMRON PLC的以太网通信体系结构,并以CP1H PLC的ENT2l以太网模块为例实现与计算机的通信。
1. Winsock网络通信控件
Winsock控件是不可视控件,它提供了访问TCP和UDP网络服务非常简便的途径,使编程人员开发客户/服务器应用程序时,不必了解TCP的细节或调用低级的Winsock API函数,只通过设置Winsock控件的属性并调用其方法,就可直接连接到一台远程计算机进行,并可实现双向数据交换。
WinSock主要支持两种类型的套接字:①流式套接字(Stream Socket)也称面向连接方式,该方式对应的是TCP协议,其传输特点是通信可靠性高,可以保证数据流的传输是可靠的、有序的、无重复的,可提供双向的数据流,数据被看作字节流,无长度限制。②数据报套接字(Datagram Socket)又称无连接方式,对应的是UDP协议,这种方式不提供数据传输的正确性、有序性和无重复性,因为它支持面向记录的数据流。传输的数据可能丢失和重复,并且接收顺序混乱,报文长度是有限的。考虑到本系统对通信可靠性和正确性的要求很高,选用流式套接字方式。基于Client/Server模式的流式套接字通讯过程如图1所示。
图1 流式套接字进程通讯过程时序图
2.Ethernet网络通信单元的设置
在组建网络时,根据网络类型的不同,网络中的每个节点需要安装相应的通信单元,PLC上需安装Ethernet网络通信模块,例如0MR0N公司的CJ1W—ETN21以太网模块。应用之前必需对网络进行必要的设置,分为开关设置和CPU总线单元系统设置。
开关设置主要包括以下几项内容:确定分配给CJ1W—ETN21单元的内存工作区(CIO区、DM区),该地址在CPU总线区,由UNIT No.开关确定ETN单元的单元号范围为0~F;NODE No.旋转开关设定两组l6进制数作为ETN单元在网络中的节点号,范围为O1~7E;IP地址设置网络号和主机节点号,由32位二进制数组成,分4段以十进制数表示。
CPU总线单元设置主要通过编程设备如CX—Programmer软件或编程器对网络单元进行模式、本地IP地址、子网掩码、FINS端口号、FTP登录名及口令和IP路由器表等项进行设定。若使用FINS/TCP协议,则还需在以太网单元设置中修改FINS/TCP项的部分参数,如:自动分配的FINS节点号、是否保持激活等项。
3.面向上位计算机的通信协议
如图2所示,以太网的分层模型分为物理层(Physical Layer)、网际层(Internet Layer)、传输层(Transpot Layer)和应用层(Application Layer)。其中:传输层可使用无连接的UDP或需建立连接的TCP协议;应用层为FINS(Factory Interface Network Service)协议,FINS协议是由OMRON公司开发的用于工厂自动化控制网络的指令响应系统。主要规定对PLC存储空间的数据读写等操作方法。应用层使用FINS协议,传输层使用TCP协议的通信实现方法称为FINS/TCP方法。
图2 网络的分层结构
FINS协议包含指令系统和响应系统,其命令帧格是由FINS报头、指令代码、响应代码和正文等几部分组成。从上位计算机发出的指令和响应必须符合下面帧的格式要求,并提供合适的FINS报头信息。[3-4]FINS通信服务是通过FINS命令帧和它们对应的响应帧交换实现的。
FINS命令/响应帧格式如图3所示。FINS/TCP header中规定了五种命令,用于客户机(host computer)与服务器(PLC)之间通信:发送客户机节点地址(node address);(2)发送服务器节点地址(node address);(3)发送Fins frame;(4)Fins frame发送出错通知;(5)客户机与服务器联机确认。
图3 FINS命令/响应帧格式
4.通信程序的具体实现
在新建VB工程后,需要执行VB工具栏“工程/部件” 命令,将Winsock控件添加到工程中, 并命名为“WskClient”。程序采用TCP/IP协议进行通信,其主要属性设定如下:
With WskClient
.Protocol = sckTCPProtocol ‘采用TCP/IP协议
.LocalPort = 9600 ‘本地计算机端口号
.RemoteHost = txtIP.Text ‘取得远程PLC的IP地址
.RemotePort = txtPort.Text ‘远程PLC端口号
.Bind 9600 ‘指定使用的本地端口
End With
初始化工作完成后向PLC提出连接请求,待PLC接受请求并发送应答信息后,客户端程序依照各种帧格式建立好要发送的信息帧,就可以与PLC进行双向的数据交流了。在这一过程中,可建立发送失败后的重发机制,以增强通信的可靠性。
建立并发送“握手信息”指令(20字节),指明客户机节点号;当计算机接收到PLC返回帧(24字节)后,检查PLC是否收到命令,并取得服务器和客户机节点号。当计算机接收到PLC返回的数据时,会产生DataArrival事件,参数BytesTotal包含接收到的数据字节数。在DataArrival事件中,可以调用GetData方法接收数据。如果接收到Close事件,则用Close方法关闭连接。可用Winsock的State属性来反映当前TCP/IP的连接状态。这里仅列举主要程序如下:
‘向服务器请求连接
WskClient.Connect
TimeDelay 100
Do
DoEvents
Loop Until WskClient.state=sckConnected
‘建立并发送FINS命令帧
Private Sub SendData_Click()
ReDim SendData (19) As Byte
SendData (0) = &H46‘FINS命令帧报头的第1个字节
……
WskClient.SendData SendData() ‘发送FINS命令帧
End Sub
‘接收PLC响应帧,并分析数据
Private Sub WskClient_DataArrival(ByVal bytesTotal As Long)
Dim i As Integer
ReDim ArriveData(bytesTotal) As Byte
wsk.GetData ArriveData, vbArray + vbByte, bytesTotal
‘接收数据,保存在ArriveData数组中
For i = 0 To bytesTotal - 1
txtArData.Text = txtArData.Text & " " & ArriveData (i)
Next i
……‘其它数据处理
If ArriveData(7) <> 16 Then
MsgBox“接收信息丢失“
ElseIf SendData(19)= ArriveData (bytesTotal-5) Then
MsgBox“节点地址错误“
End If
End If
在接收信息后,当PLC收到传输过去的信息后,会将对应的命令反馈值传回,这个事件程序内的程序将它显示在文本框中,还可作处理。主程序流程图如图4所示。
图4 程序流程图
若采用UDP协议,则通信的基本过程与TCP相同,只是不需要建立连接。UDP应用程序可以是客户机,也可以是服务器,而不必象TCP应用程序那样必须分别建立客户机程序和服务器程序。由于UDP在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,故而传输速度很快。如果网络中设备不是很多,且发送数据量不大时,可选择耗费计算机“资源”更小的UDP协议进行通信。
5.结束语
采用Winsock控件实现的上位机以太网通信程序,已成功应用于数字小样并条机监控系统中,该法简单实用,在不追加投资的情况下,实现车间设备的网络数据实时监控的功能,达到了理想的效果。以VB作为监控软件的开发平台,软件的二次开发不受限制,节约成本,并可根据需要随时对程序进行升级。为实现对控制系统进行有效的信息管理与监控,基于以太网的PLC控制系统必将有更为广泛的应用,本文的论述对解决这类问题提供了一定参考价值。