1 程序块
四种:
• 组织块(OB)
• 函数(FC)
• 函数块(FB)
• 数据块(DB)
1.1 组织块(OB)
OB是操作系统和用户程序之间的接口。它们由操作系统调用并控制,例如以下程序:
• 控制器的启动行为
• 循环程序处理
• 中断控制程序处理
• 错误处理
属性:
• OB由控制器的操作系统调用。
• 可以在一个程序中创建几个主OB。OB按OB号顺序被处理。
注:避免不同主OB之间的通信。由此可以相互独立地使用它们。如果在各个主OB之间交换数据,使用全局DB
1.2 函数(FC)
FC是没有循环数据存储的块。
使用建议:多次调用且频繁重复出现的应用程序。
SCL调用格式:<Operand> := <FC name> (Parameter list);
1.3 函数块(FB)
FB是具有循环数据存储的块,其中的值是永久存储的。循环数据存储在背景数据块中实现。
建议:
1、使用函数块来创建子程序和构造用户程序。
2、如果函数块在用户程序中多次应用,使用单独的实例,最好是多重实例。
1.4 数据块(DB)
全局数据块:变量数据位于整个用户程序可用的数据块中。当数据在不同的程序部分或块使用时,使用全局数据块。
1.5 实例
函数块的调用被称为实例。实例正在使用的数据保存在背景数据块中。
背景数据块由一个包括输入、输出、InOut和静态接口的永久内存组成。临时变量存储在易失性存储器(L栈)中。L栈始终只对当前进程有效。也就是说,临时变量必须在每个周期中初始化。
属性:
• 背景数据块总是被分配给FB。
• 背景数据块不需要在TIA博途中手动创建,而是可以在调用FB时自动创建。
• 背景数据块的结构在相对应的FB中指定,并且只能在那里更改。
1.6 多重实例
使用多重实例调用函数块可以将它们的数据存储在被调用函数块的背景数据块中。这意味着,如果在一个函数块中调用另一个函数块,它将其数据保存在更高级别FB的背景数据块中。因此,即使在传输调用块时,也要维护被调用块的功能性。
优势:
• 可重用性。
• 更清晰的程序与更少的背景数据块。
• 对于编程中的结构化是个好选择。
1.7 下载但不重新初始化
为了改变已经在控制器中运行的用户程序,S7-1500控制器提供了在运行过程中扩展优化函数块或数据块接口的选项。允许在不将控制器设置为STOP的情况下加载更改的块,也不会影响已经加载的变量的实际值。
在控制器处于RUN模式时,执行以下步骤。
1. 启用“下载但不重新初始化”。
2. 在现有块中插入新定义的变量。
3. 加载块到控制器中。
注:
1、下载但不重新初始化只适用于优化的块。
2、内存储备取决于控制器的工作内存。然而,最大为2 MB。
3、默认下,内存预留为100 byte。
1.8 块的可重用性
建议:
• 总是将块视为封装的功能。
• 使用多个循环主OB块对工厂部件进行分组。
• 总是通过它的接口而不是实例来执行数据交换。
• 不使用项目特定数据,避免以下块内容:
– 访问全局数据块和使用单一背景数据块
– 访问变量
– 访问全局常量
• 可重复使用的块与库的专有知识保护块有相同的需求。这就是为什么必须基于“多重实例能力”块属性检查块的可重用性。在检查之前编译代码块。
2 块的接口类型
FB和FC有三种不同的接口类型: In、InOut和Out。InOut参数用于将数据传输到被调用块以及返回结果。
2.1 数据的参数传输
有两种不同的选项:按值调用、按引用调用。
(1)按值调用
调用块时,实际参数的值被复制到块的形参上。为此,在被调用块中提供额外的内存。
(2)按引用调用
当调用该块时,一个引用被传递到实际参数的地址。为此,不需要额外的内存。
通常使用InOut接口类型的结构化变量(如ARRAY, STRUCT, STRING, type…),以避免不必要地扩大所需的数据内存。
2.2 参数传递概述
参数传递概述 | |||
块类型 / 形式参数 | 基本数据类型 | 结构数据类型 | |
FC | Input | 复制 | 引用 |
Output | 复制 | 引用 | |
InOut | 复制 | 引用 | |
FB | Input | 复制 | 复制 |
Output | 复制 | 复制 | |
InOut | 复制 | 引用 |
3 存储
3.1 全局存储
当存储可以从用户程序的任何位置访问时,就称为全局存储。有硬件相关的存储(例如:位存储、时间、计数器等)和全局数据块。
建议:
>不要使用任何位存储区,而是使用全局数据块。
>避免硬件依赖的内存,例如,时钟存储器或计数器。在多重实例中使用IEC计数器和计时器
3.2 本地存储
• 静态变量
• 临时变量
3.3 存储区域访问速度
由高到低的S7-1500访问速度:
1. 优化块:临时变量,FC和FB参数,非保持型静态变量,变量[PLC数据类型]。
2. 对编译的访问权限已知的优化块:
– 保持型FB变量。
– 优化的全局数据块。
3. 对非优化块的访问。
4. 在运行时计算数组索引的间接寻址(例如Motor [i])。
5. 需要在运行时进行检查的访问。
– 访问运行时创建或间接打开的数据块(例如OPN DB[i])。
– 寄存器访问或间接内存访问。
6. 在优化块和非优化块之间复制结构(字节数组除外)。
下一篇博客请看:西门子S7-1200/1500通用编程指南——2-CSDN博客