APP下载

软PLC系统运行环境的设计

2017-04-25王世勇

电子设计工程 2017年8期
关键词:代码指令解析

张 翰,李 迪,王世勇

(华南理工大学 机械与汽车工程学院,广东 广州510640)

软PLC系统运行环境的设计

张 翰,李 迪,王世勇

(华南理工大学 机械与汽车工程学院,广东 广州510640)

软PLC技术的发展解决了传统PLC开放性差、通用性差以及难以形成开放式的硬件体系结构等缺点,其以PC机作为硬件平台,可以充分利用PC机丰富的软硬件资源,且可以为用户提供友好的编程界面。软PLC技术的实现包括编辑环境及运行环境。本文将介绍基于控制器平台的运行环境的设计,论述了软PLC系统的框架设计及运行环境的硬件及软件的框架设计,并分析PLC运行环境的执行原理。为后续实现软PLC系统运行环境的功能奠定了基础。

软PLC;编辑环境;运行环境;控制器

传统PLC由于开放性差,通用性差等缺点,难以形成开放式的硬件体系结构,已无法满足数控系统的开放式发展趋势。随着计算机技术的发展及IEC61131标准的定制,软PLC技术已成为发展主流[1-2]。软PLC技术以PC机作为硬件平台,可以充分利用PC机丰富的软硬件资源,且可以为用户提供友好的编程界面[3-6]。软PLC技术的实现包括编辑环境及运行环境的设计和实现,运行环境作为其重要组成部分,对系统的可行性及性能起到关键性作用,其用于解析开发环境转换出来的PLC程序的目标代码,使软PLC系统可以按一定的逻辑顺序控制设备的动作流程。本文将介绍运行环境执行平台的硬件及软件的框架设计并分析PLC运行环境的执行原理。

1 软PLC系统的整体设计

1.1 架构设计

软PLC系统由开发环境及运行环境两部分内容组成,其中运行环境中集成了运动控制模块,其系统架构如图1所示。开发环境实质是一个用于编辑PLC程序的应用软件,需要提供程序编辑功能、程序编译转换功能、在线调试仿真功能及离线模拟仿真功能。该软件将基于Visual Studio 2008平台进行开发,运行于Windows硬件平台,只提供LD语言,整个软件系统包括编辑模块、编译模块、在线仿真模块及离线仿真模块。运行环境则是整个软PLC系统的核心部分,包括PLC运行内核及运动控制模块,其中PLC运行核用于完成PLC程序的解析执行工作而运动控制模块用于完成运动控制功能块的解析执行[7-10]。整个运行环境主要完成外部输入的扫描、程序执行、外部输出的控制及电机脉冲的输出等工作,通常由通信接口、I/O接口、脉冲输出接口和运行内核组成。该运行环境将基于Code Composer Studio平台进行开发,运行于控制器硬件平台。

图1 软PLC系统架构图

1.2 工作原理

软PLC系统的工作原理如图2所示,用户首先在开发环境中编辑PLC程序,然后对编辑完成的PLC程序进行编译仿真,编译无误后通过RS485串口通信接口将目标代码下载至软PLC的运行环境,即下载到控制器硬件平台的FLASH。启动控制器后,控制器系统将从FLASH中加载目标代码,并周期性调用PLC运行核任务,PLC运行核执行内容为扫描外部输入信息、顺序执行解析目标代码、刷新外部输出及抛出运动控制数据包。

图2 软PLC系统工作原理图

2 运行环境的硬件平台设计

本课题采用控制器作为PLC运行环境的硬件平台,该控制器采用DSP+FPGA作为主控单元的方案,其中DSP采用TI公司生产的6000系列的通用DSP(TMS320C6713)芯片而FPGA则使用ALTERA公司的EP2C20可编程逻辑器件。DSP处理器集成了32位乘32位的乘法器,工作主频200 MHz,最高可达300 MHz,支持32位单精度及64位双精度浮点数操作[11-14]。其具有流水线及哈佛结构的特点,适合应用于需要高速度的浮点运算场合,但由于其控制方式为串行控制导致无法对多轴联动的逻辑控制进行并行处理,因此主要负责运动控制算法的处理、PLC运行核的执行以及任务调度控制。FPGA的作用在于对DSP的硬件外部设备进行扩展以完成辅助性功能,其具有并行化处理强及系统时钟高的特点,但不擅长进行运算处理,因此主要负责外部I/O接口的扫描输出及并行控制各轴脉冲的发送等任务。

这种方案将DSP适合做高速高精浮点运算的的特点和FPGA适合处理并行任务的特点充分结合起来,使控制器能够高速可靠地执行多任务并处理复杂的运动算法,满足PLC运行环境对执行速度及进行快速响应的要求,同时也满足了运动控制模块对控制算法高精高速及多轴并行输出的处理要求。使用控制器进行PLC开发,其硬件平台搭建如图3所示,控制器由外部电源供电,启动后执行PLC运行环境,对PLC程序目标代码进行解析。端子板具备I/O输入输出端口及脉冲输出端口,用于连接外部设备,控制电机运动及继电器状态。PC端运行软PLC开发环境,使用Windows操作系统,用于编辑PLC程序、下载目标代码及在线仿真调试工作,通过RS485串口与控制器连接[15-16]。

3 运行环境的软件设计

3.1 运行环境的软件框架设计

整个运行环境的软件框架如图4所示,其运行过程如下:

1)PLC开发环境通过RS485串口将编译完成的PLC程序目标代码进行下载,由串口通讯线程进行接收,并将下载的内容存入到FLASH中进行保存。

2)PLC线程启动后,从FLASH中读取出目标代码的内容并对目标代码进行逐行解析,由目标代码解析出指令ID、指令参数等内容。

3)对于非运动指令,直接根据指令类型及相关参数进行处理,并根据结果对I/O或者内部寄存器进行操作。

图3 硬件平台连接图

图4 PLC运行环境软件框架图

4)对于运动指令,先由运动指令打包线程将将解析出来的指令ID及运动参数按规定的格式进行打包后发送到运动指令队列中。运动指令解析线程则负责从运动指令队列中依次取出运动指令数据包进行解析并根据解析出来的指令ID及运动参数进行初始化,最后由运动算法线程调用对应的算法进行运算,并将运算结果发送至脉冲输出环形队列并由脉冲输出线程周期性地调用FPGA的处理模块将结果发送至伺服驱动器。

3.2 PLC程序的执行过程

为实现模块化编程方式,本系统的PLC程序的架构为分级架构,分为第一级程序、第二级程序及子程序,一级程序内容结束时添加END1标志位,二级程序内容结束时添加END2标志位,每级程序的执行周期不一致,各级对应的执行周期如下所述。

1)第一级程序的执行周期为4 ms,可以用于编写一些需要快速响应的功能程序,如急停处理功能或报警功能。

2)第二级程序的执行周期为4*N ms,其中N为程序内容被划分的数量。启动第二级程序时程序内容被划分成N份,每份容量大小最多为2 000行基本指令。每4ms只执行一份。因此每个周期内将执行完第一级程序的所有内容及第二级程序的第N份内容。

3)子程序的执行周期根据其调用的位置而不同,若在第一级程序中调用,则执行周期为4 ms;若在第二级程序中调用,则执行周期为(4*N)ms。

3.3 运行环境的执行原理

运行环境的执行总流程示意图如图5所示。首先对系统进行初始化,然后周期性调用PLC运行核任务,运行核任务包括输入采样、解析并执行程序内容及输出刷新几个动作。

1)初始化系统变量:在启动PLC运行核任务前需要对操作系统定义的变量进行初始化并设置初始值。

2)采集输入信号:每个执行周期都需要对外部输入的最新状态进行采集并存储到缓冲区。

3)解析并执行程序内容:在程序内容存放的内存区中逐行解析目标代码并执行相关指令动作,同时将执行结果存放于对应的寄存器中,其中一级程序每周期执行一次,二级程序分段执行,每周期执行一段,直到全部内容执行完成则重新开始分段执行。

4)输出的刷新:执行每个周期的PLC程序目标代码的内容后,将最新的外部输出结果刷新到硬件设备。

图5 PLC运行核执行流程图

根据PLC程序的分级架构,PLC程序目标代码需要进行分级解析,图6为目标代码的解析执行过程,具体解析过程如下所述。

图6 PLC程序目标代码解析流程图

1)每个周期开始时,使用一个位置指针指向目标代码存储空间的首地址。

2)进入第一级程序的解析过程,对目标代码进行逐行解析直到执行到END1标志位的目标代码,则结束对一级程序的解析,进入二级程序的解析。

3)进入第二级程序的解析过程,对目标代码进行逐行解析,每执行完一个指令进行时间累加,直到累计时间达到分段容量,则结束该周期的解析过程,并记录下此时目标代码的位置,作为下个周期二级程序的起始位置。若执行到END2标志位的目标代码,则结束该周期的解析过程,并将下周期二级程序的起始位置设为原始位置。

4)解析指令过程中每解析完一个指令,则位置指针根据该指令转换成的目标代码的行数进行移动,指向下个指令目标代码的首行。

5)等待本周期的结束,进入下个执行周期,重复第一和第二个步骤。

3.4 目标代码的解析原理

目标代码是由PLC程序指令表转换而成的具有特定格式的数据流,存储方式为unsigned int数据类型的数组,单参数指令转为目标代码后的存储空间为一行,多参数指令的存储空间根据参数数量存储多行。

解析目标代码的过程就是按照目标代码的构造原理进行逆向拆分,还原指令的相关信息后再去执行动作。目标代码的每一行都存储了相关指令的数据信息,解析时需要由指令对应的目标代码的首行先获取到指令的类型标志,再根据指令类型将目标代码的一行或者多行转换为对应指令的数据结构体,由结构体的变量得到指令对应的参数内容。

根据目标代码的解析过程分析,需要为每个指令定义一个结构体进行数据存储,结合目标代码的数据类型定义,每个指令的结构体大小需要为4字节大小的整数倍。每个指令的结构体由指令的类型标志及单个或者多个指令参数的寄存器地址号、寄存器位号或者常数值的变量进行组合,表1为具体的参数变量对应的数据类型。

表1 指令参数的数据类型表

目标代码的具体解析过程如下所述:

1)定义一个单参数指令结构体的指针指向目标代码存储空间的首地址:

PLC_BASE_INS*pc;//单参数结构体指针

pc=(PLC_BASE_INS*)PLC_EXEC_CODE;//初始化为目标代码首地址

2)pc指针指向每条指令转换成的目标代码的首行,通过pc->ins获取到指令标志类型,若为单参数图元,则取出PLC_BASE_INS结构体的其它参数;若为多参数指令,则将pc指针转为相应指令的数据结构体,通过该结构体将指令的相关参数取出;

3)每完成一个指令的解析,根据指令目标代码的行数叠加pc指针的位置,使pc指针指向下个指令的目标代码的首行地址。

4 结束语

文中介绍了如何在控制器平台下设计开发软PLC系统的运行环境,详细分析了控制器硬件平台的设计,运行环境的软件框架设计及具体的执行原理。为后续实现软PLC系统运行环境的功能奠定了基础。

[1]姚家庆,陶耀东,郑一麟.基于MiniGUI的梯形图编程工具的设计与实现[J].组合机床与自动化加工技术,2013(2):30-33+37.

[2]苏淑芝,刘志维.软PLC开发系统的设计与实现[J].现代电子技术,2012(10):15-17,20.

[3]郭书杰.软件PLC梯形图编程系统的研究与实现[D].沈阳:中国科学院沈阳计算技术研究所.2010

[4]王飞.开放式数控系统中软PLC的开发及应用[D].广州:华南理工大学.2011

[5]李龙.软PLC开发系统的研究与实现[D].西安:陕西科技大学,2013.

[6]陈浩,张跃文.软PLC技术研究与开发[J].信息系统工程,2015(10):86.

[7]张丕鑫.基于PLCopen的运动控制功能块研究与实现[D].大连:大连理工大学,2011.

[8]刘艳强,宋永立.基于PLCopen的数控机械控制器研究与开发[J].制造业自动化,2013,02:63-67

[9]金丽娟,严义,刘罡.基于IEC61131-3的运动控制模块设计[J].机电工程,2013,06:759-763

[10]谢春杰.嵌入式软PLC的研究与设计[D].南京:南京理工大学,2014.

[11]马志刚,赵丽平,李中西,等.一种高性能浮点DSP芯片TMS320C6713及其最小系统的设计[J].微型机与应用,2010,29(10):24-27.

[12]Texas Instruments Inc.How to Get Started With the DSP BIOS Kernel[Z].Dallas,Texas:Texas Instruments Inc,2001:04-08.

[13]Texas Instruments Inc.Using the DSP/BIOS Kernel in Real-Time DSP Applications[Z].Dallas,Texas: Texas Instruments Inc,2001:02-16.

[14]张红香.面向数控机床的嵌入式软PLC开发系统的研究[D].兰州:兰州理工大学,2014.

[15]胥贵萍.基于软PLC技术的工程机械智能控制器[D].武汉:武汉科技大学,2011.

[16]喻赛花.基于Windows的软PLC系统开发[D].南京:南京航空航天大学,2012.

Design of PLC ladder diagram programming environment

ZHANG Han,LI Di,WANG Shi-yong
(School of Mechanical and Automotive Engineering,South China University of Technology,Guangzhou 510640,China)

The development of soft PLC technology solved the poor openness and universality of traditional PLC as well as difficulty in forming hardware architecture of open mode.Soft PLC is based on PC hardware and make full use of hardware and software resources to provide a friendly programming UI. The implementation of Soft PLC include programming editing and running environment.This paper introduced how to design the runtime environment based on controller platform,discuss the design methods including the framework of soft PLC system and the framework of running environment's software and hardware.Besides, this paper also analyzed the implementation ofthe runtime environment,which laid solid foundation for the implementation of soft PLC running environment.

soft PLC;editing environment;runtime environment;controller

TN805

:A

:1674-6236(2017)08-0010-05

2016-07-05稿件编号:201607026

国家科技支撑计划项目资助 (2015BAF20B01);广东省科技计划项目资助(2012A090100012;2013B010134010;2014B090921003;2014A050503009);广州市科技计划项目资助(201508030007;201604010064)

张 翰(1991—),男,广东汕头人,硕士。研究方向:数控系统中软件PLC技术。

猜你喜欢

代码指令解析
三角函数解析式中ω的几种求法
ARINC661显控指令快速验证方法
创世代码
创世代码
创世代码
创世代码
睡梦解析仪
电竞初解析
杀毒软件中指令虚拟机的脆弱性分析
相机解析