柳州市怡得安豪科技发展有限责任公司 卢进胜
摘要: 阐述以ControlLogix系列PLC和GE的Cimplicity HMI系统集成的集中控制系统设计思路和集成技巧,实现对不规则RS485通讯协议的空压机组及相关联设备运行状态的自动监测与控制。
关键词:FCS PLC 不规则RS485协议 通信 无扰转换
1 引 言
为企业生产线提供合格的压缩空气,组建足够容量的压缩空气生产线,建立和健全的监控系统、设备维护系统,提高自动化程度,是提高生产效率、降低成本行之有效的途径。本系统是以美国寿力公司的水冷型螺杆式空压机300-2S型及汉粤组合式水冷干燥机组、冷却机组等构建的空气压缩站系统为控制对象,设计一种基于多总线协议(含多种不规则RS485协议)传输控制的可靠、高效的控制系统,精简了组建时的现场材料与工作量,确保了产能平衡;系统采用PLC执行控制,同时在上位机进行实时监控压缩空气及其生产设备的状况与运行。
2 空气压缩站系统概述
空气压缩站系统共包含6台美国寿力公司的300-2S水冷型螺杆式空压机、6台汉粤组合式水冷干燥机,1座冷却塔,2台冷却水泵,4台除尘除油过滤器(配压差传感器),6台除尘过滤器(配压差传感器),以及存储罐等设备,组成两条相关联生产线,其中的一条生产线流程图如图1。其生产过程为:空压机生产出来的压缩空气经一级、二级除油除尘过滤器,存储于储气罐中,再经除尘过滤器,传送给水冷干燥机,最终供应常温、洁净、压力恒定的二次能源:压缩空气,满足生产需求。
图1 生产线流程图
该站为两线一系统的控制模式,控制系统以PLC为控制执行中心,Cimplicity HMI系统为监测与主令中心,两者通过通讯总线链路相结合,集成集中控制系统,图2为一条生产线控制系统构架图。
在控制方式上有三种方式,其一是现场手动控制,主要用于设备调试、维修或异常情况处理;其二是远程单机控制,鼠标点击操作计算机显示屏上的Cimplicity HMI系统界面的控制软按钮,给PLC传输控制命令,由PLC实现自动逻辑输出控制,适宜短暂间歇生产需求的控制;其三是远程联控,在此方式下空气压缩站系统所有设备,按预定的生产工艺要求或规则,在确保提供满足需求的前提条件下,自动调节生产设备的运行、监测设备状态、维护设备安全生产。三种控制方式可以随时无扰切换。
图2 一条生产线控制系统构架图
3集中控制系统控制功能规划设计
3.1 PLC逻辑控制功能
为使系统在实际应用中具有实际意义的可操作性,系统结合压缩空气生产工艺要求、标准以及压缩空气使用标准,规划设计了人性化、合理化的控制功能,具体内容如下:
(1)实现本地手动控制、远程单机控制、主备机自动联控,各控制方式互锁;
(2)系统压力输出恒定为:0.7 MPa;系统压力波动:+0.02MPa;
(3)设备在本机上控制时,在监控屏可监视其运行状态;过程中,转到远程控制模式时,保持原状态。除本机要求在停机后设为遥控,方可远程控制外,应可控。
(4)只有至少1台冷却水泵正常运行后,空压机、干燥机方可启动;空压机、干燥机启动时间间隔为3分钟。冷却水泵起停控制及其状态反馈不受控制模式影响;
(5)联控功能起作用后,主备机可单台设置为主机或备机,并且联控设有自动轮换主备机起用按钮,设有联控全停功能。
(6)系统采用远程单机控制时,其单机起停不受除本机安全运行所需保护外的其他设备干涉,在本机存在故障时,该设备不可启动;但在系统监测总管压力及温度的功能保护下,默认1#机为主机、2#机为第一备用、3#机为第二备用,按系统联控工艺要求,顺序自动起停。
(7)系统联控运行时,系统可设一组主备机模式;当需要轮换主备机设置时,系统将随机自行循环设置;系统管网压力低时,系统按主机、备机1、备机2的顺序启动并加载;反之,系统管网压力、温度高时,系统按备机2、备机1、主机的顺序卸载或停机。
(8)空压机与干燥机联动控制部分:
·选择远程联控方式
远程起动空压机,当空压机排气压力达到0.5MPa时,干燥机自动起动。远程停止空压机,延时6秒后或受空压机排气压力影响自动停止干燥机;干燥机可单独操作停止,但不可操作起动。但在本机存在故障时,该设备不可启动。
·选择远程单控
远程起动空压机,当空压机排气压力达到0.5MPa时,干燥机方可操作起动。远程停止空压机,延时6秒后或受空压机排气压力影响自动停止干燥机;干燥机可单独操作停止,也可单独操作起动,但受空气压力的限制。但在本机存在故障时,该设备不可启动,同时,影响联控的其他设备。
3.2上位机Cimplicity HMI系统界面功能
上位机是人机交互的界面,是实际应用中主要的操作对象。故然设计贴切实际生产过程及简单明了的监视、操作界面,是集中控制系统首要任务,是使用者对系统的印象工程。上位机系统结合整体系统控制功能,将系统划分三大类:一是标准显示界面,二是参数设置界面,三是故障报警界面。详细内容如下分解:
(1) 标准显示界面
·1、2期监视屏;1期监控屏;2期监控屏。
·系统生产链路:动态实时显示生产链路;
·空压机组参数:机组排气压力P1;机组排气温度T1;干侧排气压力P2;干侧排气温度T2;油过滤器前后压力P3和P4;分离器压差ΔP1;油过滤器压差ΔP2;喷油温度T3;级间温度T4;总的开机/加载小时;机组;供气量;运行/停止状态;主备机状态;日期时间;
·干燥机组:进气温度、蒸发温度、出气温度、冷凝温度;运行/停止状态;
·管路系统中:总管压力、总管温度、过滤器压差;冷却水塔进出口水温及其温差;冷却水泵的状态指示、故障指示、起停控制;
(2)参数设置界面
加载压力;卸载压力;加载压差;疏水间隔;疏水时间;重起时间;总管压力上限;总管温度上限;机组间的主/备机设置;本地\远程启动/停车开启或关闭;主/备机自动设置开启或关闭;主/备机自动轮换时间;
(3) 故障报警界面
·空压机组:手动停机错误;遥控停机错误;暂停错误;启动错误;卸载错误;加载错误;调整错误;满载错误;主机干侧排气温度高;机组干侧排气压力高;主机机头排气温度高;机组机头排气压力高;油过滤器压差超过140Kpa时产生失效报警;分离器压差超过70Kpa时产生失效报警;
·干燥机组: 进气、加热器、露点超温故障报警;主机过载报警;冷煤低压报警;冷煤高压报警;
·管路系统中:压力、温度、压差传感器故障报警;冷却水泵故障报警;
过滤器压差超过70Kpa时产生失效报警;冷却塔故障报警等;
3.3集中控制系统组件概述
在规划设计好控制功能之后,又如何将这些功能完完全全的实现呢?其实,这对于自动控制技术高速发展的今天,形式是多种多样的,在此就不再遨诉。那么我们将根据用户现场实际情况或用户拟定的方向,选择最具有前瞻性的可编程序控制器以及工业组态监控,配合工业计算机,实现所有工艺要求和控制功能。其中工业计算机选用的是研祥工控机,可编程序控制器选用罗克韦尔ControlLogix系列1756-L61(CPU)、 以太网通讯模块1756-ENT、输入输出I/O模块、模拟量输入输出模块;其他元件有直流开关电源、中间继电器、电源分配器、断路器等。
在本控制系统中,硬件要求较为简单,精简了成本。
4集中控制系统编程组态要点技术综述
系统编程组态源于集中控制系统控制功能规划设计,其难点在于错综复杂的逻辑互锁关系;首先,三种控制模式:手动、远程单机、远程联控等的无扰切换,要实现这一功能必须精确配合PLC循环扫描周期,设置模式转换所需要的过程时间,否则将出现状态失控现象;其二,主备机分配问题。在手动远程单机控制模式下,主备机的分配可以自由选定,比较简易;在自动远程联控模式下,主备机的自动确认以及轮换主备,难度就显而易见了。“1主5备,先主后备”的控制机理,要求只要主机变换,那么随后的5台备机要相应的作出合理的调整,而且,调整期间不容有停机现象或供气回路气压大幅波动现象。确切的说,这里将有720种逻辑控制功能回路,在自动控制模式下实现可靠、安全、精确的转换。逻辑控制编程组态遵循控制机理,采用了数学数组计算方式的排列组合思维方式,结合数据比较功能,筛选确定各机组身份,并确立运行逻辑功能;其三、自动远程联控模式下,空气压缩机与干燥机运行配套组合。若组成固定式配对模式,那么在出现机组交错故障时,整个空压站将瘫痪;若组成自由配对模式,在其中一台空气压缩机启动或停止后,应启动或停止哪台干燥机时,将有可能出现杂乱无章的运行控制状态,也把控制思路推进了模糊控制的难点。因此,系统在逻辑控制组态时,选择了组成固定式配对的控制模式,在自动状态下出现交错故时,切换到远程单机控制模式,避免整个空压站瘫痪,简化逻辑思路。
以上三点为本系统主要的逻辑核心,其余,诸如冷却系统、气路阀等相关联的联锁保护、控制,以及生产过程各个模拟量信号的采集、分析、处理等,遵循功能规划设计及组态软件常规应用技术,得以实现和完善系统。空压机部分逻辑控制功能程序如图5所示。
图5 空压机控制逻辑程序
还有,基于人机交互界面,Cimplicity HMI系统变量直接读取PLC内部相应的变量数据,组态了动态实时生产状况、动态弹出实时故障报警等;但是,Cimplicity HMI系统变量所采集的数据,并不是全部来自于PLC,相反,它还以脚本赋值的形式提供了部分数据给PLC。这是因为设备本身的复杂性决定的。人机交互的界面如如图3。
图3 a)人机交互的界面---系统监控界面
图3 b)人机交互的界面---系统参数设置
5集中控制系统通讯组态技巧
系统通信协议包含有以太网总线协议,以及两种不同协议格式的RS485总线协议。其通信链路图如如图4。
图4 系统通信链路
空气压缩站系统生产设备主要成员:美国寿力公司的300-2S水冷型螺杆式空压机和汉粤组合式水冷干燥机。两者本身独具的智能控制系统,所具备的通讯能力,都是采用了RS485电气接口的串口通讯模式。但是,它们的通讯协议、数据格式却不同。其通讯协议格式如下:
(1)美国寿力公司的300-2S水冷型螺杆式空压机:监控器SUPERVISORⅡ,顺序控制通讯模式
协议格式如表1:
表1 协议格式
(2)汉粤组合式水冷干燥机(XJK-LX)
数据 格式:1位起始位、8位数据位、1位停止位、无校验(MODBUS格式)。
协议帧格式如表2:
表2 协议帧格式
鉴于设备的通讯协议,采用计算机高级语言,编写针对性的信息读写控件,实现控制系统的通信。通信控件程序设计采用C语言编写,设置精确的数据流缓存时间值,遵照设备协议格式,采用RS485通信接口方式,与已设置唯一性站地址及一致性通信参数的设备,完成设备与计算机之间的主从通信方式。计算机通过通信控件采集回来的数据,又通过上位机Cimplicity HMI系统软件脚本赋值给其变量以及下位机PLC变量,为PLC进行复杂地逻辑判断,提供精确的数据。。
另外,上位机Cimplicity HMI系统与下位机PLC,通过Internet以太网总线接口协议(TCP/IP),实现两者的数据交互。通信组态要求分别在计算机和罗克韦以太网通讯模块1756-ENT中设置相互关联的地址,设置一致的通信参数,并在Cimplicity HMI系统中组态OPC服务器方式,联接下位机来完成。
6 结束语
本控制系统基于C语言的通信控件,以PLC为核心,从根本上是与各台设备的智能控制器组成了一个基于总线形式的FCS集散式控制系统,在复杂设备控制群中,发挥了其完美的作用。系统经上汽通用五菱汽车股份有限公司SGMW空压站的成熟应用,总结出系统不但简捷、安全、可靠,而且扩展性广泛,还大幅度缩减了硬件成本、运行维护成本,对减少设备故障率,节能降耗起到了积极的作用。适用于各种类此空气压缩站及其他复杂设备群的控制场合,具有很好的应用前景。
参考文献
[1]深圳寿力亚洲实业有限公司《监控器SUPERVISORⅡ顺序控制及通讯协议手册》;
[2]杭州新箭电子有限公司《XJK-LX型组合式冷吸机通讯协议》;
[3]Allen-Bradley 《Logix5550控制器指令集参考手册》1756-6.4.1ZH-January 2000;
[4] 李现勇. Visual C++串口通信技术与工程实践.北京:人民邮电出版社,2002
[5]《CIMPLICITY入门教程》、《CIMPLICITY HMI系统过程控制用户手册》。
附图6 部分通信控件C语言程序:
、
// : Implementation of the CWlky_ctrlCtrl ActiveX Control class.
#include "stdafx.h"
#include "wlky_ctrl.h"
#include "Wlky_ctrlCtl.h"
#include "Wlky_ctrlPpg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
IMPLEMENT_DYNCREATE(CWlky_ctrlCtrl, COleControl)
CWlky_ctrlCtrl *zcwlky;
// Message map
BEGIN_MESSAGE_MAP(CWlky_ctrlCtrl, COleControl)
//{{AFX_MSG_MAP(CWlky_ctrlCtrl)
ON_WM_CREATE()
//}}AFX_MSG_MAP
ON_OLEVERB(AFX_IDS_VERB_PROPERTIES, OnProperties)
END_MESSAGE_MAP()
// Dispatch map
BEGIN_DISPATCH_MAP(CWlky_ctrlCtrl, COleControl)
//{{AFX_DISPATCH_MAP(CWlky_ctrlCtrl)
DISP_PROPERTY_NOTIFY(CWlky_ctrlCtrl, "TimerCount", m_timerCount, OnTimerCountChanged, VT_I4)
DISP_PROPERTY_NOTIFY(CWlky_ctrlCtrl, "COM", m_cOM, OnCOMChanged, VT_I4)
DISP_PROPERTY_NOTIFY(CWlky_ctrlCtrl, "UpdateInterval", m_updateInterval, OnUpdateIntervalChanged, VT_I4)
DISP_PROPERTY_EX(CWlky_ctrlCtrl, "K1P1", GetK1P1, SetK1P1, VT_R8)
DISP_PROPERTY_EX(CWlky_ctrlCtrl, "K1P2", GetK1P2, SetK1P2, VT_R8)
DISP_PROPERTY_EX(CWlky_ctrlCtrl, "K1P3", GetK1P3, SetK1P3, VT_R8)
DISP_PROPERTY_EX(CWlky_ctrlCtrl, "K1P4", GetK1P4, SetK1P4, VT_R8)
DISP_PROPERTY_EX(CWlky_ctrlCtrl, "K1T1", GetK1T1, SetK1T1, VT_I4)
DISP_PROPERTY_EX(CWlky_ctrlCtrl, "K1T2", GetK1T2, SetK1T2, VT_I4)
DISP_PROPERTY_EX(CWlky_ctrlCtrl, "K1T3", GetK1T3, SetK1T3, VT_I4)
DISP_PROPERTY_EX(CWlky_ctrlCtrl, "K1T4", GetK1T4, SetK1T4, VT_I4)
DISP_PROPERTY_EX(CWlky_ctrlCtrl, "K1RunTime", GetK1RunTime, SetK1RunTime, VT_I4)
DISP_PROPERTY_EX(CWlky_ctrlCtrl, "K1GongQiLiang", GetK1GongQiLiang, SetK1GongQiLiang, VT_I4)
DISP_PROPERTY_EX(CWlky_ctrlCtrl, "K1RunStatus", GetK1RunStatus, SetK1RunStatus, VT_I4)
DISP_PROPERTY_EX(CWlky_ctrlCtrl, "K1RunMod", GetK1RunMod, SetK1RunMod, VT_I4)
DISP_PROPERTY_EX(CWlky_ctrlCtrl, "K1LoadP", GetK1LoadP, SetK1LoadP, VT_I4)
DISP_PROPERTY_EX(CWlky_ctrlCtrl, "K1UnloadP", GetK1UnloadP, SetK1UnloadP, VT_I4)
DISP_PROPERTY_EX(CWlky_ctrlCtrl, "K1LoadTime", GetK1LoadTime, SetK1LoadTime, VT_I4)
DISP_PROPERTY_EX(CWlky_ctrlCtrl, "G1LengGanJiStatus", GetG1LengGanJiStatus, SetG1LengGanJiStatus, VT_I2)
DISP_PROPERTY_EX(CWlky_ctrlCtrl, "G1XiGanJiStatus", GetG1XiGanJiStatus, SetG1XiGanJiStatus, VT_I2)
DISP_PROPERTY_EX(CWlky_ctrlCtrl, "G1GuZhangLeiXing", GetG1GuZhangLeiXing, SetG1GuZhangLeiXing, VT_I2)
VT_I2)
DISP_PROPERTY_EX(CWlky_ctrlCtrl, "G1JinQiWenDu", GetG1JinQiWenDu, SetG1JinQiWenDu, VT_I4)
DISP_PROPERTY_EX(CWlky_ctrlCtrl, "G1LuDianWenDu", GetG1LuDianWenDu, SetG1LuDianWenDu, VT_I4)
DISP_PROPERTY_EX(CWlky_ctrlCtrl, "G1LengNingWenDu", GetG1LengNingWenDu, SetG1LengNingWenDu, VT_I4)
DISP_PROPERTY_EX(CWlky_ctrlCtrl, "G1ChuQiWenDu", GetG1ChuQiWenDu, SetG1ChuQiWenDu, VT_I4)
DISP_PROPERTY_EX(CWlky_ctrlCtrl, "G1JiaReQiWenDu", GetG1JiaReQiWenDu, SetG1JiaReQiWenDu, VT_I4)
DISP_FUNCTION(CWlky_ctrlCtrl, "KCStop", KCStop, VT_BOOL, VTS_I4)
DISP_FUNCTION(CWlky_ctrlCtrl, "KCUnload", KCUnload, VT_BOOL, VTS_I4)
DISP_FUNCTION(CWlky_ctrlCtrl, "KCLoad", KCLoad, VT_BOOL, VTS_I4)
DISP_FUNCTION(CWlky_ctrlCtrl, "KCFull", KCFull, VT_BOOL, VTS_I4)
DISP_FUNCTION(CWlky_ctrlCtrl, "KCTune", KCTune, VT_BOOL, VTS_I4)
DISP_FUNCTION(CWlky_ctrlCtrl, "KCEStop", KCEStop, VT_BOOL, VTS_I4)
DISP_FUNCTION(CWlky_ctrlCtrl, "CtrlStart", CtrlStart, VT_BOOL, VTS_NONE)
DISP_FUNCTION(CWlky_ctrlCtrl, "GStop", GStop, VT_BOOL, VTS_I4)
DISP_FUNCTION(CWlky_ctrlCtrl, "GStart", GStart, VT_BOOL, VTS_I4)
//}}AFX_DISPATCH_MAP
DISP_FUNCTION_ID(CWlky_ctrlCtrl, "AboutBox", DISPID_ABOUTBOX, AboutBox, VT_EMPTY, VTS_NONE)
END_DISPATCH_MAP()
// Event map
BEGIN_EVENT_MAP(CWlky_ctrlCtrl, COleControl)
//{{AFX_EVENT_MAP(CWlky_ctrlCtrl)
EVENT_CUSTOM("ReadComplate", FireReadComplate, VTS_NONE)
EVENT_CUSTOM("TimeOut", FireTimeOut, VTS_I4)
//}}AFX_EVENT_MAP
END_EVENT_MAP()
// Property pages
// TODO: Add more property pages as needed. Remember to increase the count!
BEGIN_PROPPAGEIDS(CWlky_ctrlCtrl, 1)
PROPPAGEID(CWlky_ctrlPropPage::guid)
END_PROPPAGEIDS(CWlky_ctrlCtrl)
// Initialize class factory and guid
IMPLEMENT_OLECREATE_EX(CWlky_ctrlCtrl, "rlCtrl.1",
0xe9bd6709, 0x1ef3, 0x4a37, 0x94, 0xfd, 0x77, 0x69, 0x8a, 0x80, 0xb0, 0x7f)
// Type library ID and version
IMPLEMENT_OLETYPELIB(CWlky_ctrlCtrl, _tlid, _wVerMajor, _wVerMinor)
(转载)