EDN China > 设计实例 > 嵌入式系统 > 开发工具 > 正文
? 2016博客大赛-不限主题,寻找电子导师,大奖升级??

基于RT-Linux的嵌入式PLC设计及实现

来源:电子设计信息网/作者:褚毅成 叶佩青 孙敏 杨开明?? 2007年10月19日 ?? 收藏0

  图3是基于RT - Linux系统的嵌入式PLC实时任务关系图, 其中适配卡输入输出主要是完成数控系统的输入输出, 即各轴位置控制命令的输出、I/O的输出、I/O输入以及位置反馈输入, 它实际上是数控系统控制卡的设备驱动模块, 其优先级在数控系统的各实时任务中为最高级。根据其硬件特征以及运动控制要求, 其响应周期为100μs, 响应时钟周期由PC机I/O接口卡上的硬件定时器产生。根据RT - Linux系统对硬件中断的响应机制, 输入输出控制任务的实时性是可以保证的, 这一点在我们的数控系统已经得到验证。

基于RT - Linux系统的嵌入式PLC实时任务关系图

  图3中PLC控制主要是完成数控系统的PLC控制功能, 其任务优先级低于适配卡输入输出, 同时也低于数控系统的精插补实时任务和位置伺服实时任务。根据通用数控系统的PLC控制要求, 确定其响应周期为5ms, 响应周期由RT - Linux的软件定时器产生, 根据RT - Linux系统的实时多任务调度机制,PLC控制任务的实时性是可以保证的。在实际应用中也得到验证。

  嵌入式PLC的实时任务模块数据通讯

  完成数控系统PLC控制的两个实时任务之间由于需要输入输出的数据量(一般情况下为64 输入,64输出, 但输入输出根据需要还可以扩展) 不太大,因而采用共享内存的通讯方式, 在适配卡输入输出和PLC控制

两个实时任务之间开两块共享内存, 一块用于适配卡向PLC控制传输I/O 口状态信息, 另一块用于PLC控制向适配卡输入输出任务传输经PLC逻辑处理后的控制信息。

  在这里, 两个实时任务间不采用RT - FIFO进行通讯的原因在于这两个实时任务间通讯的数据量不是很大, 而这两个实时任务运行周期差别较大, 采用RT - FIFO传输数据, 为了避免FIFO的阻塞, 相应地要增加两个任务间的协调机制, 这样的通讯效果未必比采用共享内存好, 而且共享内存的读写速度比FIFO相对较快。

  嵌入式PLC的实时任务的实现

  适配卡输入输出为动态可加载模块, 适配卡输入输出模块(任务) 以100μs为周期的硬件定时中断,完成各轴位置控制指令和I/O的输出、各轴位置反馈值和I/O的输入, 适配卡输出值来自于位置伺服任务和PLC控制任务, 输入值来自于适配卡的输入接口。PLC控制模块(任务) 同样也是一个动态可加载模块, 它以5ms的软定时, 周期性地从它与总控模块通讯的RT - FIFO读取控制信息(如M指令, S指令及T指令) , 同时从它与适配卡输入输出模块通讯的共享内存中读取I/O信息, 然后进行逻辑处理, 最后将结果写入共享内存供适配卡输入输出模块读取并输出。

  结论

  目前该嵌入式PLC模块已成功应用于清华大学精仪系制造工程研究所THHP - III数控系统(基于RedHatLinux8.0 + RTL inux3.1) 中, 该模块可以满足对普通数控系统和加工中心PLC控制要求。


上一页12下一页
?? ?? ??


打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮

1.扫描左侧二维码
2.点击右上角的分享按钮
3.选择分享给朋友
?? ??

RT-Linux? 嵌入式? PLC?

相关文章

我来评论
美国的游客
美国的游客 ??? (您将以游客身份发表,请登录 | 注册)
?
有问题请反馈