「呆萌小跟班」PLC程序结构

下面介绍几种常见的PLC的程序结构及其特点:
1.某些国外的小型PLC的程序结构这些PLC的用户程序由主程序、子程序和中断程序组成 。 在每一个扫描循环周期 , CPU都要调用一次主程序 。 主程序可以调用子程序 , 小型控制系统可以只有主程序 。 中断程序用于快速响应
「呆萌小跟班」PLC程序结构
文章图片
下面介绍几种常见的PLC的程序结构及其特点:
【「呆萌小跟班」PLC程序结构】1.某些国外的小型PLC的程序结构
这些PLC的用户程序由主程序、子程序和中断程序组成 。 在每一个扫描循环周期 , CPU都要调用一次主程序 。 主程序可以调用子程序 , 小型控制系统可以只有主程序 。 中断程序用于快速响应中断事件 。 在中断事件
发生时 , CPU将停止执行当时正在处理的程序或任务 , 去执行用户编写的中断程序 。 执行完中断程序后 , 继续执行被暂停执行的程序或任务 。 它们的子程序和中断程序没有局部变量 , 子程序没有输入、输出参数 。
「呆萌小跟班」PLC程序结构
文章图片
2.西门子的S7-200的程序结构
过程映像输入/输出(I/Q)、变量存储器V、内部存储器位M、定时器T、计数器C等属于全局变量 。 S7-200的程序组织单元(ProgramOrganizationalUnit , 简称为POU)包括主程序、子程序和中断程序 。 每个POU均有
自己的64字节局部变量 , 局部变量只能在它所在的POU中使用 。 与此相反 , 全局变量可以在各POU中使用 。
下面是子程序可以使用的局部变量:
1)TEMP(临时变量)是暂时保存在局部数据区中的变量 。 只有在执行该POU时 , 定义的临时变量才被使用 , POU执行完后 , 不再保存临时变量的数值 。
2)IN是由调用它的POU提供的输入参数 。
3)OUT是返回给调用它的POU的输出参数(子程序的执行结果) 。
4)IN_OUT是输入_输出参数 , 其初始值由调用它的POU传送给子程序 , 并用同一变量将子程序的执行结果返回给调用它的POU 。
主程序和中断程序的局部变量中只有临时变量TEMP 。
具有输入、输出参数和局部变量的子程序易于实现结构化编程 , 对于长期生产同类设备或生产线的厂家尤为有用 。 这些厂家的编程人员为设备的各组件或工艺功能编写了大量的通用的子程序 。 即使不知道子程序
的内部代码 , 只要知道子程序的功能和输入、输出参数的意义 , 就可以通过程序之间的调用快速“组装”出满足不同用户要求的控制程序 。 就好像用数字集成电路芯片组成复杂的数字电路一样 。
子程序如果没有输入、输出参数 , 它和调用它的程序之间没有清晰的接口 , 很难实现结构化编程 。
子程序如果没有局部变量 , 它和调用它的程序之间只能通过全局变量来交换数据 , 子程序内部也只能使用全局变量 。 将子程序和中断程序移植到别的项目时 , 需要重新统一安排它们使用的全局变量 , 以保证不会出现地址冲突 。 当程序很复杂 , 子程序和中断程序很多时 , 这种重新分配地址的工作量非常大 。
如果子程序和中断程序有局部变量 , 并且它们内部只使用局部变量 , 不使用全局变量 , 因为与其他POU没有地址冲突 , 不需作任何改动 , 就可以将子程序移植到别的项目中去 。
3.西门子的S7-300/400的程序结构
S7-300/400将子程序分为功能(Function , 或称为函数)和功能块(FunctionBlock) 。
S7-300/400的功能与S7-200的子程序基本上相同 。 它们均有输入、输出参数和临时变量 , 功能的局部数据中的返回值实际上属于输出参数 。 它们没有专用的存储区 , 功能执行结束后 , 不再保存临时变量中的数据可以用全局变量来保存那些在功能执行结束后需要保存的数据 , 但是会影响到功能的可移植性 。 功能块是用户编写的有自己专用的存储区(即背景数据块)的程序块 , 功能块的输入、输出参数和静态变量存放在指定的背景数据