APP下载

基于Vx Works的软PLC 远程监控系统设计与实现❋

2013-05-15杨杰军陈雄姿

机械工程与自动化 2013年3期
关键词:上位内存应用程序

詹 俊,龙 辛,黄 波,杨杰军,陈雄姿

(1.湘潭大学 信息工程学院 电气工程系,湖南 湘潭 411105;2.湘电风能有限公司,湖南 湘潭411105;3.长沙金博联信息技术有限公司,湖南 长沙 410000)

0 引言

PLC在工业控制领域扮演十分重要的角色,区别于传统的PLC,软PLC系统具有通用性强、操作方便、开发周期短等多方面的优点,逐渐成为未来工业控制器的主力军。

软PLC主要分为基于PC软PLC系统和基于嵌入式操作系统的软PLC系统。其中后者以其实时性能的优势成为主流。Vx Works操作系统作为一款具有强实时性能的嵌入式操作系统,能根据需求灵活地对其进行裁剪,所以目前被广泛应用在基于嵌入式操作系统的软PLC开发上[1]。CodeSys是由3S公司开发的一种功能强大的PLC软件编程工具,它支持IEC61131-3标准,通过其runtime库可以与底层操作系统很好地链接[2]。二者结合不仅可以很好地保证系统的实时性能,同时也可大大地缩短开发周期。

1 远程监控系统设计与实现

1.1 系统整体结构设计

远程监控系统由基于Vx Works的数据采集与发送模块、上位机监控及数据分析处理模块和基于CodeSys的输出信息函数库三大部分组成。远程监控系统结构如图1所示。

上位机与被监控设备直接采用UDP协议进行通信,以减少对系统资源的消耗,同时提高处理的速度。被监控目标系统循环侦听请求,一旦接收到上位机发送过来的监控请求即以固定频率收集信息并发送,如果接收到其他控制请求则进行其他操作。

图1 远程监控系统结构图

Vx Wor ks系统中通过启动数据采集发送任务(TInf Send)及PLC信息采集任务(Get Log Data)实现全部信息的收集发送工作。主要任务包括:任务信息采集、CPU及内存使用信息采集、系统异常处理、程序计数器计数值采集、PLC应用程序输出信息采集、信息发送。数据采集发送主程序流程见图2。

1.2 功能模块设计

1.2.1 系统任务信息

Vx Works操作系统函数库提供了taskInfo库函数用于用户获取所有任务的信息,其中主要的信息包括:任务ID、任务名称、入口地址、优先级、当前状态、堆栈值等。系统是根据可以唯一识别任务的ID号来检索任务相关信息的,通过函数taskId List Get()可以获取到当前系统运行的所有任务的ID,同时系统提供根据ID检索任务信息的函数taskInfo Get(),获取的信息以TASK_DESC结构体格式存储[3],提取其中有用的信息存于构建的TASK_INFO结构体中,打包成发送数据包的格式,实现了任务信息的采集。任务信息数据结构如下所示:

typedef struct/*TASK_INFO-任务结构体 */

int td_id;/* 任务ID*/

Char td_na me[12];/* 任务名称 */

int td_priority;/* 优先级 */

int td_status;/* 任务当前状态 */

int td_stack Size;/* 堆栈大小 */

int td_stack Current;/* 当前堆栈大小 */

int td_error Status;/*任务错误状态 */

}TASK_INFO;

图2 数据采集发送主程序流程图

1.2.2 资源信息

系统资源包括CPU资源和内存资源,Vx Works提供的系统工具直接将这些信息定位到文件或指定IO输出。这里通过构建函数截取CPU资源的信息,并且通过修改系统函数直接将内存使用信息定位到指定的内存区域。

Vx Works提供了spy Lib库函数用于监控CPU的使用情况,spy利用辅助时钟的中断服务程序,并且为每个任务维护一个计数器,这样在特定的时间周期内即可统计出每个任务的CPU占用率。在库的源程序中提供了spy Report Co mmon(FUNCPTR print-Rtn)用于系统工具(Shell等)获取CPU信息,这里通过构建print Rtn函数[4],直接将信息格式输出到指定的内存区域,相关函数代码如下所示:

Void spy Ptn Func(const char*fmt Ptn)

va_list va1;

va_start(va1,f mt Pt n);

/*Cpu Dt Buf存储CPU信息的全局变量*/

vsprintf(Cpu Dt Buf,f mt Pt n,va1);

va_end;

Vx Wor ks对内存信息进行统计,系统提供的memshow()函数直接将信息定位标准输出,目前的办法一般都是将其定位到文件再从中读取。本文通过重新构建函数库,然后获取CPU信息的办法可以将信息定位到指定的区域,主要函数代码如下:

STATUS jbl_mem Part Show(PART_ID part Id ,int type ,FUNCPTR print Pt n)

Int nu mBlocks;

Unsigned total Bytes=0;

Unsigned biggest words=0;

...

/* 调用系统函数获取总大小及内存块参数 */

If((total Bytes= mem Prat Available(patr Id,&biggest Words,type))== ERROR)

{...;

}...

nu m Blocks=dll Count(&part Id->free List);

...

/* 格式化输出到指定位置 */

If(nu m Blocks!=0)

(* print Ptn)("free%10u%9u%10u%10u\n",total Bytes,nu m Blocks,total Bytes/nu m Blocks,2*biggest Words);

}...

1.2.3 PLC应用程序信息

以Vx Works加CodeSys模式构建的软PLC系统,在脱离在线编程模式时很难获取客户运行的PLC程序相关信息,因此在程序中安插信息输出函数,使PLC程序运行到指定位置时如果满足输出要求即输出一条消息,这样就能像在C语言中加printf函数一样获取到程序不同位置的信息[5]。本设计中构建基于ST语言的PLC函数库、Util_LogInfo()函数和Util_Log Wr n()函数,其用法如以下ST代码所示:

(* 变量定义 *)

PROGRA M PLC_PRG

VAR

...

Log Msg:STRING:='Rd Data is:';

Log Msg2:STRING:='Gd Su m2- Gd Su m =';

END_VAR

(* 程序实例 *)

...

My_Log Msg:= CONCAT(Log Msg,DINT_TO_STRING(Gd-Su m));

Util_LogInf o(My_Log Msg);

My_Log Msg2:= CONCAT(Log Msg2,DINT_TO_STRING(Gd Su m - Gd Su m2));

Util_LogInf o(My_Log Msg2);

底层基于Vx Wor ks消息机制,接口函数定义为:jbl_Log Msg(char*f mt,int ar g1,...,int ar g6)。CodeSys通过RUNTI ME SYSTEM调用此接口函数,系统同时开辟任务Get Log Data用于获取来自PLC应用程序的输出信息,并且将其定向到指定的内存区域和记录到日志文件里面。输出信息格式定义见表1。

表1 PLC应用程序的输出信息格式

1.2.4 信息发送

设计中对每帧网络包的数据区进行重新定义,这就保证了上位机对数据进行准确的解析,数据包格式见表2。

表2 数据包格式

2 实时系统性能分析和故障排查

基于Windows开发上位机程序,项目中已经搭建了基于Vx Works加CodeSys的软PLC系统,在系统初始化阶段启动信息采集任务,并且运行上位机程序监控到如图3所示数据。

Vx Works提供一个异常处理句柄(handler)和一个名为t Exc Task的任务来处理异常。异常出现后任务将变为挂起状态(suspend),并且不能转变为其他状态,通过任务信息窗口STAT可以准确观测到任务的状态,选择相应任务,通过点击左侧按钮栏对任务进行挂起、恢复、删除处理。

图3 上位机监控主界面

程序非法执行或访问内存越界等都会发生任务异常,通过异常处理函数打印输出的信息反映了当前异常的具体信息。

运行一段时间,点击绘制曲线按钮可得到free内存的柱状图(如图4所示)和其中TInf Send任务CPU占用率曲线图(如图5所示)。由图5可直观看到一段时间内CPU占用率为8%,所以此时可以直观观测系统运行情况。

图4 内存使用信息柱状图

图5 CPU使用信息图(以采集任务为例)

3 结束语

通过测试,系统在开发和运行阶段通过网线简单连接目标板和上位机即可准确及时获取到软PLC系统运行的各项参数,同时可以对数据进行分析,方便技术人员及时排查故障和优化应用程序,具有一定的使用价值。下一步将进一步优化故障处理,增加可控项目,使系统实用性更强。

[1] 李峰,应宏.利用TCP/IP实现 Windows与Vx works的通信[J].微计算机信息,2006(5):80-82.

[2] 王丽丽,康存锋,马春敏,等.基于codesys的嵌入式软PLC系统的设计与实现[J].现代制造工程,2007(3):54-56.

[3] 汪毅,顾晓霞,奚宏明.Vx Works嵌入式系统远程监控系统的设计与实现[J].科学技术与工程,2011(27):6747-6755.

[4] Bollerslev T.PLC and PSTN based expert system for long-distance fault diagnosis of can-body resistance welding machine[J].Review of Economics and Statistics,2007,72:498-505.

[5] Mohammad Abu Zalata,Tariq M Younes,Mohammad A K Alia.Development of equivalent virtual instruments to PLC functions and net works[J].Journal of Soft ware Engineering and Applications,2011(3):172-180.

猜你喜欢

上位内存应用程序
外部高速缓存与非易失内存结合的混合内存体系结构特性评测
删除Win10中自带的应用程序
“春夏秋冬”的内存
谷歌禁止加密货币应用程序
特斯拉 风云之老阿姨上位
“三扶”齐上位 决战必打赢
基于ZigBee和VC上位机的教室智能监测管理系统
以新思路促推现代农业上位
基于内存的地理信息访问技术
三星电子将开设应用程序下载商店