施耐德 M241系列PLC基础教程-程序组织单元(POU)的定义与应用
基于SoMachine V4平台的M241系列可编程控制器,适用于具有运动控制功能的高性能机器控制,拥有高速双核CPU处理器,性能领跑市场;本体内置高速计数,脉冲输出;通讯能力强大,支持以太网,CANOpen,串行通讯,并可另行选配TM4通讯扩展模块;采用TM3扩展,其速度为TM2的10倍,支持SD卡,TMC4扩展板等,为OEM客户量身打造。本课程以M241 系列PLC 为基础,围绕施耐德电气基于SoMachine 控制平台的硬件应用环境,从硬件介绍开始进行逐步的横向与纵向拓展,即了解了硬件的相关知识,如硬件搭配、扩展能力、方案选型等,也介绍了相关硬件的配置方法以及安装配线等常识;针对未来系统的应用升级等需求,也详细讲解了如何更新PLC 的操作系统,也就是我们常说的固件更新。
九 | 程序组织单元(POU)的定义与应用M241系列PLC
M241学习注意事项
01
在SoMachine 编程环境下,从SoMachine 软件平台的安装与注册开始逐步进行介绍,中间涉及了软件平台的常用设置选项以及其含义;针对不同项目之间不同控制器的程序转换也做了详尽的介绍与实现方法;以SoMachine 软件平台为基础,详细讲解了控制器的通讯连接、变量表的定义与应用、程序组织单元(POU)的定义与应用、物理地址的定义与应用等这些常规的基础知识,从最初的基础应用开始,慢慢引导进入项目的实际编程工作中去。
02
SoMachine 软件平台的编程方法是基于IEC61131 标准的,使设计人员对机器控制的设计和编程不局限在一种编程方式,也不拘泥于只对逻辑状态进行编程。可以根据工艺要求而采用顺序流程图(SFC)的方式规划结构,采用结构文本(ST)的方式进行复杂工艺运算和调节计算,采用梯形图(LD)的方式处理各种逻辑和工艺过程,采用功能块图(FBD)的方式进行同一功能的反复调用和对通讯功能、轴控功能的搭建。
03
在基础以及高级课程中,针对编程方面,详细介绍了各种编程语言的优势以及使用方法,基本编程指令的应用,功能块的定义与应用,结构体的定义与应用等;在实际应用方面,常用的读取与设置PLC 的时钟、串口的配置与各种应用,如何添加第三方设备以及常见故障处理、编程技巧、库文件及曲线记录功能的应用、网络以及总线通讯、高速计数与高速脉冲输出等也都一一做了详尽的讲解。
04
SoMachine 软件平台目前已升级为 Machine Expert 机器专家软件平台。
PLC的各种变量怎样使用?
我最早接触“静态变量”的概念是在计算机C语言的编程中,清楚的记得它需要用"static"关键字来声明。静态变量(Static Variable)其实也是一种变量(Variable),因此在介绍静态变量(Static Variable)之前,我们先来介绍下在计算机和PLC的编程中“变量(Variable) ”的概念。
1 什么是变量
所谓“变量 ”,是在程序的运行过程中,其值可以根据某些条件而发生变化的量。与“变量”相对的是“常量(Constant) ”,顾名思义,常量的值在整个程序的运行中保持不变。
变量的名字称为“变量名”,变量名通常是一个助记符,用来表示一个物理地址。在这个地址上存放着变量的值。
变量有两个特性:作用域和生命周期。
2 全局变量与局部变量
变量的作用域是指变量的作用范围,也就是在哪些范围内该变量是有效的。根据作用域的不同,变量可以分为全局变量(Global Variable)和局部变量(Local Variable)。
全局变量在整个程序范围内都有效。
在C语言中,全局变量是在函数外部声明的变量。比如下面C语言代码中的“a”和“x”都是全局变量:
注:由于C语言从上而下执行,全局变量x并不能在函数func1中访问。
在西门子S7系列PLC的编程中,那些存放在公共存储区的变量都属于全局变量。公共存储区包括输入缓存区(I)、输出缓存区(Q)、位存储区(M)、全局数据块(Global DB)、定时器(T)、计数器(C)等等。比如,位存储区的M0.0,你可以在主程序(OB)或子程序(FB、FC)中访问它,它是全局的。
局部变量(Local Variable)是只能在某个子程序(FB或FC)中访问的变量。
也就是说,局部变量是私有的,子程序(FB或FC)只能访问其自身内部定义的变量,而不能访问其它子程序内部定义的变量。
从生命周期来看,全局变量的生命周期是整个程序的运行周期。也就是说,只要PLC还运行用户程序,全局变量就一直有效。
而局部变量的生命周期则取决于其存放的位置。
2 临时变量与静态变量
对于S7系列PLC而言,局部变量有两个存放的位置:临时变量存储区 (堆栈)和背景数据块 (Instance DB)。
临时变量存储区(堆栈),也称为局部变量存储区(Local Memory),用来存放FB或FC在运行过程中的临时变量 。
在S7系列PLC中,FB、FC或者OB都被称为“程序组织单元(POU,program organizational unit)”。PLC为每个POU分配一定数量的临时变量存储区,在S7-300/400 PLC中,这个区域的大小为256字节;在S7-200 Smart PLC中,这个区域的大小为64字节。
临时变量存储区中的变量称为“临时变量 ”,它们只在当前POU运行时有效。当POU运行结束后,该变量将被释放(无法保存)。
注:当POU由于中断而被挂起时,其临时变量会被保存,以便下次中断现场恢复后继续执行。
如果想保存程序运行的中间值怎么办呢?答案是使用静态变量(Static Variable)。
在博途(TIA Portal)环境或Step7开发环境中,功能块(FB)接口有“Static(STAT)”一项。所有在“STAT”栏内定义的变量都将会被存放到背景数据块中。在FB运行结束后,“STAT”中定义的变量不会被释放。这种变量称为“静态变量 ”。如下图中的变量“STAT_test1”和“STAT_test2”:
注:FB中的IN、OUT参数也会保存到背景数据块中。背景数据块中的数据只能被拥有它的功能块(FB)访问。
说到这里,你应该明白了吧?静态变量从作用域上分属于局部变量;从生命周期上来看,它与用户程序的生命周期相同。临时变量也属于局部变量,不过其生命周期短,仅在POU运行的过程中有效。
相关问答
施耐德plc编程中怎样将pou的名称改成中文?
第一步:选中POU程序段第二步:右击,选择属性,修改其名称第一步:选中POU程序段第二步:右击,选择属性,修改其名称