编程培训教材,内部教材_6、块调用和多重背景模型.pdf

上传人:asd****56 文档编号:69699216 上传时间:2023-01-07 格式:PDF 页数:26 大小:932.26KB
返回 下载 相关 举报
编程培训教材,内部教材_6、块调用和多重背景模型.pdf_第1页
第1页 / 共26页
编程培训教材,内部教材_6、块调用和多重背景模型.pdf_第2页
第2页 / 共26页
点击查看更多>>
资源描述

《编程培训教材,内部教材_6、块调用和多重背景模型.pdf》由会员分享,可在线阅读,更多相关《编程培训教材,内部教材_6、块调用和多重背景模型.pdf(26页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、ST-7PRO2Block Calls and Multi-instance ModelPage 1SITRAINTraining forAutomation and Drives内容页码内容页码用于结构化编程的块.2STEP 7 块概述.3功能及功能块中的参数声明.4功能的属性.5基本数据类型传送机理.6复杂数据类型的功能调用.7调用(主调)功能的特点.8功能块的属性.9构建功能块的实例.10FB调用中的参数传递.11复杂数据类型的FB调用.12功能块调用的特性.13示例6:灌装设备传送模式.14示例 6.1a:灌装生产线工作方式部分.15示例 6.1b:灌装生产线传送带.16多重背景模型结

2、构.17使用多重背景实现面向对象的编程.18在STEP 7中实现一个”冲压生产线”.19多重背景模型的属性.20示例6.2:装配线传输模式.21示例6.2a:工作站程序结构.22功能块FB1”Station”的工作原理.23功能块FB2“Transport”的工作原理.24示例6.2b:扩展到3个工作站.25块参数之间的连锁.26Date:2010-7-5File:PRO2_06E.1SIMATIC S7Siemens AG 2001.All rights reserved.SITRAINTraining forAutomation and Drives块调用与多重背景模型块调用与多重背景模型

3、ST-7PRO2Block Calls and Multi-instance ModelPage 2SITRAINTraining forAutomation and Drives将任务模块化将任务模块化抽象是解决复杂问题的基础,在每个抽象级别,我们将注意力集中在程序的关键方面,而忽略次要的细节。借助于抽象,我们将复杂的任务分解成一些可单独解决的分任务。结构化编程结构化编程STEP7使用块模式支持这种模块化概念。由整个任务分解而产生的单个任务被分配给块,这些块中存储了用于解决这些单个问题所必需的算法和数据。STEP7中的块,诸如功能(FC)和功能块(FB),可以赋予参数,通过使用这些块便实现了

4、结构化编程的概念。这意味着:解决单个任务的块,使用局部变量来实现对其自身数据的管理。块仅通过其块参数来实现与“外部”的通信,也即,与过程控制的传感器和执行器,或者与用户程序中的其它块之间的通迅。在块的指令段中,不允许访问如输入、输出、位存储器或DB中的变量这样的全局地址。优点优点结构化编程具有如下一些优点:各单个任务块的创建和测试可以相互独立地进行。通过使用参数,可将块设计得十分灵活。比如,可以创建一钻孔循环,其坐标和钻孔深度可以通过参数传递进来。块可以根据需要在不同的地方以不同的参数数据记录进行调用,也就是说,这些块能够被再利用。在预先设计的库中,能够提供用于特殊任务的“可重用”块。Date

5、:2010-7-5File:PRO2_06E.2SIMATIC S7Siemens AG 2001.All rights reserved.SITRAINTraining forAutomation and Drives用于结构化编程的块用于结构化编程的块整个任务的模块化:整个任务的模块化:l单个任务在各自块中予以解决单个任务在各自块中予以解决l参数分配法使得使用更加灵活参数分配法使得使用更加灵活示例:钻孔循环程序的钻孔深度为可分配参数块的可再利用性能:块的可再利用性能:l块可以按需要随时加以调用块可以按需要随时加以调用l限制因素:限制因素:不允许访问全局地址空间只能通过参数列表进行通信OB

6、1电机电机1电机电机1FB1阀阀阀阀FB2控制器控制器控制器控制器FB10FC 5限制阀限制阀复制复制SFC.CALL FB1,DB2Start:=I 0.0Stop:=I 0.1Motor_on:=Q12.0Speed:=QW14.FB 1地址声明名称类型0.0inStartBOOL0.1inStopBOOL2.0outMotor_onBOOL4.0outSpeedINT6.0statSpeed_oldINT0.0temp Calc_1INT.A#StartAN#Stop=#Motor_on.DB 2OB 1Date:05-1-10File:PRO2_06E.2SIMATIC S7Sieme

7、ns AG 2001.All rights reserved.SITRAINTraining forAutomation and Drives用于结构化编程的块用于结构化编程的块整个任务的模块化:整个任务的模块化:l单个任务在各自块中以予解决单个任务在各自块中以予解决l参数分配法使得使用更加灵活参数分配法使得使用更加灵活示例:钻孔循环程序的钻孔深度可用参数以予分配块的可再利用性能:块的可再利用性能:l块可以按需要随时加以调用块可以按需要随时加以调用l限制因素:限制因素:不允许访问全局地址空间只用通过参数列表进行通信OB 1电机电机1电机电机1FB1阀阀阀阀FB2控制器控制器控制器控制器FB10

8、FC 5限制阀限制阀复制复制SFC.CALL FB1,DB2Start:=I 0.0Stop:=I 0.1Motor_on:=Q12.0Speed:=QW14.FB 1地址声明名称类型0.0inStartBOOL0.1inStopBOOL2.0outMotor_onBOOL4.0outSpeedINT6.0statSpeed_oldINT0.0temp Calc_1INT.A#StartAN#Stop=#Motor_on.DB 2OB 1ST-7PRO2Block Calls and Multi-instance ModelPage 3SITRAINTraining forAutomation

9、 and DrivesSTEP 7中的块中的块STEP 7中的块从其功能、结构及其应用角度来看,是用户程序的一部分。根据内容,可以将STEP 7块划分为两类:用户块:用户块包括组织块(OB),功能块(FB),功能(FC)以及数据块(DB)。.编程人员将用于进行数据处理或过程控制的程序指令,存储在这些块(OB,FB和FC)中。数据块(DB)中,程序员可以将程序执行期间产生的数据保存起来,以备后来使用。用户块是在编程设备中创建的,并从编程设备中下载到CPU中去。系统块:系统块包括系统功能块(SFB),系统功能(SFC),以及系统数据块(SDB)。SFB和SFC集成在CPU的操作系统,用以解决PLC

10、需要频繁处理的标准任务。系统数据块SDB包含用作参数分配的数据,这些数据只能由CPU进行评估。SDB是由如HW-CONFIG或NETPRO这些工具创建编写的,用户程序不能创建编写。SDB是在将装载参数分配数据期间该过程对用户可见由上述工具创建并下载到CPU中的。下载操作只能在STOP(停机)模式下进行。稍后下载块稍后下载块STEP 7块除了具有结构化编程的优点之外,还具有下面的优点:可以在运行期间修改STEP 7中的用户块(OB,FB,FC及DB)并在运行期间将其下载到CPU中去。比如,可在运行期间升级系统软件,或者清除所发生的(软件方面的)错误。Date:2010-7-5File:PRO2_

11、06E.3SIMATIC S7Siemens AG 2001.All rights reserved.SITRAINTraining forAutomation and DrivesSTEP 7 块概述块概述属性属性组织块(OB)-用户程序接口-优先级(0到27)-在局部数据堆栈中指定开始信息块的类型块的类型功能块(FB)-参数可分配(可以在调用时分配参数)-具有(收回)存储空间(静态变量)功能(FC)-参数可分配(必须在调用时分配参数)-基本上没有存储空间(只有临时变量)数据块(DB)-结构化的局部数据存储(背景数据块DB)-结构化的全局数据存储(在整个程序中有效)系统功能块(SFB)-FB

12、(具有存储空间),存储在CPU的操作系统中并可由用户调用系统功能(SFC)-FB(无存储空间),存储在CPU的操作系统中并可由用户调用系统数据块(SDB)-用于配置数据和参数的数据块ST-7PRO2Block Calls and Multi-instance ModelPage 4SITRAINTraining forAutomation and Drives概述概述参数是用于在调用块和被调用块之间传递信息的通道。参数的符号名、数据类型以及初始化值(如果有必要的话)在声明表中建立。类型声明类型声明参数的类型指出了数据传递的方向:输入型参数输入参数(FB,FC):这种类型的参数用于将信息由调用块

13、传递到被调用块之中去。在被用调块内,对输入参数进行只读访问。输出型参数输出参数(FB,FC):这种类型的参数用于将信息(结果)从被调用块返回到调用块之中去。输入/输出型参数输入/输出参数(FB,FC):输入/输出参数用于双向信息传递。可以对输入/输出参数进行读及写访问。名称和类型名称和类型如局部变量一样,参数也有符号名和类型(数据或参数类型)。在块的代码段中,可以像使用局部变量一样来使用同种类型的参数。就是由于这个原因,参数在块内也叫做形式参数。块调用块调用在块调用中,块(FC)和/或(FB)的形式参数必须要赋予合适的实际参数值。为了避免误解(指数据类型)或者错误使用所传递的实际参数,在块调用

14、的时候,PLC编辑器会检查所创建的实际地址是否与形式参数类型完全一样(POINTER和ANY型除外)。类型的检查和参数传递机理与所使用的编程语言无关。这就保证了使用不同PLC编辑器(STL,LAD,FBD,SCL等等)所创建的块可以相互调用。Date:2010-7-5File:PRO2_06E.4SIMATIC S7Siemens AG 2001.All rights reserved.SITRAINTraining forAutomation and Drives功能及功能块中的参数声明功能及功能块中的参数声明MotorENENOStart地址声明名称类型初始化值地址声明名称类型初始化值.0

15、.0输入输入StartBOOLFALSE0.1输入输入StopBOOLTRUE2.0输入输入SpeedINT02.0输出输出Motor_onBOOLFALSE8.0输出输出SetpointINT010.0输入输入/输出输出EMER_OFF BOOLFALSE.静态静态.临时临时.SetpointEMER_OFFMotor_onStop输入参数输入参数输入输入/输出参数输出参数输出参数输出参数参数是信息传递的通道参数是信息传递的通道l输入参数:输入参数:Caller-Blockl输出参数:输出参数:Block-Callerl输入输入/输出参数:输出参数:Caller Block参数形成了块的一个

16、参数形成了块的一个“shell”:l参数位于代码段与参数位于代码段与“局部局部”变量类似变量类似l参数可以为任何数据类型参数可以为任何数据类型在调用期间进行数据类型检查例外情况:POINTER,ANYl调用接口与编程语言无关调用接口与编程语言无关PLC编程语言可以混合使用SpeedST-7PRO2Block Calls and Multi-instance ModelPage 5SITRAINTraining forAutomation and Drives概述概述功能是无存储区的、可分配参数的逻辑块。在STEP 7中,功能可以有足以满足需要的输入参数、输出参数和输入/输出参数。功能没有存储区

17、,没有用来存储结果的独立的、永久的数据区域。功能执行期间所产生的临时结果,只能存储在各自局部数据堆栈的临时变量中。功能扩充了处理器的指令集。应用应用功能主要应用于向调用块返回功能值。(比如:数学功能,使用二进制逻辑操作的信号控制。)IEC 61131标准标准如果要创建与IEC 61131-3标准要求相一致的功能,则必须遵守如下规则:一致性功能一致性功能功能可以具有足够满足需要的输入参数,但是,却只能向输出参数RET_VAL返回一个结果。在功能内部不允许读或写(访问)全局变量。在功能内部不允许读或写(访问)绝对地址。在功能内部不允许调用功能块。由于功能没有“存储区域”,所以,标准一致性功能的返回

18、结果只取决于输入参数的值。对于同样的输入参数值,功能也返回一个相同的结果。因此,编程员在STEP 7中创建标准一致性功能或进行模块编程和机构组织构成,就如同在STEP 5中工作一样。Date:2010-7-5File:PRO2_06E.5SIMATIC S7Siemens AG 2001.All rights reserved.SITRAINTraining forAutomation and Drives功能的属性功能的属性参数可分配的块:参数可分配的块:l具有足够多的输入,输出,输入具有足够多的输入,输出,输入/输出参数输出参数l无存储区,也即只有临时变量无存储区,也即只有临时变量IEC

19、61131-3标准一致性要求:标准一致性要求:l足够多的输入参数足够多的输入参数l仅有一个输出参数仅有一个输出参数RET_VALl不允许访问全局变量和绝对地址不允许访问全局变量和绝对地址l使用同一输入参数提供相同的结果扩展了处理器的指令集使用同一输入参数提供相同的结果扩展了处理器的指令集程序执行程序执行CALL FC10On_1:=I 0.1On_2:=I 0.2Off:=Q8.0功能功能FC10输入输入On_1BOOL输入输入On_2BOOL输出输出OffBOOL.A#On_1A#On_2=#Off.ST-7PRO2Block Calls and Multi-instance ModelPa

20、ge 6SITRAINTraining forAutomation and DrivesFC参数参数待处理的数据可以传递给被调用功能,这种数据传递只能通过CALL指令后弹出的参数列表来进行。其中所弹出的块参数的名称和数据类型,是在FC的声明部分定义的。可以声明的参数类型有:输入参数(只读),输出参数(只写)以及输入/输出(读/写)参数。参数的数目无限制(存储空间的容量),参数名称最多可以有24个字符。此外,还可以给参数加一个详细的说明。如果块无任何参数,那么在FC调用时将省略参数列表。传递机理传递机理随着调用指令CALL,STL/LAD/FBD编辑器首先根据参数列表中给出的实际参数,计算交叉区

21、域指针,并在FC调用指令之后立即存贮这些指针。此时,如果在该FC内部访问形式参数(比如:A On_1),CPU就根据存储在B堆栈中的返回地址确定该FC调用指令。然后根据相关的参数列表,FC就可确定与形式参数对应的实际参数的交叉区域指针。于是,通过这个指针就实现了对实际参数的访问。这种传递机理与“按引用调用”相一致,如果在某一FC中访问了形式参数,那么,结果也访问了相应的实际参数。.这种通过指针的访问机理要求:在FC调用中,所有的块参数都必须赋值。在参数声明里,不能对块参数进行初始化。注意事项注意事项如果是用DB中的实际参数来对块参数进行赋值,或者传递的是复杂类型参数,那么,参数传递将变得更加复

22、杂(请参见附录)。Date:2010-7-5File:PRO2_06E.6SIMATIC S7Siemens AG 2001.All rights reserved.SITRAINTraining forAutomation and Drives基本数据类型传送机理基本数据类型传送机理OB1功能功能FC10程序执行程序执行CALL FC10On_1:=I 0.1On_2:=I 0.2Off:=Q8.0输入输入On_1BOOL输入输入On_2BOOL输出输出OffBOOL.A#On_1A#On_2=#Off.OB1BLD 1=L 20.0UC FC 10P#I0.1P#I 0.2P#Q 8.0B

23、LD21 0 0 1 0 0 1 0.IB0基本类型实际参数位于于:基本类型实际参数位于于:l位存储地址区域位存储地址区域l过程映像过程映像l调用的局部堆栈调用的局部堆栈块参数实际参数块参数实际参数形式参数形式参数ST-7PRO2Block Calls and Multi-instance ModelPage 7SITRAINTraining forAutomation and Drives概述概述复杂数据类型参数(ARRAY和STRUCT)为调用块和被调块之间传递大批量相关数据,提供了一种清晰而有效的数据传递方式,因而更加顺应了“结构化编程”的理念。数组或结构可以作为一个完整的变量传递到被调

24、功能中去。赋值参数赋值参数为了进行参数传递,在被调功能中必需声明一个与实际参数类型相同的参数。这种类型参数(数据类型:ARRAY,STRUCT,DATE_AND_TIME及STRING)的传递只有通过符号传递的方式来进行。由于复杂数据类型变量只能够在数据块或局部数据块中建立,因此,实际参数必须存储在数据块(全局或静实例数据块)中,或者存储在调用块的局部堆栈中。STL/LAD/FBD编辑器对实际参数和传递到FC的块参数的数据类型进行一致性检查之后,只向被调FC传递一个带有DB号的POINTER参数以及指向实际参数的交叉区域指针。这个POINTER参数是通过调用(CALL)宏,在调用块(V区域)的

25、L Stack(局部堆栈)中建立的。对程序员来说,当不得不用间接寻址的方式访问所传递参数时,该POINTER具有十分重要的意义(请参见附录)。注意事项注意事项可以通过选择菜单项View-Block Properties 来查看所占用的局部堆栈的大小。如果ARRAY或STRUCT型元素的数据类型与块参数的类型相同的话,这些元素也可以传递到块参数中去。Date:2010-7-5File:PRO2_06E.7SIMATIC S7Siemens AG 2001.All rights reserved.SITRAINTraining forAutomation and Drives复杂数据类型的功能调用

26、复杂数据类型的功能调用示例:向功能传递一个示例:向功能传递一个ARRAYDB5 TemperatureFC21只能通过符号来进行参数的赋值只能通过符号来进行参数的赋值Network(段)1:在功能FC21里,声明一个数组Mes_ValCALL FC 21Mes_Val:=Temperature.sequenceST-7PRO2Block Calls and Multi-instance ModelPage 8SITRAINTraining forAutomation and DrivesCALL指令指令(宏)CALL指令用于块(FC,SFC,FB及SFB)调用。在调用FC时,只有通过CALL指

27、令才能够在调用块和被调块之间进行直接的信息交换。CALL确保了形式参数被正确地赋值。在使用CALL指令的时候,必须考虑到一些特点。这些特点源于如下事实:即CALL指令是通过宏来执行的,而宏又是由一些STL指令组成的。如果形式参数是用DB中的地址赋值的,那么就使用DB寄存器进行参数传递(请参见附录)。由此:在被调块FC内,当前打开的DB,可能并不是在CALL指令之前所打开的那个DB。如果在处理被调FC期间,CPU进入STOP模式,那么,在B-Stack-DB-Register中显示的值就是STL编辑器用于在参数分配中覆盖DB寄存器的值。如果在调用处理后,程序又回跳至调用块内,那么CALL指令之前

28、所打开的DB块,可能就不再处于打开状态了。UC,CC指令指令块也可以由UC指令或CC指令进行调用。UC调用指令为是绝对指令,也就是说,UC指令进行块调用不依赖于任何条件(如:UC FC20)。而CC调用指令为一条件指令,也即,只有当RLO等于“1”的时候,CC才进行块调用。如果RLO等于“0”,那么CC就不进行块调用并将RLO位置为“1”,随后,则执行CC调用指令后面的指令。重要注意事项重要注意事项只有在被调FC里没有声明参数的时候,才能使用UC和CC指令。Date:2010-7-5File:PRO2_06E.8SIMATIC S7Siemens AG 2001.All rights rese

29、rved.SITRAINTraining forAutomation and Drives调用(主调)功能的特点调用(主调)功能的特点CALL指令指令l指令为宏指令指令为宏指令寄存器内容可能会被覆盖掉,甚至是DB寄存器请注意B堆栈中内容的解释调用之后,可能会打开另一个DBCALL指令的处理时间取决于实际参数的数目和存储单元位置lCALL指令确保了块参数被正确地赋予当前数据指令确保了块参数被正确地赋予当前数据l示例:示例:CALL FC10On_1:=I 0.1On_2:=I 0.2Off:=Q8.0调用指令调用指令UC和和CCl不依赖于不依赖于RLO的块调用(的块调用(UC)或取决于)或取决于

30、RLO的块调用的块调用示例:UC FC20或CC FC20l当当FC没有参数的时候,才可使用这些指令没有参数的时候,才可使用这些指令直接赋值(实际参数值)ST-7PRO2Block Calls and Multi-instance ModelPage 9SITRAINTraining forAutomation and DrivesDate:2010-7-5File:PRO2_06E.9SIMATIC S7Siemens AG 2001.All rights reserved.SITRAINTraining forAutomation and DrivesFB 5输入输入 StartBOOL输

31、入输入 StopBOOL输出输出 Motor_on BOOL输出输出 SpeedINT静态静态.临时临时.A#StartAN#Stop=#Motor_on.功能块的属性功能块的属性属于可分配参数的块:属于可分配参数的块:lIEC 61131-3标准一致性块标准一致性块l有足够满足需要的输入,输出,输入有足够满足需要的输入,输出,输入/输出参数输出参数l有存储区域,即不仅有临时变量而且还有静态变量有存储区域,即不仅有临时变量而且还有静态变量l使用本身数据区域进行调用(创建背景)使用本身数据区域进行调用(创建背景)l“数据封装数据封装”应用:应用:l定时器和计数器功能定时器和计数器功能l使用内部状

32、态控制过程设备使用内部状态控制过程设备锅炉电机,阀,等等。CALL FB5,DB16Start:=I 0.0Stop:=I 0.1Motor_on:=Q8.0Speed:=QW120.0 StartBOOL0.1 StopBOOL2.0 Motor_onBOOL4.0 SpeedINTDB 16电机概述电机概述按照IEC标准61131-3,功能块(FB)为用户程序块,代表具有存储器的逻辑块。可以由OB,FB和FC调用。功能块可以根据需要具有足够多的输入参数、输出参数和输入/输出参数,以及静态和临时变量。与FC不同的是,FB是背景化了的块,也就是说,FB可以由其私有数据区域的数据进行赋值,在其私

33、有数据区域中,FB 可以“记住”调用时的过程状态。最简单的形式为:该专用数据区便是FB的自有DB,也就是所谓的背景DB。“存储区域存储区域”编程人员可以在功能块的声明部分声明静态变量,功能块可以在这些变量中“记住”这些调用信息。功能块这种对多次调用信息的“记忆”能力是其与功能的本质区别。应用应用使用这种“存储区域”,功能块可以执行计数器和定时器功能或者控制过程设备,比如过程站,驱动器,锅炉等等。特别地,功能块十分适合控制这样一些处理设备:其性能特性不仅取决于外部影响,而且也取决于内部状态。比如工步、速度、温度等等。当控制这种设备的时候,过程单元的内部状态数据就拷贝到功能块的静态变量中去。ST-

34、7PRO2Block Calls and Multi-instance ModelPage 10SITRAINTraining forAutomation and Drives背景是什么?背景是什么?功能块背景化的概念十分重要,而且也是与FC的本质区别所在。在高级语言如C语言中,在变量名称和数据类型下面建立一个变量,叫做“背景化”或“构建实例”。就像变量一样,功能块也可以被“背景化”。只有通过用于存贮块参数值和静态变量的自有数据区,FB才能成为可执行的单元(FB背景)。然后,使用FB背景,即分配有数据区域的功能块,就能控制实际的处理设备,比如马达或锅炉等。同时,该过程单元的相关数据存储在这个数

35、据区域里。背景创建背景创建在STEP 7中,创建FB背景,即在FB调用对其自有的存储区域进行赋值,可以通过两种方式来实现:在功能块调用时,直接声明所谓的背景数据块。在更高级功能块中(多重实例模型),显式声明功能块实例。然后,STEP 7确保在更高级的FB内,建立创建该背景所需要的数据区。优点优点STEP 7里的背景概念具有如下特点:在调用FB时,除了对背景DB进行赋值之外,不需要保存和管理局部数据。按照背景的概念,功能块可以多次使用。比如,如果对几台相同类型的马达进 行控制,那么就可以使用一个FB的几个背景来实现。同时,各个马达的状态数据也存储在该FB的静态变量之中。Date:2010-7-5

36、File:PRO2_06E.10SIMATIC S7Siemens AG 2001.All rights reserved.SITRAINTraining forAutomation and Drives构建构建功能块实例功能块实例Drive_1FBx+DByDrive_1 状态数据控制算法状态数据控制算法OB,FB或或FCCALL FBx,DBy.l 使用背景使用背景DB的的FB调用调用CALL#Motor_1.CALL#Motor_2DBx.stat Motor_1 FBxstat Motor_2 FBxDrive_2 状态数据状态数据Drive_3 状态数据状态数据FBxFB实例控制算法

37、实例控制算法FBDrive_2Drive_3l FB内的声明(多重背景)内的声明(多重背景)ST-7PRO2Block Calls and Multi-instance ModelPage 11SITRAINTraining forAutomation and DrivesFB调用过程调用过程待处理的数据可通过一个已调用的FB背景来处理。可使用CALL动作之后所弹出中的参数中的参数的参数列表进行参数的传递。在FC的声明部分对类型(输入,输出,或者输入/输出参数)、名称以及参数的数据类型进行定义。和FC的调用不同的是,在进行FB调用过程中,不需要为输入和输出参数以及元素数据类型的输入/输出参数分

38、配实际参数。这是由传送到被调用FB中的实际参数的运行机制所决定的。参数传递机制参数传递机制如果一个背景DB是为了一个FB而创建,那么块编辑器将自动为块参数(输入,输出,和输入/输出参数)和在FB声明部分声明的静态变量保留存储空间。背景DB中的参数和静态变量地址,恰好就是编辑器所提供的位地址或字节地址,这些参数和静态变量位于FB声明部分的第一栏。在一个使用CALL宏调用的FB背景调用过程中,背景DB通过DI寄存器来打开,且在进行背景的FB处理前,当前输入和输入/输出参数的值被复制到背景DB中。然后切换到FB处理过程。如果此时在FB调用过程内部访问形式参数,那么将导致访问属于背景DB的地址。该访问

39、在内部通过使用寄存器间接寻址,使用DI寄存器和AR2寄存器来实现。FB过程处理之后,形式输出和输入/输出参数的值被复制到CALL过程中所指定的实际参数中。此后,才能继续执行CALL之后的下一条指令。Date:2010-7-5File:PRO2_06E.11SIMATIC S7Siemens AG 2001.All rights reserved.SITRAINTraining forAutomation and Drives在一个在一个FB调用过程中的参数传递调用过程中的参数传递OB1FB10程序执行程序执行CALL FB10,DB16Start:=I 0.4Stop:=I 0.0Motor_

40、on:=Q8.1Speed:=QW120.0 inStartBOOL0.1 inStopBOOL2.0 outMotor_onBOOL4.0 outSpeedINT.A#StartAN#Stop=#Motor_on.BLD3=L24.0TDB OPNDI16TAR2LD20AI0.4=DIX0.0AI0.0=DIX0.1LAR2P#DBX 0.0UCFB10LAR2LD 20ADIX 2.0=Q8.1LDIW 4TQW12TDB BLD41 0 0 1 0 0 1 0.IB01 0 0 1 0 0 1 0QB8DB16.0 1.1123.块参数实际参数块参数实际参数形式参数形式参数.ST-7P

41、RO2Block Calls and Multi-instance ModelPage 12SITRAINTraining forAutomation and Drives复杂数据类型复杂数据类型和功能中一样,复杂数据类型(ARRAY,STRUCT,DATE_AND_TIME和STRING)的地址可完整地传递给一个被调用的功能块。要进行传送,必须在被调用的功能块中,声明一个参数,该参数的数据类型与需要传送的实际参数的数据类型相同。这样的参数只允许使用符号来进行分配。输入和输出参数输入和输出参数对于复杂数据类型的输入和输出参数,实际参数的值所对应的地址在背景DB中创建。在FB的调用过程中,输入参

42、数的实际值将在实际切换到FB的指令部分之前,通过SFC20(BLKMOV)(“Passing by Value”)复制到背景DB中。按照与此前相同的方式,在FB处理完毕后,输出参数的值将从背景DB中复制回实际参数中。结果,在对输入和输出参数进行赋值的过程中,可能会发生相当多的复制操作(处理时间),这些复制操作通过入/出参数进行。输入输入/输出参数输出参数进行复杂数据类型参数的输入/输出时,不发生“按值传递“。在背景数据区域,只为每个输入/输出参数保留6个字节的空间。将指向实际参数的POINTER输入这些字节中(”按引用传递)。注意事项注意事项复杂数据类型的输入和输出参数可以在FB的声明部分进行

43、初始化。而输入/输出参数不行。在进行FB调用的过程中,不需要为复杂数据类型的输入和输出参数赋值,而输入/输出参数则必须赋值。复杂数据类型的输入和输出参数或者输入/输出参数的存储器或者寄存器间址访问的方法的设置,和基本参数的设置有所不同(请参见附录部分)。Date:2010-7-5File:PRO2_06E.12SIMATIC S7Siemens AG 2001.All rights reserved.SITRAINTraining forAutomation and Drives使用复杂数据类型的使用复杂数据类型的FB调用过程调用过程示例:将一个示例:将一个ARRAY传送到一个功能块传送到一个

44、功能块FB17只允许用符号对复杂参数进行相关分配只允许用符号对复杂参数进行相关分配Network 1:CALL FB 17,DB 2Meas_1:=Temperature.CylinderSum_1:=MD20Sum_2:=MD30Meas_2:=Temperature.ShaftDB2 TemperatureST-7PRO2Block Calls and Multi-instance ModelPage 13SITRAINTraining forAutomation and Drives块参数的分配块参数的分配如果在一个FB调用过程中无需为块参数赋值。则不发生数据复制入背景DB或从背景DB向

45、外复制数据的操作。背景DB中的参数将保持上次调用时所保存的数值。例外情况:具有复杂数据类型的输入/输出参数必须在参数列表中进行分配。从从“外部外部”进行进行在一个背景DB中进行参数访问,可以使用与访问全局DB的地址相同的方式。因此参数访问参数访问可以从外部对块参数进行赋值或者取消赋值。这个特点在某些情况下显得尤其有用,如:只有复杂数据类型中的个别元素需要赋值或者取消赋值的情况,或者参数直接与OP上的输入/输出区域直接关联的情况。例外情况:不能从“外部”对复杂数据类型的输入/输出参数进行赋值或者取消赋值。初始化初始化块参数和静态变量可在FB声明中初始化。如果此后需创建背景DB,则将初始化时所指定

46、的值赋给背景DB。例外情况:复杂数据类型的输入/输出参数不能进行初始化。注意事项注意事项如果DI寄存器或者AR2寄存器在FB处理过程中被覆盖,那么在FB内部将不再能够访问该背景数据(输入,输出,输入/输出参数以及静态变量)。UC,CC 指令指令也可以使用独立于RLO的指令UC或者依赖于RLO的指令CC来调用块。只有当被调用的FB没有背景DB的情况下,才能使用UC或者CC指令。也就是说,在声明部分既没有声明块参数,也没有声明静态参数的情况。Date:2010-7-5File:PRO2_06E.13SIMATIC S7Siemens AG 2001.All rights reserved.SITR

47、AINTraining forAutomation and Drives功能块调用的特性功能块调用的特性“按值按值”传递参数(复制数值):传递参数(复制数值):lCALL过程中过程中FB参数的赋值:参数的赋值:无需为某些FB参数赋值可以从“外部”进行赋值和取消赋值例如:直接通过操作面板进行例外:复杂数据类型的输入/输出参数(STRUCT,ARRAY,STRING以及DATE_AND_TIME)l初始化:初始化:FB参数可以在声明部分进行初始化例外:复杂数据类型的输入/输出参数(STRUCT,ARRAY,STRING以及DATE_AND_TIME)l使用使用DI和和AR2寄存器在内部访问形式参数

48、寄存器在内部访问形式参数如果DI或者AR2寄存器被覆盖,将不再允许访问背景数据。l附加调用指令附加调用指令UC和和CC示例:UC FB20或者CC FB20只有当FB没有背景数据时才能使用(参数+静态变量)ST-7PRO2Block Calls and Multi-instance ModelPage 14SITRAINTraining forAutomation and Drives任务任务一个罐装生产线需要自动完成如下任务:生产线可以按照“手动”和“自动”两种方式进行操作。此外,还有对应于接通和关断系统的两种逻辑。接通和关断:该生产线可以通过输入I 0.0(常开瞬动开关)进行接通。然后再使

49、用输入I 0.1(常闭开关)将其关断。当生产线被接通时,输出Q8.1处的LED点亮。选择工作方式:当生产线被接通后,可以选择操作模式当I 0.4=0时,为手动方式:而当I 0.4=1时,为自动方式。选定的模式由输入I 0.5处一个脉冲确定通过,并显示选定的工作方式(手动=Q 8.2,自动=Q 8.3)。当所选择的工作方式发生变化,或者生产线停止时,先前所选择的工作方式将被放弃。传送带处于手动工作方式:手动模式下,当瞬态触点开关I 0.2(Q 20.5)接通时,传送带正向前进;而当I 0.3(Q 20.6)接通后传送带反向后退。传送带处于自动工作方式:在自动工作模式下,驱动电机(Q 20.5)将

50、接通,并在停止开关(I0.1)被按下前,一直保持接通状态,并且在罐装位置的传感器(I16.6)检测到瓶子前一直处于停止状态。罐瓶:当一个瓶子处于罐装位置时(I 16.6=1),罐装工作开始。模拟罐装过程将持续3秒,并且在输出端Q9.0处有指示。罐瓶计数:另外使用一个单独的传感器来计算已经罐装的瓶数。瓶子传感器I16.7负责记录装满的瓶子。从生产线启动开始,罐装满的瓶数被计数,并在数码显示端QW 12处显示。Date:2010-7-5File:PRO2_06E.14SIMATIC S7Siemens AG 2001.All rights reserved.SITRAINTraining forA

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 财经金融

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com