关键字1 组织块的程序是由用户自己编写。
关键字2 时间标记冲突与一致性检查 有详细的步骤。
关键字3 FC 与 FB 与 OB 的区别?
?
(一)功能 功能块 区别 ?
FB 和FC均为 用户编写的程序。在他们的变量声明表中均有 IN OUT IN_OUT
和temp 变量 。
FC的返回值 Ret_Val 实际上属于输出参数。
?
下面是FC与FB的区别:
- 功能块有背景数据块,功能被哟背景数据块。只能在功能内访问功能的局部变量。
其它逻辑块可以访问背景数据块中的变量。
(2)功能没有静态变量。(STAT),功能块FB 有静态变量。
(3)功能FC如果执行完以后需要保存数据 只能用全局数据区(例如 共享数据块和M区。)
(4)如果功能,功能块内不使用全局变量。只是用局部变量 则移植容易。
(5)如果功能块使用了全局变量,在移值得时候 需要重新统一 分配 所有块内使用的全局变量的地址。。以保证不会发生地址冲突。
(6)功能块的局部变量有初始值。功能FC的局部变量没有初始值。
调用功能的时候需要给所有的输入,输出参数制定实参。
?
(二)组织块OB 与FB 与FC 区别?
事件或者故障出现的时候,由操作系统调用对应的组织块,其它逻辑块是由用户程序调用的。
组织块没有输入参数,输出参数,和静态变量,只有临时局部变量。
组织块自动生成的20B临时局部变量包括触发组织块的事件有关的信息。见下表1
他们由操作系统提供。
组织块中的程序是用户编写的。
用户可以自己定义和使用组织块前20B之后的临时局部数据。
?
?
表1 OB的临时局部变量
地址(字节) |
内容 |
0 |
事件级别与标识符 例如OB40的字节0为B#16#11(表示字节数据 16进制 值是0X11) 表示事件 |
1 |
用代码表示与启动OB的事件的有关信息 |
2 |
优先级 例如OB40 的优先级是16 |
3 |
OB的块号 例如OB40的块号 是 40 |
4~11 |
事件的附件信息 例如 OB40 的LB5是产生中断的模块的类型。 LW6为产生中断的模块的起始地址。 LD8 为产生中断的通道号。 |
12~19 |
OB被启动的日期和时间(年的低两位。月,日,时,分,秒,毫秒 星期) |
?
上表中,表示每一组织块 都有一个临时局部变量区域 。上表举例是OB40的。
?
时间标记冲突与一致性检查(重要 有详细步骤)
?
假设我在 实训 24 的变量声明表中 新增加了输入变量 ADD
如下图
然后 点击保存 FB1
提示一下错误 : 块接口地址冲突 警告信息
?
双击 打开 OB1 提示 至少有一个块调用 有时间标记 冲突 如下图
单击 确定按钮 打开以后 , 看到FB1的 方框 形参 ,实参 全部为红色 如下图
?
关闭OB1 打开simatic 7 的管理器 选中 左边窗口 的 "块"
执行菜单"编辑"----"检查块的一致性"
?
如下图
?
?
从上图可以 看到 OB1 和DB1 左边的红色故障指示灯点亮
?
点击工具栏 最左边的 的编译按钮,出现 要求关闭程序编辑器的"编译"对话框
?
点击 上图 的编译 开始 编译。
?
编译结束以后, 时间标志冲突被清除。 编译块的过程中 如下图
编译结束以后 ,DB1和 OB1 左侧的红色指示灯熄灭
?
?
重新打开OB1 红色方框以及 形参 实参 的红色消失、 同时 方框的左边出现了新增加的
输入参数 "ADD"
?
如果 用上述方法 还不能自动清除 有时间标志冲突, 只能删除有冲突的块。然后重新调用修改参数以后的块。
?
该文章没有录制视频。
原文地址:https://www.cnblogs.com/bailongwei654321/p/12267979.html