西门子模块6ES7223-1PH22-0XA8大量供应
在工业控制中,用PLC控制的工程在上/下位机通讯上一般采用RS-232/RS-485串口通讯,这种方法对于数据量较大,通讯距离较远,实时性要求高的控制系统,很难满足通讯需要。
近年来随着计算机网络技术的飞速发展,网络化数控已经成为现代制造业发展的必然趋势,控制系统正向虚拟化、网络化、集成化、分布化和节点智能化的方向发展。[1]许多大型PLC厂商生产的PLC都配备了相应的以太网通信模块,本文讨论了OMRONPLC的以太网通信体系结构,并以CP1H PLC的ENT2l以太网模块为例实现与计算机的通信。
1. Winsock网络通信控件
Winsock控件是不可视控件,它提供了访问TCP和UDP网络服务非常简便的途径,使编程人员开发客户/服务器应用程序时,不必了解TCP的细节或调用低级的WinsockAPI函数,只通过设置Winsock控件的属性并调用其方法,就可直接连接到一台远程计算机进行,并可实现双向数据交换。
WinSock主要支持两种类型的套接字:①流式套接字(StreamSocket)也称面向连接方式,该方式对应的是TCP协议,其传输特点是通信可靠性高,可以保证数据流的传输是可靠的、有序的、无重复的,可提供双向的数据流,数据被看作字节流,无长度限制。②数据报套接字(DatagramSocket)又称无连接方式,对应的是UDP协议,这种方式不提供数据传输的正确性、有序性和无重复性,因为它支持面向记录的数据流。传输的数据可能丢失和重复,并且接收顺序混乱,报文长度是有限的。考虑到本系统对通信可靠性和正确性的要求很高,选用流式套接字方式。基于Client/Server模式的流式套接字通讯过程如图1所示。
图1 流式套接字进程通讯过程时序图
2.Ethernet网络通信单元的设置
在组建网络时,根据网络类型的不同,网络中的每个节点需要安装相应的通信单元,PLC上需安装Ethernet网络通信模块,例如0MR0N公司的CJ1W—ETN21以太网模块。应用之前必需对网络进行必要的设置,分为开关设置和CPU总线单元系统设置。
开关设置主要包括以下几项内容:确定分配给CJ1W—ETN21单元的内存工作区(CIO区、DM区),该地址在CPU总线区,由UNITNo.开关确定ETN单元的单元号范围为0~F;NODENo.旋转开关设定两组l6进制数作为ETN单元在网络中的节点号,范围为O1~7E;IP地址设置网络号和主机节点号,由32位二进制数组成,分4段以十进制数表示。
CPU总线单元设置主要通过编程设备如CX—Programmer软件或编程器对网络单元进行模式、本地IP地址、子网掩码、FINS端口号、FTP登录名及口令和IP路由器表等项进行设定。若使用FINS/TCP协议,则还需在以太网单元设置中修改FINS/TCP项的部分参数,如:自动分配的FINS节点号、是否保持激活等项。
3.面向上位计算机的通信协议
如图2所示,以太网的分层模型分为物理层(Physical Layer)、网际层(InternetLayer)、传输层(Transpot Layer)和应用层(ApplicationLayer)。其中:传输层可使用无连接的UDP或需建立连接的TCP协议;应用层为FINS(Factory InterfaceNetworkService)协议,FINS协议是由OMRON公司开发的用于工厂自动化控制网络的指令响应系统。主要规定对PLC存储空间的数据读写等操作方法。应用层使用FINS协议,传输层使用TCP协议的通信实现方法称为FINS/TCP方法。
图2 网络的分层结构
FINS协议包含指令系统和响应系统,其命令帧格是由FINS报头、指令代码、响应代码和正文等几部分组成。从上位计算机发出的指令和响应必须符合下面帧的格式要求,并提供合适的FINS报头信息。[3-4]FINS通信服务是通过FINS命令帧和它们对应的响应帧交换实现的。
FINS命令/响应帧格式如图3所示。FINS/TCP header中规定了五种命令,用于客户机(hostcomputer)与服务器(PLC)之间通信:发送客户机节点地址(node address);(2)发送服务器节点地址(nodeaddress);(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 AsLong)
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控制系统必将有更为广泛的应用,本文的论述对解决这类问题提供了一定参考价值。
可编程控制器(PLC)是一种数字运算与操作的控制装置。PLC作为传统继电器的替代产品,广泛应用于工业控制的各个领域。由于PLC可以用软件来改变控制过程,并有体积小,组装灵活,编程简单,抗干扰能力强及可靠性高等特点,特别适用于恶劣环境下运行。
当利用变频器构成自动控制系统进行控制时,很多情况下是采用PLC和变频器相配合使用,例如我厂二催化的自动吹灰系统。PLC可提供控制信号和指令的通断信号。一个PLC系统由三部分组成,即中央处理单元、输入输出模块和编程单元。本文介绍变频器和PLC进行配合时所需注意的事项。
1.开关指令信号的输入
变频器的输入信号中包括对运行/停止、正转/反转、微动等运行状态进行操作的开关型指令信号。变频器通常利用继电器接点或具有继电器接点开关特性的元器件(如晶体管)与PLC)相连,得到运行状态指令,如图1所示。
在使用继电器接点时,常常因为接触不良而带来误动作;使用晶体管进行连接时,则需考虑晶体管本身的电压、电流容量等因素,保证系统的可靠性。
在设计变频器的输入信号电路时还应该注意,当输入信号电路连接不当时有时也会造成变频器的误动作。例如,当输入信号电路采用继电器等感性负载时,继电器开闭产生的浪涌电流带来的噪音有可能引起变频器的误动作,应尽量避免。图2与图3给出了正确与错误的接线例子。
当输入开关信号进入变频器时,有时会发生外部电源和变频器控制电源(DC24V)之间的串扰。正确的连接是利用PLC电源,将外部晶体管的集电极经过二极管接到PLC。如图4所示。
2.数值信号的输入
图1 运行信号的连接方式
图2 变频器输入信号接入方式
图3 输入信号的错误接法
输入信号防干扰的接法
变频器中也存在一些数值型(如频率、电压等)指令信号的输入,可分为数字输入和模拟输入两种。数字输入多采用变频器面板上的键盘操作和串行接口来给定;模拟输入则通过接线端子由外部给定,通常通过0~10V/5V的电压信号或0/4~20mA的电流信号输入。由于接口电路因输入信号而异,必须根据变频器的输入阻抗选择PLC的输出模块。图5为PLC与变频器之间的信号连接图。
当变频器和PLC的电压信号范围不如变频器的输入信号为0~10V,而PLC的输出电压信号范围为0~5V时;或PLC的一侧的输出信号电压范围为0~10V而变频器的输入电压信号范围为0~5V时,由于变频器和晶体管的允许电压、电流等因素的限制,需用串联的方式接入限流电阻及分压方式,以保证进行开闭时不超过PLC和变频器相应的容量。在连线时还应注意将布线分开,保证主电路一侧的噪音不传到控制电路。
通常变频器也通过接线端子向外部输出相应的监测模拟信号。电信号的范围通常为0~10V/5V及0/4~20mA电流信号。无论哪种情况,都应注意:PLC一侧的输入阻抗的大小要保证电路中电压和电流不超过电路的允许值,以保证系统的可靠性和减少误差。由于这些监测系统的组成互不相同,有不清楚的地方应向厂家咨询。
在使用PLC进行顺序控制时,由于CPU进行数据处理需要时间,存在一定的时间延迟,故在较jingque的控制时应予以考虑。
因为变频器在运行中会产生较强的电磁干扰,为保证PLC不因为变频器主电路断路器及开关器件等产生的噪音而出现故障,将变频器与PLC相连接时应该注意以下几点:
(1)对PLC本身应按规定的接线标准和接地条件进行接地,应注意避免和变频器使用共同的接地线,且在接地时使二者尽可能分开。
(2)当电源条件不太好时,应在PLC的电源模块及输入/输出模块的电源线上接入噪音滤波器和降低噪音用的变压器等,若有必要,在变频器一侧也应采取相应的措施。
(3)当把变频器和PLC安装于同一操作柜中时,应尽可能使与变频器有关的电线和与PLC有关的电线分开。
(4)通过使用屏蔽线和双绞线达到提高噪音干扰的水平。
3 结束语
PLC和变频器连接应用时,由于二者涉及到用弱电控制强电,应该注意连接时出现的干扰,避免由于干扰造成变频器的误动作,或者由于连接不当导致PLC或变频器的损坏。
立体库是物流系统的集散地,它可以提高劳动生产率,降低劳动强度;节约库存占地面积,提高空间利用率;加速仓库储备资金的周转,保证均衡生产。堆垛机是立体库的关键设备,控制堆垛机的自动化控制装置应具有功能全、安全、可靠等特点。为此,本控制系统采用PLC作为控制核心,用变频器驱动堆垛机的电机。
2 立体库定位方式
自动化立体仓库由库房、货架、堆垛机,自动控制与信息传输装置,计算机和输送机等外围设备组成。库房由若干行货架组成,每行货架分隔成标准的存贮单元(托盘),每两行货架间留有巷道,巷道上有堆垛机。巷道端(原位)设有出入货物的货架(即放托盘的架)。巷道长度和货架高度根据存贮量需要及厂房尺寸而定。堆垛机在巷道上固定的天地轨间运行,两端都有限位开关和防越位撞头。
堆垛机自动存取时,必须确定要存或取的货物在货架上的位置,即定位。货物放在货架上的托盘里,一旦托盘所在层、列、行确定,则堆垛机在控制器控制下可自动对托盘进行操作。设层为Y坐标,列为X坐标,行为Z坐标,其立体库定位示意图见图1。
为正确确定X和Y值,堆垛机在运动过程中,采用无接触光电检测方式,对X和Y值不断检测,一旦检测到X、Y值和PLC机内部设定值相同,说明X和Y值确定了。Z值只有两种状态,不是右行就是左行,用一般开关就能设定Z值。X和Y的PLC内部值由拨码盘接口模块(E-01D)通过拨码开关设定。E-01D模块专为操作者外部设置PLC机内部的目标值,每块E-01D模块可输入四组拨盘开关,每组为四位标准BCD码。四组拨盘开关设置对应的计数器或定时器分配号分别为674、675、676、677,E-01D模块拨码接口使用见图2。本立体库PLC控制系统中,只用两组拨码开关,也就是说,只用674、675两个分配号。它们均工作在计数方式。674号被用来设置X值,675号由图2拨码盘设置Y值。
3 控制系统构成
(1) 系统工作原理
为了保障立体库的正常工作,立体库PLC控制系统设计成自动和手动两种方式,当自动出现故障时,手动可继续工作。本系统工作在自动方式时,堆垛机的三个自由度由三种不同电机驱动(列电机、层电机、叉电机)。为了提高效率,能够做到堆垛机正确动作,层电机和列电机由变频器驱动。当堆垛机运行到层或列的目标前一单元,驱动层电机的变频器或驱动列电机的变频器开始降速,一旦检测到目标位光电信号,则驱动层电机的变频器或驱动列电机的变频器在PLC的控制下正确停车。根据Z值,堆垛机的货叉左出或右出。至于存或取时的微落或微抬,由于贮存单元(托盘)规格一样,故只要知道存还是取,控制系统自动进行微落或微抬。当堆垛机的货叉在目标位工作完后,堆垛机自动返回原位,完成整个存或取过程结束。系统框图见图3。考虑到该立体库为冷库,到了冬天,控制系统环境不能满足PLC控制器要求,为此增设了加热控制装置,确保PLC控制器可靠。
(2) 软件编程流程图
由于堆垛机自动存、取货过程是一个比较复杂的控制过程,相应PLC控制器编程也比较复杂,存货和取货过程正好是操作,编程时充分注意逻辑互锁关系。为了提高存(取)货的效率,堆垛机层或列运行的速度控制非常关键,编程时必须注意层或列运行过程中的快慢切换点。编程要合理,减少程序量,缩短扫描时间。现示出立体库PLC控制系统的程序流程图,如图4所示。
4 结束语
(1) 立体库采用PLC控制系统后,堆垛机在变频器驱动下高效运行,稳定可靠,存取货物动作正确,节省人力物力。
(2) PLC控制器通过扩展通讯接口,和管理机进行联网,立体库实现微机管理。
(3) 随着信息科学、自动化技术、机器人不断发展,立体库作为物流系统的集散地,今后,立体库应该向智能化、信息化等方向发展