论文部分内容阅读
随着工业自动化的蓬勃发展,可编程逻辑控制器(PLC)的功能越来越强大,对于运行速度的要求也日益增长。为了充分发挥多核处理器并行计算的优势,瑞典梅拉达伦大学建立了将PLC控制程序移植到多核处理器并行运行的研究课题,本文作者有幸参与其中。 本文根据功能块图编程语言可拆分和模块化的特性,以PLC控制程序中功能块的输入输出变量间的依赖关系为基础,提出了一种基于有向无环图(DAG)任务模型对PLC控制程序进行建模的方法。将功能块映射为任务节点,根据功能块输入输出变量和逻辑线的关系对任务节点建立有向边,从而将功能块网络映射为有向无环图,实现了串行控制程序的并行化。 本文还研究了计算机领域的多核处理器任务调度技术。针对传统的HEFT算法考虑因素单一,本文提出了一种改进的静态列表任务调度算法。该算法优先考虑DAG中关键路径上和通信量比重大的任务节点的分配调度,使它们能够尽可能早地开始执行,从而实现程序的整体执行时间的缩短。通过对改进算法与HEFT和CPOP算法的分析对比,证明了改进算法的优越性。 最后,采用英特尔多核处理器和阀门控制实例,在RT-Linux系统上对本文提出的建模方法和调度算法进行软件设计和验证,证明了方法在实际环境下的有效性。同时,本文针对PLC控制程序实际并行运行于多核处理器时会遇到的功能块间的数据传递问题,通信延时问题,变量资源同步问题,依赖任务执行顺序问题和任务数量超过CPU核数量问题提出了解决方案并用实验验证了其可行性。