在这里,2个实时任务间不采用RT-FIFO进行通讯的原因在于:1)这2个实时任务间通讯的数据量不是很大,而且这2个实时任务运行周期差别较大,如果采用RT-FIFO传输数据,为了避免FIFO的阻塞相应地要增加2个任务间的协调机制,通讯效果未必比采用共享内存好。2)相对而言,共享内存的读写速度比FIFO要较快。
3.3 嵌入式PLC的实时任务的实现
适配卡输人/输出为动态可加载模块,适配卡输入/输出模块(任务)以100 }.s为周期的硬件定时中断,完成各轴位置控制指令和I /O的输出、各轴位置反馈值和I/O的输人,适配卡输出值来自于位置伺服任务和PLC控制任务,输入值来自于适配卡的输入接口。
PLC控制模块(任务)同样也是一个动态可加载模块,它以10 ms的软定时,周期性地从它与总控模块通讯的RT-FIFO读取控制信息(如M指令,S指令及T指令),同时从它与适配卡输入/输出模块通讯的共享内存中读取I/O信息,然后进行逻辑处理,最后将结果写人共享内存供适配卡输人/输出模块读取并输出。
PLC控制模块的软件结构如下:
4 结语
前该嵌人式PLC模块已成功应用于清华大学精仪系制造工程研究所THHP- II数控系统(基于RedHatLinux8.0十RTLinux3. 1)中,嵌人式PLC模块可以满足对普通数控系统和加工中心的PLC控制要求。