产品描述
西门子6ES7223-1BM22-0XA8当天发货
一. 前言
随着生产自动化程度的不断提高,可编程序控制器PLC得到了广泛的应用,特别是小型PLC具有编程简单、性能可靠和价格低的特点,被大量应用于单机控制系统中,如啤酒的稀释控制、离心机控制等。作为设备维修技术人员,一般都能掌握PLC和计算机PC的应用知识,但如何利用PLC和PC来设计小型自控系统,实现简单的数据采集和监控操作,从而满足生产需要,却是一个要深入学习研究的问题。
面向生产操作,设计简单有效的控制系统,涉及到三部分的软件编程:
**:PC上人机操作界面的设计。PC作为上位机,一般都是运行在bbbbbbs 98/2000操作系统下,利用微软提供的可视化编程软件Visual Basic 6.0,设备维修技术人员就可设计出优美的人机操作界面,只需进行主要操作功能编程和少量界面控制编程。
*二:实现生产工艺要求的PLC控制程序设计。因为是小型控制系统,其生产控制过程并不复杂,技术人员只要充分了解了生产工艺和控制要求,运用PLC编程工具,此部分设计编程并不难。
*三:PC与PLC通讯程序的设计。此部分的开发设计较难,需要掌握PC和PLC的有关通讯硬件驱动和通讯协议的知识。但对于小型控制系统来说,主要通过PC串口来通讯,所以通讯程序设计的关键是如何利用Visual Basic 6.0中的串口通信控件——MSComm控件,并根据PLC的串口通信协议设计出上下位机的数据交换程序。
下面以啤酒稀释自控系统设计为例,主要讲解PC和PLC通讯程序的设计要点。
二. 啤酒稀释自控系统设计分析
1. 啤酒稀释控制要求
啤酒稀释是啤酒生产中一个重要环节,通过把高浓度的酒液与脱氧水按比例混合成稀释酒,从而提高啤酒产量和增加啤酒品种,稀释的控制过程很简单,主要步骤有:
1) 输入高浓度的浓度A和稀释后要达到的浓度B ;
2) 计算出加水量的百分比 [(B-A) / A]*** ;
3) 根据此百分比和高浓酒的瞬时流量,计算出脱氧水要达到的流量;
4) 比较水的瞬时流量和计算出的流量,来控制水调节阀的开度,使水瞬时流量等于计算流量。
由于酒和水的瞬时流量是变化的,所以3)、4)步要反复进行。以上所有的计算功能和PID调节功能都由PLC完成。
2. 啤酒稀释的人机操作界面:
人机操作主要用来输入啤酒浓度数据、操作命令,直观显示各种流量数据并记录偏差曲线,界面图如下:
3. 硬件配置
本例子中上位机PC选用联想奔腾Ⅱ品牌机,外加RS232转RS485通讯转换卡。下位机PLC选用三菱FX2N-16MR,另加模拟输入模块FX2N-2AD 和模拟输出模块FX2N-2DA各一块,外加一个485串口通讯模块PC-485BD。
三. PC与PLC通讯程序设计分析
在分析具体的VB通讯程序之前,先要介绍有关VB串口通信控件MSComm的应用知识和三菱PLC 通讯协议。
1. MSComm控件简介
如图所示是Mscomm控件的图标。
它可以用来提供简单的串行端口通信功能,也可以用来创建功能完备、事件驱动的高级通信工具。Mscomm控件提供了一系列标准通信命令的使用界面。使用它可以建立与串行端口的连接,通过串行端口再连接到其它设备(如调制解调器、PLC),发出命令,交换数据,以及监视和响应串行连接中发生的事件和错误。
2. MSComm控件的基本属性
MSComm 控件有很多重要的属性,基本属性如下:
属性 描述
CommPort 设置并返回通讯端口号。
Settings 以字符串的形式设置并返回波特率、奇偶校验、数据位、停止位。
PortOpen 设置并返回通讯端口的状态。也可以打开和关闭端口。
bbbbb 从接收缓冲区返回和删除字符。
Output 向传输缓冲区写一个字符串。
如下程序打开串行端口COM1
mPort = 1 使用 COM1
MSComm1.Settings = "9600,N,7,1" 9600波特率,无奇偶校验,7位数据,一个停止位。
MSComm1.PortOpen = True ''''''''''''''''打开端口,开始通信。
3. MSComm控件的通信方式
通信控件有2种不同的方式来处理和解决各类通信软件的开发和设计问题。
(1) 事件驱动
事件驱动通讯是处理串行端互作用的一种非常有效的方法。在许多情况下,在事件发生时需要得到通知,例如:当线路数据到达本端或CD线和RTS信号线状态发生变化时,要求我们使用相应的事件来跟踪和出理。在这些情况下, Mscomm控件将触发OnComm事件,CommEvent属性值也将被改变。所以在OnComm事件中读取CommEvent属性值就可以检测和处理通信错误等方面的问题。
(2)查询方式
利用定时器控件Timer,我们可以设计程序每隔一段时间去读取CommEvent的值并处理所发生错误和事件。
4. 本实例中采用的通讯方式
在本例子中,PC与PLC 采用无握手协议的串行通信,它们只用两根数据线 TD和RD、一根信号地线连接,数据通信采用查询方式。根据系统功能要求,PC需发送两种类型的命令:
(1) 周期性命令,它由定时器触发引起,每隔0.5秒发送一次。用它来向PLC查询实时显示的数据。如酒、水的瞬时流量,调节阀开度等。
(2) 非周期性命令,它由操作者按动命令按钮引起,非周期性发送。用它来传送输入参数、操作命令给PLC 。
在啤酒稀释的人机操作界面中,有运行时不可见的通信控件(MSComm1)一个、定时器控件一个Timer1。通信控件(MSComm1)用于初始化串口数据并打开串口;定时器控件(Timer1)用于每隔0.5秒执行通讯命令,把查询命令从PC发送到PLC,同时接收PLC返回的应答数据。设计通讯数据的发送和查询功能,必须掌握PLC所遵循的通讯协议。
5. 三菱FX系列PLC通讯协议
三菱FX系列PLC共有四种通信模式,本实例采用的是PLC与计算机**协议通信方式(无须PLC编程,电脑直接读写操纵PLC),其通讯命令字和通讯格式介绍如下:
PC发送给PLC的通信命令字
命令字 注释
BR 以1点为单位,读出位元件的状态
WR 以16点为单位,读出位元件的状态,或以1字为单位,读出字元件的值
BW 以1点为单位,写入位元件的状态
WW 以16点为单位,写入位元件的状态,或以1字为单位,写入值到字元件
BT 以1点为单位,设置/复位 位元件
WT 以16点为单位,设置/复位 位元件,或以1字为单位,写入值到字元件
RR 控制PLC运行RUN
RS 控制PLC停止STOP
PC 读出PLC设备类型
TT 连接测试
PC发送给PLC的通信命令格式
约定说明:ENQ为请求标志,ASCII值5,VB中以chr(5)表示;
ACK为正确标志,ASCII值6,VB中以chr(6)表示;
STX为请求标志,ASCII值2,VB中以chr(2)表示;
EXT为请求标志,ASCII值3,VB中以chr(3)表示;
表格中粗体字为需要求和效验的部分;
和效验为每一项的ASCII值的总和转换成十六进制后,取其低两位;
站号、PLC号、元件数量、和效验都是以十六进制表示;
等待延时为0-150毫秒,以十六进制0H-FH表示,如100ms为AH。
1) 批量读出位元件—BR指令格式
1 2 3 4 5 6 7 8 15 16 17
PC侧: ENQ 站号 PLC号 BR 延时 首地址 数量 和校验 ACK 站号 PLC号
PLC侧: STX 站号 PLC号 数据 EXT 和校验
9 10 11 12 13 14
例如:要读出站号为5的PLC的X40到X44共5点的状态值,延时100毫秒,设PLC中X40与X43为OFF,其余为ON,则指令数据如下:
注释: 请求 站号 PLC号 命令 延时 元件首地址 元件数量 和校验
代码: ENQ 0 5 F F B R A X 0 0 4 0 0 5 4 7
ASCII码: 05H 30H 35H 46H 46H 42H 52H 41H 58 30H 30H 34H 30H 30H 35H 34H 37H
只要将以上代码以字符串形式(VB中可以表示为chr(5)&”05FFBRAX00400547”)发送到PLC,就会有正确的回应信息,如下:
注释: 头 站号 PLC号 位元件状态值 尾 和校验
代码: STX 0 5 F F 0 1 1 0 1 EXT E 7
ASCII码: 02H 30H 35H 46H 46H 30H 31H 31H 30H 31H 03H 45H 37H
2) 批量读出字元件—WR指令格式
1 2 3 4 5 6 7 8 15 16 17
PC侧: ENQ 站号 PLC号 WR 延时 首地址 数量 和校验 ACK 站号 PLC号
PLC侧: STX 站号 PLC号 数据 EXT 和校验
9 10 11 12 13 14
该命令使用与BR命令相同。
3) 批量写入位元件—BW指令格式
1 2 3 4 5 6 7 8 9
PC侧: ENQ 站号 PLC号 BW 延时 首地址 数量 写入值 和校验
PLC侧: ACK 站号 PLC号
10 11 12
4) 批量写入字元件—WW指令格式
1 2 3 4 5 6 7 8 9
PC侧: ENQ 站号 PLC号 WW 延时 首地址 数量 写入值 和校验
PLC侧: ACK 站号 PLC号
10 11 12
6. VB通讯功能块设计分析
根据三菱PLC的通讯指令格式,在PC中编写数据查询功能块RevData( )和数据发送功能块SendData( ),就可以在定时中断处理块TIMER1( )中调用查询功能块RevData( ),实现PC界面数据定时刷新;在每一次操作命令执行时,调用数据发送功能块SendData( ),把控制值写入PLC中,从而实现控制。下面给出这两个功能块的设计程序。
1) 查询数据函数RevData( )
(没有和校验)
Sub RevPLC (iNo As bbbbbb, iType As bbbbbb, iAdd As bbbbbb, iNum As bbbbbb)
'''''''''''''''' iNo为PLC站号,iType为元件类型,iAdd为首地址,iNum为元件数量
Dim Stmp As bbbbbb
Dim cha, j As Integer
Dim ChaCount As Integer
Dim Comm As bbbbbb
Select Case iType
Case "D" ''''''''''''''''查询数据寄存器的值
Comm = "WR" ''''''''''''''''命令类型:数据字读
cha = Val("&H" & iNum) * 4 ''''''''''''''''数据寄存器的值为十六进制表示,占4个字符
Case "M", "X", "Y" ''''''''''''''''查询继电器触电的值
Comm = "BR" ''''''''''''''''命令类型:二进制位读
cha = Val("&H" & iNum)
End Select
iAdd = Right$("000" & iAdd, 4)
iNum = Right$("0" & iNum, 2)
Stmp = Chr$(5) & iNo & "FF" & Comm & "A" & iType & iAdd & iNum ''''''''''''''''输出命令格式
ChaCount = 6 + cha ''''''''''''''''要返回字符个数
main.MSComm1.InBufferCount = 0 ''''''''''''''''输入缓冲区清零
main.MSComm1.Output = Stmp ''''''''''''''''设传送缓冲区内容为命令格式
Now=Second()
Do
DoEvents ''''''''''''''''转让控制权,以便让操作系统进行
If Second()-Now>1 Then Exit Sub
Loop Until main.MSComm1.InBufferCount = ChaCount ''''''''''''''''当接收到规定字符时停止循环
RevDataTmp = Mid$(main.MSComm1.bbbbb, 6, cha) ''''''''''''''''返回数据字符串保存在全局变量
''''''''''''''''RevDataTmp中
End Sub
2) 发送数据函数SendData( )
(没有和校验)
Sub SendPLC(iNo As bbbbbb, iType As bbbbbb, iAdd As bbbbbb, iNum As bbbbbb, ivalue As bbbbbb)
'''''''''''''''' iNo为PLC站号,iType为元件类型,iAdd为首地址,iNum为元件数量,ivalue为写入值
Dim Stmp As bbbbbb
Dim Comm As bbbbbb
Select Case iType
Case "D" ''''''''''''''''写数据寄存器的值
Comm = "WW" ''''''''''''''''命令类型:数据字写
ivalue = Right$("0000" + Hex$(Val(ivalue)), 4) ''''''''''''''''写入值转换成十六进制表示
Case "M" ''''''''''''''''写继电器触点的值
Comm = "BW" ''''''''''''''''命令类型:二进制位写
End Select
iAdd = Right$("000" & iAdd, 4)
iNum = Right$("0" & iNum, 2)
Stmp = Chr$(5) & iNo & "FF" & Comm & "A" & iType & iAdd & iNum & ivalue ''''''''''''''''输出命令格式
MSComm1.Output = Stmp ''''''''''''''''输出命令到传送缓冲区
Now= Second()
Do
DoEvents ''''''''''''''''转让控制权,以便让操作系统进行
If Second()-Now>1 Then Exit Sub
Loop Until main.MSComm1.OutBufferCount = 0 ''''''''''''''''当命令传送完时停止循环
End Sub
四. 总结:
生产自控系统的设计要解决好三部分的问题:PC上人机操作界面的编制,PC与PLC的通信程序编写,PLC生产控制程序的编写。对于串行通信的单机自控系统,因为具有操作界面和生产工艺流程简单的特点,所以利用Visual Basic设计操作界面和利用PLC编程语言设计生产控制程序都比较方便,但对如何编写通信程序就比较陌生,也没有许多相关资料可学习。本文介绍的方法简单、实用,供各位参考。利用通信控件MSComm的OnComm事件和CommEvent属性还可以设计出功能更完善的通信程序。
本系统由分布在十几公里内10个深井取水泵站、4个增压泵站、多个储水池、水塔及用户管网组成。
整个供水系统的高低落差达150米,由于供水系统的组成及地形结构的特殊性,过去人工监控,给生产管理、供水调度带来诸多不便。
实施了微机监控后,它能实时监测供水系统的主要工艺参数(如压力、流量、水位、电压、电流等),控制深井泵、增压泵的开停,监视泵机的运行状态,同时提供生产管理所需的报表、曲线、数据查询等功能。它的运行对供水系统的安全生产、科学调度有着重要的意义。
二、系统组成
微机监控系统采用主从结构、分布式无线实时监控方式(简称SA)。
系统主要由监控中心、无线通信系统、现场、传感器及仪表四部分组成。
监控中心:由微机、无线数传机、全向天线、模拟屏及UPS组成,主要完成各现场终端数据的实时采集、监测、控制、数据存储、打印报表、数据查询等功能。
无线通信系统:监控中心与各泵站终端之间采用无线方式通讯。监控中心为主动站,其它终端副站为被动从站,该系统采用无线电管理**给定的数据频率,以一点对多点的方式与从站通讯,监控中心为全向天线,各副站为定向天线。
现场监控终端:核心为,是一个智能设备,它有自己的CPU和控制软件,主要完成现场的数据采集、转换、存储、报警、控制等功能,并通过无线信道与监控中心微机进行数据通信。根据监控中心的命令分别完成系统自检、数据传送、控制输出等任务。
传感器及仪表:是PLC监测现场信号的“眼睛”,现场所有信号都需经过传感器及仪表的转换,才能输出标准信号,被PLC终端所接受。系统主要测量电压、电流、液位、压力、流量及耗电量等参数。
三、现场PLC终端
现场PLC监控终端是工业现场与监控中心之间的桥梁纽带,一方面它采集现场仪表、变送器、设备运行状态等信号,另一方面它又与监控中心通讯,执行有关命令。现场终端一般无人值守。因此,终端机的性能和质量对系统的可靠性影响很大。经充分论证,选用西门子S7-200系列PLC作现场终端具有较高的性能价格比,它具有体积小、易扩展、性能优等特点,非常适合小规模的现场监控。
1、PLC硬件设计
现场某一终端需测控开关输入信号12路,开关输出信号14路,模拟量输入信号9路。因此,我们选用S7-214基本单元,一块继电器输出扩展单元(EM222),三块模拟输入扩展单元(EM231)。
这样系统共有开关输入14路,开关量输出18路,模拟量输入信号9路,满足现场要求。
2、通讯接口
S7-214PLC基本单元提供一个RS-485接口,为了与无线信道的数传机(电源、Modem、进口电台三者合一)相连,我们专门设计了RS-485接口的**Modem,并采用光电隔离技术,使二者在电气上完全独立,避免相互干扰,由于数传机发射时需要RTS信号,而RS-485接口又不提供RTS信号,解决这个问题有两法。其一,由无线Modem根据PLC的发射信息产生RTS信号,这就要求该Modem必须智能化,同时PLC在发送信息之前需先与Modem通信,让其输出RTS信号,并回送RTS已产生信息,然后PLC再发送现场信息。其二,采用PLC的某一I/O输出点,产生RTS信号,由PLC在发送信息前现接通该点,控制数传机发射,延时一段时间后(电台建立载波时间),再发送信息。后一种方法简单、实用,较好的解决了无线通信的接口问题。
3、抗干扰设计
为提高系统的可靠性,现场终端、数传机、PLC、直流温压电源及部分变送器装于一个控制柜内,各部分相对独立,便于维护。PLC开关量输入、输出与现场之间家继电器隔离,模拟信号采用信号隔离器和配电器隔离,电源采用隔离变压器供电,以减小电源“噪声”,同时系统设置良好的接地。
四、PLC软件设计
PLC终端软件采用梯形图语言编写,为提高终端的抗干扰能力,软件设计中采用了数字滤波、故障自检、控制口令等措施,保证控制操作的正确性和可靠性。程序设计采用模块化、功能化结构,便于维护、扩展。终端软件主要由下列模块组成。
1、初始化程序:设定各寄存器、计数器、PLC工作模式、通信方式等参数初始值。
2、数据采集子程序:对各路模拟量数据采集、滤波、平均等处理。
3、累计运行时间子程序:对泵机等设备的运行时间进行累计。
4、脉冲量累计子程序:对电耗、流量、仪表的输出脉冲进行累计,并进行标度变换。
5、遥信子程序:检测电机、阀门、报警开关等设备的运行状态。
6、置初值子程序:由监控中心对时间、电耗、流量等累计参数按用户的要求设定初始值。
7、故障自检子程序:检测PLC的故障信息、校验信息,并发往监控中心。
8、控制子程序:根据监控中心的命令,或现场自控条件输出相应的操作。
9、通讯子程序;完成与监控中心的各种通信功能。
通讯程序中,接收命令采用中断处理,通过ATCH指令使中断事件8在接收不同特征命令下执行不同的程序。对串行通信的**时限制则通过设定内部定时中断来控制,其事件号为10,定时时间由SMB34的值确定。为减少通信的误码,采用偶校验及异或双重校验措施。
五、结论
本系统在软、硬件方面采取了多种措施,特别是现场终端选用了S7-200PLC,提高了系统的可靠性,在铁路供水系统取得了较好的应用效果。本系统将无线通讯与S7-200PLC**的结合,解决了现场分布较散、距离较远、范围较大的系统监控问题,在供水、供电、供气、油田、气象、水文水利等部门有较好的应用前景。
产品推荐