新闻中心

EEPW首页 > EDA/PCB > 设计应用 > 基于DSP/BIOS的PLC执行系统开发

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

作者:时间:2013-05-18来源:网络收藏

2 执行系统的具体实现
2.1 数据结构定义
1)指令代码数据结构的定义。用户程序在系统内部以一定的二进制格式存放,采用如下指令开辟一个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指令的解析,利用的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执行系统运行流程
首先在配置工具下的Scheduling项目中建立一个任务线程,比如为PLC_Deal_Task,并对该任务函数的优先级及其它相关内容进行设置,则可直接在PLC_Deal_Task线程中进行PLC指令解析处理,并实现PLC的循环扫描功能。
总体设计思想如下:设定一级程序的执行周期为m个指令计数执行一次,m与扫描周期有关。在进入二级循环后,首先判断指令计数是否大于m,未到m,则进入执行二级程序。如果条件满足,跳出循环,1周期完成,具体调度流程如图2所示。

本文引用地址:http://www.eepw.com.cn/article/189597.htm

g.JPG




关键词: BIOS DSP PLC 系统开发

评论


相关推荐

技术专区

关闭