DCS数据采集技术样本.docx

上传人:b****8 文档编号:8939834 上传时间:2023-02-02 格式:DOCX 页数:52 大小:44.46KB
下载 相关 举报
DCS数据采集技术样本.docx_第1页
第1页 / 共52页
DCS数据采集技术样本.docx_第2页
第2页 / 共52页
DCS数据采集技术样本.docx_第3页
第3页 / 共52页
DCS数据采集技术样本.docx_第4页
第4页 / 共52页
DCS数据采集技术样本.docx_第5页
第5页 / 共52页
点击查看更多>>
下载资源
资源描述

DCS数据采集技术样本.docx

《DCS数据采集技术样本.docx》由会员分享,可在线阅读,更多相关《DCS数据采集技术样本.docx(52页珍藏版)》请在冰豆网上搜索。

DCS数据采集技术样本.docx

DCS数据采集技术样本

第五章DCS数据采集技术10页1.6万字

当前各种I/O设备提供对外数据接口可分为如下几类:

1,数字通讯接口,涉及串口类,以太网(TCP/IP合同)类,现场总线类,仪器总线类

通讯接口(如GPIB等).

2,模仿量通道输出,设备直接提供4-20mA,1-5V或继电器接点信号等.

力控具备世界上大某些主流设备I/O接口程序,对GPIB总线以及Honeywell,

Yokogawa,Foxboro,Fisher-Rosemount等厂家DCS也可以支持.

除普通意义上数据采集外,力控可以运用采集到实时数据对装置进行实时建模,

插入力控自己先进控制控件,实行先进控制.

5.1对一种设备上数据定义不同采集周期

如果一台设备上有1000个实时数据需要采集,而在这1000个数据中只有10个是经常

刷新且需要密切监视,别的990个所有是辅助数据,但是也需要时常查看.如果把这1000

个数据同等地对待,采用统一扫描周期进行采集,就会严重影响10个重要数据刷新速

度.如何既保证1000个数据都可以采集,又保证这10个重要数据采集速度呢有两种

办法:

办法1:

为一种设备定义两个逻辑设备,使其具备不同采集周期,如图5-1所示.

但是这种办法定义最长扫描周期为10分钟.

办法2:

不用上面办法,一台设备只定义一种设备名称也可以达到规定.由于力控I/O

驱动对画面中不显示并且没有组态历史趋势和报警数据是不采集,仅当画面中显示这个

数据时才进行采集.因而将不惯用数据单独组态在一种或几种画面中,使用完毕立即关闭

就不会影响整个采集速度.这种办法合用于存在有大量不需要迅速更新数据状况.

图5-1

5.2合理设立扫描周期,避免引起设备死机

有些I/O设备内部只有一种CPU,同步负责数据通讯和计算,如果在力控上设立数

据扫描周期太快容易使设备死机,因而在设立这一参数时应当慎重,最佳通过多次实验拟定

一种适当扫描周期.普通串口设备扫描周期可设在10-100毫秒之间.

5.3通过拨号方式与I/O设备通讯

力控所有串口I/O驱动程序都支持通过MODEM以拨号方式与设备通讯.只要对的设

置电话号码即可,如图5-2所示.

1

5.4通讯状态监视,设备状态数据读取

力控为每一种I/O设备自动定义了一种系统变

量,如果系统中有一种设备PLC1,则每当PLC1不能

与力控正常通讯时,系统变量$IOPLC1值就会被

置为1.I/O设备故障属于系统报警.计算机通讯口

故障,电缆,PLC端通讯口故障,PLC通讯口与计

算机通讯口参数设立不一致都会导致这种成果.还

有一种也许,就是数据连接项错误,如果计算机命

令发给PLC只读参数,PLC是不会予以理睬.

5.5如何用I/O驱动程序调试I/O设备

力控I/O驱动程序有数百个,针对每

一种设备均有一种独立程序.当力控实时

数据库DB没有启动时,单独启动I/O驱动可

以作为本地I/O设备调试工具使用.此时可以

测试计算机与I/O设备通讯状况,摸索最佳

扫描周期.

菜单"设立[S]/参数"用来规定I/O通讯

过程中与否显示计算机发出和设备响应通

讯信息.如图5-3所示.

菜单"工具[T]/工具"用来在不启动实时

数据库及其数据连接项状况下执行与I/O

设备通讯.弹出对话框如图5-5上部所示.此

时可以按"参数设立"按钮设立通讯参数,如

图5-6和5-7所示,重要是设立串口DCB参

数,IP地址等.

图5-2

图5-3图5-4

对的设立参数后,按"连接设备"按钮,如

果成功话,"连接设备"按钮标

题变成"断开连接",表达可以收发

数据了.如果在"参数设立"中设立

"周期性发送周期"不为0,则在"连

接设备"后会浮现"周期发送"按钮,

否则浮现"手动发送"按钮.使用"

周期发送"或"手动发送"按钮,可以

周期性或一次性地发送编辑框中

数据了.

编辑框中数据格式缺省是

混合方式,如果你想发送编辑框

中数据,这也是唯一数据类型,

它形成规则如下:

任何ASCII码

(除'[')可以直接输入,'['可以使用

"[[]"来输入;"[]"内是由''(空格)分隔转意字符,它们意义为:

图5-5

'[':

用来输入'[';

2

'*':

在发送数据是表达延时1毫秒

图5-6

'#':

在发送数据是表达延时10毫秒

'$':

在发送数据是表达延时100毫秒

'!

':

在发送数据是表达延时1000毫秒

'\':

表达它背面数据是十进制(缺省是16进

制)

''(空格):

作为分隔符,任何未定义字符都可以

作为分隔符,最佳使用空格.

0~9:

可以用来输入10进制或16进制数据.

A~F/a~f:

可以用来输入16进制数据.

例子:

abcv[[30*#$!

]345相应16进制数据

串为:

61H,62H,63H,76H,5BH,30H,33H,34H,35H;而

且在30H之后有1111毫秒延时.

当用在其他状况(不是用来发送数据)时,唯一

差别是没有了延时概念.

"其他工具":

校验使用混合格式数据,计算常

用校验码,ASCII码表显示使用16进制和

10进制显示ASCII码表,各种数据转换把混合格式,16/32位整数,32位浮点数等转换位十

几种惯用数据格式,除混合格式外,其他数据格式为直接用空格分隔数据串

图5-7

5.6如何开发I/O设备驱动程序

在力控中有一种SDK工具包,叫做FIOSSDK,可以开发硬件设备与计算机通讯接

口程序.最简朴只需要编写几种函数就可以可以做自己I/O驱动,当前支持硬件类型

有串口(RS485/232/422),网络,板卡,硬件厂家提供DLL等各种方式通讯类型.在该SDK

中开发自己通讯接口,不需要关怀硬件和计算机通讯细节,只需要理解通讯合同就可以

了.

如果通讯合同很复杂,该SDK中提供了足够灵活手段满足不同层次需要.例如:

在设备初始化时发什么命令或做其她解决,动态变化硬件通讯参数等等.

5.6.1FIOS开发包简介

FIOS负责完毕与各种I/O设备进行数据互换.一方面,它把从I/O设备采集到实时

过程数据发送给数据库DB,另一方面,从DB发出下置数据也通过FIOS发送给I/O设备.

依照监控PC与I/O设备之间通信机制不同,FIOS重要支持两种工作方式:

同步方式

与异步方式.

异步方式合用如下一类I/O设备:

此类I/O设备普通可以独立运营,与监控计算机之间

通过串口,网络或MODEM连接.与监控计算机之间通过明确消息传送(文本或二进制

消息)完毕数据互换.数据互换过程为异步方式.

同步方式合用如下一类I/O设备:

此类I/O设备或者依赖PC运营(如:

插在PC插槽

内),或者独立运营.但与监控计算机之间重要通过直接访问方式进行数据互换,详细形式

涉及:

寄存器直接访问(如:

板卡),API函数调用,ActiveX控件访问等.数据互换过程为

同步方式.

下面列举了FIOS可实现某些基本功能:

底层通信功能:

1),串口通信,涉及:

RS232/422/485.2),TCP/IP网络通信.3),MODEM

3

通信,通过模仿MODEM在电话网上通信.4),寄存器访问,如:

各种DAS板卡.5),其

它.

链路控制功能:

用M代表Master,即上位机(监控PC工作站);S代表Slaver,即下

位机(各种I/O设备).对于异步方式,FIOS支持各种链路控制方式.链路控制方式支持以

下几种方式:

1),M祈求,S应答方式.2),M祈求,S无应答方式.3),S积极发送,M

被动等待.此外,对一次完整数据解决(读或写)过程,支持如下方式:

1),1次祈求,0

次应答方式.2),1次祈求,1次应答方式.3),1次祈求,多次应答方式.4),0次祈求,1

次应答方式.5),多次祈求,多次应答方式.

冗余功能:

FIOS支持冗余方式涉及:

1),单监控站,双I/O冗余.2),双监控站,单

I/O冗余.3),双监控站,双I/O冗余.4),对于总线型设备(如RS485),提供总线监测功

能,可实现对冗余通信网络保护和监测.

前端机功能:

DB与IOServer不在同一工作站上,IOServer运营在前端机上,前端机

与操作站之间通过串口,TCP/IP网络或MODEM进行通信.

硬件测试与远程调试功能:

使用FIOS可完毕对I/O设备简朴测试功能.此外可实现

远程调试.

故障诊断与恢复功能:

FIOS提供诊断机制,在较短采集周期内报告故障发生,诊

断出下位机故障状况.当下位机更换或恢复后,不需要对FIOS及有关程序进行任何人工干

预,而在较短时间自动恢复通信.当某一台,几台或某些通道发生故障,FIOS要自动优化

通信链,使其与其她下位机或通道之间通信不受影响,保证通信效率.

界面显示功能:

为测试,调试,运营维护以便,FIOS提供显示界面,可显示涉及:

送,应答,状态信息,启动时间,分包数,分包信息,成功通信次数(发送次数,成功应答

次),故障次数等信息.

历史数据解决功能:

对于某些能保存历史数据设备(如:

无纸记录仪等),FIOS能将

采集到历史数据恢复到数据库DB中.

5.6.2FIOSSDK编程方式

FIOSSDK提供了一种简洁,面向对象编程方式以缩短开发时间,减少开发难度.

FIOSSDK提供原则开发接口和程序模板,程序员仅需要依照I/O设备详细通信协

议或驱动接口阐明,填写几种扫描函数实当代码,进行必要调试与测试,即可完毕一种

FIOS开发.

FIOS提供开发工具封装了大某些程序员不必关怀技术环节,如:

底层通信功能(串

口通信,网络通信等),设备超时解决,设备故障诊断等.同步FIOS提供各种调试工具,

以便程序员进行系统测试.

FIOS开发环境完全基于32位Windows平台.它使用动态链接库(DLL)技术将程序

员开发代码整合到力控系统中.FIOS提供应程序员开发接口为API函数和C++类库.

5.6.3FIOSSDK组件及示例程序

FIOSSDK重要由4某些构成:

设备组态接口(Iodevui),数据连接组态接口(Ioitemui),

编程接口Ioapi和描扫程序Ioscan.Iodevui:

负责管理设备组态过程.Ioitemui:

负责管理数据

连接组态过程.Ioapi:

负责完毕与I/O设备间数据互换,涉及:

对通信合同解析,数据

格式转换等.Ioscan:

重要完毕对Ioapi某些dll代码进行周期性地扫描.同步完毕与I/O

设备底层通信(串口通信,网络通信等),以及设备超时解决,设备故障诊断等.Ioscan

还负责与数据库DB之间通信与协作.它把从I/O设备采集到数据经Ioapi解析转换后

提交给DB,或将DB下置给I/O设备数据经Ioapi解析转换后写入I/O设备.Ioscan是FIOS

SDK提供一种原则软件工具.程序员仅需要开发Iodevui,Ioitemui,Ioapi三某些代码.

示例程序

4

FIOSSDK提供了两个示例:

DemoController与DemoModbus.

DemoController是一种初级编程示例,它能引导初学者迅速掌握开发FIOS基本概念

和办法.DemoModbus是一种实用编程示例,它采用原则MODBUS通信合同,通过该示例,

可以掌握在力控平台上开发原则MODBUS设备I/O驱动程序办法.

FIOSSDK所有内容都是在安装在力控自动安装,在力控目录下子目录Fiossdk

中.FIOSSDK重要包括如下几某些内容:

Examples,程序示例,仿真程序.Include,头文

件.Manual,文档阐明.Utility,调试工具.

这2个示例具备一定代表性,它们体现了FIOSSDK重要功能.FIOSSDK提供了

这2个示例所有源代码,在它们基本上,稍做改动,就可以开发出新FIOS.咱们把

象这2个示例源程序同样具备模板作用程序称为I/O模板程序.为了提高开发效率,咱们

建议尽量使用I/O模板程序,这在一定限度上,也减少,减少了编程错误发生.

惯用术语

咱们把FIOSDK中经常涉及某些概念给出定义,有些术语虽然是通用名词,但在

FIOSDK中有特定含义.这些术语有某些在前文给出理解释,有某些会在后文中陆续给出解

释.

FIOSForceControlI/OServer,即力控I/O驱动程序

FIOSSDKFIOS软件开发工具包

FCINSTDIR力控软件系统安装目录

FCAPPINSTDIR用力控创立工程应用目录

IOID唯一区别各个I/O驱动程序I/O标志

Iodevui设备组态接口

Ioitemui数据连接组态接口

Ioapi编程接口

Ioscan扫描程序

I/O模板程序FIOS工SDK附带示例源程序

I/O配备文献设备组态时缺省参数设立保存文献

连接项构造保存数据连接信息数据构造IOITEMDEF

I/O描述文献定义设备类别,厂商,型号,通信方式等参数文本文献Iodesc.txt

程序员在本文档范畴内专指用FIOSSDK进行开发技术人员

扫描函数包括在Ioapi中API函数,它们由扫描程序周期扫描.扫描函数完毕

对设备数据解析及格式转换

IOCInputOutputClass(输入输出类库)缩写.

5.6.4设备组态接口IODEVUI.DLL

I/O描述文献

在使用力控进行组态时,普通均涉及定义I/O设备过程.在定义设备时,要选取设

备类别(PLC,智能仪表等),厂商,设备型号或通信合同,然后依照设备通信方式(串

口方式,网络方式,其他方式等)设立参数.以上关于一种设备信息(类别,厂商,型号,

通信方式等)完全是由I/O描述文献决定.I/O描述文献是一种原则文本文献,依照其规

定填写格式,由程序员依照详细设备自行填写.下面简介I/O描述文献填写格式.

I/O描述文献文献名为IODESC.TXT,安装目录为:

"FCINSTDIR\IOServers\IOID\".

IO文献阐明格式为:

类别;厂商或IO程序描述;执行文献名称

5

子类型1;类型号;资源标志;提供设备地址

子类型2;类型号;资源标志;提供设备地址

......

注意,子类型号不能重复.表达回车换行.最上面一行是驱动程序总体描述,

涉及三项.各项之间必要以分号";"分隔.各项内容不能具有分号";".

各项含义如下:

类别,驱动程序所属类别,现分为如下几类:

PLC,智能仪表,智能模

块,变频器.程序员也可以自行扩展.厂商或IO程序描述,I/O设备生产厂商名称,合同

名称,如西门子.执行文献名称,I/O驱动程序(运营程序)名称,如opto_drv.exe

接下来几行为驱动程序所包括设备类型描述,如西门子涉及S5,S7等,每一子类别一

行,每行涉及三项,各项之间必要以分号";"分隔.各项内容不能具有分号";".各项含义

如下:

子类型,设备类型描述.如S5.类型号,设备类型编号,类型号不能重复.合法

值为0,1,2,3等.使用计算机资源,使用计算机何种通信资源通信,合法值为0,1,

2等.含义如下:

0,同步通信方式;1,串口通信方式;2,TCP/IP网络通信方式;3,MODEM

通信方式;4,板卡方式;5,并口通信方式.提供设备地址:

1表达需要指定设备地址,否则

表达不需要设备地址.

管理程序会自动将相似厂商或IO程序描述相似驱动程序归为同一树下.

开发Iodevui

力控组态环境DRAW中设备管理功能提供了一种依照I/O描述文献可灵活配备标

准设备组态接口.这个组态接口提供了某些对惯用设备参数进行设立办法.如:

设备名称,

设备地址,通信端口,端口参数等.如下图所示:

对于诸多设备,如果原则设备组态接口可以满足规定,就不再需要自己编写Iodevui接

口程序了.例如示例DemoController采用就是原则设备组态接口.而示例DemoModbus

由于涉及某些特殊参数设立,就需要自己编写Iodevui接口程序了.

因而,Iodevui接口程序事实上就是对原则设备组态接口一种补充和扩展,并可由程

序员灵活控制.Iodevui要以DLL形式提供.该DLL必要是MFC扩展DLL.该DLL缺

省文献名称为IODEVUI.DLL,该文献必要安装在目录"FCINSTDIR\IOServers\IOID\"下.

在进行设备组态时,力控I/O设备管理程序会自动检查在目录"FCINSTDIR\IO

Servers\IOID\"下与否存在IODEVUI.DLL文献.如果存在,则一方面依照I/O描述文献格式,

调出原则设备组态接口界面,当顾客确认后,再调出Iodevui组态接口界面;若不存在该文

件,则只调出原则设备组态接口界面.

示例DemoModbusIodevui接口程序可以做为开发Iodevui模板程序.咱们结合示

例DemoModbusIodevui模板程序详细解释实现过程.查看头文献Iodevui.h可以发现,

Iodevui.dll重要实现3个输出函数:

6

extern"C"AFX_EXT_APIlongAddIoDev(constchar*szDeviceName,intnType);

extern"C"AFX_EXT_APIlongModIoDev(constchar*szDeviceName);

extern"C"AFX_EXT_APIlongDelIoDev(constchar*szDeviceName);

在进行设备组态时,当增长一种设备时,力控设备管理程序会自动调用AddIoDev()函

数;当修改一种已创立设备时会调用ModIoDev()函数;当删除一种设备时会调用DelIoDev()

函数.

其中,参数szDeviceName为I/O设备名称(输入值,组态时由顾客指定).nType为设

备子类型号,由程序员在I/O描述文献中指定.返回值为0表达操作成功;其他表达操作失

败.为了较好地实现程序构造化,本模板程序提供了一种CDevMan类对设备及组态操作过

程进行管理.Iodevui.dll3个输出函数AddIoDev(),ModIoDev()DelIoDev()详细实现过

程是在CDevMan三个成员函数Add(),Mod()和Del()中实现.

一方面看一下Add()实当代码:

//**********************************************************************

//添加I/O设备

//szDeviceName,设备名称(输入值)

//nType,设备子类型(用于一种驱动程序驱动各种类型设备)(输入值)

//返回值阐明:

0,操作成功;其他,操作失败

//**********************************************************************

longCDevMan:

:

Add(constchar*szDeviceName,intnType)

{

if(Find(szDeviceName))

{

AfxMessageBox("该数据源名已经存在!

");

return-1;

}

CDevice*pDev=newCDevice(szDeviceName,nType);

if(CallDialog(pDev))

{

m_list.AddTail(pDev);

Store();

return0;

}

else

deletepDev;

return-1;

}

程序一开始,调用Find()函数来查找与否已有相似设备名存在,如果有给出提示并

返回-1表达操作失败,否则生成一种CDevice对象并调用CallDialog函数来显示一种对话框,

让顾客做进一步选取,如果顾客进行确认,操作成功,它把此CDevice对象加入设备链表

中,并调用Store函数来保存设备信息.此外两个函数和它类似.

Store()函数如下:

voidCDevMan:

:

Store()

{

CFilefile;

7

if(file.Open((constchar*)("ddeacc.dat"),CFile:

:

modeReadWrite|CFile:

:

modeCreate))

{

CArchivear(&file,CArchive:

:

store);

Serialize(ar);

ar.Close();

file.Close();

}

}

该函数它先打开ddeacc.dat文献,如果不存在,就建立此文献.然后调用序列化函数对

它进行保存,最后关闭此文献.再看一看序列化函数:

voidCDevMan:

:

Serialize(CArchive&ar)

{

TRY

{

CObject:

:

Serialize(ar);

m_list.Serialize(ar);

}

CATCH(CFileException,e)

{

AfxMessageBox("文献版本不匹配!

");

}

END_CATCH

}

该函数对m_list(由CDevice类实例构成)进行序列化.在调用各个CDevice类实例

序列化函数时,如果是读取操作,会依次创立CDevice实例,并调用CDevice序列化函数,

随后把CDevice实例加入m_list链表.详细保存和读取变量数据在CDevice类中控制,也

就是说程序员针对不同设备可以改写CDevice类,定义不同成员变量,记录设备不同

属性,对CDevice类重载Serialize即可实现设备保存,加载,增长,删除和修改等功能.

咱们再看一下CDevice类序列化实现过程:

voidCDevice:

:

Serialize(CArchive&ar)

{

if(ar.IsStoring())

{

ar<

ar<>m_csName;

ar>>m_dwData;

}

}

如果是保存操作,序列化函数会将参数自动存盘;如果是读取操作,序列化函数会从磁

盘上读取参数值.

8

察看CallDialog函数可以发现,它生成了一种对话框,让顾客做相应选取,然后把用

户选取信息保存在CDevice类成员函数中,以便于储存.

整个程序框架使用CDevice类来保存设备信息.在CallDialog函数中使用一种对话框,

来让顾客进行选取设备属性,并且在CallDialog函数中把它保存在CDevice类中.因此对

于一种新设备,程序员所要做工作就是,分析设备合同查看与否仅使用描述文献就可

以完毕设备定义,如果不能,那么应当编制IoDevUi.dll.这时应分析应当增长哪某些属

性,定义哪某些CDevice类成员变量,以及显示什么样对话框,让顾客做什么样选取.

因此程序员工作重点在于修改CDevice类,增长成选变量,并重载它Serialize函数,然

后修改对话框,让顾客做不同选取,并把选取保存在CDevice类成员变量中即可.

在该示例中,咱们定义了2个设

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1