摘 要:本文通过对经典控制器的分析,提出了嵌入式PLC的概念,重点以EASYV1.00嵌入式PLC软件内核结构作基本分析,以引导工控设计人员建立一种新的嵌入式系统设计理念。
关键词: 嵌入式 PLC 内核 CAN总线
Abstract: By the analysis of the classical controller, the conception of embedded PLC is proposed. The emphases is to lead the designers of the controlling engineering to build a new notion of the design of embedded system by the basic analysis of the kernel configuration of the EASYV1.00 embedded PLC software.
Key word:Embeded PLC Kernel CAN bus
[中图分类号] TP23 [文献标识码] A 文章编号 1606-5123(2005)11-00
1引言:嵌入式PLC概念
嵌入式PLC是指在特定的控制装置中实现PLC(Programable Logic Controller)梯形图编程语言的解释、执行,使特定装置在自身专用功能基础上具有PLC的基本功能。
梯形图是一种面向工厂自动化工程师的图形化PLC编程语言。梯形图具有简洁、直观,面向工艺流程等许多优点。PLC编程语言的出现使控制装置中的硬件管和面向控制流程分离,PLC制造商专注于硬件及硬件管理,工厂自动化人员借助梯形图语言作二次开发,使同一种PLC适用于不同的控制系统中,形成了可编程逻辑控制器(PLC)这种平台级产品。
但控制产品的设计已发展到一个追求个性化、差异化设计的阶段。常规PLC无法进入的市场,通常面临更多的是个性化、差异化的压力。如成本控制、特殊功能等。出现了工控机(IPC)、单片机、嵌入板等更贴近个性化需求的控制产品。IPC在互连、表达、算法等方面优势明显,单片机系统在成本控制上更加灵活。IPC由于加载了操作系统(如NT)其实时性、稳定性难以满足连续控制的苛刻要求,通常用于监控。低层通常用PLC。单片机系统将硬件管理和用户工艺流程控制混在一起,制约了它的标准化,并最终失去成本竞争优势。
嵌入式PLC正是面向IPC和单片机系统开发的,它保留了PLC(借助梯形图语言)硬件管理和工艺控制分离的优势,结合IPC和单片机提供的更个性化、差异化的设计方法,形成一种新的控制器设计理念。当我们在IPC中嵌入PLC的功能时,我们称之为基于PC Base的嵌入式PLC,当我们在单片机中嵌入PLC功能时,我们称它为基于All ON One的嵌入式PLC(片级嵌入PLC)。未特别说明时,嵌入式PLC指片级嵌入式PLC,也就是本文提出的嵌入式PLC。以下描述以8位单片机C8051F040为硬件的以科威公司EASYV1.00版嵌入式PLC软件架构。
目前,关于专用PLC有软PLC和客制式PLC两种。软PLC指高端嵌入的含通用实时操作系统的PLC软件,客制式PLC是指根据用户需求定向设计的PLC。相关技术在德国、台湾、南韩均有突破,属于嵌入式PLC的范畴。
2 嵌入式PLC软件架构
2.1 总体结构
EASY V1.00嵌入式PLC是一种实时性很强的操作系统软件,总体结构包括三个层面,如图1所示。
(1)嵌入式PLC内核 它完成实时任务调度,梯形图语言解释、执行、通讯等基本功能,并提供二次开发驱动接口;
(2)二次开发程序 通过内核提供的外挂任务,使用内核开发各种面向具体对象个性化差异化的驱动程序;
(3)终端应用程序 指面向工艺流程控制的梯形图语言编程;
图1 EASY V1.00总体结构
对于二次开发人员开发面向个性化对象的驱动程序,必须了解嵌入式PLC内核结构,尤其是驱动接口设计方法,下面分块介绍内核的各块功能。
2.2 实时OS
面向小型单片机,一般的实时操作系统无法加载,OS/Ⅱ 占用了过多的资源,EASY V1.00内核根据任务的类别、实时要求、定制了一款专用实时OS,它无文件系统和内存管理两部分。
(1)硬实时状态下的抢占式并发任务管理
EASY V1.00内核提供2.5ms基准时基,它作为一种不可剥夺的任务循环执行用于各类任务的监控管理。
对于工控应用中的异步事件采用并发式任务管理,通过各类中断抢占任务的挂起、执行,每类异步任务执行前,在2.5ms任务中注册,执行后注销,通过2.5ms时基监控并发任务的流量及阻塞状况并报字到上一级任务调度。
(2)EASY V1.00中异步任务
· 通信数据链络层的字节流
· 梯形图语言中的定时器
· 二次开发驱动程序中的实时异步任务
并发任务管理是EASY V1.00中最低层的任务管理,达到ms级实时效果,单位时间内(1ms)占用CPU机时峰值为:
T并=
Ni——1ms内任务的最大执行次数,ti——任务的一次执行最大时间。
EASY V1.00并发任务实时数据见表1、表2。
表1 EASY V1.00并发任务实时数据
任务类别 不可剥夺任务 通信字节流任务 梯形图定时器 驱动并发任务
2.5ms时基 串口0 串口1 CAN
执行次数(N1) 1 1 1 1 1 ND
执行时间(T) 10μs+ΔT 25μs 25μs 50μs 40μs tD
表2 EASY V1.00并发任务实时数据
任务类别 梯形图 通讯 函数调用 用户软中断
任务个数 1 3 1 m4
任务时间 1-20μs 1-10μs 1-5μs t4
T片=3-45μs+t4
t4为用户软中断任务占用时间和。
“扫描周期”指解释、执行所有梯形图指令并执行扫描结束处理所占用的时间,由于这期间有并发任务产生,“扫描周期”应包括并发任务占用时间。
并发任务占用比:
X=T并/ 1ms = (150μs+ΔT+ )/1000μs =15%-100%
设用户梯形图含M条指令
T扫=(M•T片+ΔTend)/X
ΔTend为扫描结束处理占用时间。
2.3 内存管理
ESAYV1.00的运行数据空间包括64K外部RAM+256字节CPURAM,将其分解为系统占用区、PLC资源区、用户嵌入数据区三部分。
(1)系统占用区
系统占用区是EASYV1.00运行时,进行数据缓存、状态保持、系
统堆栈等不对PLC及用户开设的域区。这部分数据区的初始化运行中的监视都由实时OS管理,PLC及用户嵌入程序不得非法侵入。
(2)PLC资源区
梯形图语言管理的数据区包括位区、字区两部分。通常以元件形式体现。
·输入继电器X:X0-X177 128点位型
·输出继电器Y:Y0-Y177 128点位型
·中间继电器M:M0-M1535 1536点位型
·专用中间继电器M8000-M8255 256点位型
·状态继电器S:S0-S999 1000点位型
·时间继电器T:T0-T255 256点位型+字型
·计数器C:C0-C255 256点位型+字型
·通用数据寄存器D:D0-D7999 8000个字型
·专用数据寄存器D:D8000-D8255 256个字节
所有PLC资源是梯形图运行时进行数据存取的区域,是终端应用层可视化区域,用户嵌入的驱动程序,可使用对应元件的绝对地址进行存取,实现了嵌入程序与PLC梯形图之间的数据交换。
(3)用户嵌入数据区
当用户以EASYV1.00内核设计各种嵌入系统时,需针对具体硬件做必要的驱动程序,该部分程序的私有数据存放于用户嵌入数据区,公有数据存放于PLC的资源区,用户嵌入数据区分配如下:
CPU内部:位区(bitRAM):20H-23H 4bytes
字节区(DRAM):58H-67H 16bytes
外部数据存取器:字节区(XRAM):3600H-3FFFH 2560bytes
2.4 梯形图语言
EASYV1.00梯形图语言是一种解释性语言,每一条梯形图语句对应一个固定的函数调用,逐句扫描直至END为一个扫描周期,EASYV1.00支持86条梯形图指令。
(1)基本指令(27条)
助记符 名称 助记符 名称
LD 读取常开点 LDF 读取下降沿
LDI 读取常闭点 ANDP 串接上升沿
AND 串入常开点 ANDF 串接下降沿
ANDI 串入常闭点 ORP 并接上升沿
OR 并入常开点 ORF 并接下降沿
ORI 并入常闭点 INV 运算触点取反
ANB 电路块串联 MPS 运算触点压栈
ORB 电路块并联 MRD 读出压栈触点
OUT 线圈输出 MPP 弹出压栈触点
SET 线圈输出保持 MC 主控
RST 清除线圈输出 MCR 主控结束
PLS 上升沿输出脉冲 NOP 空操作
PLF 下降沿输出脉冲 END 程序结束
LDP 读取上升沿
(2)步进顺控指令(2条)
助记符 名称 助记符 名称
STL 步进梯形图开始 RET 步进梯形图结束
注:步序状态转移只能用SET,当用OUT时视作普通继电器。
(3)功能指令(56条)
助记符 名称 助记符 名称
程序流程 CJ 条件跳转 浮点数运算 ECMP 2进制浮点数比较
CALL 子程序调用 EZCP 2进制浮点数区域比较
SRET 子程序返回 EBCD 2进制浮点数转10进制浮点数
FEND 主程序结束 EBIN 10进制浮点数转2进制浮点数
FOR 循环范围开始 EADD 2进制浮点数加法
NEXT 循环范围结束 ESUB 2进制浮点数减法
传送与比较 CMP 比较 EMUL 2进制浮点数乘法
ZCP 区域比较 EDIV 2进制浮点数除法
MOV 传送 ESQR 2进制浮点数开方
CML 取反传送 INT 2进制浮点数转BIN整数
BCD BCD转换 FLT BIN整数转2进制浮点数
BIN BIN转换 接点运算 LD= 读取“等于比较节点”
四则逻辑运算 ADD BIN加法 LD> 读取“大于比较节点”
SUB BIN减法 LD< 读取“小于比较节点”
MUL BIN乘法 LD<> 读取“不等于比较节点”
DIV BIN除法 LD≦ 读取“小于等于比较节点”
INC BIN加1 LD≧ 读取“大于等于比较节点”
DEC BIN减1 AND= 串联“等于比较节点”
WAND 逻辑字与 AND> 串联“大于比较节点”
WOR 逻辑字或 AND< 串联“小于比较节点”
WXOR 逻辑字异或 AND<> 串联“不等于比较节点”
NEG 求补码 AND≦ 串联“小于等于比较节点”
SQR BIN开方 AND≧ 串联“大于等于比较节点”
循环与移位 ROR 循环右移 OR= 并联“等于比较节点”
ROL 循环左移 OR> 并联“大于比较节点”
RCR 带进位循环右移 OR< 并联“小于比较节点”
RCL 带进位循环左移 OR<> 并联“不等于比较节点”
OR≦ 并联“小于等于比较节点”
OR≧ 并联“大于等于比较节点”
(4)专家指令(1条)
助记符 名称
PID 专家算法
2.5 EASYV1.00通信
EASYV1.00内核包括串口0、串口1、CANbus三个通信接口,每个接口均定制了相应的通信协议,适用于不同的应用场合。
(1)串口0
l 用户嵌入程序下载
在编程状态下,通过串口0下载用户嵌入程序.
嵌入程序下载软件为科威公司软件Downhex.
l 梯形图下载
在设置状态下,通过串口0下载梯形图程序.
下载工具软件为科威公司软件EasyWin或三菱公司软件FXGP_WIN-C.
l 梯形图程序监控
在运行状态下,通过串口0连接人机界面(如HITECH,EVIEW,DELTA,三菱等)和计算机,对梯形图程序和控制参数进行监控.
(2)串口1
l 下载CAN网络配置内容
在设置(SET)状态下,下载CAN网络配置内容.
编辑下载CAN网络配置软件为科威公司软件CANSET.
l RS485网络连接端口
在运行(RUN)状态下,作为RS485主从式网络的数据交换接口.
该接口网络通信协议由内核自动加载,遵循该协议的子节点可自动连入该网络.如运动控制器的扩展键盘连接.
(3)CANbus通信
EASYV1.00内核含CANbus现场总线通信协议,在CAN2.0B基础上,加载了专用的主从式结构的高层协议,借助梯形图语言,对CANbus占用的PLC资源进行管理(CANbus文件寄存器)即可实现CANbus互连。
2.6 函数调用
EASYV1.00系统提供嵌入驱动程序函数调用,为嵌入程序设计系统提供了EASYCORE.LIB函数库,用户在嵌入时,只要包含该文件(include EASYCORE.LIB)即可调用系统提供的各类应用函数,如整数、浮点数运算,数据变换等函数。
2.7 用户中断系统
EASYV1.00运行在C8051F040CPU上时,给用户提供了13种中断,如事件中断、SPI、IIC、A/D、D/A、比较、捕获等。
系统中断入口地址重定向为E000H开始的区域
ADR=ADR0+E000H
ADR0---F040中断入口地址
3 结束语
嵌入式PLC提出了一种以过程控制语言(梯形图语言)核心的新型嵌入系统设计理念。既可以作为PLC产品的开发平台,也可以作为常规单片机系统的设计。以嵌入式PLC方式进行控制器设计提高了开发速度,更适应贴近客户需求的个性化、差异化设计要求。面对工控市场日益细分的完备体系,嵌入式PLC在DCS、IPC、PLC、单片机的交叉市场中具有广阔的应用前景。
参考文献
[1] 邬宽明.CAN总线原理和应用系统设计.北京:北京航空航天大学出版社,1996
[2] 潘琢金,施国君.C8051Fxxx高速SOC单片机原理及应用.北京:北京航空航天大学出版社,2002
[3] C8051F040 Datasheet.SILICON LABORATORIES.2003
[4] 三菱FX系列编程手册.三菱电机
[5] 嵌入式PLC原理与应用.黄石市科威自控有限公司,2004