>任务配置是将用户程序按执行要求,分成若干个任务组,每个任务组可以设置不同的执行触发条件、执行时间间隔、优先级等。IFA中的任务配置,目前我没有添加任何可执行程序,main程序是空白,这就是为什么我上一篇说理论上可以自动运行,实际上没配置任务,无法运行;这里Ecat任务优先级0,main任务优先级1级,0是最高级,31是最低级。其中0~15级为基于优先级的抢占式调度策略,16~31级为基于时间片的轮训调度策略。中型 PLC 常见 的任务有:EtherCAT 任务、CANopen 任务、HSIO高速中断任务、主循环main任务等,其中,运动控制相关的用户程序主体,是安排在 EtherCAT 任务下执行。其中的 EtherCAT 任务,在中型 PLC 中是一个最为重要的任务,运动控制功能的实时处理,都是在这个任务中完成的,它是一个执行时间间隔短、优先级最高的一个时钟中断型的任务,一旦满足时间条件,它可以无条件地中断其他的任务,开始执行 EtherCAT 任务,直到该任务配置下所有的 POU 执行完毕,才会退出。 每个任务中,都可以指定执行多个用户程序单元(即 POU),这些 POU 会被逐个依次序被执行,该次序就是在任务配置中的顺序,如下图:
图中,三个 POU 的执行顺序依次是 PLC_PRG、POU_ipo、POU2,有全局变量更新操作和判断的情况时,需要注意安排合适的顺序。 图中还有 ETHERCAT.EtherCAT_Task 的“POU”项目,默认就是首先被执行,可以理解为进入 EtherCAT 任务时系统进行的总线通信任务默认处理,包括主站与所有从站的 PDO 发送接收、各伺服轴数据结构的更新处理等。 不同执行周期的处理程序,应放在不同的 POU 中编写。比如按 EtherCAT 周期执行的 POU、外部中断程序POU、按 20ms 时间处理的程序 POU,就必须分成独立的 POU 来编写; 为提高程序的可读性,按不同控制工艺段、不同的操作对象、不同的物理结构部件等,分别用不同的 POU 来处理,每个 POU 分别命名为易于理解的名称;如同 C 语言编程,将一个反复调用的处理程序做成一个独立的 POU,方便本工程调用;甚至还方便其他工程沿用; 多人合作编程时,每个编程人员各自编写调试自己负责的工艺段的 POU,最后合成为一个用户程序项目; POU 最常见的含义是 Program Organization Unit(程序组织单元)POU 的三种类型函数(Function) - 无状态的代码块,接受输入参数并返回一个确定的输出。
- 示例
功能块(Function Block) - 有状态的代码块,可以存储内部变量(如计数器、定时器)。
- 示例
- 特点:每次调用可能产生不同的结果(因内部状态变化),需实例化后使用。
程序(Program) - 顶层执行单元,用于协调多个函数和功能块,通常对应 PLC 的主循环程序。
- 示例
POU 的作用- 模块化设计
- 代码重用
- 标准化:符合 IEC 61131-3 标准,确保不同厂商 PLC 的兼容性。
- 分层结构:程序 → 功能块 → 函数,形成清晰的层级关系。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |