资源预览内容
第1页 / 共5页
第2页 / 共5页
第3页 / 共5页
第4页 / 共5页
第5页 / 共5页
亲,该文档总共5页全部预览完了,如果喜欢就下载吧!
资源描述
西门子 S7-300 中 FB 功能块的使用方法: 1.创建功能块 FB1 准备完成如下功能:将“整 型”变量转换成“ 实型” 变量 2. 打开功能块 FB1 3.在功能块 FB1 中添加入口参数、出口参数、 静态变量 入口参数IN0 - 整型 (INT) 出口参数OUT1 - 实型 (REAL) 静态变量 STAT2 - 整型 (INT) 局部变量TEMP3 - 长整型(DINT) 4.创建背景数据块 DB2 5.打开 DB2 背景数据块,可以看到系统默认建立了三个数据 IN0 - 入口参数(整 型) OUT1 - 出口参数(实型) STAT2- 静态变量(整型) 6.打开 FB1 功能块, 编写如下代码,实现将“ 整型”变量转换成“ 实型” 变量 同时再编写一段静态变量自加 1 代 码 7.打开 OB1 主程序,添加 FB1 功能块 如何确定程序参数类型的块编号并传送给 FC ? 介绍 使用以下程序代码可确定参数类型 (BLOCK_FC, BLOCK_FB, TIMER or COUNTER) 的编号。 例 1 :FB 块 FB1 变量声明中定义了“ Timer” 类型的变量“ Time_1” , FB2 中调用 FB1 , 在 将定时器“T5” 传递给变量“ Time_1”。如图 01 所示 程序代码中数值 5 表示“T5”。 图. 01 例 2 FC FC1 变量声明中定义了“ Timer” 类型的变 量“ Time_1” , FC2 中调用 FC1, 在 将定时器“T8” 传递给变量“ Time_1”。如图 02 所 示程序代码中数值 8 表示“T8”。 图. 02 在使用多重实例时,需要在图 01 所示程序中增 加以下代码: TAR2 LAR1 P#Time_1 +AR1 L WAR1,P#0.0 T MW00 / 多重实例偏移地址 /多重实例偏移地址与当前地址相加 “BLOCK_DB”类型参数在调用 FC 时不可以直接传送 给 FC 。如果在调用功能时试图使用此 参数类型,将产生如下的错误消息: “非法的参 数传输” 非法的参数传输 “BLOCK_DB” 类型参数仅在 FB 被调用(从 一个 FB 或 FC 中)时可被传送。 “BLOCK_DB”类型参数不可以在 FC 被调用(从一个 FB 或 FC 中)时可被传送。相关详细 信息可参考 STEP7 在线帮助中“合法的传输参数 类型” 。 然而,如果希望将 BLOCK_DB 参数类型传送给 FC , DB 块的编号可以通过基 本数据类型 (例如 WORD )传送。 在下面的例子中,FB100 拥有一个“BLOCK_DB” 的 输入参数类型。为了在调用 FC101 时将 参数传送给它, “BLOCK_DB”中的 DB 块编号 被传送给 WORD 临时变量(DB_No)。 FC 被 当 调用, 数据块序号以一个 WORD 参数 类型替代 BLOCK_DB 参数类型。 图. 03 如果 FB 的接口参数能被定义成 WORD 参数 类型来传送 DB 块编号,当 FC 被调用时, 此参数可以被直接传送给 FC。 如何生成和 更新多重背景? 显示订货号 说明: 如果在结构化编程时经常使用功能块, 那么在每次 调用 FB 时都要为其指定一个单独的背景数 据块。对于非常小的 FB, 它的背景数据块经 常由很少的几个字组成。当频繁调用和指定背景数 据块给这些小的 FB 时,程序会变得 非常不清晰,或者 DB 块的数量会达到 CPU 所支持的 最大数量。 由于一个背景数据块 可以长于 FB 实际需要的长度, 因此多个背景数据块可以合并成一个多重 背景。但是, 这种合并必须在一个 FB 中通过编程完成。 1. 表 1:编程多重背景和更新修改过的背景 2. 表 2: 对已经存在的 FB 多重背景能力的后续声明 表 1:编程多重背景和更新修改过 的背景 步 过程: 骤 1 在 SIMATIC Manager 中,打开你希望生成多重背景的 FB 。在 静态变量定义部分,输入 多重背景的名字,数据类型为 FB 或 SFB 。 图 1 2 在程序中 调用多重背景, 可以在多重背景中的目录中选择托拽它到 NETWORK 中, 也可 以用 CALL 指令 调用它。 图 2 STEP 在 STEP 7 V5.4 SP2 中请注意: 如果在 LAD/FBD 编 辑器的目录视图中多重背景未被列出,推荐在静态变量声明中先插入 一个功能块,然后再 删除它。这样多重背景就再次可以被选择。 3 现在设置程序块的输入和输出并保存。就可 以在程序( 例如 OB1) 中使用多重背景来调用 FB。创建一个背景数据块以供监控。 注意: 当生成多重背景时,如其在 FB 中作为一个多重背景被调用,注意要首先生成它,然后 再指定一个多重背景调用。如果不遵从这个顺序,程序中将会出现不一致的情况,这种不 一致的情况也有可能在修改多重背景后出现。 4 一旦修改过了多重背景,并打开调用它的 功能块。当功能块被打开时,会出现一个消息显 示在 FB 接口声明中有一个 UDT 或本地标签的被修改,并显示在功能块调用中至少有 一个时间标签冲突。确认此信息,修改过 的背景调用在 LAD/STL/FBD 编辑器中将会以 亮红色显示。 为了更新功能块调用,右击 功能块,然后在弹出菜单中选择“Update Block Call.” 。 图 3 5 在后续的对话框中,点击 OK 来执行接口更新。 图 4 在 STEP 7 V5.3 中的注意事项: 当尝试通过“File Check and Update Accesses”来更新程序块调用时,STEP7 V5.3 不 能发现变量间的唯一分配,调 用还是保持红颜色,也无法通过“Edit Call Update”改正 调用错误。更新调用的唯一办 法是删除调用,在声明中更新接口,然后再以多重背景方式 调用功能块。如果已经删除了 FB 接口中的变量,应该通过“Edit Call Update” 来改正 所有的多重背景调用,而不需使 用前面的“Check and Update Accesses” 功能。一旦已经 更新了这些多重背景,就又可以与 平时一样使用“Check and Update Accesses”功能了。 6 推荐在更新功能块调用后进行一致 性检查。在 SIMATIC Manager 中,右击 S7 program 文件夹,选择“Check block consistency.”功能,系统会显示 S7 程序的结构。 通过工具栏中的第二个按钮或者 “Program Compile All” 功能编译程序。 在编译后, STEP 7 程序一致性将统一。 图 5 当新生成一个新的功能块,在功能块属性中多重背景功能默认被选择(图 6) 。也可以改变 此 设置: 图 6 一旦已经生成了功能块,多重背景功能就不可以被重新设置,是否具有多 重背景的属性只可以 显示,除非按照一个冗长的过程来修改它。 表 2 描述了如何声明一 个已经生成的 FB 是否具有多重背景的能力: 步 过程: 骤 1 为了声明一个已经生成的 FB 是否具有多重背景的能力,打开 LAD/STD/FBD 编辑器, 通过“File Generate source.”在对话框中生成一个 FB 的源文件。 在后续的对话框中选 择项目并存储源文件 到 S7 程序的源文件目录。 2 在“Generate source ”对话框中(图) ,在左 边列表中选择你希望使能或 取消多重背景能力的功能块,然后点击箭头将其添加到右边的 列表中。点击“OK”关闭对 话框。 图 7 3 关闭 LAD/FBD/STL 编辑器,打开在 SIMATIC Manager 生成的源文件。多重背景的能 力依赖于在“Version : 0.1”后面输入的代码。 图 8 ? ? 如果希望 FB 具备多重背景的能力,删除“CODE_VERSION1”属性。 如果希望 FB 不具 备多重背景的能力,按照图 8 中添加“CODE_VERSION1” 属 性。 保存并编译源文件,现 在功能块即被使能或取消了多重背景的能力。 4 在使能或取消了多重背景能力之后,现在 不得不重新编译所有的在 FB ,为了这个工作, 我们推荐执行一致性检查(见表 1,步 骤 6) 数据块初始值与实际值的含义 显示订货号 描述 在数据块的变量声明表中可以定 义变量的名称、数据类型、注释和变量初始值。初始值为纯粹 的组态值,当由 UDT 生 成数据块或在全局数据块中生成新变量时,组态的初始值被用作为实 际值。 可以通过菜 单命令 “View Data view” 来查看实际值。 初始值对于 数据块或新声明的变量数据块来 说, 组态的有效次数仅为一次。 如果变量已经存在, 实际值将不会随着初始值的变化而 发生改变。对于 CPU 来说,操作的数值为实际值,初始值 虽也可以下载到 CPU 中并可 在线监控,但不会被 CPU 采用。 有以下两种方法可以将初始值传送给 CPU 作为实际值:1. 切换到数据浏览状态 “View Data view” ,在“Actual value” 栏输入新的初始值。 2. 进入声明浏览状态 “View Declaration view ” ,在“Actual value” 栏输入新的初始值; 然 后,切换到“Data view” 状态,执行菜单命令 “Edit Initialize Data Block”将所有 “Intial value”栏的数值传送至“Actual value” 栏。 然后将数据块下载至 CPU 中。 由于初始值仅使 用一次,因而没有必要将实际值装载至初始值, 如装载“Actual value” 栏到 “Initial value” 栏。 STEP 7 中没有与之相关的菜单命令。 但是一些特殊应用需要将实际值保 存为初始 值。这一过程可通过 STL 源文件或 Excel 来实现,以下将分别介绍其操作步骤。 在 STL 源文件中,将 数据块的实际值直接保存为初始值 当生成 STL 源文件后,实际值可 以逐行拷贝至 STL 源程序中的声明语句中。 No. 步骤 1 在 SIMATIC Manager 选择菜 单指令 “View Online“ ,在线打开要执行操作的数据 块。 选择菜单命令 “File Save” 或点击软盘图标保存该数据块。 2 通过菜单命令 “File Generate Source.” 生成此数据块 的源文件。 3 打开生成的源文件,该文件位于 SIMATIC Manager 的 Source 文件夹。 4 在 STL 源文件中,将位于 “BEGIN” 和 “END_DATA_BLOCK”语句之间的实际值逐行复 制到相应的声明行( 初始值)及相应的数据类型之中。 图 01 如图 01 所示, 通配符“:=”也 必须和实际值一起复制到初始值的声明行。 以下是声明行定 义的一个示例: ? Data_1 : BYTE := B#16#AA; 5 保存编译 STL 源程序 ? ? File Save File Compile 此时,实际值 被用作初始值 将数据块的实际值保存为初始值(便利方法) 使用 Excel 将数据块的实际 值保存为初始值(便利方法) 数据块的实际值也能在 Excel 中被存为初始值。 当数据量 较大时, 推荐使用 Excel 进行操作, 这是因为此时数据是逐块而不是逐行被复制到声明 区域的。 下述表格介绍了如何导入/导出 STL 源文件及将其保存在 Excel 中。 No 步骤 . 1 在 SIMATIC Manager 选择菜单指令 “View Online“ ,在线打开要执行操作的数据 块。选择菜单命令 “File Save” 或点击软盘图标保存该数据块。 2 通过菜单命
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号