理论教育 优化 Soft-PLC 数据结构

优化 Soft-PLC 数据结构

时间:2023-06-17 理论教育 版权反馈
【摘要】:Soft-PLC为基于循环扫描的程序执行任务、基于定时周期的程序执行任务各创建一个逻辑堆栈。这类数据信息作为系统的全局变量或直接变量,可以供Soft-PLC系统中任何任务、程序或功能块访问,由系统数据存储功能模块统一管理。

优化 Soft-PLC 数据结构

(1)程序指令集PLC程序是实现某种控制的许多指令的集合。PLC系统依次读取内存中的指令并执行相应的操作,每个指令在PLC中都有其对应的执行函数。Soft-PLC系统用户程序存储功能提供了两种指令集的存储方法,一种采用链表结构存储指令,适合小容量存储,另一种是开辟一片能够容纳PLC程序的内存空间,然后从开发系统或PLC程序文件中读取指令并依次存放,不同用户级任务PLC程序段采取分块存储的措施,各任务可配置子程序内容。所有这些指令在内存中都表示成如下的数据结构形式:

结构体中FuncIndex是一个整型值,PLC执行程序是依据这个在PLC中唯一标识的索弓号调用对应的执行函数,然后将宇符型指令参数作为被调函数的实参传递给被调函数。例如:指令“INBITLI0.7”在内存中的结构数据FuncIndex等于1,宇符串Param[0]内容是“LI0.7”。

Soft-PLC系统用户程序存储功能提供了两种指令集的存储方法:开辟一片能够容纳PLC程序的内存空间,然后从开发系统或PLC程序文件中读取指令并依次存放,具体的做法是VAddress=RtAiiocateLockedMemory(size),这种方式适合存储量大的程序,而巨执行程序任务线程可以利用定格式指针的加减运算迅速查找指令;另一种方法是采用链表结构存储指令,上面定义的指令结构体和一个节点指针作为链表结构的节点内容,相比较前者它比较适合小容量存储,指令的查找需要通过链表的游历算法来实现,消耗时间比较多,但是链表结构存储指令便于在线修改。

(2)逻辑堆栈 逻辑堆栈是内存中开辟的链表形式的栈数据结构,栈中数据类型是布尔型的。它用来保存指令、功能块逻辑运算后的结果,同时指令、功能块也从逻辑堆栈中获取中间结果参与运算。Soft-PLC为基于循环扫描的程序执行任务、基于定时周期的程序执行任务各创建一个逻辑堆栈。这样不同的用户级任务各自管理自己的逻辑数据,避免因相互间中断而保护逻辑堆栈内容。但是在任何程序执行任务内部会定义另外几个逻辑堆栈,用于调度子程序前保护主程序逻辑结果。逻辑堆栈对象是实现系统内部程序、功能及功能块之间通信局部变量。各用户级任务间的切换、中断及数据的保存由操作系统自己完成。(www.daowen.com)

PLC系统提供的指令系统中也包含对逻辑堆栈执行操作的指令。例如:执行Y=X0∣(X1&X2)逻辑关系,对应指令顺序就是INBIT X0;INBIT X1;ANDBIT X2;ORFIR2。第1步读X0状态并存入逻辑堆栈;第2步读X1状态并压入堆栈;第3步读X2状态并与逻辑堆栈栈顶元素“与”操作;第4步是将栈顶两个元素“或”操作。最后一步就是完全对逻辑堆栈的指令操作。依据逻辑堆栈的这些特点设计一个对象模型类如下,逻辑堆栈类中提供对逻辑堆栈操作的方法。

(3)I/O寄存器 I/O寄存器也称为内存I/O数据区,用于存储外部开关量状态、模拟量数值,以及内部继电器定时器、计数器I/O状态。这类数据信息作为系统的全局变量或直接变量,可以供Soft-PLC系统中任何任务、程序或功能块访问,由系统数据存储功能模块统一管理。用户级任务、I/O读写及通信任务均由I/O数据读写封装类提供的接口实现。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈