您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 西门子300创建fb
西门子S7-300中FB功能块的使用方法:1.创建功能块FB1准备完成如下功能:将“整型”变量转换成“实型”变量2.打开功能块FB13.在功能块FB1中添加入口参数、出口参数、静态变量入口参数=IN0---整型(INT)出口参数=OUT1---实型(REAL)静态变量=STAT2---整型(INT)局部变量=TEMP3---长整型(DINT)4.创建背景数据块DB25.打开DB2背景数据块,可以看到系统默认建立了三个数据IN0---入口参数(整型)OUT1---出口参数(实型)STAT2---静态变量(整型)6.打开FB1功能块,编写如下代码,实现将“整型”变量转换成“实型”变量同时再编写一段静态变量自加1代码7.打开OB1主程序,添加FB1功能块如何确定程序参数类型的块编号并传送给FC?介绍使用以下程序代码可确定参数类型(BLOCK_FC,BLOCK_FB,TIMERorCOUNTER)的编号。例1:FB块FB1变量声明中定义了“Timer”类型的变量“Time_1”,在FB2中调用FB1,将定时器“T5”传递给变量“Time_1”。如图01所示程序代码中数值5表示“T5”。图.01例2FCFC1变量声明中定义了“Timer”类型的变量“Time_1”,在FC2中调用FC1,将定时器“T8”传递给变量“Time_1”。如图02所示程序代码中数值8表示“T8”。图.02在使用多重实例时,需要在图01所示程序中增加以下代码:TAR2//多重实例偏移地址LAR1P##Time_1+AR1//多重实例偏移地址与当前地址相加LW[AR1,P#0.0]TMW00“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在SIMATICManager中,打开你希望生成多重背景的FB。在静态变量定义部分,输入多重背景的名字,数据类型为FB或SFB。图12在程序中调用多重背景,可以在多重背景中的目录中选择托拽它到NETWORK中,也可以用CALL指令调用它。图2在STEP7V5.4SP2中请注意:如果在LAD/FBD编辑器的目录视图中多重背景未被列出,推荐在静态变量声明中先插入一个功能块,然后再删除它。这样多重背景就再次可以被选择。3现在设置程序块的输入和输出并保存。就可以在程序(例如OB1)中使用多重背景来调用FB。创建一个背景数据块以供监控。注意:当生成多重背景时,如其在FB中作为一个多重背景被调用,注意要首先生成它,然后再指定一个多重背景调用。如果不遵从这个顺序,程序中将会出现不一致的情况,这种不一致的情况也有可能在修改多重背景后出现。4一旦修改过了多重背景,并打开调用它的功能块。当功能块被打开时,会出现一个消息显示在FB接口声明中有一个UDT或本地标签的被修改,并显示在功能块调用中至少有一个时间标签冲突。确认此信息,修改过的背景调用在LAD/STL/FBD编辑器中将会以亮红色显示。为了更新功能块调用,右击功能块,然后在弹出菜单中选择“UpdateBlockCall...”。图35在后续的对话框中,点击OK来执行接口更新。图4在STEP7V5.3中的注意事项:当尝试通过“FileCheckandUpdateAccesses”来更新程序块调用时,STEP7V5.3不能发现变量间的唯一分配,调用还是保持红颜色,也无法通过“EditCallUpdate”改正调用错误。更新调用的唯一办法是删除调用,在声明中更新接口,然后再以多重背景方式调用功能块。如果已经删除了FB接口中的变量,应该通过“EditCallUpdate”来改正所有的多重背景调用,而不需使用前面的“CheckandUpdateAccesses”功能。一旦已经更新了这些多重背景,就又可以与平时一样使用“CheckandUpdateAccesses”功能了。6推荐在更新功能块调用后进行一致性检查。在SIMATICManager中,右击S7program文件夹,选择“Checkblockconsistency...”功能,系统会显示S7程序的结构。通过工具栏中的第二个按钮或者“ProgramCompileAll”功能编译程序。在编译后,STEP7程序一致性将统一。图5当新生成一个新的功能块,在功能块属性中多重背景功能默认被选择(图6)。也可以改变此设置:图6一旦已经生成了功能块,多重背景功能就不可以被重新设置,是否具有多重背景的属性只可以显示,除非按照一个冗长的过程来修改它。表2描述了如何声明一个已经生成的FB是否具有多重背景的能力:步骤过程:1为了声明一个已经生成的FB是否具有多重背景的能力,打开LAD/STD/FBD编辑器,通过“FileGeneratesource...”在对话框中生成一个FB的源文件。在后续的对话框中选择项目并存储源文件到S7程序的源文件目录。2在“Generatesourcename_block”对话框中(图7),在左边列表中选择你希望使能或取消多重背景能力的功能块,然后点击箭头将其添加到右边的列表中。点击“OK”关闭对话框。图73关闭LAD/FBD/STL编辑器,打开在SIMATICManager生成的源文件。多重背景的能力依赖于在“Version:0.1”后面输入的代码。图8如果希望FB具备多重背景的能力,删除“CODE_VERSION1”属性。如果希望FB不具备多重背景的能力,按照图8中添加“CODE_VERSION1”属性。保存并编译源文件,现在功能块即被使能或取消了多重背景的能力。4在使能或取消了多重背景能力之后,现在不得不重新编译所有的在FB,为了这个工作,我们推荐执行一致性检查(见表1,步骤6)数据块初始值与实际值的含义显示订货号描述在数据块的变量声明表中可以定义变量的名称、数据类型、注释和变量初始值。初始值为纯粹的组态值,当由UDT生成数据块或在全局数据块中生成新变量时,组态的初始值被用作为实际值。可以通过菜单命令“ViewDataview”来查看实际值。初始值对于数据块或新声明的变量数据块来说,组态的有效次数仅为一次。如果变量已经存在,实际值将不会随着初始值的变化而发生改变。对于CPU来说,操作的数值为实际值,初始值虽也可以下载到CPU中并可在线监控,但不会被CPU采用。有以下两种方法可以将初始值传送给CPU作为实际值:1.切换到数据浏览状态“ViewDataview”,在“Actualvalue”栏输入新的初始值。2.进入声明浏览状态“ViewDeclarationview”,在“Actualvalue”栏输入新的初始值;然后,切换到“Dataview”状态,执行菜单命令“EditInitializeDataBlock”将所有“Intialvalue”栏的数值传送至“Actualvalue”栏。然后将数据块下载至CPU中。由于初始值仅使用一次,因而没有必要将实际值装载至初始值,如装载“Actualvalue”栏到“Initialvalue”栏。STEP7中没有与之相关的菜单命令。但是一些特殊应用需要将实际值保存为初始值。这一过程可通过STL源文件或Excel来实现,以下将分别介绍其操作步骤。在STL源文件中,将数据块的实际值直接保存为初始值当生成STL源文件后,实际值可以逐行拷贝至STL源程序中的声明语句中。No.步骤1在SIMATICManager选择菜单指令ViewOnline,在线打开要执行操作的数据块。选择菜单命令“FileSave”或点击软盘图标保存该数据块。2通过菜单命令“FileGenerateSource...”生成此数据块的源文件。3打开生成的源文件,该文件位于SIMATICManager的Source文件夹。4在STL源文件中,将位于“BEGIN”和“END_DATA_BLOCK”语句之间的实际值逐行复制到相应的声明行(初始值)及相应的数据类型之中。图01如图01所示,通配符“:=”也必须和实际值一起复制到初始值的声明行。以下是声明行定义的一个示例:Data_1:BYTE:=B#16#AA;5保存编译STL源程序FileSaveFileCompile此时,实际值被用作初始值使用Excel将数据块的实际值保存为初始值(便利方法)数据块的实际值也能在Excel中被存为初始值。当数据量较大时,推荐使用Excel进行操作,这是因为此时数据是逐块而不是逐行被复制到声明区域的。下述表格介绍了如何导入/导出STL源文件及将其保存在Excel中。No.步骤1在SIMATICManager选择菜单指令ViewOnline,在线打开要执行操作的数据块。选择菜单命令“FileSave”或点击软盘图标保存该数据块。2通过菜单命令“FileGenerateSource...”生成此数据块的源文件。3MarkthegeneratedsourceinthesourceintheSIMATICManagerandright-clickit.ThenselecttheExportSource...commandinthepop-upmenu.4在“Exportsource”对话框中确定源文件导出文件加后,选择“STLsource(*.awl)”作为文件类型且文件名中必须包含扩展名“.AWL”,例如“Source_DB2.AWL”,然后点击“Save”按钮。图025启动MicrosoftExcel,通过“文件打开...”打开刚才导出的STL源文件,出现“文本导入向导”对话框。注意为了保证在“Open”对话框中可以找到该STL源文件,需要选择“Allfiles(*.*)”作为打开文件类型。6在文本倒入向导第一步,使能“Delimited“格式选项。图03然后单击“Next”按钮。7在下一个文本倒入向导的对话框中,选择tab或space作为分隔符。图04然后单击“Next”按钮。8在第三步文本倒入向导中,选择”standard”作为;栏数据格式。图05然后单击“Finish”按钮。转化的STL源在Excel中打开。9选中所有属于STLsource的单元格后点击右键。在弹出菜单中选择“设置单元格格式...”。图0610在“对齐”页签中将水平对齐设置为“靠右”或“靠右(缩进)”点击确定。图0711选择位于“BEGIN”和“END_DATA_BLOCK”之间的实际值以及通配符“:=”,将数据复制到“STRUCT”和“END_STRUCT”之间声明区域的相应数据
本文标题:西门子300创建fb
链接地址:https://www.777doc.com/doc-5501829 .html