西门子模块6ES7221-1BH22-0XA8品质好货
西门子模块6ES7221-1BH22-0XA8品质好货
控制软件的设计思路
软件部分是实现脱硫控制的关键部分。软件按照模块化结构进行设计,以便达到较强的移植性和今后的功能扩展。
(1)程序流程
脱硫系统程序流程如图1所示:
图1 脱硫系统程序流程图
(2)闭环控制
为了经济运行又达到环保标准,需要根据SO2含量控制给料量。本脱硫系统PLC模拟量闭环控制PID功能图如图2所示,用SO2浓度传感器检测反应炉内的SO2浓度,变送器将传感器输出的电流信号转换为标准量程的电流信号,然后送给模拟量输入模块,经A/D转换后得到与SO2浓度成比例的数字量,CPU将它与SO2设定值进行比较,按照PID控制算法对误差值进行计算,将运算结果(数字量)送给模拟量输出模块,经D/A转换后变为电流信号,用来控制给料机的输送量的多少,通过它控制锅炉内的SO2浓度,实现闭环控制。
图2 PID功能框图
S7-200 PLC提供了内置的PID运算指令。在进行模拟量闭环控制时,使用模拟量扩展模块(EM231、EM232)来完成PID控制。本文设计的PID功能指令如图3所示,只需设定好PID参数,运行PID控制指令,就能求得输出控制值,实现模拟量闭环控制。本系统采用了现场实验整定法,直接在过程控制系统中进行参数整定。在上位机界面通过SO2实时曲线观察SO2浓度变化并修改PID参数,来达到理想的控制值。
图3 PID控制指令
7、结束语
通过应用西门子S7-200 PLC,实现了对脱硫系统进行可靠的、高效的实时控制和监控,提高了系统的可靠性、安全性和自动化的程度。在山东某热源厂的应用实践证明,本系统性能可靠,故障率低,具有非常好的环保效果和经济效益。
ac
在工业控制中,用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控制系统必将有更为广泛的应用,本文的论述对解决这类问题提供了一定参考价值。
3 电机控制
西门子S7-200系列PLC的高速脉冲输出功能是指在PLC某些输出端产生高速脉冲,用来驱动负载实现jingque控制。PLC主机多可提供2个高速脉冲输出端,即Q0.0或Q0.1。每个高速脉冲发生器对应一定数量的特殊寄存器,包括控制字节寄存器,状态字节寄存器和参数数值寄存器,它们用以控制高速脉冲输出形式,反映输出状态和参数值。PLC控制电机中通过脉冲输出指令(PLS)检查为脉冲输出(Q0.0或Q0.1)设置的特殊存贮器位(SM),然后启动由特殊存储器位定义的脉冲操作。脉冲由Q0.0或Q0.1输出控制电机。
如何控制电机,使小车能及时以直线、曲线、停止的方式进行运行,且运行过程连续、平稳,避免小车出现异常行为,如突然的大转弯、急刹车等,是我们必须要解决的一个重要问题。因此,小车的启动、每步控制之间的过渡、停止都要处理好,输出脉冲的周期要连续,解决方法如下。
图2 电机控制
图2中f轴表示:频率;t轴表示:发射脉冲数。小车刚开始启动阶段以f1的频率启动,加速到f2,发射的脉冲数是t1-t0。,然后以f2的频率匀速,规定每4 s对小车进行一次定位和控制,假设在t2时正好是4 s,开始对小车进行控制,但是,定位和控制过程需要一段时间,当发射控制命令时,小车可能已不在原来定位的点。此时时间已超过4 s,设此时滞的时间为t,计算所要执行的程序量,t的大上限值是0.1 s,这么小的时间完全可以忽略,在时滞的时间内让小车仍以原来发射脉冲频率运行,当发射的脉冲数是t3时开始对小车进行了新的控制,小车进行下一步的运行。然而,此刻仍以前一步的频率为开始发射频率。
转换办法是通过两条命令:①MOVB 0,SMB67;②PLS 0。使前一步的运行立刻停止,接着调用新的包罗段控制小车进行下一步的运行,下一步的开始周期是前一步的结束周期,加速或减速到本步规定的周期(如图2所示),加速或减速的时间尽可能短,以此周期匀速运行。小车在运行的整个过程中每步之间处理方法都是这样。图中所示为频率减小到f5小车停止。采用此方法后小车的运行是连续平稳的。
4 软件设计
控制系统程序流程框图如图3所示,整个程序共有4大块组成:①对S7-200各个变量、中断初始化;②主站同各从站进行信息通讯;③进行定位处理;④控制电机。
图3 程序流程框图
整个程序量是巨大的,合理安排程序结构显得很重要。当没进行通信时,S7-200反复扫描执行周期,出现字符中断时,对接收到的信息进行保存处理,因为S7-200顺序执行的特点,这要在很多执行周期内完成。但是每个执行周期的时间都是短暂的。所有的从站都通信完毕,调用定位子程序求出小车所在的空间位置。然后顺序调用模糊控制子程序、电机控制子程序。这三大块子程序要在同一周期内完成,此周期执行时间是大的,程序必须简单实用,使执行周期尽可能的降到小值,减小控制的时滞。从宏观上看扫描周期显现出伸缩性的特点。
- 西门子S7-1200 SB1221 数字量信号板模块6ES7221-3AD30-0XB0
- 西门子数字量输入模块6ES7221-1BF32-0XB08输入24V DC8 输入24V DC
- S7-1200,6ES7221-1BH32-0XB0数字输入 SM 1221
- 6ES7221-1BF32-0XB0数字输入模块 SM 1221 8 DI
- 西门子6ES7221-1BF22-0XA8 EM221 CN 8路数字量输入模块代理
- 西门子S7-200 EM221 8入120/230VAC扩展模块6ES7221-1EF22-0XA0
- 西门子S7-200 EM221 8入24VDC开关量扩展模块6ES7221-1BF22-0XA8
- 西门子S7-200 EM221 16入24VDC开关量扩展模块6ES7221-1BH22-0XA8
- 西门子6ES7221-1BH32-0XB0 官方授权代理商 PLC
- 西门子EM221CN扩展控制器6ES7221-1BF22-0XA8