FC 与 FB 与 OB 的区别,时间标记冲突与一致性检查 有详细的步骤

关键字1 组织块的程序是由用户自己编写。

关键字2 时间标记冲突与一致性检查 有详细的步骤。

关键字3 FC 与 FB 与 OB 的区别?

?

(一)功能 功能块 区别 ?

FB 和FC均为 用户编写的程序。在他们的变量声明表中均有 IN OUT IN_OUT

和temp 变量 。

FC的返回值 Ret_Val 实际上属于输出参数。

?

下面是FC与FB的区别:

  1. 功能块有背景数据块,功能被哟背景数据块。只能在功能内访问功能的局部变量。

    其它逻辑块可以访问背景数据块中的变量。

(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

时间: 2024-07-30 11:02:44

FC 与 FB 与 OB 的区别,时间标记冲突与一致性检查 有详细的步骤的相关文章

关于时间标记的思考

在业务逻辑中经常会涉及到需要记录某个事件发生的时间,这个时间通常是取当前的时间,那么这个时候有两个选择,是在应用层还是在数据库层来设置这个时间呢? 如果在应用层设置的话,每次都需要进行一次设置,可能会觉得麻烦就将这个设置时间放在了数据库层在插入的时候使用now()来进行设置,但是这样是可能会留下隐患的. 对于在数据库层进行设置的话,假设这么一个场景: 我们需要这个事件发生的时间,比如我们需要使用这个发生时间进行排序,需要精确到毫秒的那种,当然这个时候datetime已经没办法满足我们的需求了,最

Linux下文件的三种时间标记:访问时间、修改时间、状态改动时间 (转载)

在windows下,一个文件有:创建时间.修改时间.访问时间. 而在Linux下,一个文件也有三种时间,分别是:访问时间.修改时间.状态改动时间. 两者有此不同,在Linux下没有创建时间的概念,也就是不能知道文件的建立时间,但如果文件建立后就没有修改过,修改时间=建立时间;如果文件建立后, 状态就没有改动过,那么状态改动时间=建立时间;如果文件建立后,没有被读取过,那么访问时间=建立时间,因为不好判断文件是否被改过.读过.其状态是否 变过,所以判断文件的建立时间基本上能为不可能. 如何查一个文

B-树、B+树、B*树的区别

如图所示,区别有以下两点: 1. B+树中只有叶子节点会带有指向记录的指针(ROWID),而B树则所有节点都带有,在内部节点出现的索引项不会再出现在叶子节点中. 2. B+树中所有叶子节点都是通过指针连接在一起,而B树不会. B+树的优点: 1. 非叶子节点不会带上ROWID,这样,一个块中可以容纳更多的索引项,一是可以降低树的高度.二是一个内部节点可以定位更多的叶子节点. 2. 叶子节点之间通过指针来连接,范围扫描将十分简单,而对于B树来说,则需要在叶子节点和内部节点不停的往返移动. B树的优

[OS] 内核态和用户态的区别

http://blog.csdn.net/fatsandwich/article/details/2131707# http://jakielong.iteye.com/blog/771663 当一个任务(进程)执行系统调用而陷入内核代码中执行时,我们就称进程处于内核运行态(或简称为内核态).此时处理器处于特权级最高的(0级)内核代码中执行.当进程处于内核态时,执行的内核代码会使用当前进程的内核栈.每个进程都有自己的内核栈.当进程在执行用户自己的代码时,则称其处于用户运行态(用户态).即此时处理

[原]openstack-networking-neutron(三)---用户态和内核态的区别

究竟什么是用户态,什么是内核态,这两个基本概念以前一直理解得不是很清楚,根本原因个人觉得是在于因为大部分时候我们在写程序时关注的重点和着眼的角度放在了实现的功能和代码的逻辑性上,先看一个例子: 1)例子 C代码 1.     void testfork(){   2.     if(0 = = fork()){   3.     printf(“create new process success!\n”);   4.     }   5.     printf(“testfork ok\n”)

[Intellij IDEA : 开发工具] 菜单项中Compile、Make和Build的区别

Compile.Make和Build的区别 针对Java的开发工具,一般都有Compile.Make和Build三个菜单项,完成的功能的都差不多,但是又有区别. 编译,是将源代码转换为可执行代码的过程.编译需要指定源文件和编译输出的文件路径(输出目录).Java的编译会将java编译为class 文件,将非java的文件(一般成为资源文件.比如图片.xml.txt.poperties等文件)原封不动的复制到编译输出目录,并保持源文件夹的目 录层次关系. 在Java的集成开发环境中,比如Eclip

【转】Compile、Make和Build的区别

原文网址:http://lavasoft.blog.51cto.com/62575/436216 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://lavasoft.blog.51cto.com/62575/436216 Compile.Make和Build的区别 针对Java的开发工具,一般都有Compile.Make和Build三个菜单项,完成的功能的都差不多,但是又有区别. 编译,是将源代码转换为可执行代码的过程.编译需要

内核态和用户态的区别(转)

http://blog.csdn.net/fatsandwich/article/details/2131707# http://jakielong.iteye.com/blog/771663 当一个任务(进程)执行系统调用而陷入内核代码中执行时,我们就称进程处于内核运行态(或简称为内核态).此时处理器处于特权级最高的(0级)内核代码中执行.当进程处于内核态时,执行的内核代码会使用当前进程的内核栈.每个进程都有自己的内核栈.当进程在执行用户自己的代码时,则称其处于用户运行态(用户态).即此时处理

Microsoft.Jet.OLEDB.4.0和Microsoft.ACE.OLEDB.12.0的区别

Microsoft.Jet.OLEDB.4.0和Microsoft.ACE.OLEDB.12.0的区别 时间 2012-12-19 20:30:12  CSDN博客原文  http://blog.csdn.net/xifeijian/article/details/8333396 在通过ADO对Excel对象进行连接时(此时Excel则认为是一个数据源),需要配置对Excel数据源对应的连接串,这个连接串中包括了 Provider 信息(其实类似对数据库进行连接操作时,都需要指定连接字符串),以