- 易迪拓培训,专注于微波、射频、天线设计工程师的培养
基于DSP/BIOS的PLC执行系统开发
摘要:分析了目前软PLC在实时性方面存在的不足;提出采用基于DSP/BIOS实时内核的嵌入式处理器的软PLC执行系统架构。首先,通过分析软PLC执行系统的架构及工作原理,给出了基于DSP/BIOS的任务调度方案;其次,建立PLC指令的执行函数库,确定PLC执行系统的运行流程:最后,对该PLC执行系统性能进行的测试表明,基于嵌入式处理器的软PLC执行系统能有效地弥补软PLC在实时性及稳定性方面的不足,在自动控制方面具有相当大的发展潜力。
关键词:DSP/BIOS;软PLC;执行系统;嵌入式处理器
目前工控领域中广泛使用的可编程逻辑控制器(Programmable Logic Controller)大概可以分为两类:传统PLC与软PLC。传统PLC由于自身存在一些不足,例如封闭的硬件体系结构,主要由几家厂商所垄断,而软PLC在开放性及低成本方面潜力巨大,目前欧美等很多西方国家已经把软件PLC作为一个重点对象进行研究开发。
传统PLC具有硬实时性,正因为如此它才能提供快速、确定而可重复的响应。另一方面,由于软PLC是基于PC而建立在一定的操作系统上,例如Windows NT,而这并不是一个硬实时的操作系统,这使得以PC为基础的控制引擎实时性问题成为制约软PLC发展的主要因素之一。
针对软PLC在实时性方面的不足,本项目采用基于嵌入式处理器的控制方案,软PLC执行系统作为一个任务在控制器固件内。美国TI公司推出的C6000系列数字信号处理器(Digital Signal Processor)具有很高的处理能力,特别是为其TMS320C6000TM、TMS320C5000TM和TMS320 C28xTM系列DSP平台所设计开发的一个尺寸可裁剪的实时多任务操作系统内核DSP/BIOS,提供抢占式多线程、硬件抽象、实时分析和配置工具,可实现实时线程调度与同步、主机与目标DSP间通信或实时监测。DSP是串行控制的,运算速度快。基于DSP/BIOS实时内核的PLC执行系统,具有相当好的实时性及稳定性。下面着重介绍其设计及实现方法。
1 软PLC的设计规划
1.1 软PLC的架构分析
由PLC执行系统控制的PLC程序划分为一级程序和二级程序,它们的执行周期不一致。一级程序每8 ms执行一次,处理响应快的短脉冲信号,例如外部的操作面板信号和报警信号,在程序末尾自动给出结束标记END1。二级程序为一般的PLC指令,每8n ms执行一次,n为第二级程序的分割数。在开始执行二级程序时,PLC执行系统模块会根据执行程序所需要的时间自动把二级程序分割成n块,每个8 ms只执行其中一块,并在二级程序结束时自动给出结束标记END2。
1.2 PLC执行系统的工作原理
PLC采用循环扫描方式工作,首先进行系统初始化,然后进入循环工作过程包括输入采样、PLC指令执行及输出刷新几个阶段,其基本流程如图1所示。
1)系统初始化:在循环执行PLC程序前,首先要进行执行系统的初始化,包括参数的输入及变量初值的设置;2)输入的采样:每次执行PLC程序时,要读取外部输入状态至缓冲区中,以备后面程序查询;3)执行用户PLC程序:执行用户程序,就是CPU从PLC程序的首地址开始按顺序逐个执行编译后的PLC指令,过程结果暂存在相应的寄存器内;4)输出的刷新:执行完用户程序后,需要把处理后需要输出的结果进行外部输出。由于PLC控制的对象大都是变化缓慢的信号,而PLC每次扫描输入和逻辑运算的时间很短,本PLC执行系统设定为每执行一个循环,就进行一遍输出的刷新。
1.3 DSP/BIOS的线程调度
文中的PLC执行系统的开发均在TI公司提供的集成开发环境CCS(Code Composer Studio)中进行,CCS不仅集成了常规的开发工具,如源程序编辑器、代码生成工具及调试环境,还提供DSP/BIOS开发工具。DSP/BIOS是一个精简的实时操作系统内核,具有实时操作系统功能。它提供抢占式多线程,支持多种不同优先级,每种线程都有不同的执行和抢占特性,分别是硬件中断(HWI)包括时钟函数(CLK)、软件中断(SWI)包括周期函数(PRD)、任务线程(TSK)、后台线程(IDL)。线程类型的选取原则:HW1只用来处理对时间要求苛刻的关键任务;SWI用来处理相对独立的函数,如果算法要求比较复杂则使用TSK。TSK提供了很多任务通信和同步的手段,并且拥有自己独立的堆栈,因此比SWI更灵活。IDL用于执行与时间无关的非关键任务。
在DSP/BIOS线程调度中,硬件中断与软件中断的高优先级线程可以暂停运行中的低优先级任务,而高优先级的任务线程必须用特定的API才能抢占当前运行的低优先级任务线程,且只有任务线程才能暂停状态。基于PLC执行是一个循环执行过程,且与其它运动线程有复杂的通讯交互,本执行系统将其建立为一任务线程,由DSP/BIOS实时操作系统进行调度。
[p]
2 PLC执行系统的具体实现
2.1 数据结构定义
1)PLC指令代码数据结构的定义。PLC用户程序在系统内部以一定的二进制格式存放,采用如下指令开辟一个a字节的内存区存放编译后的PLC指令代码,内存区大小a根据实际情况设定。
long*plc_pt;
plc_pt=(long*)malloc(a);
2)PLC执行指令结构体的定义。PLC指令代码主要包含内容为指令类型及变量地址,定义如下PLC执行指令结构体:
struct plc_code_type //PLC执行指令结构体
{
unsigned char code_type;//指令类型
unsigned short pt addr;//变量地址
};
由此,在初始化时定义一个pk_code_type类型的指针直接指向PLC指令代码区.在进行PLC指令解析时,可直接移动该指针进行指令解析并输出。
2.2 PLC指令解析
PLC执行系统的一个关键问题在于PLC指令的解析,利用DSP的C语言,建立相应的PLC指令的执行函数库。PLC用户程序可看成由多段执行块组成,每个执行块包括条件指令及执行指令。下面分为条件指令解析及执行指令解析来进行描述。
2.2.1 条件指令解析
首先定义一个变量来保存条件指令解析结果,以便在解析执行指令时根据此条件指令解析结果进行执行指令处理。
例如常开触点(LD)可以用如下函数实现:
void plcLD(plc_code_typepc)
//pc表示当前指令在用户程序中的指针位置
{ if(1==pc->pt_addr)//指令获取的地址为1
{
plc_result=0x01;//闭合状态置位
}
}
2.2.2 执行指令解析
执行指令则根据当前执行块条件指令结果来判断对元件地址进行相应处理。例如置位指令(SET)可以用如下函数实现:
void plcSET(plc_code_typepc)
{ if(plc_result1)
//判断条件指令,闭合,有输出
{
pc->pt_addr|=0xff;//对应地址置位
}
}
这样,逐个对PLC执行块进行解析,输入和输出单元的刷新同样利用函数来实现,最后通过输出口送出控制量,实现对用户PLC程序的执行控制。
2.3 PLC执行系统运行流程
首先在DSP/BIOS配置工具下的Scheduling项目中建立一个任务线程,比如为PLC_Deal_Task,并对该任务函数的优先级及其它相关内容进行设置,则可直接在PLC_Deal_Task线程中进行PLC指令解析处理,并实现PLC的循环扫描功能。
总体设计思想如下:设定一级程序的执行周期为m个指令计数执行一次,m与扫描周期有关。在进入二级循环后,首先判断指令计数是否大于m,未到m,则进入执行二级程序。如果条件满足,跳出循环,1周期完成,具体调度流程如图2所示。
[p]
3 测试分析及应用
3.1 软PLC执行系统的测试分析
根据上述设计方法构建出PLC执行系统,设计实际应用的PLC程序并在试验机上进行测试,观察设备的逻辑动作及执行系统性能情况。C CS提供了一系列可视化工具对运行系统的性能进行测试,“CPU负荷图”用于分析CPU的利用率,“任务执行图”可以检测出系统是否符合实时性要求。现根据微钻刃面检测机的工艺过程设计了其PLC程序,下载到本软PLC执行系统中运行,通过CCS监测工具监测其运行性能。图3是CPU负荷图,负荷峰值在25%左右,变化平稳;图4是任务执行图,图中左边栏最下面的Assertions项目用于指示某个实时性要求没有达到,或是侦测到某个无效状态,如果Assertions项目没有出现小方块则表示对应线程的调度满足实时性要求。另外,经上机调试,设备整体运行逻辑也完全按照程序要求运行。此实验表明,基于DSP/BIOS的软PLC执行系统能够满足实时控制的要求且工作稳定。
3.2 软PLC执行系统的应用
传统PLC的一个缺点是硬件体系结构相对封闭,并且成本高,例如日本三菱PLC FX2N系列控制器本身未集成运动轴控制功能,每增加一个运动轴的控制均需额外扩展脉冲发生器单元(Pulse Generatint Unit,PGU),如果在多轴设备上应用可能会造成成本过高并且灵活不够。本课题组开发的运动控制器IPMC8188可独立控制8轴,软PLC执行系统作为一个任务运行在该控制器的固件中。对比传统PLC,有稳定强大的PLC功能的运动控制器可降低控制系统构建的复杂程度,提高控制效率及开发效率。图5所示为内嵌软PLC执行系统的IMPC8188运动控制器,目前,该型运动控制器已在全自动刃面检测机、自动贴片机及全自动微钻磨尖机等自动化设备上使用并稳定运行。
4 结束语
基于嵌入式处理器的软PLC执行系统能有效的弥补软PLC在实时性及稳定性方面的不足,并且由于自带操作系统,有可靠地数据存储和自恢复功能。文中论述的基于DSP/BIOS的PLC执行系统的设计,与运动控制相结合,在小中型自动化设备方面应用广泛,另外在实现大规模系统的综合性自动控制方面也有很大的发展潜力。
射频工程师养成培训教程套装,助您快速成为一名优秀射频工程师...