七台河西门子专业授权代理商
系统分为监控子系统、数据采集子系统和数据交换子系统。以台湾磐仪工控机IPC1作为SCADA监控硬件平台。监控计算机通过挂在CC-bbbb总线上的远程IO模块和数据采集模块,即采集子系统与现场的监控仪表相联系。采集子系统负责将现场各智能仪表采集的数据采集上来;监控系统通过DDE方式与采集子系统相联系,将现场的各种运行参数实时显示出来;监控系统根据需要给出控制命令,由采集子系统传达给挂在CC-bbbb总线上的CC-bbbb主控PLC,PLC负责现场各种设备的控制。数据交换子系统通过DDE方式与监控子系统系统交换数据,将现场实时信息经由控制网络传达到信息网络。某车间监控层过程实时数据流向如图4所示。
图4 VB作为服务器、iFix 作为客户的数据流向图
iFix软件提供了强有力的DDE客户和服务器支持。DDE客户支持允许把来自其他应用。程序的信息传递到iFix软件中,用于数据库和画面;服务器支持允许把iFix软件的过程信息传递到其他应用程序中去处理。
(1) DDE客户支持
iFix软件DDE客户支持允许读写DDE地址,利用DDE IO驱动器和块配置的DDE地址,可以在过程数据库中插入来自其他应用程序、DDE驱动程序或另一个SCADA节点的数据信息。
数据库中的这些信息可以按照以下方式使用在链中传送数据、对DDE数据进行报警和用DDE数据制作趋势曲线。
DDE客户支持允许在 iFix 画面中直接使用DDE,而不使用数据库中的点。即DDE可以直接应用于数据链接、动态特性(前景颜色、边界颜色、X和Y坐标、水平或垂直填充、可见性等)设置、XY绘图、棒状图和命令语言。iFix作为客户DDE的地址语法为=ApplicationTopicItem例如现场设备点DO1的IO地址=VBServerbbbb1Text1,其中VBServer为VB开发的应用程序名,bbbb1为主题名,Text1为项目名。
(2) DDE服务器支持
iFix软件作为服务器允许将它的实时数据或历史数据传送到其他DDE客户应用程序中。使用iFix DDE服务器功能,需要首先启动DDE服务器程序,即iFix软件的安装目录 iFix32下的DMDDE.exe。iFix 作为服务器提供的DDE编址语法如表1所示。
表1 DDE编程语法
3.3 VB的DDE链接属性
VB作为bbbbbbs环境下非常流行的快速开发工具,与bbbbbbs操作系统同出于微软一家,它理所当然地支持bbbbbbs下的DDE技术。用VB可以方便快捷地开发出DDE客户或服务器的应用程序。
(1) VB的DDE属性、DDE事件和DDE方法
VB中支持DDE的对象有5类窗体(bbbb)、多文档窗体(MDI bbbb)、标签(Label)、文本框(TextBox)和图片框(PictureBox)。其中,窗体和多文档窗体可作为DDE服务器即数据的提供者,Label、TextBox和PictureBox等可以作为DDE服务器即数据的接收者。VB为支持DDE给发送端对象提供了2种DDE属性和4种DDE事件,给接收端对象提供了4种DDE属性、4种DDE事件和4种DDE方法(见表2)。
表2 接收端对象的属性、事件及方法
(2) 利用VB开发DDE客户服务器应用程序
在利用VB开发DDE客户服务器应用程序中,欲建立DDE链接,完全依赖对象的DDE属性设置。VB分别作为DDE客户和DDE服务器时,DDE属性的不同设置(见表3)。
表3 VB作为DDE客户服务的DDE属性设置
(3) 动态数据交换的过程
DDE管理器作为服务端通过驱动程序从PLC的内存中采集到数据,与组态进行数据交换后又通过驱动程序写入PLC的内存区,这一过程的示意图如图5所示。
图5 动态数据交换的实际过程
(4) 动态数据交换的建立过程
DDE工程的建立主要包括PLC细节的描述、网络的设置、数据点的选取,其中主要是进行设备的配置和点的设置。接下来建立需要监控的点,并对其进行编辑,包括定义监控点的名字、PLC的类型、监控点在PLC内存中的位置、数据的类型等。可根据PLC机架上输入输出单元的点数来定义输入字和输出字,同时定义手动自动控制标志位。
3.4 VB作为DDE服务器、iFix 作为DDE客户的实际链接
有些参数需要通过VB开发的应用程序VBServer把从远程现场采集的实时数据传输到iFix实现显示或制作趋势图,如油漆烘间的实测温度、纯水进口压力、循环水过滤器压力、颜料的实测浓度、电泳循环泵的转速和胶炉实测温度、一次抽风系统增压机的进口和出口压力、空气预热器蒸汽温度等参数。
在VBServer中,把采集到的实时数据赋给TextBox(文本框),并把iFix中各点的DDE地址的项目名设为对应的TextBox(文本框)。如油漆烘间的实测温度,在iFix中点名为AI_Oven_Tem,其DDE地址VBServerbbbbMaintxt OvenTem(其中VBServer是应用程序名,bbbbMain是作为主题的窗体名,txtOvenTem是作为项目的文本框名称)。此时,iFix为客户,VB应用程序为服务器。
3.5 VB作为DDE客户与DDE服务器iFix的实际链接
通常情况下,现场的检测信号和运动参数的流向是从iFix传输到VB开发的应用程序VBSrvApp或其它的bbbbbbs应用程序,再由bbbbbbs应用程序或VBSrvApp以命令形式经iFix下达给远程现场的智能仪表或PLC等远程的现场设备,如油漆烘间和胶炉各自的设定温度、纯水进口的设定压力、颜料的设定浓度等参数。
在VBServer中,把各个设定参数相应的TextBox(文本框)的bbbbItem属性设置为对应的iFix的点,然后把从iFix的点传输到对应TextBox(文本框)中的内容下达给远程现场设备。此时,VB应用程序为VBServer客户,iFix为服务器
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) 物理层 采用平衡型标准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),后者打开并配置好串口,启动通信线程,设置记时器等。