基于RT-Linux的嵌入式PLC设计及实现
发布时间:2008/5/27 0:00:00 访问次数:419
在数控机床中, 通常用可编程控制器( plc) 对机床开关量信号进行控制。plc可靠性高, 使用方便。但在大多数数控机床, 特别是经济型数控机床中, 要求的输入输出点数并不多, 通常在60点以下,因此, 为了降低数控机床成本, 在基于工业pc机的数控系统中, 可以采用开关量i/o板加外接继电器,配合主机的软件对机床开关进行控制。但如果pc机采用单任务操作系统(如dos) , 数控系统的所有任务运行都置于一个总体的消息循环中, 软件的模块化和可维护性较差, 系统故障的风险相对集中, 而且不能充分利用pc机系统资源。而采用非实时多任务操作系统(如windows) 时, win32 api的设计没有考虑到实时环境的开发用途, 其系统调用的效率不高,不能满足数控系统plc控制的实时性要求。
为此, 本文提出一种基于rt - linux操作系统的嵌入式plc, 利用rt - linux的开放性、模块化和可扩展性的系统结构特性和多线程/多任务的系统环境,在保证实时性的同时, 使故障风险相对分散。
数控系统嵌入式plc的硬件结构
数控系统硬件建立在通用工业pc的开放体系之上, 数控系统嵌入式plc硬件包括: 工控机及其外围设备, 基于isa总线的开关量输入输出接口卡, 光电隔离模块, 继电器输出模块。其结构如图1所示。
工控机采用redhatlinux810 + rtlinux311操作系统, 数控系统的人机界面、数控代码处理、轨迹规划、参数管理以及plc控制都通过工控机由软件来实现, 不需要独立的plc控制器, 减少了数控系统对硬件的依赖, 有利于提高系统的开放性。
i/o输入输出信息通过pc机i/o接口卡实现主机与伺服接口模块和i/o接口模块之间的信息交换,pc机i/o接口卡基于isa或者pci总线。
rt - linux的体系结构
rt - linux是基于linux系统并可运行于多种硬件平台的32位硬实时操作系统( hard real - time operating system) 。
rt - linux是基于linux并可运行于多种硬件平台的多任务实时操作系统。通过修改linux内核的硬件层, 采用中断仿真技术, 在内核和硬件之间实现了一个小而高效的实时内核, 并在实时内核的基础上形成了小型的实时系统, 而linux内核仅作为实时系统最低优先级的任务运行。对于普通x86的硬件结构,rt - linux拥有出色的实时性和稳定性, 其最大中断延迟时间不超过15μs, 最大任务切换误差不超过35μs。这些实时参数与系统负载无关, 而取决于计算机的硬件, 如在pii350, 64m内存的普通pc机上,系统最大延迟时间不超过1μs。rt - linux按实时性不同分为实时域和非实时域, 其结构如图2所示。
实时域在设计上遵循实时操作系统的设计原则,即系统具有透明性、模块化和可扩展性。rt - linux的实时内核由一个核心部分和多个可选部分组成, 核心部分只负责高速中断处理, 支持smp操作且不会被底层同步或中断例程延迟或重入。其它功能则由可动态加载的模块扩充。rt - linux把不影响系统实时性的操作(即非实时域的操作) 都留给了非实时的linux系统完成。基于多任务环境的linux为软件开发提供了丰富的系统资源, 如多种进程间通讯机制,灵活的内存管理机制。
嵌入式plc的设计及实现
嵌入式plc的模块组成
数控系统的plc控制模块实时性要求较高, 因而必须在系统的实时域内运行。根据通用数控系统的plc控制以及数控系统软件模块化设计的要求, 将数控系统的plc控制模块作为rt - linux系统的实时任务之一, 其优先级和调用周期取决于数控系统各任务的实时性要求以及控制要求的响应时间。plc控制模块主要完成数控系统的逻辑控制, 而被控制的输入输出也就是i/o的输入输出由pc机i/o接口卡输入输出模块来完成, 即完成数控系统的plc控制需要两个rt - linux实时任务, 如图3所示, 这两个任务分别为rt - task1 (以下称“适配卡输入输出”) 、rt - task2 (以下称“plc控制”) 。
图3是基于rt - linux系统的嵌入式plc实时任务关系图, 其中适配卡输入输出主要是完成数控系统的输入输出, 即各轴位置控制命令的输出、i/o的输出、i/o输入以及位置反馈输入, 它实际上是数控系统控制卡的设备
在数控机床中, 通常用可编程控制器( plc) 对机床开关量信号进行控制。plc可靠性高, 使用方便。但在大多数数控机床, 特别是经济型数控机床中, 要求的输入输出点数并不多, 通常在60点以下,因此, 为了降低数控机床成本, 在基于工业pc机的数控系统中, 可以采用开关量i/o板加外接继电器,配合主机的软件对机床开关进行控制。但如果pc机采用单任务操作系统(如dos) , 数控系统的所有任务运行都置于一个总体的消息循环中, 软件的模块化和可维护性较差, 系统故障的风险相对集中, 而且不能充分利用pc机系统资源。而采用非实时多任务操作系统(如windows) 时, win32 api的设计没有考虑到实时环境的开发用途, 其系统调用的效率不高,不能满足数控系统plc控制的实时性要求。
为此, 本文提出一种基于rt - linux操作系统的嵌入式plc, 利用rt - linux的开放性、模块化和可扩展性的系统结构特性和多线程/多任务的系统环境,在保证实时性的同时, 使故障风险相对分散。
数控系统嵌入式plc的硬件结构
数控系统硬件建立在通用工业pc的开放体系之上, 数控系统嵌入式plc硬件包括: 工控机及其外围设备, 基于isa总线的开关量输入输出接口卡, 光电隔离模块, 继电器输出模块。其结构如图1所示。
工控机采用redhatlinux810 + rtlinux311操作系统, 数控系统的人机界面、数控代码处理、轨迹规划、参数管理以及plc控制都通过工控机由软件来实现, 不需要独立的plc控制器, 减少了数控系统对硬件的依赖, 有利于提高系统的开放性。
i/o输入输出信息通过pc机i/o接口卡实现主机与伺服接口模块和i/o接口模块之间的信息交换,pc机i/o接口卡基于isa或者pci总线。
rt - linux的体系结构
rt - linux是基于linux系统并可运行于多种硬件平台的32位硬实时操作系统( hard real - time operating system) 。
rt - linux是基于linux并可运行于多种硬件平台的多任务实时操作系统。通过修改linux内核的硬件层, 采用中断仿真技术, 在内核和硬件之间实现了一个小而高效的实时内核, 并在实时内核的基础上形成了小型的实时系统, 而linux内核仅作为实时系统最低优先级的任务运行。对于普通x86的硬件结构,rt - linux拥有出色的实时性和稳定性, 其最大中断延迟时间不超过15μs, 最大任务切换误差不超过35μs。这些实时参数与系统负载无关, 而取决于计算机的硬件, 如在pii350, 64m内存的普通pc机上,系统最大延迟时间不超过1μs。rt - linux按实时性不同分为实时域和非实时域, 其结构如图2所示。
实时域在设计上遵循实时操作系统的设计原则,即系统具有透明性、模块化和可扩展性。rt - linux的实时内核由一个核心部分和多个可选部分组成, 核心部分只负责高速中断处理, 支持smp操作且不会被底层同步或中断例程延迟或重入。其它功能则由可动态加载的模块扩充。rt - linux把不影响系统实时性的操作(即非实时域的操作) 都留给了非实时的linux系统完成。基于多任务环境的linux为软件开发提供了丰富的系统资源, 如多种进程间通讯机制,灵活的内存管理机制。
嵌入式plc的设计及实现
嵌入式plc的模块组成
数控系统的plc控制模块实时性要求较高, 因而必须在系统的实时域内运行。根据通用数控系统的plc控制以及数控系统软件模块化设计的要求, 将数控系统的plc控制模块作为rt - linux系统的实时任务之一, 其优先级和调用周期取决于数控系统各任务的实时性要求以及控制要求的响应时间。plc控制模块主要完成数控系统的逻辑控制, 而被控制的输入输出也就是i/o的输入输出由pc机i/o接口卡输入输出模块来完成, 即完成数控系统的plc控制需要两个rt - linux实时任务, 如图3所示, 这两个任务分别为rt - task1 (以下称“适配卡输入输出”) 、rt - task2 (以下称“plc控制”) 。
图3是基于rt - linux系统的嵌入式plc实时任务关系图, 其中适配卡输入输出主要是完成数控系统的输入输出, 即各轴位置控制命令的输出、i/o的输出、i/o输入以及位置反馈输入, 它实际上是数控系统控制卡的设备
上一篇:嵌入式数字摄像机配置系统设计