



版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、西门子 S7-300 中 FB 功能块的使用方法:1.创建功能块FB1准备完成如下功能:将“整型 ”变量转换成 “实型 ”变量2. 打开功能块 FB13. 在功能块 FB1 中添加入口参数、出口参数、静态变量入口参数 IN0->整型(INT)出口参数 OUT1->实型(REAL)静态变量 STAT2 ->整型(INT)局部变量 TEMP3 ->长整型( DINT)4. 创建背景数据块DB25. 打开 DB2背景数据块,可以看到系统默认建立了三个数据IN0 ->入口参数(整型)OUT1 -> 出口参数(实型) STAT2-> 静态变量(整型)6. 打开
2、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例 2FCFC1变量声明中定义了“Timer ”类型的变量“ Time_1
3、 ”,在 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
4、”类型参数不可以在FC 被调用(从一个FB或 FC中)时可被传送。相关详细信息可参考STEP7在线帮助中“合法的传输参数类型”。然而,如果希望将 BLOCK_DB (例如 WORD )传送。参数类型传送给FC ,DB块的编号可以通过基本数据类型在下面的例子中,FB100拥有一个“BLOCK_DB ”的输入参数类型。为了在调用FC101参数传送给它, “BLOCK_DB”中的 DB块编号被传送给WORD临时变量 (DB_No) 。当调用,数据块序号以一个WORD参数类型替代BLOCK_DB参数类型。时将FC 被图. 03如果FB的接口参数能被定义成WORD参数类型来传送DB块编号,当FC被调用时
5、,此参数可以被直接传送给FC 。如何生成和更新多重背景?显示订货号说明:如果在结构化编程时经常使用功能块, 那么在每次调用 FB 时都要为其指定一个单独的背景数据块。对于非常小的 FB, 它的背景数据块经常由很少的几个字组成。 当频繁调用和指定背景数据块给这些小的 FB 时,程序会变得非常不清晰,或者 DB 块的数量会达到 CPU 所支持的最大数量。由于一个背景数据块可以长于背景。但是,这种合并必须在一个FB实际需要的长度,因此多个背景数据块可以合并成一个多重FB 中通过编程完成。1. 表 1:编程多重背景和更新修改过的背景2. 表 2: 对已经存在的 FB 多重背景能力的后续声明表 1:编程
6、多重背景和更新修改过的背景步过程:骤1在 SIMATIC Manager 中,打开你希望生成多重背景的多重背景的名字,数据类型为 FB 或 SFB 。FB 。在静态变量定义部分,输入2图 1在程序中调用多重背景,可以在多重背景中的目录中选择托拽它到以用CALL指令 调用它。NETWORK中,也可图 2在 STEP 7 V5.4 SP2中请注意:如果在 LAD/FBD编辑器的目录视图中多重背景未被列出,推荐在静态变量声明中先插入一个功能块,然后再删除它。这样多重背景就再次可以被选择。3现在设置程序块的输入和输出并保存。就可以在程序(例如OB1) 中使用多重背景来调用FB 。创建一个背景数据块以供
7、监控。注意:当生成多重背景时,如其在FB中作为一个多重背景被调用,注意要首先生成它,然后再指定一个多重背景调用。如果不遵从这个顺序,程序中将会出现不一致的情况,这种不一致的情况也有可能在修改多重背景后出现。4 一旦修改过了多重背景,并打开调用它的功能块。当功能块被打开时,会出现一个消息显示在FB 接口声明中有一个UDT或本地标签的被修改,并显示在功能块调用中至少有一个时间标签冲突。确认此信息,修改过的背景调用在LAD/STL/FBD编辑器中将会以亮红色显示。为了更新功能块调用,右击功能块,然后在弹出菜单中选择“Update Block Call.”。图 35在后续的对话框中,点击OK来执行接口
8、更新。图 4在 STEP 7 V5.3中的注意事项:当尝试通过“ File > Check and Update Accesses”来更新程序块调用时,STEP7 V5.3不能发现变量间的唯一分配,调用还是保持红颜色,也无法通过“Edit > Call > Update”改正调用错误。更新调用的唯一办法是删除调用,在声明中更新接口,然后再以多重背景方式调用功能块。如果已经删除了FB 接口中的变量,应该通过“Edit > Call > Update”来改正所有的多重背景调用,而不需使用前面的“Check and Update Accesses”功能。一旦已经更新了这
9、些多重背景,就又可以与平时一样使用“Check and Update Accesses”功能了。6推荐在更新功能块调用后进行一致性检查。在SIMATIC Manager中,右击S7 program文件夹,选择“ Check block consistency.”功能,系统会显示S7 程序的结构。通过工具栏中的第二个按钮或者“Program > Compile All”功能编译程序。在编译后, STEP7 程序一致性将统一。图 5当新生成一个新的功能块,在功能块属性中多重背景功能默认被选择(图6)。也可以改变此设置:图 6一旦已经生成了功能块,多重背景功能就不可以被重新设置,是否具有多重背
10、景的属性只可以显示,除非按照一个冗长的过程来修改它。表 2描述了如何声明一个已经生成的FB是否具有多重背景的能力:步过程:骤12为了声明一个已经生成的FB 是否具有多重背景的能力,打开LAD/STD/FBD编辑器,通过“File > Generate source.”在对话框中生成一个FB的源文件。 在后续的对话框中选择项目并存储源文件到S7程序的源文件目录。在“Generate source <name_block>”对话框中(图),在左边列表中选择你希望使能或取消多重背景能力的功能块,然后点击箭头将其添加到右边的列表中。点击“OK ”关闭对话框。3图7关闭LAD/FBD/
11、STL编辑器, 打开在SIMATIC Manager力依赖于在“ Version : 0.1”后面输入的代码。生成的源文件。多重背景的能图 8如果希望如果希望FBFB具备多重背景的能力,删除“不具备多重背景的能力,按照图CODE_VERSION1”属性。8 中添加“CODE_VERSION1”属性。保存并编译源文件,现在功能块即被使能或取消了多重背景的能力。4在使能或取消了多重背景能力之后,现在不得不重新编译所有的在FB ,为了这个工作,我们推荐执行一致性检查(见表1,步骤6 )数据块初始值与实际值的含义显示订货号描述在数据块的变量声明表中可以定义变量的名称、数据类型、注释和变量初始值。初始值
12、为纯粹的组态值,当由UDT 生成数据块或在全局数据块中生成新变量时,组态的初始值被用作为实际值。 可以通过菜单命令“View > Data view”来查看实际值。初始值对于数据块或新声明的变量数据块来说,组态的有效次数仅为一次。如果变量已经存在,实际值将不会随着初始值的变化而发生改变。对于CPU 来说,操作的数值为实际值,初始值虽也可以下载到CPU 中并可在线监控,但不会被CPU 采用。有以下两种方法可以将初始值传送给CPU作为实际值:1.切换到数据浏览状态“View > Data view ”,在“Actual value ”栏输入新的初始值。2.进入声明浏览状态“View &
13、gt; Declaration view”,在“Actual value ”栏输入新的初始值;然后,切换到“ Data view ”状态,执行菜单命令“Edit > Initialize Data Block ”将所有“Intial value ”栏的数值传送至“Actual value ”栏。然后将数据块下载至CPU 中。由于初始值仅使用一次,因而没有必要将实际值装载至初始值, 如装载“Actual value ”栏到 “Initial value ”栏。 STEP 7 中没有与之相关的菜单命令。 但是一些特殊应用需要将实际值保存为初始值。这一过程可通过 STL 源文件或 Excel
14、来实现,以下将分别介绍其操作步骤。在 STL当生成源文件中,将数据块的实际值直接保存为初始值STL源文件后,实际值可以逐行拷贝至STL源程序中的声明语句中。No. 步骤1在 SIMATIC Manager选择菜单指令"View > Online",在线打开要执行操作的数据块。 选择菜单命令“File > Save”或点击软盘图标保存该数据块。2通过菜单命令 “File > Generate Source.”生成此数据块的源文件。3打开生成的源文件,该文件位于SIMATIC Manager的 Source 文件夹。4在 STL 源文件中,将位于 “BEGIN
15、 ”和 “END_DATA_BLOCK ”语句之间的实际值逐行复制到相应的声明行 (初始值 )及相应的数据类型之中。图 01如图01 所示,通配符“:= ”也必须和实际值一起复制到初始值的声明行。以下是声明行定义的一个示例:Data_1 : BYTE := B#16#AA;5保存编译STL源程序File > SaveFile > Compile此时,实际值被用作初始值使用Excel将数据块的实际值保存为初始值(便利方法)数据块的实际值也能在Excel中被存为初始值。当数据量较大时,推荐使用Excel这是因为此时数据是逐块而不是逐行被复制到声明区域的。下述表格介绍了如何导入STL源文
16、件及将其保存在Excel中。进行操作,/导出No步骤.1在 SIMATIC Manager 块。 选择菜单命令选择菜单指令"View > Online",在线打开要执行操作的数据“File > Save ”或点击软盘图标保存该数据块。2通过菜单命令“File > Generate Source.”生成此数据块的源文件。3 Mark the generated source in the source in the SIMATIC Manager and right-click it. Then select the "Export Source.
17、" command in the pop-up menu.4在“Export source”对话框中确定源文件导出文件加后,选择“STL source (*.awl)”作为文件类型且文件名中必须包含扩展名“.AWL”,例如“Source_DB2.AWL ”,然后点击“Save ”按钮。图 025启动Microsoft Excel,通过“文件 > 打开 .”打开刚才导出的STL源文件,出现“文本导入向导”对话框。注意为了保证在“ Open ”对话框中可以找到该STL源文件,需要选择“ All files (*.*)”作为打开文件类型。6在文本倒入向导第一步,使能“Delimite
18、d “格式选项。图 03然后单击“Next ”按钮。7在下一个文本倒入向导的对话框中,选择"tab" 或 "space"作为分隔符。图 04然后单击“Next ”按钮。8在第三步文本倒入向导中,选择”standard ”作为;栏数据格式。图 05然后单击“Finish ”按钮。 转化的STL 源在 Excel中打开。9选中所有属于STL source的单元格后点击右键。在弹出菜单中选择“设置单元格格式 .”。图 0610 在“对齐”页签中将水平对齐设置为“靠右”或“靠右(缩进 )”点击确定。图 0711 选择位于“BEGIN ”和END“_DATA_BL
19、OCK ”之间的实际值以及通配符“ := ”,将数据复制到“STRUCT ”和“END_STRUCT”之间声明区域的相应数据类型之后,如图08 所示。图 0812 复制完成后检查语法格式是否正确,例如:STRUCTData_1 : BYTE := B#16#AA;.END_STRUCT;图 0913 在 Excel 中保存文件,“文件 > 另存为 . ”并选择带格式文本文件(空格分隔 )(*.prn)作为文件类型。.注意执行上述操作后,文件保存为“Source_DB2.AWL”。但是,如果文件以另一文件名保存,如“Source_DB20.AWL”,系统会将其保存为“”文件。 此文件需通过
20、删除扩展文件名PRN将“”转换为“Source_DB20.AWL”。PRN 扩展名是系统自动添加的,这种情况发生在保存文件时已输入过一次以AWL 结尾的文件名。14在 SIMATIC Manager中选择菜单命令“Import > External Source.”将 Excel 中处理完成的 STL 源文件导入至STEP 7项目下的source 文件夹。15选择导入的源文件后点击右键,在弹出菜单中选择“Compile. ”命令进行编译。 编译完成后,实际值便保存为初始值。图 10注意如果数据块中有UDT类型的数据,使用时有限制:不能将实际值附着在变量后作为初始值。虽然UDT可以被导出,
21、但其初始值的改变将会影响到所有使用该UDT 的数据块,因此无法做到在不同数据块中的差别化应用。关键词:编成帮助,初始化,初始值,系统行为全局数据块和背景数据块的区别在使用全局数据块的情况下,所有的程序块(FB ,FC 和 OB) 可以读写数据块中的数据。背景数据块被分配到特定的功能块,包含所分配的FB 的本地数据。全局数据块o 可以增加变量,改变初始值和当前值。o 在数据块中添加,删除,改变变量。背景数据块o 不能添加或删除变量,不能改变变量的初始值和当前值。o 在相关连的功能块中添加,删除,改变变量。图 01不同FB 的数据可以存储在单个背景数据块中(多重背景 )。图02 给出了一个例子,说
22、明了在FB1中 FB5和 FB6如何作为多重背景的。两个FB将它们的背景数据保存在调用它们的FB1的背景数据块DB1 中。在FB1的声明中,多重背景块保存为静态变量。图 02更多信息可以参考STEP 7在线帮助以下部分“背景数据块”“创建数据块 (DB) ”“数据块 (DB)的结构”“使用多重背景”从 STEP 7 V4.02升级到当升级STEP 7 V4.02到V5.xV5.x需要注意版本时,在LAD/STL/FBD编辑器中可能会在调用CALL功能时出现红色。这种现象的原因是块中调用的一个背景数据块已经在符号表里被声明为全局数据块。在STEP7编程规则中这是不允许的,并且在STEP7 V5.
23、x版本中也是不能被接受的。补救措施可以按照下列步骤来修改发生错误的数据块1.在符号表中删除声明错误的DB 所在行。2. 然后删除错误的 DB 块。3. 打开调用的块然后重新生成背景数据块。调用CALL功能如何影响当程序块在STEP 5或数据块的指令保持有效,据块 (DB / DI) 。DB 寄存器STEP 7中被调用时,DB1直到另一个打开数据块的指令。和DB2 DB寄存器的初始内容被保存。打开寄存器的内容反映了当前打开的数然后,必须明确,不是所有的S7例如,当使用CALL指令调用FC译器会打开指定的数据块。当FC改变DB 寄存器不会影响调用完成后编辑器 /编译器对DB寄存器的改变对用户来说都
24、是明显的。时,如果给FC 形参分配的是完整的数据块变量地址,编调用完成时,DB号仍然保存在DB1寄存器中。在FCDB 寄存器的值。中举例:DB1寄存器AUF DB11LDBB0CALL FC1Input1:= DB2.DBB0Input2:= DB3.DBB0LDBB03表 01如果调用功能块和相关的背景数据块,调用中。传输完整的数据块变量地址给FB ,在容。CALL指令后,背景数据块号保存在FB 中更改DB 寄存器不会影响DB1DB1寄存器寄存器的内举例:DB1 寄存器AUF DB11LDBB0CALL FB1, DB10Input1:= MW0Input2:= DB3.DBB0LDBB01
25、0表 02调用系统功能块后(SFB) ,相应的背景数据块号保存在DB1寄存器中。 然而,使用UC或CC指令后,数据寄存器始终保持不变,这是由于这些调用没有指定参数和背景数据块。注意为了避免在STEP编程过程中处理数据块时出现区域长度错误和访问错误,尽量只使用完整的地址访问DB 中变量。 (如DBx.DBBy或符号名"DBName".Variable_name)。如何为用户创建的块添加访问保护?说明:STEP 7为程序提供KNOW_HOW_PROTECT保护功能。如果打开使用此保护功能的块时,仅块接口参数(IN, OUT和IN/OUT参数 )和块注释可见,而无法显示程序代码、
26、临时/静态变量和网段注释。以下介绍如何为程序块(FBs, FCs and DBs)设置KNOW_HOW_PROTECT保护功能:No.步骤1打开要编辑的块,在LAD/STL/FBD编辑器中选择"File > Generate source.",生成源文件。2在打开的对话框中输入项目名称,如"Protect_FB"。3弹出 "Generate source < 名称 >"对话框。 选中需要转换的块, 点击箭头按钮将其移至右侧 "Blocks Selected"窗口中。点击 OK 键进行确认后,生成S
27、TL 源文件。关闭LAD/STL/FBD编辑器。图 014 在 S7 program 的 “Sources ”文件夹中打开最近生成的源文件。5 声明部分的 "TITLE" 语句下插入 "KNOW_HOW_PROTECT"命令。图 026通过菜单"File > Save"和 "File > Compile"保存编译STL源文件,完成块的保护。注意:只有通过STL 源文件才能去除块的保护。如果经“KNOW_HOW_PROTECT”命令的程序或者项目中的STL源文件不再可用,则不能再去除对块的保护。下表介绍如
28、何去除块(FBs, FCs and DBs)的 KNOW_HOW_PROTECT保护功能:编号步骤1 打开源文件2 删除 "KNOW_HOW_PROTECT"语句行或用双斜杠将其标记为注释3使用菜单命令"File > Save"和 "File > Compile"保存编译该STL源文件。4 至此去除对该块的保护。如何参数化FB 的 IN_OUT区域的结构化数据类型并使用ARRAY变量调用?问题描述如果FB的传递参数(IN_OUT )是一个复杂数据类型的变量,则它实际上是作为一个6 字节的指针( 48 位)保存在背景数据块中的。这意味着它不再是一个变量,而是一个6 字节的指针。 由于指针指向了实参,因此它是必须被参数化。STEP 7可以识别下面的复杂数据类型:“Date_and_Time”、String“ ”、“Array ”、Struct“ ”和UDT“ ”。图 01 中提供了如何间接访问复杂数据类型的第一个字节的例程。数据备份。在例子中介绍的程序可用作图 01通过IN_OUT变量“Symbol_des_In
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025公基常识试题及答案解析(150题)
- 上海五年级下试卷及答案
- 肇庆市实验中学高中历史二教案:第课对外开放
- 2025年中国聚乙烯高倍率阻燃型保温材料数据监测报告
- 2025中外合资企业员工合同范本
- 笔的销售渠道考核试卷
- 航空公司员工职业健康与安全管理考核试卷
- 环保低碳日用品推广与应用考核试卷
- 租赁设备的技术创新与专利保护考核试卷
- 胶合板生产过程中的智能制造技术考核试卷
- GA 255-2022警服长袖制式衬衣
- GB/T 5202-2008辐射防护仪器α、β和α/β(β能量大于60keV)污染测量仪与监测仪
- GB/T 39560.4-2021电子电气产品中某些物质的测定第4部分:CV-AAS、CV-AFS、ICP-OES和ICP-MS测定聚合物、金属和电子件中的汞
- GB/T 3452.4-2020液压气动用O形橡胶密封圈第4部分:抗挤压环(挡环)
- 计划生育协会基础知识课件
- 【教材解读】语篇研读-Sailing the oceans
- 抗肿瘤药物过敏反应和过敏性休克
- 排水管道非开挖预防性修复可行性研究报告
- 交通工程基础习习题及参考答案
- 线路送出工程质量创优项目策划书
- 100T汽车吊性能表
评论
0/150
提交评论