西门子模块6ES223-1PM22-0XA8大量现货
可编程控制器或可编程计算机(简称PLC或PCC)是目前工控界发展为迅速的工业自动
化控制产品,该类产品在国内外被广泛运用于自动化领域内。
常规的PLC一般仅有开关量输入、输出状态指示,通常没有模拟量数字显示功能。这给需
要显示PLC内部程序中运行的某些数据(如温度、压力、流量、速度、角度、位置、频率
、转速、电压、电流、功率、时间、故障代码等)带来不便。解决这类问题的方法过去有
如下几种:
a. 采用带锁存的BCD码并行显示器;
b. 采用PLC专用模拟量输出模块驱动标准数字面板表;
c. 采用触摸屏的人机界面;
d. 采用微机系统+组态软件。
为了显示4位数据,a种方法需占用PLC 16个晶体管输出点, 如下图所示
一般来讲,PLC的每个输出点平均价格至少为90元人民币,加上4位并行显示器,便宜也
要40元/每位,故需要16×90+4×40=1600(元)才能满足显示要求。如果采用位选形式,
则只要8个I/O口,也需要880元左右,并且由于它不具备普通显示仪表的外观特点,故安
装使用也不方便。如果在类似模拟显示屏上显示大量数据,该种方式显然价格高、安装不便。
b方式可以将PLC的内部数据,如现场采集的温度、压力电流信号经PLC内部转换为用电压
、电流方式表示的工程量供显示。这种方式需要PLC配置昂贵的D/A模块,除D/A本身存在
着转换误差外,它还存在着如下致命缺点:
①显示信号易受干扰,特别是个位数据显示极不稳定,某些场合的数据如:年、月、日、
安全生产日等数据是不允许来回变动的。
②要将PLC采集的数据、或计算值转换为电压输出方式并且要符合工程量表示法较为麻烦
,例如累计产品数量往往较大,而标准数字面板表显示的大数字是1999,又例如显示较
小的数据值时采用电压显示往往输出幅值太小,象余氯值、功率因素值等,稍有干扰就导
致较大的显示误差。
③仪表的互换性差,需要定期进行仪表计量;
④成本高。一般标准数字面板表价格较低,但驱动它必须配置PLC模拟量输出模块,导致
成本居高不下,影响了工程的中标率。我们知道,PLC的开关量每点成本为90元左右。而
模拟量的每点价格至少在700~900元左右。如果选用多块表(象中央控制室模拟显示屏)
,成本明显太高。这种方式目前已逐渐淘汰。
至于c、d方式当然是较好的显示方式,由于大多数应用场合并不需要太多的功能,
某些场合下不适合使用,加上价格太高,在很多项目中被限制使用!
DDM系列数码显示表采取先进的接口技术,方便与各类PLC、计算机连接,以组成单表、多
表显示系统。
由于PLC一般带有DC 24V电源以提供开关量输入、仪表传感器使用,但往往某些特
殊场合下需要DC 5V、DC 12V等规格的电源,这时,我们只有配置AC 220V/DC 5V或者
AC 220V/DC12V电源,给你增添了多余的成本,我们开发出适合于PLC的DC/DC转换器DDMP
系列电源模块,它主要能将PLC DC 15V~ 40V电源降压转换为DC 5V、DC 12V输出或者将
DC15~18V输入转换为升压式DC 24V~36V输出。方便您的各种使用!
某组合机床液压滑台进给运动示意图如图1所示,其工作过程分成原位、快进、工进、快退四步,相应的转换条件为SB、SQ1、SQ2、SQ3。液压滑台系统各液压元件动作情况如表5-1所示。根据上述功能表图的绘制方法,液压滑台系统的功能表图如图2a所示。
图1 某组合机床液压滑台进给运动示意图
表1 液压元件动作表
元件 工步 | YV1 | YV2 | YV3 |
原位 | ― | ― | ― |
快进 | ┼ | ― | ― |
工进 | ┼ | ― | ┼ |
快退 | ― | ┼ | ― |
图2 液压滑台系统的功能表图
如果PLC已经确定,可直接用编程元件M300~M303(FX系列)来代表这四步,设输入/输出设备与PLC的I/O点对应关系如表2所示,则可直接画出如图2b所示的功能表图接线图,图中M8002为FX系列PLC的产生初始化脉冲的特殊辅助继电器。
表2 输入/输出设备与PLC I/O对应关系
PLC I/O | X0 | X1 | X2 | X3 | Y0 | Y1 | Y2 |
输入/输出设备 | SB | SQ1 | SQ2 | SQ3 | YV1 | YV2 | YV3 |
两处卸料小车运行路线示意图如图6-18a所示,小车仍然在限位开关X4处装料,但在X5和X3两处轮流卸料。小车在一个工作循环中有两次右行都要碰到X5,次碰到它时停下卸料,第二次碰到它时继续前进,应设置一个具有记忆功能的编程元件,区分是次还是第二次碰到X5。
图5-18 两处卸料小车自动控制
a)小车运行示意图 b)梯形图
两处卸料小车自动控制的梯形图如图6-18b所示,它是在图6-17b的基础上根据新的控制要求修改而成的。小车在次碰到X5和碰到X3时都应停止右行,将它们的常闭触点与Y0的线圈串联。其中X5的触点并联了中间元件M100的触点,使X5停止右行的作用受到M100的约束,M100的作用是记忆X5是第几次被碰到,它只在小车第二次右行经过X5时起作用。为了利用PLC已有的输入信号,用起保停电路来控制M100,它的起动条件和停止条件分别是小车碰到限位开关X5和X3,即M100在图6-18a中虚线所示路线内为ON,在这段时间内M100的常开触点将Y0控制电路中X5常闭触点短接,小车第二次经过X5时不会停止右行。
为了实现两处卸料,将X3和X5的触点并联后驱动Y3和T1。调试时发现小车从X3开始左行,经过X5时M100也被置位,使小车下一次右行到达X5时无法停止运行,在M100的起动电路中串入Y1的常闭触点。还发现小车往返经过X5时,不会停止运动,出现了短暂的卸料动作,为此将Y1和Y0的常闭触点与Y3的线圈串联,就可解决这个问题。系统在装料和卸料时按停止按钮不能使系统停止工作,请读者考虑怎样解决这个问题。
在工业控制中,用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 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控制系统必将有更为广泛的应用,本文的论述对解决这类问题提供了一定参考价值。