Date:2020/3/28File:PRO2_06E.1SIMATICS7SiemensAG2001.Allrightsreserved.SITRAINTrainingforAutomationandDrives块调用与多重背景模型Date:2020/3/28File:PRO2_06E.2SIMATICS7SiemensAG2001.Allrightsreserved.SITRAINTrainingforAutomationandDrives用于结构化编程的块整个任务的模块化:单个任务在各自块中予以解决参数分配法使得使用更加灵活•示例:钻孔循环程序的钻孔深度为可分配参数块的可再利用性能:块可以按需要随时加以调用限制因素:•不允许访问全局地址空间•只能通过参数列表进行通信OB1电机1FB1阀FB2控制器FB10FC5限制阀复制SFC.....CALLFB1,DB2Start:=I0.0Stop:=I0.1Motor_on:=Q12.0Speed:=QW14..FB1地址声明名称类型0.0inStartBOOL0.1inStopBOOL2.0outMotor_onBOOL4.0outSpeedINT6.0statSpeed_oldINT0.0tempCalc_1INT...A#StartAN#Stop=#Motor_on.DB2OB1Date:2020/3/28File:PRO2_06E.3SIMATICS7SiemensAG2001.Allrightsreserved.SITRAINTrainingforAutomationandDrivesSTEP7块概述属性组织块(OB)-用户程序接口-优先级(0到27)-在局部数据堆栈中指定开始信息块的类型功能块(FB)-参数可分配(可以在调用时分配参数)-具有(收回)存储空间(静态变量)功能(FC)-参数可分配(必须在调用时分配参数)-基本上没有存储空间(只有临时变量)数据块(DB)-结构化的局部数据存储(背景数据块DB)-结构化的全局数据存储(在整个程序中有效)系统功能块(SFB)-FB(具有存储空间),存储在CPU的操作系统中并可由用户调用系统功能(SFC)-FB(无存储空间),存储在CPU的操作系统中并可由用户调用系统数据块(SDB)-用于配置数据和参数的数据块Date:2020/3/28File:PRO2_06E.4SIMATICS7SiemensAG2001.Allrightsreserved.SITRAINTrainingforAutomationandDrives功能及功能块中的参数声明MotorENENOStart地址声明名称类型初始化值...0.0输入StartBOOLFALSE0.1输入StopBOOLTRUE2.0输入SpeedINT02.0输出Motor_onBOOLFALSE8.0输出SetpointINT010.0输入/输出EMER_OFFBOOLFALSE...静态............临时........SetpointEMER_OFFMotor_onStop输入参数输入/输出参数输出参数参数是信息传递的通道输入参数:Caller-Block输出参数:Block-Caller输入/输出参数:Caller-Block参数形成了块的一个“shell”:参数位于代码段与“局部”变量类似参数可以为任何数据类型在调用期间进行数据类型检查例外情况:POINTER,ANY调用接口与编程语言无关PLC编程语言可以混合使用SpeedDate:2020/3/28File:PRO2_06E.5SIMATICS7SiemensAG2001.Allrightsreserved.SITRAINTrainingforAutomationandDrives功能的属性参数可分配的块:具有足够多的输入,输出,输入/输出参数无存储区,也即只有临时变量IEC61131-3标准一致性要求:足够多的输入参数仅有一个输出参数RET_VAL不允许访问全局变量和绝对地址使用同一输入参数提供相同的结果扩展了处理器的指令集程序执行CALLFC10On_1:=I0.1On_2:=I0.2Off:=Q8.0功能FC10输入On_1BOOL输入On_2BOOL输出OffBOOL......A#On_1A#On_2=#Off...Date:2020/3/28File:PRO2_06E.6SIMATICS7SiemensAG2001.Allrightsreserved.SITRAINTrainingforAutomationandDrives基本数据类型传送机理OB1功能FC10程序执行CALLFC10On_1:=I0.1On_2:=I0.2Off:=Q8.0输入On_1BOOL输入On_2BOOL输出OffBOOL......A#On_1A#On_2=#Off...OB1BLD1=L20.0UCFC10P#I0.1P#I0.2P#Q8.0BLD210010010...IB0基本类型实际参数位于于:位存储地址区域过程映像调用的局部堆栈块参数实际参数形式参数Date:2020/3/28File:PRO2_06E.7SIMATICS7SiemensAG2001.Allrightsreserved.SITRAINTrainingforAutomationandDrives复杂数据类型的功能调用示例:向功能传递一个ARRAYDB5TemperatureFC21只能通过符号来进行参数的赋值Network(段)1:在功能FC21里,声明一个数组Mes_ValCALLFC21Mes_Val:=Temperature.sequenceDate:2020/3/28File:PRO2_06E.8SIMATICS7SiemensAG2001.Allrightsreserved.SITRAINTrainingforAutomationandDrives调用(主调)功能的特点CALL指令指令为宏指令寄存器内容可能会被覆盖掉,甚至是DB寄存器请注意B堆栈中内容的解释调用之后,可能会打开另一个DBCALL指令的处理时间取决于实际参数的数目和存储单元位置CALL指令确保了块参数被正确地赋予当前数据示例:CALLFC10On_1:=I0.1On_2:=I0.2Off:=Q8.0调用指令UC和CC不依赖于RLO的块调用(UC)或取决于RLO的块调用示例:UCFC20或CCFC20当FC没有参数的时候,才可使用这些指令Date:2020/3/28File:PRO2_06E.9SIMATICS7SiemensAG2001.Allrightsreserved.SITRAINTrainingforAutomationandDrivesFB5输入StartBOOL输入StopBOOL输出Motor_onBOOL输出SpeedINT静态...临时......A#StartAN#Stop=#Motor_on...功能块的属性属于可分配参数的块:IEC61131-3标准一致性块有足够满足需要的输入,输出,输入/输出参数有存储区域,即不仅有临时变量而且还有静态变量使用本身数据区域进行调用(创建背景)“数据封装”应用:定时器和计数器功能使用内部状态控制过程设备锅炉电机,阀,等等。CALLFB5,DB16Start:=I0.0Stop:=I0.1Motor_on:=Q8.0Speed:=QW120.0StartBOOL0.1StopBOOL2.0Motor_onBOOL4.0SpeedINTDB16电机Date:2020/3/28File:PRO2_06E.10SIMATICS7SiemensAG2001.Allrightsreserved.SITRAINTrainingforAutomationandDrives构建功能块实例Drive_1FBx+DByDrive_1状态数据控制算法OB,FB或FCCALLFBx,DBy......使用背景DB的FB调用CALL#Motor_1.CALL#Motor_2DBx...statMotor_1FBxstatMotor_2FBxDrive_2状态数据Drive_3状态数据FBxFB实例控制算法FBDrive_2Drive_3FB内的声明(多重背景)Date:2020/3/28File:PRO2_06E.11SIMATICS7SiemensAG2001.Allrightsreserved.SITRAINTrainingforAutomationandDrives在一个FB调用过程中的参数传递OB1FB10程序执行CALLFB10,DB16Start:=I0.4Stop:=I0.0Motor_on:=Q8.1Speed:=QW120.0inStartBOOL0.1inStopBOOL2.0outMotor_onBOOL4.0outSpeedINT......A#StartAN#Stop=#Motor_on...BLD3=L24.0TDBOPNDI16TAR2LD20AI0.4=DIX0.0AI0.0=DIX0.1LAR2P#DBX0.0UCFB10LAR2LD20ADIX2.0=Q8.1LDIW4TQW12TDBBLD410010010...IB010010010QB8DB16............01..............................1123...块参数实际参数形式参数...Date:2020/3/28File:PRO2_06E.12SIMATICS7SiemensAG2001.Allrightsreserved.SITRAINTrainingforAutomationandDrives使用复杂数据类型的FB调用过程示例:将一个ARRAY传送到一个功能块FB17只允许用符号对复杂参数进行相关分配Network1:CALLFB17,DB2Meas_1:=Temperature.CylinderSum_1:=MD20Sum_2:=MD30Meas_2:=Temperature.ShaftDB2TemperatureDate:2020/3/28File:PRO2_06E.13SIMATICS7SiemensAG2001.Allrightsreserved.SITRAINTrainingforAutomationandDrives功能块调用的特性“按值”传递参数(复制数值):CALL过程中FB参数的赋值:无需为某些FB参数赋值可以从“外部”进行赋值和取消赋值例如:直接通过操作面板进行例外:复杂数据类型的输入/输出参数(STRUCT,ARRAY,STRING以及DATE_AND_TIME)初始化:FB参数可以在声明部分进行初始化例外:复杂数据类型的输入/输出参数(STRUCT,ARRAY,STRING以及DATE_AND_TIME)使用DI和AR2寄存器在内部访问形式参数如果DI或者AR2寄存器被覆盖,将不再允许访问背景数据。附加调用指令UC和CC示例:UCFB20或者CCFB20只有当FB没有背景数据时才能使用(参数+静态变量)Date:2020/3/28File:PRO2_06E.14SIMATICS7SiemensAG2001.Allrightsreserved.SITRAINTrainingforAutomationandDrives主罐瓶子传感器I16.6瓶子传感器I16.5瓶子传感器I16.7Q9.0漏斗练习6:罐装生产线中的传送带模型Q20.5传送带正转Q20.6传送带反转Date:2020/3/28File:PRO2_06E.15SIMATICS7SiemensAG2001.Allrightsreserved.SITRAINTrainingforAutomationandDrives练习6.1a:罐装生产线–工作模式选择生产线ON/OFFI0.0:Start(N