基于DSP/BIOS的PLC执行系统开发

2013-06-23 09:36李建伟赖乙宗王世勇
电子设计工程 2013年5期
关键词:实时性线程指令

李建伟,赖乙宗,李 松,王世勇

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

目前工控领域中广泛使用的可编程逻辑控制器(Programmable Logic Controller)大概可以分为两类:传统PLC与软PLC。传统PLC由于自身存在一些不足,例如封闭的硬件体系结构,主要由几家厂商所垄断,而软PLC在开放性及低成本方面潜力巨大,目前欧美等很多西方国家已经把软件PLC作为一个重点对象进行研究开发。

传统PLC具有硬实时性,正因为如此它才能提供快速、确定而可重复的响应。另一方面,由于软PLC是基于PC而建立在一定的操作系统上,例如Windows NT,而这并不是一个硬实时的操作系统,这使得以PC为基础的控制引擎实时性问题成为制约软PLC发展的主要因素之一。

针对软PLC在实时性方面的不足,本项目采用基于嵌入式处理器的控制方案,软PLC执行系统作为一个任务在控制器固件内。美国TI公司推出的C6000系列数字信号处理器(Digital Signal Processor)具有很高的处理能力,特别是为其TMS320C6000TM、TMS320C5000TM和TMS320C28xTM系列DSP平台[1]所设计开发的一个尺寸可裁剪的实时多任务操作系统内核DSP/BIOS[2],提供抢占式多线程、硬件抽象、实时分析和配置工具,可实现实时线程调度与同步、主机与目标DSP间通信或实时监测。DSP是串行控制的,运算速度快。基于DSP/BIOS实时内核的PLC执行系统,具有相当好的实时性及稳定性[3]。下面着重介绍其设计及实现方法。

1 软PLC的设计规划

1.1 软PLC 的架构分析

由PLC执行系统控制的PLC程序划分为一级程序和二级程序,它们的执行周期不一致。一级程序每8 ms执行一次,处理响应快的短脉冲信号,例如外部的操作面板信号和报警信号,在程序末尾自动给出结束标记END1。二级程序为一般的PLC指令,每8n ms执行一次,n为第二级程序的分割数。在开始执行二级程序时,PLC执行系统模块会根据执行程序所需要的时间自动把二级程序分割成n块,每个8 ms只执行其中一块,并在二级程序结束时自动给出结束标记END2。

1.2 PLC执行系统的工作原理

PLC采用循环扫描方式工作[4],首先进行系统初始化,然后进入循环工作过程包括输入采样、PLC指令执行及输出刷新几个阶段,其基本流程如图1所示。

图1 PLC执行系统模块的基本工作原理Fig.1 Basic operational principles of the Soft-PLC execution system module

1)系统初始化:在循环执行PLC程序前,首先要进行执行系统的初始化,包括参数的输入及变量初值的设置;2)输入的采样:每次执行PLC程序时,要读取外部输入状态至缓冲区中,以备后面程序查询;3)执行用户PLC程序:执行用户程序,就是CPU从PLC程序的首地址开始按顺序逐个执行编译后的PLC指令,过程结果暂存在相应的寄存器内;4)输出的刷新:执行完用户程序后,需要把处理后需要输出的结果进行外部输出[5]。由于PLC控制的对象大都是变化缓慢的信号,而PLC每次扫描输入和逻辑运算的时间很短,本PLC执行系统设定为每执行一个循环,就进行一遍输出的刷新。

1.3 DSP/BIOS的线程调度

文中的PLC执行系统的开发均在TI公司提供的集成开发环境CCS(Code Composer Studio)中进行,CCS不仅集成了常规的开发工具,如源程序编辑器、代码生成工具及调试环境,还提供DSP/BIOS开发工具。DSP/BIOS是一个精简的实时操作系统内核,具有实时操作系统功能。它提供抢占式多线程[6],支持多种不同优先级,每种线程都有不同的执行和抢占特性,分别是硬件中断(HWI)包括时钟函数(CLK)、软件中断(SWI)包括周期函数(PRD)、任务线程(TSK)、后台线程(IDL)。线程类型的选取原则:HWI只用来处理对时间要求苛刻的关键任务;SWI用来处理相对独立的函数,如果算法要求比较复杂则使用TSK。TSK提供了很多任务通信和同步的手段,并且拥有自己独立的堆栈,因此比SWI更灵活。IDL用于执行与时间无关的非关键任务[7]。

在DSP/BIOS线程调度中,硬件中断与软件中断的高优先级线程可以暂停运行中的低优先级任务,而高优先级的任务线程必须用特定的API才能抢占当前运行的低优先级任务线程,且只有任务线程才能暂停状态[8]。基于PLC执行是一个循环执行过程,且与其它运动线程有复杂的通讯交互,本执行系统将其建立为一任务线程,由DSP/BIOS实时操作系统进行调度。

2 PLC执行系统的具体实现

2.1 数据结构定义

1)PLC指令代码数据结构的定义。PLC用户程序在系统内部以一定的二进制格式存放,采用如下指令开辟一个a字节的内存区存放编译后的PLC指令代码,内存区大小a根据实际情况设定。

由此,在初始化时定义一个plc_code_type类型的指针直接指向PLC指令代码区,在进行PLC指令解析时,可直接移动该指针进行指令解析并输出。

2.2 PLC指令解析

PLC执行系统的一个关键问题在于PLC指令的解析,利用DSP的C语言,建立相应的PLC指令的执行函数库。PLC用户程序可看成由多段执行块组成,每个执行块包括条件指令及执行指令。下面分为条件指令解析及执行指令解析来进行描述。

2.2.1 条件指令解析

首先定义一个变量来保存条件指令解析结果,以便在解析执行指令时根据此条件指令解析结果进行执行指令处理。例如常开触点(LD)可以用如下函数实现:

2.2.2 执行指令解析

执行指令则根据当前执行块条件指令结果来判断对元件地址进行相应处理。例如置位指令(SET)可以用如下函数实现:

这样,逐个对PLC执行块进行解析,输入和输出单元的刷新同样利用函数来实现,最后通过输出口送出控制量,实现对用户PLC程序的执行控制。

2.3 PLC执行系统运行流程

首先在DSP/BIOS配置工具下的Sched uling项目中建立一个任务线程,比如为PLC_Deal_Task,并对该任务函数的优先级及其它相关内容进行设置,则可直接在PLC_Deal_Task线程中进行PLC指令解析处理,并实现PLC的循环扫描功能。

总体设计思想如下:设定一级程序的执行周期为m个指令计数执行一次,m与扫描周期有关。在进入二级循环后,首先判断指令计数是否大于m,未到m,则进入执行二级程序。如果条件满足,跳出循环,1周期完成,具体调度流程如图2所示。

图2 PLC任务调度流程Fig.2 Task scheduling process of PLC

3 测试分析及应用

3.1 软PLC执行系统的测试分析

根据上述设计方法构建出PLC执行系统,设计实际应用的PLC程序并在试验机上进行测试,观察设备的逻辑动作及执行系统性能情况。CCS提供了一系列可视化工具对运行系统的性能进行测试,“CPU负荷图”用于分析CPU的利用率,“任务执行图”可以检测出系统是否符合实时性要求。现根据微钻刃面检测机的工艺过程设计了其PLC程序,下载到本软PLC执行系统中运行[9],通过CCS监测工具监测其运行性能。图3是CPU负荷图,负荷峰值在25%左右,变化平稳;图4是任务执行图,图中左边栏最下面的Assertions项目用于指示某个实时性要求没有达到,或是侦测到某个无效状态,如果Assertions项目没有出现小方块则表示对应线程的调度满足实时性要求。另外,经上机调试,设备整体运行逻辑也完全按照程序要求运行。此实验表明,基于DSP/BIOS的软PLC执行系统能够满足实时控制的要求且工作稳定。

图3 DSP CPU负荷图Fig.3 CPU load graph of DSP

图4 DSP线程执行图Fig.4 Execution graph of DSP

3.2 软PLC执行系统的应用

传统PLC的一个缺点是硬件体系结构相对封闭,并且成本高,例如日本三菱PLC FX2N系列控制器本身未集成运动轴控制功能,每增加一个运动轴的控制均需额外扩展脉冲发生器单元(Pulse Generatint Unit,PGU),如果在多轴设备上应用可能会造成成本过高并且灵活不够。本课题组开发的运动控制器IPMC8188可独立控制8轴,软PLC执行系统作为一个任务运行在该控制器的固件中。对比传统PLC,有稳定强大的PLC功能的运动控制器可降低控制系统构建的复杂程度,提高控制效率及开发效率[10]。图5所示为内嵌软PLC执行系统的IMPC8188运动控制器,目前,该型运动控制器已在全自动刃面检测机、自动贴片机及全自动微钻磨尖机等自动化设备上使用并稳定运行。

图5 内嵌软PLC执行系统的IMPC8188运动控制器Fig.5 Embedded soft PLC executive system motion controller of IMPC8188

4 结束语

基于嵌入式处理器的软PLC执行系统能有效的弥补软PLC在实时性及稳定性方面的不足,并且由于自带操作系统,有可靠地数据存储和自恢复功能。文中论述的基于DSP/BIOS的PLC执行系统的设计,与运动控制相结合,在小中型自动化设备方面应用广泛,另外在实现大规模系统的综合性自动控制方面也有很大的发展潜力。

[1]张雄伟,曹铁勇.DSP芯片的原理与开发应用[M].北京:电子工业出版社,2009.

[2]王军宁,何迪.TI DSP/BIOS用户手册与驱动开发[M].北京:清华大学出版社,2007.

[3]周杰.DSP/BIOS实时多任务操作系统内核的研究[J].科技传播,2010(12):220.ZHOU Jie.Research of DSP/BIOS real time multi task operating system kernel[J].Public Communication of Science&Technology,2010(12):220.

[4]马远佳,秦付军.基于实时数据库的软PLC运行系统研究[J].微计算机信息,2010,26(4-1):55-56.MA Yuan-jia,QIN Fu-jin.Research of running system of soft-PLC based on the real time database[J].Microcomputer Information,2010,26(4-1):55-56.

[5]吴孜越,刘陆群,吕战争.基于CNC系统的嵌入式PLC组件的设计与实现[J].河南科技大学学报,2005,26(3):18-21.WU Zi-yue,LIV Lu-qun,LV Zhan-zheng.Design and realization of built-in PLC component based on CNC system[J].Journal of Luoyang Institute of Technology,2005,26(3):18-21.

[6]胡海龙,彭启琮.TMS320C6713基于DSP/BIOS的二级Boot Loader开发[J].数控技术,2005(15):74-75.HU Hai-long,PENG Qi-cong.Development of a second-level boot loader based on DSP/BIOS on TMS320C6713[J].Numerical Control Technique,2005(15):74-75.

[7]高原,张文明.DSP/BIOS多任务环境下的实时焊缝位置检测[J].现代焊接,2007(11)::22-24.GAO Yu,ZHANG Wen-ming.The inspection of real time welds position in DSP/BIOS multi-task environment[J].Modern Welding,2007(11)::22-24.

[8]程翔宇,李迪,冯寿庭.基于DSP/BIOS的运动控制系统设计[J].机床与液压,2007,35(5):157-159.CHENG Xiang-yu,LI Di,FENG Shou-ting.The design of motion control system based on DSP/BIOS[J].Machine Tool&Hydraulics,2007,35(5):157-159.

[9]苏淑芝,刘志维.软PLC开发系统的设计与实现[J].现代电子技术,2012,35(10):15-17.SU Shu-zhi,LIU Zhi-wei.Design and implementation of soft PLC development system[J].Modern Electronic Technique,2012,35(10):15-17.

[10]陈伟娜.基于DSP的运动控制算法研究与实现[D].广州:华南理工大学,2012.

猜你喜欢
实时性线程指令
基于C#线程实验探究
基于国产化环境的线程池模型研究与实现
ARINC661显控指令快速验证方法
航空电子AFDX与AVB传输实时性抗干扰对比
浅谈linux多线程协作
计算机控制系统实时性的提高策略
杀毒软件中指令虚拟机的脆弱性分析
中断与跳转操作对指令串的影响
一种基于滑窗的余度指令判别算法
一种车载Profibus总线系统的实时性分析