西门子模块6ES338-4BC01-0AB0
一. 概述
RS-422A总线是EIA公布的“平衡电压数字接口电路的电气特性”标准,这个标准是为改善RS-232C标准的电气特性,又考虑与RS-232C兼容而制定的。RS422A是工业界广泛使用的双向、差动平衡驱动和接收传输线标准接口 ,它以全双工方式通信 ,支持多点连接 ,允许创建多达 32个节点的网络,具有传输距离远 (大传输距离为 1200m) ,传输速率快 ( 1200m时为 100kbit/s)等优点 ,相对于其它总线,如FF、CAN、LonWorks等而言,具有结构简单、成本低廉、安装方便、与传统的DCS兼容等特点;此外,市场上很多现场仪表都有RS422A总线接口,因此采用该总线可以很容易地开发一些中小型网络测控系统。结合某一工程项目的实际特点 ,我们采用了RS422A通信接口来实现远程数据通信系统。
在该工程项目中,系统采用两级主从总线型网络结构。温度等变量的控制主要由总线上的各个智能仪表实现,上位机根据控制要求修改智能仪表的给定值等参数,以及一些数字量的监控显示等。该项目所选智能仪表为上海大华-千野仪表有限公司生产,参数相当复杂,具有较强的控制以及通信功能。同时,利用上位机软硬件资源丰富,以bbbbbbs为操作平台,因此开发的应用软件有强大的管理功能以及非常友好的人机界面。本系统应用软件采用Microsoft Visual C++6.0开发,充分利用VC++灵活快速,对视窗编程和多任务编程的方便接口,开发出来的软件具有完善的数据采集、设定、报警、实时监视等功能。应用结果表明,该系统有效的实现了对温度控制系统的监控,效果良好。
二. 系统结构
该智能仪表功能较为完善,控制精度高。自带RS422A通信卡,通信命令多达一百多条,上传及接受数据量大,主要包括各步温度设定值、PID参数值、报警参数值、传感器修正值、模糊控制参数值等等。现场总线采用RS422A总线,因为RS422A总线具有结构简单、成本低廉安装方便等优点。智能仪表挂接在RS422A总线上,通过RS422A/232C装换器和PC串口相连接。为此配置有十几台(可扩展)智能仪表,RS422A/232C转换器一块,并且每一台仪表设置唯一的地址。温度的控制由下位机(智能仪表)完成。主控计算机完成的功能有1)主动读取下位机相关数据2)改变温度控制的设定值以及其它的参数,但不直接完成对温度的控制。3)显示温控曲线画面,温控仪集中显示画面以及报警数据等的动态显示。4)数据的存储,统计,报表等。系统的硬件结构图如图1所示。
图1
三. 通信协议
1) 物理层 采用平衡型标准RS422接口 ,以**数据传输的可靠性。在平衡型标准RS422A中,
发送器与接收器均以差分方式工作 ,每个信号用两根导线传输 ,信号的电平由两根导线上的信号的差值来表示。
2) 数据链路层 本系统采用异步串行通信方式。系统约定,波特率:9600bps,偶校验,1个起始位,7个数据位,1个停止位,采用ASCII码作为传输代码。总线上的传输帧分为命令帧和数据帧。命令帧又分为为建立连接包含地址信息的地址命令帧和对已建立连接要求上传或者下传数据的控制命令帧。后者和数据帧的文本格式如下:
3)网络层 由PC机实现该层协议的功能。总线上的传输帧中,地址命令帧是控制PC机以广播的形式发出,用于唤醒总线上的某台仪表,握手请求与之建立通信关系,然后相应的仪表向控制PC机回传本机地址,则握手成功;否则仪表向PC机回传否定应答。当PC机要和目前通信的仪表以外的其他仪表通信时,必须首先放弃目前的通信关系,发送放弃通信命令帧。然后再从新按照上述方式建立连接。建立连接,放弃连接以及温控仪的应答格式如下所示:
其中ENQ ﹑EOT ﹑ACK 为控制码 结束码表示一帧的结束
4)应用层 工业智能仪表的RS422A总线网络系统的应用层,是对控制PC机与智能仪表之间相互传送的信息组帧,即数据格式按照一定的格式和含义进行定义。
四. 系统软件设计
系统管理软件采用面向对象技术,基于bbbbbbs2000平台,用VC++6.0编程开发。系统应用软件由实时动态过程和历史记录浏览两大部分组成,实时动态过程包括数据采集及设定、运行控制、数据管理三大模块组成,数据采集及设定模块定时从下位机即智能仪表采集和设定过程实时数据。控制模块主要是控制仪表的运行或停止等以及运行段选择,数据管理模块包括数据通信、数据显示、报警、打印、存储等功能。
根据实时系统的特征,监控软件中多个任务同时运行,为了不让一个任务执行的时候,阻塞别的任务,我们充分里了bbbbbbs系统允许多进程、多线程编程的特点,将系统的分成几个模块。首先,将历史纪录浏览和实时动态过程分成两个进程,因为这两个过程有很大的差别。历史纪录浏览中的数据是静态的,对实时性没有要求,而且可以在生产过程之中或之后运行都可以,在开发这部分程序时,可以不用考虑时间的问题。实时动态过程却是一个实时性要求很高的任务,在这个过程中主要要完成通信、显示、控制、打印等任务,另外还要完成数据的转储。
(1) 动态进程设计
线程一词指程序指令顺序的执行,每个程序独立执行程序代码中的一系列指令。从用户或应用程序编程的角度看,程序中的线程是同时运行的。操作系统通常靠线程与线承建的快速切换控制来达到这种同时的感觉(但如果计算机有多个处理器,则系统可以直接同时执行线程)。程需要在某个时间完成多个任务时(许多引用程序都是这样),将每个任务放在不同的线程中不仅使程序更加有效,而且能简化开发工作。
在设计实时动态进程时我们把它分成了两个线程:主线程和通信线程。主线程定时启动通信线程,通信线程执行完一次通信任务后自动悬挂。在正常情况下,主线程两次恢复通信线程之间的时间是能够保证一次通信线程的完整执行。
在数据存储方面,为了**系统的动态性能,要求能快速访问数据存储区,我们将数据存放在两个地方。正在进行的生产过程的过程数据首先存放在内存开辟的数据缓冲区内,这样主线程能很快的访问到。另外,将几次通信的数据定期存放到硬盘上,这样能防止因停电等意外事故造成数据的损失。
在程序设计时我们采用了面向对象设计的思想,比如我们把温控仪看成一个对象,有关的数据结构及其操作完全封装在一个类里面,这样程序的数据结构分离也可以实现分离,这对于软件的扩展,对于软件开发和调试都会带来极大的方便。
该软件主要实现方式如下:
在重载的void CRs422AnetView::OnDraw(CDC* pDC)函数里面调用自定义函数StartOfSystem(pDC),后者打开并配置好串口,启动通信线程,设置记时器等。其主要代码如下:
void CRs422AnetView::StartOfSystem(CDC *pDC)
{
……
m_hCom=CreateFile(m_sPort, GENERIC_READ | GENERIC_WRITE, 0, NULL,
OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED,NULL);
if(m_hCom==INVALID_HANDLE_VALUE)
return FALSE;
DCB dcb;
if(!GetCommState(m_hCom, &dcb)) return FALSE;
dcb.fBinary=TRUE;
dcb.BaudRate=m_nBaud;
dcb.ByteSize=m_nDataBits;
dcb.fParity=TRUE;
dcb.Parity=EVENPARITY;
dcb.StopBits=ONESTOPBIT;
return SetCommState(m_hCom, &dcb);
……//以上为打开并配置串口代码
SetTimer(1,5000,NULL); //启动定时器,定时间隔为5妙
CwinThread*m_pThreadd=AfxBeginThread(CommProc,this->GetDocument(), THREAD_PRIORITY_NORMAL, 0, CREATE_SUSPENDED, NULL); // 创建并挂起线程
if(m_pThreadd==NULL)
{
CloseHandle(m_hCom);
return FALSE;
}
else
{
m_bConnected=TRUE;
m_pThreadd->ResumeThread(); // 恢复线程运行
}
……
}
UINT CommProc(LPVOID pbbbbb)为辅助通信线程,该线程完成设定值以及动态数据的读取,其程序流程图如下所示:
void CRs422AnetView::OnTimer(UINT nIDEvent)为响应计时器消息的函数,定时被触发,本程序中定时间隔为5秒。在该函数里,主要是恢复辅助通信线程以及调用数据显示程序﹑定时刷新数据等。
(2) 历史纪录浏览进程设计
历史纪录的浏览是为了对过去生产过程的回顾,可将产品的质量和过程的设定结合起来进行分析,对以后的生产提供参考,以便能**产品的生产质量。这个进程提供了一定的查询功能,能将历史纪录用曲线的方式回放出来,能将重要的过程锁定下来,也能删除过程纪录。
1 引言
商场营业厅等大型公众室内建筑空调新风系统为人群提供舒适健康购物环境,但同时也会消耗着大量的能源。如何有效地解决这个问题,就需将环境对人的影响进行分析。资料显示,室内空调计算温度与耗能量有直接的关系,因此通过合理的设定室内空调的运行参数,既可以满足人体对环境健康性要求的同时,又可以达到节能的目的,降低空调系统运行时间,节约费用。其中二氧化碳CO2是衡量空气质量的重要指标,为了在节能的同时提供适宜空气环境,需对CO2进行监测与调节。本文以某3层商场中央空调系统作为设计案例。
商场中央空调系统主要负责卖场楼层的冷暖供给,其中下层主要为商铺和车库,其它楼层为卖场区域。因卖场商品分区摆放,各区域功能不同,造成人流密度分布不均,导致各区域温度与CO2 浓度差异,同时考虑到超市空调为悬挂式安装,冷(暖)风分区供给、就地回风,所以本系统采用通过DeviceNet现场总线网络进行区域控制、局部微调、集中管理的控制策略。商场的特点是不同时间、不同时段人**差异较大,温度以及CO2 浓度也伴随人**的变化而变化,如人**在、节假日增多,温度、CO2 浓度也相对较高,平时相对较少。项目设计要求控制系统根据现场环境对温度、CO2 浓度自动调节。
2 商场中央空调自动化系统
2.1总体结构设计
项目选用台达机电自动化技术平台集成实现。根据空调机组分布特点,对于CO2浓度和室内温度采用区域控制。冷(热)水和风机采用VWV(变水量空调系统)、VAV(变风量空调系统)混合控制模式,由此达到舒适和节能目的。整个大楼共分为三层,一层3台AHU(空调机组),二层3台AHU,三层2台AHU、1台PAH,每层都由不同的功能区域组成。所有AHU和PAH(柜式空气处理机组)由1台总控制器来负责整体控制。每台AHU、PAH都有1台各自独立的控制箱。整体架构如图1所示。
图1 空调自动化系统整体结构
2. 2 总控制器结构
总控制器主要由台达触摸屏、PLC以及DVPDNET主站模块构成。总控制器通过台达的DeviceNet总线与现场控制器通讯,进行数据交换。触摸屏通过RS485总线以MODBUS协议与总控制器通讯,监视各台AHU的运行状态。现场控制器的温度与CO2浓度可以通过总控制器的触摸屏来设定,设定好的数据通过DeviceNet通讯分发给各现场控制器。通过台达DVPDNET主站模块对整个网络进行管理,并通过人机界面显示各网络节点的状态。当网络上的节点发生异常时,相应的指示灯点亮。实时显示主站模块的状态,当主站模块发生错误时,显示主站模块的错误代码。
2.3 现场控制器
现场控制器主要由台达MODBUS/DeviceNet转换模块DNA02、PLC、变频器、接触器等部件构成。现场控制器接受总控制器的温度、CO2浓度设定指令。现场控制器之间还可以通过总控制器实现数据共享,将采集到的温度、CO2浓度等信号传送给与该区域相关的其他现场控制器。现场控制器控制AHU、PAH空调机的风机转速、冷(热)水阀门开度和新风阀开度来调节室内温度和CO2浓度。
2. 4 AHU的控制流程
空调机组AHU操作箱可以选择自动控制或手动控制。自动控制时,现场温度及CO2浓度由台达PLC智能控制在允许的设定范围内;当操作箱出现故障时(如传感器损坏、出现通讯故障等),可以选择将变频器以固定频率运行或者工频运行,以便检修。
2. 5 对于CO2的浓度和人**的处理
在卖场中,根据空间区域布置CO2传感器位置,主要在人员集中密集处采集CO2浓度值。CO2传感器就近接线于现场控制箱的PLC,此信号经过集中控制器发送给本区域相关的空气处理机组的控制器,然后由各台AHU通过调整新风阀门开度来引进新风量,调节室内CO2浓度。新风阀门的开度的大小是通过CO2浓度、室外温度的目标值依据其权重的大小来进行PID控制的。
2. 6 火警连锁
系统与安防系统连动,当发生火警时,总控制器上人机出现报警画面,同时空调机停止工作,水阀、风阀关闭,排烟系统启动,排出烟雾。本系统提供一个干接点与安防系统连动。
3 DeviceNet网络配置设计
按照表1分别对网络上的节点进行设置。使用DeviceNet网络配置工具配置网络。
表1 网络节点设置
3.1 DeviceNet从站配置
(1)打开DeviceNetBuilder软件,软件界面如下所示。
(2)选择『设置(S)』功能点『通讯设置』,选择『系统通道』指令。
(3)在此对计算机与 SV 主机的通讯参数进行设置。如”通讯端口”、”通讯地址”、”通讯速率”、”通讯格式”。设置正确后,点击『确定』按钮,返回主界面。
(4)选择『网络(N)』菜单点『在线』指令。
(5)弹出下所示窗口:
(6)按『确定』对DeviceNet网络进行扫描,正常情况下弹出扫描进度条,如下图所示。按『取消』返回主画面:
(7)如果上述对话框的进度条一直没有动作,则说明 PC 和 SV PLC 通讯连接不正常或PC上有其他程序使用串口。扫描结束后,会提示”扫描网络已完成”。此时,网络中被扫描到的所有节点的图标和设备名称都会显示在软件界面上,在此例中DVPDNET的节点地址为01,如下所示:
(8)用鼠标双击VFD-F Drives节点,弹出下图所示窗口:
(9)在此对 VFD-F变频器的识别参数以及IO信息进行确认。确认配置无误后,点击『确定』按钮。返回主界面。
其它从站(如PLC等)的配置与节点1操作步骤类似,这里不再赘述。
3.2 DVPDNET主站模块(主站)的配置
(1)双击DNET Scanner(节点0)的图标,弹出” 主站模块配置…”对话框,可以看到左边的列表里有当前可用节点VFD-F Drives 230V 50HP,DVP-SS/SA/EH PLC,VFD-F Drives 230V 20HP,DVP-SS/SA/EH PLC,VFD-M Drives 230V 5HP,DVP-SS/SA/EH PLC… …。右边有一个空的”扫描列表”:
(2)将上图中左边列表中的 DeviceNet 从站设备移入主站模块的扫描列表中。具体步骤为:选中 DeviceNet 从站节点,然后点击" >",如下图所示。按照此步骤,即可将 DeviceNet 从站节点依次移入到主站模块的扫描列表内:
(5)点击『是』按钮,将配置下载至主站模块,确认PLC处于RUN模式。
3.3 DVPDNET-SL主站模块和从站的IO数据映射
DVPDNET-SL主站模块→DeviceNet从站
从站设备元件装置D6287→VFD-F Drives 230V 50HP变频器VFD-F变频器命令字D6288VFD-F变频器频率字D6289PLCD500(温度设定信号)D6290VFD-F Drives 230V 20HP变频器VFD-F变频器命令字D6291VFD-F变频器频率字D6292PLCD500(温度设定信号)D6293D501(CO2浓度设定信号)………………………………D6314VFD-F Drives 230V 20HP 变频器VFD-F变频器命令字D6315VFD-F变频器频率字D6316PLCD500(温度设定信号)
DeviceNet从站→DVPDNET-SL主站模块
从站设备元件装置D6037←VFD-FDrives 230V 50HP变频器VFD-F变频器状态字D6038VFD-F变频器设置频率D6039PLCD408(现场温度信号)D6040VFD-F Drives 230V 20HP变频器VFD-F变频器状态字D6041VFD-F变频器设置频率D6042PLCD500(现场温度信号)D6043D501(现场CO2浓度信号)………………………………D6064VFD-F Drives 230V 20HP 变频器VFD-F变频器状态字D6065VFD-F变频器设置频率D6066PLCD408(现场温度信号)
3.4保存配置数据
选择『文件(F)』菜单中『保存(S)』命令,将当前的网络配置保存。b
4 DeviceNet网络监视
4.1 实现原理
主站模块对扫描列表中的节点进行实时监控,并将扫描列表中的每个节点的状态映射到一个位,使用者可以通过监控D6032~D6035的内容获取各网络节点的状态信息。PLC装置与网络节点的对应关系如表2所示。
表2 装置与网络节点的对应关系
PLC元件
对应网络节点
b15
b14
b13
… …
b2
b1
b0
D6032
节点15
节点14
节点13
… …
节点2
节点1
节点0
D6033
节点31
节点30
节点29
… …
节点18
节点17
节点16
D6034
节点47
节点46
节点45
… …
节点34
节点33
节点32
D6035
节点63
节点62
节点61
… …
节点50
节点49
节点48
当扫描列表中的节点正常时,相应的位为OFF状态,当扫描列表中的节点发生异常时,相应的位为ON状态。用户通过监控D6036的内容实时获取主站模块的状态信息。当主站模块正常工作时,D6036的内容为0;当主站模块处于初始化时,D6036高字节内容为1,低字节内容为0;当主站模块发生错误时,D6036高字节内容为2,错误的详细信息参考D6036低字节的错误代码 :
PLC元件
说明
b15
b14
b13
b12
b11
b10
b9
b8
b7
b6
b5
b4
b3
b2
b1
b0
D6036
主站模块状态
(0:正常,1:初始化,2:错误)
主站模块错误代码
4.2 PLC元件说明
PLC元件
元件说明
M0~M63
节点0~节点63状态指示
C0~C63
节点0~节点63错误计数器
M100
当M100=ON时,主站处于正常状态
M101
当M101=ON时,主站处于初始化状态
M102
当M102=ON时,主站处于错误状态
D10
主站的错误次数
D11
主站的错误代码
4.3 PLC程序(DeviceNet网络监控部分)设计
4.4 DeviceNet现场总线控制系统特点
与传统的控制系统相比,基于现场总线产品的空调系统具有以下特点:
(1)布线简单,节省安装费用。DeviceNet通过一根通讯线实现整个网络各节点之间的通讯,相对于传统的点对点控制系统,节省大量的电缆,缩短的安装时间,降低了安装费用。
(2)可靠性高。DeviceNet通过一根通讯线控制整个网络。主站模块对整个网络实时监控,通过监控主站模块,能够迅速的获知发生故障的节点设备,便于快速排除故障;当网络上的某一节点发生故障,不会影响其它节点的正常工作。