自动化监控系统软件中动态参数配置表的设计
2015-03-25沈阳仪表科学研究院有限公司高立生王松亭张国富
沈阳仪表科学研究院有限公司 何 方 高立生 王松亭 张国富 马 勇 陈 曦 李 慧
沈阳电气传动研究所有限公司 张 茜
1 引言
工业自动化监控系统是充分利用现代的计算机技术、通讯技术、传感器技术及自动化仪表技术等组成的高科技监控系统,利用自动化监控系统,可以实现对工业现场压力、温度、流量、液位、电流、电压、电量、转速等各种参数进行实时监测和控制,对电机、水泵等设备进行遥控,对各种电磁阀门进行开度调节等等,由于工业自动化监控系统为生产过程的自动化,实现科学管理提供了有效的手段,因此工业自动化监控系统广泛地应用于机械、电子、化工、环保、能源等各个行业以及供水、供暖、供气、供电等公共事业中,并且在使用中取得了迅速的发展。而测控软件则是整个工业自动化监控系统中极其重要的组成部分,所有测控命令的发布和数据的处理、显示、打印,以及现场故障报警,均由测控软件实施控制。但以往小型测控系统中常采用组态软件实现,在现场终端站参数的修改、报警值设定等方面存在明显的不足,使系统在使用灵活性、方便性上有很大的局限性。本文针对基于组态软件开发的测控系统软件中存在的不足,结合笔者多年从事工业自动化监控系统软件开发与调试的经验,设计了一种实用的适合于小型自动化监控系统的动态参数配置表程序,使系统参数的修改更为方便、灵活,大大加强了系统的灵活性。
2 基于组态软件的自动化监控系统的不足
目前对小型工业自动化监控系统的开发,主要是采用组态软件,在图形处理,界面显示等方面非常方便,而在数据处理、通讯接口等方面存在不足,主要表现在以下几个方面:
2.1 通讯方式固定
在通讯方面,主要存在有线和无线两种通讯方式,两种通讯方式在通讯口设置、通讯波特率设置等方面不尽相同,并且在实际的工业自动化监控系统中,可能同时存在这两种通讯方式,每个终端站通讯的波特率也可能不相同,以往测控系统软件只能单一地处理一种通讯方式,不能以不同的通讯方式对现场终端站进行监测和控制。
2.2 监测终端站站点固定
以往的测控系统软件,对现场终端站的监测和控制只能按照一定的顺序依次进行,而当终端站进行维修时,系统也不能越过该终端站,仍然与其通讯,当测试不通后再测试其它终端站,这样就浪费了系统的时间。
2.3 数据处理的方式固定
由于现场终端站的站点很多,每个终端站监测的参数和功能也相差甚远,现场的传感器和自动化仪表更是种类繁多,自动化仪表的量程、单位、上下限报警值、精度等参数各不相同,输出信号也有模拟量、开关量、脉冲量的区别,而现场终端站的传感器和自动化仪表会根据现场的需要更换为其它类型的传感器和自动化仪表,自动化仪表的上下限报警值也可能由于测试的目的不同、测试的时间不同而设置为不同的值,以往的测控系统软件对现场参数的这些变化不能方便灵活地进行修改,必要时只能通过修改软件程序完成参数的修改,这在使用上给用户带来大大的不便。另一方面,可能会由于某种原因对现场的自动化仪表进行迁移,此时仪表的显示值不能和输出的信号对应,而系统软件需要测试仪表的显示值,以往的测控系统软件对此则显得无能为力。
2.4 显示、打印数据的精度固定
以往的测控系统软件,对数据的显示、打印的精度采用固定的方式,不能根据需要随时进行修改。
3 动态参数配置表的设计思路
综合以往采用组态软件开发自动化监控系统测控软件中存在的问题,笔者有针对性地设计了一个简单的动态参数配置表程序,应用此程序,可以方便地实现对通讯方式、波特率、地址、仪表量程、报警点等参数的在线修改,操作方便灵活。具体采用设计方法如下:
(1)采用Visual C++作为编程语言设计动态参数配置表程序,该程序能够动态地显示、修改各个终端站的测试标志、通讯口、通讯方式、通讯波特率,动态地显示修改终端站中各个通道的仪表类型、单位、量程、上下限报警值、迁移量、显示打印精度等参数。
(2)动态参数配置表程序中定义的的数据结构如下:
1)站点参数的数据结构:
typedef stuct
{
int state; //测试标志
int com; //通讯口
int style; //通讯方式
int bound; //通讯波特率
} station[MaxStationNo]
2)通道参数的数据结构:
typedef struct
{
int zhcode; //站号.
int channel; //通道.
int style; //类型.
fl oat span; //量程.
fl oat hialm; //上限报警.
fl oat loalm; //下限报警.
fl oat tran; //迁移.
fl oat bit;//显示数据的精度
int unit; //单位.
int note; //安装.
} an[MaxStationNo][MaxCanShuNo];
(3)终端站站点配置参数和终端站各个通道的配置参数按照以上的数据结构,以生成数据文件的形式存储在硬盘上,数据文件的格式可以采用二进制、文本、数据库等多种方式,其中以文本文件的方式最为简单,在这里以文本文件为例介绍动态参数配置表中数据文件的读写程序。
1)写数据文件的程序如下:
FILE *fp;
char p[100];
int i;
int j;
fp = fopen("fi x.txt","w+");
if(fp)
{
for(i=0;i { fprintf(fp,"%2d, ",station[i].state); fprintf(fp,"%2d, ", station [i].com); fprintf(fp,"%2d, ", station [i].style); fprintf(fp,"%2d, ", station [i].bound); } for(i=0;i for(j=0;j { fprintf(fp,"%2d, ",an[i][j].zhcode); fprintf(fp,"%2d, ",an[i][j].channel); fprintf(fp,"%2d, ",an[i][j].style); fprintf(fp,"%4.1f, ",an[i][j].span); fprintf(fp,"%4.2f, ",an[i][j].hialm); fprintf(fp,"%4.2f, ",an[i][j].loalm); fprintf(fp,"%4.2f, ",an[i][j].tran); fprintf(fp,"%2.1f, ",an[i][j].bit); fprintf(fp,"%2d, ",an[i][j].unit); fprintf(fp,"%2d
",an[i][j].note); } } else{;} fclose(fp); } 2)读数据文件的程序如下: FILE *fp; char p[100]; int i; int j; fp = fopen("fi x.txt","r"); if(fp) { for(i=0;i { fprintf(fp,"%d, ",&station[i].state); fprintf(fp,"%d, ", &station [i].com); fprintf(fp,"%d, ", &station [i].style); fprintf(fp,"%d, ", &station [i].bound); } for(i=0;i for(j=0;j { fprintf(fp,"%d, ",&an[i][j].zhcode); fprintf(fp,"%d, ",&an[i][j].channel); fprintf(fp,"%d, ",&an[i][j].style); fprintf(fp,"%f, ",&an[i][j].span); fprintf(fp,"%f, ",&an[i][j].hialm); fprintf(fp,"%f, ",&an[i][j].loalm); fprintf(fp,"%f, ",&an[i][j].tran); fprintf(fp,"%f, ",&an[i][j].bit); fprintf(fp,"%d, ",&an[i][j].unit); fprintf(fp,"%d
",&an[i][j].note); } } else{;} fclose(fp); } 3)动态参数配置表程序既可以嵌入测控系统软件中,作为测控软件的一部分使用,也可以独立于测控系统软件单独使用。作为嵌入测控系统软件中使用时,测控系统软件和动态参数配置表程序共用一个数据结构,此时对各种参数的修改能够直接体现在测控系统软件中;而单独使用动态参数配置表程序时,可以单独运行动态参数配置表程序修改配置参数,然后在测控软件进行数据初始化时,将配置参数数据文件读入相应的结构中,也可以在测控系统软件中通过设置一命令菜单等方式将配置参数数据文件读入相应的结构中。 工业自动化监控系统已广泛地应用于各种各样的工业现场,而动态参数配置表的使用,会使测控系统在参数修改上变得更为简单、灵活、方便,更适合于小型工业现场的实际使用。 [1]尹成,朱景尧,孙明龙,胡耀文.Visual C++ 2012 开发权威指南[M].北京:人民邮电出版社,2014. [2]刘雪洁等.从零开始学Visual C++[M].北京:电子工业出版社,2011.4 结束语