- 手机:
- 0510-86179338
- 电话:
- 0510-86179338
- 邮箱:
- adminIM@eyoucms.com
- 地址:
- 江阴市南闸街道开南路8号
目前,工业组态软件已经广泛应用于工业控制领域,易控(INSPEC)是北京九思易自动化软件有限公司(ControlEase AutomationSoftware)推出的一套通用数据采集和监控(SCADA)软件,具有最新的Framework 框架平台,应用极为广泛。为了与现场设备进行交互, INSPEC提供了国内外各种常用的工控设备的驱动程序。但是由于现场设备种类繁多,支持的通信协议各不相同,因此,需要针对不同的底层设备编写相应的驱动程序,以实现同组态软件的信息交互。许多底层设备采用单片机进行设计,本文针对基于51单片机的设备进行了通用的驱动程序设计,通过此通用驱动程序,设计者只需简单的设置就可以将基于51单片机的仪表、设备接入INSPEC,无需重新开发驱动程序。而且只需将所设计的驱动程序进行少量改动,即可适应各种类型的设备,或与其他类型的单片机进行通信。对于易控组态软件,底层设备属于I/O设备。上位机通过硬件通道与硬件设备建立连接关系,按照对应的通信协议与硬件设备交换数据,并将采集到的运行数据经转换后通过数据库接口传送至数据库,同时响应数据库关联变量来改变事件,将输入数据写入硬件设备。51单片机提供了一个全双工标准接口,通过电平转换芯片MAX232及相关外围电路来实现TTL信号和RS-232电平信号之间的转换,并实现与计算机串口RS-232的硬件通信通道连接。通过设备驱动程序,完成基于51单片机的设备与上位组态软件的数据交互。其接口结构如图1所示。
2 利用开发向导生成驱动程序的框架[1-2]根据INSPEC组态软件I/O系统的驱动设计规范, I/O系统由服务器类(DeviceIoMgr)、通道类(Channel)、设备类(Device)、I/O变量类(IoTag)构成。INSPEC提供了设备驱动程序开发包(SDK),驱动程序的开发环境为Visual Studio 2008。采用C#为开发语言,易控提供驱动程序开发模板。2.1 设备驱动程序的建立设备驱动程序的建立需运行Microsoft Visual Studio 2008,新建项目类型为“Visual C# 易控(INSPEC)”,在“我的模板”位置会出现“设备通信”模板,输入项目名称为单片机通用驱动,支持通道名称选择串口,根据向导完成新建项目的配置。然后修改项目的三个重要属性:(1) 程序集名称要遵从“Controlease.IoDrive.厂家名.设备名”的规则。在项目属性设置窗口中,点击“应用程序”, 将程序集名称修改为trolEase.单片机通用驱动。(2) 生成事件是生成I/O设备驱动的DLL文件。由于易控启动时从文件夹..\ControlEase\INSPEC\Devices下加载驱动,所以将生成驱动DLL的路径设置在此目录。(3) 引用路径是驱动项目中引用类库的路径,一般设置在..\ControlEase\INSPEC\目录下。2.2 驱动程序的设计方法在易控提供的驱动程序开发模板下,为了实现I/O设备的自定义功能,主要修改设备通信模板的读、写以及特殊操作方法。本通用驱动程序的设计修改了单片机通用驱动Protocol.cs类中的ReadPacket(SampleTagPacket packet)和WriteTag(IoTag tag)方法。(1) 设备数据采集易控采用循环采集的方式来采集现场设备数据。所有具有“只读/读写”属性的I/O量,都会按照I/O变量设置的“查询周期”进行采集。每次采集过程都会进入ReadPacket方法中。设备数据采集过程,默认采集方式为变量包采集方式。在该设备通信程序开发包里,把所有在INSPEC软件中添加的可读IoTag都添加到了一个数据包中,采集程序从bool ReadPacket(SampleTagPacket packet)方法进入,数据采集流程图如图2所示。
3 基于51单片机的通信程序设计[3]该驱动程序具有较强的通用性,在INSPEC中用户只需根据底层设备的通信协议进行通道配置即能完成INSPEC与下位机之间的通信;另一方面,用户也可以先配置好INSPEC的通道,并根据通道配置在下位51单片机的通信程序里进行相关协议的编写,实现上位和下位机的通信协议的一致性。51单片机的串行口内部有两个物理上独立的接收、发送缓冲器SBUF,可同时发送、接收数据。用户将数据存放在SBUF寄存器里来完成与上位机INSPEC的数据交互。为了更好地体现驱动程序的通用性,在驱动程序里定义了收发数据的缓冲区大小,用户只需将底层设备的数据存储到已定义的缓冲区里就能完成数据的交互,编程如下:private readonly byte[] mReceiveBuffer = new byte[2048] //用于保存接收到的数据private readonly byte[] mSendBuffer = new byte[1024]//用于保存发送的命令这里单片机串口工作于方式1,数据帧格式为8 bit数据位,1 bit停止位,定时/计数器1用作波特率发生器,PCON中的SMOD位为0,发送的波特率为9 600,系统初始化程序如下:TMOD=0x22; //定时器T1,在方式2中断产生//波特率PCON //波特率不倍增,SMOD=0SCON=0x40;TH1=0xfd; //波特率设置为9 600TL1=0xfd;4 通用驱动程序在电压监测仪表上的应用该应用中下位机采用STC89C52系列单片机为主控芯片的电压监测仪表,上位机监控软件为INSPEC。由于已经编写了单片机的通信协议,所以在易控中进行通道配置时应该与单片机通信协议保持一致,即8 bit数据位,1 bit停止位,波特率为9 600。通道配置完成后,在设备中选择单片机通用驱动就完成了I/O通信的配置。电压监测仪表中的电压传感器将采集的电压信号传给A/D模块进行数据转换,并进入单片机进行数据处理,经RS-IM电竞 IM电竞官网232端口与上位机的监控软件INSPEC通信。通过数据交互,可在上位机上直接显示现场的电压值,以达到对现场电压的实时监测。4.1 上位机监控界面的设计[4]INSPEC软件能够很方便地实现对自动化过程和装备的监测和控制。在INSPEC中添加实时数据库变量,其中包括了控制系统所需的数据交互信息:电压设定值、监测电压值、电压报警指示和监测电压的实时曲线图等变量,使监控窗口和数据通道的变量关联起来。4.2 驱动程序的装载在Microsoft Visual Studio 2008开发环境中,驱动程序编译后在文件夹..\ControlEase\INSPEC\Devices下生成trolEase.,单片机通用驱动.dll驱动文件。启动易控开发环境时,会自动将驱动文件加载到易控的设备选择中供用户选择。针对组态软件应用中驱动程序的开发问题,本文设计了基于INSPEC的51系列单片机通用驱动程序。实现了INSPEC和单片机控制的外部设备进行通信,解决了基于51系列单片机设备驱动程序的重复设计问题。为以后开发其他设备驱动程序提供了设计思路和程序框架,对实现底层设备方便接入IM电竞 IM电竞官网组态软件进行了有益的探索。参考文献[1] 北京九思易自动化软件有限公司.易控(INSPEC)高级开发指南[M]. 2009.[2] ROBINSON S, CORNES O. C#高级编程[M]. 康博,译. 北京:清华大学出版社,2002.[3] 李全利,迟荣强.单片机原理及接口技术[M].北京:高等教育出版社,2004.[4] 北京九思易自动化软件有限公司.易控(INSPEC)培训教程[M]. 2009.IM电竞 IM电竞网址IM电竞 IM电竞网址