编辑: kr9梯 2019-12-26
块调用与多重背景模型 用于结构化编程的块 整个任务的 模块化:单个任务在各自块中予以解决 参数分配法使得 使用更加灵活示例:钻孔循环程序的钻孔深度为可分配参数块的可再利用性能:块可以按需要随时 加以调用 限制因素:不允许访问 全局地址空间只能通过参数列表 进行通信 OB

1 电机1 FB1 阀FB2 控制器 FB10 FC

5 限制 阀 复制 SFC .

. . ..CALL FB1, DB2 Start:=I 0.0 Stop:=I 0.1 Motor_on:=Q12.0 Speed:=QW14.. FB

1 地址声明名称类型0.0inStartBOOL0.1inStopBOOL2.0outMotor_onBOOL4.0outSpeedINT6.0statSpeed_oldINT0.0tempCalc_1INT...A #StartAN #Stop=#Motor_on. DB

2 OB

1 STEP

7 块概述 属性 组织块(OB) - 用户程序接口- 优先级(0到27)- 在局部数据堆栈中指定开始信息 块的类型 功能块(FB) - 参数可分配(可以在调用时分配参数)- 具有(收回)存储空间(静态变量) 功能(FC) - 参数可分配(必须在调用时分配参数)- 基本上没有存储空间(只有临时变量) 数据块(DB) - 结构化的局部数据存储(背景数据块DB)- 结构化的全局数据存储(在整个程序中有效) 系统功能块(SFB) - FB(具有存储空间),存储在CPU的操作系统中并可由用户调用 系统功能(SFC) - FB(无存储空间),存储在CPU的操作系统中并可由用户调用 系统数据块(SDB) - 用于配置数据和参数的数据块 功能及功能块中的参数声明 Motor EN ENO Start 地址声明名称类型初始化值...0.0输入StartBOOLFALSE0.1输入StopBOOLTRUE2.0输入SpeedINT02.0输出Motor_onBOOLFALSE8.0输出SetpointINT010.0输入/输出 EMER_OFFBOOLFALSE...静态.临时........ Setpoint EMER_OFF Motor_on Stop 输入参数 输入/输出参数 输出参数 参数是信息传递的通道输入参数:Caller ->

Block输出参数: Block ->

Caller输入/输出参数: Caller Block参数形成了块的一个 shell : 参数位于代码段 与 局部 变量类似 参数可以为任何数据类型在调用期间进行数据类型检查例外情况:POINTER,ANY调用接口与编程语言无关PLC编程语言可以混合使用 Speed 功能的属性 参数可分配的块:具有足够多的输入,输出,输入/输出参数无存储区,也即只有临时变量IEC 61131-3标准一致性要求:足够多的输入参数仅有一个输出参数RET_VAL不允许访问全局变量和绝对地址使用同一输入参数提供相同的结果扩展了处理器的指令集 程序执行 CALL FC10On_1:=I 0.1On_2:= I 0.2Off:= Q8.0 功能FC10 输入On_1BOOL输入On_2BOOL输出OffBOOL... ...A #On_1A #On_2= #Off... 基本数据类型传送机理 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... OB1 BLD 1=L 20.0UC FC 10P#I0.1P#I 0.2P#Q 8.0BLD2

1 0

0 1

0 0

1 0 ... IB0 基本类型实际参数位于于:位存储地址区域过程映像调用的局部堆栈 块参数 实际参数 形式参数 复杂数据类型的功能调用 示例:向功能传递一个ARRAY DB5 Temperature FC21 只能通过符号来进行参数的赋值 Network(段) 1: 在功能FC21里,声明一个数组Mes_ValCALL FC

21 Mes_Val:= Temperature .sequence 调用(主调)功能的特点 CALL指令指令为宏指令寄存器内容可能会被覆盖掉,甚至是DB寄存器请注意B堆栈中内容的解释调用之后,可能会打开另一个DBCALL指令的处理时间取决于实际参数的数目和存储单元位置CALL指令确保了块参数被正确地赋予当前数据示例:CALL FC10On_1:= I 0.1On_2:= I 0.2Off:= Q8.0调用指令UC和CC不依赖于RLO的块调用(UC)或取决于RLO的块调用示例:UC FC20或CC FC20当FC没有参数的时候,才可使用这些指令 FB

5 输入StartBOOL输入StopBOOL输出Motor_onBOOL输出SpeedINT静态...临时... ...A #StartAN #Stop= #Motor_on... 功能块的属性 属于可分配参数的块:IEC 61131-3标准一致性块有足够满足需要的输入,输出,输入/输出参数有存储区域,即不仅有临时变量而且还有静态变量使用本身数据区域进行调用(创建背景) 数据封装 应用:定时器和计数器功能使用内部状态控制过程设备锅炉电机,阀,等等. CALL FB5, DB16 Start:=I 0.0 Stop:=I 0.1 Motor_on:=Q8.0 Speed:=QW12 0.0StartBOOL0.1StopBOOL2.0Motor_onBOOL4.0SpeedINT DB

16 电机 构建功能块实例 Drive_1 FBx + DBy Drive_1 状态数据 控制算法 OB, FB或FC CALL FBx, DBy ... ... 使用背景DB的FB调用 CALL #Motor_1.CALL #Motor_2 DBx ...statMotor_1FBxstatMotor_2FBx Drive_2 状态数据 Drive_3 状态数据 FBx FB实例 控制算法 FB Drive_2 Drive_3 FB内的声明 (多重背景) 在一个FB调用过程中的参数传递 OB1 FB10 程序执行 CALL FB10, DB16Start:=I 0.4Stop:=I 0.0Motor_on:=Q8.1Speed:=QW12 0.0inStartBOOL0.1inStopBOOL2.0outMotor_onBOOL4.0outSpeedINT... ...A #StartAN #Stop= #Motor_on... BLD3=L24.0TDB OPNDI16TAR2LD20AI0.4=DIX0.0AI0.0=DIX0.1LAR2P#DBX 0.0UCFB10LAR2LD 20ADIX 2.0=Q8.1LDIW4TQW12TDB BLD4

1 0

0 1

0 0

1 0 ... IB0

1 0

0 1

0 0

1 0 QB8 DB16 .. .. .. .. .. ..

0 1 .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..

1 1

2 3 . . . 块参数 实际参数 形式参数 . . . 使用复杂数据类型的FB调用过程 示例:将一个ARRAY传送到一个功能块 FB17 只允许用符号对复杂参数进行相关分配 Network 1: CALL FB 17, DB

2 Meas_1:= Temperature .Cylinder Sum_1:=MD20 Sum_2:=MD30 Meas_2:= Temperature .Shaft DB2 Temperature 功能块调用的特性 按值 传递参数(复制数值):CALL过程中FB参数的赋值:无需为某些FB参数赋值可以从 外部 进行赋值和取消赋值 例如:直接通过操作面板进行例外:复杂数据类型的输入/输出参数(STRUCT,ARRAY,STRING以及 DATE_AND_TIME) 初始化:FB参数可以在声明部分进行初始化例外:复杂数据类型的输入/输出参数(STRUCT,ARRAY,STRING以及 DATE_AND_TIME)使用DI和AR2寄存器在内部访问形式参数如果DI或者AR2寄存器被覆盖,将不再允许访问背景数据.附加调用指令UC和CC示例:UC FB20或者CC FB20只有当FB没有背景数据时才能使用(参数+静态变量) 主罐 瓶子传感器I 16.6 瓶子传感器I 16.5 瓶子传感器I 16.7 Q 9.0 漏斗 练习6:罐装生产线中的传送带模型 Q 20.5 传送带正转 Q 20.6 传送带反转 练习6.1a: 罐装生产线 C 工作模式选择 生产线 ON/OFFI 0.0: Start (NO, 瞬动开关)I 0.1: Stop (NC)Q8.1: Plant_on手动/自动方式I 0.4:自动/手动I 0.5:确定模式Q8.2: 选定手动方式A8.3: 选定自动方式 FB15: 模式选择 ENStart Plant_onStop OM_ManAuto_Man OM_AutoOM_activateENO DB15 . . . I 0.0I 0.1I 0.4I 0.5 Q8.1Q8.2Q8.3 练习6.1b:罐装生产线 C 传送带 手动方式I 0.5: 正向点动I 0.6: 反向点动Q20.5: 传送带正向运转Q20.6:传送带反向运转自动方式I 16.6:传感器:罐装位置I 16.7:传感器:计算瓶数Q9.0: 罐装启动QW12:: 满瓶显示 FB16: 传送带控制 ENOM_Man OM_AutoConv_forJog_for Conv_backJog_backFilling_activeSensor_fillFull_bottlesSensor_fullENO Q20.5Q20.6Q9.0QW12 DB16 . . . Q8.2Q8.3I 0.2I 0.3I 16.6I 16.7 多重背景模型的结构 FB10 钻床数据 FB10的背景DB CALL Drill.CALL Motor_1.CALL Motor_2 DB10 ...statDrillFB1statMotor_1FB2statMotor_2FB2 Motor_1的数据 Motor_2的数据 FB1 FB2 钻孔算法 马达控制 例如 OB1 .CALL FB10,DB10. 使用多重背景模型实现面向对象的编程 Press_2 Press_1 传送 示例:冲压生产线 技术划分 通过FB背景,对程序进行技术划分 FB: Press line FB: #Transport FB: #Press_1 冲压头防护装置 FB: #Punch FB: #Guard FB: #Press_2 FB: #Punch FB: #Guard 用STEP 7来实现一个 冲压生产线 FB10: Press line FB10的背景DB CALL #Press_1.CALL #Press_2.CALL #Transport DB10 ...statPress_1FB1statPress_2FB1statTransportFB2... FB1: Press ...statPunchFB4statGuardFB5... CALL #Punch.CALL #Guard ...statPunchFB4statGuardFB5... CALL #Punch.CALL #Guard ...... FB2: Transport FB4: Punch FB5: Guard CALL FB10, DB10 OB1 FB1: Press FB4: Punch FB5: Guard Press_1的数据 传送带的数据 Press_1. Guard Press_2. Punch Press_2. Guard Press_2的数据 FB10的数据 Press_1. Punch 多重背景模型的属性 多重背景模型的优点:多个实例只需要 一个 DB在为各个实例创建 private 数据区时,无需任何额外的管理工作多重背景模型使得 面向对象的编程风格 成为可能(通过 集合 的方式实现可重用性)最大嵌套深度为8级FB的必备条件:在FB内不允许直接访问过程信号(I,Q)只有使用FB参数访问过程信号,或者与其它过程单元进行通讯FB只能使用静态变量来记忆其过程状态,而不使用全局DB或者位存储器. 注意事项:背景数据还可以从 外部 进行访问 例如在OB1中: L Press line .Press_2.Punch. 练习 6.2:生产线中的传送带模型 H4 LED 接近开关 INI1 , INI2 , INI3 光栅 LB1 S4 确认开关 工位的处理顺序工件的处理成形处理向传送带上放置工件等待原材料工件从传送带中取原材料工件 传送带的处理顺序等待成型的工件传送到总装线总装,插入原材料工件传送到工作站 S1 , S2 , S3 确认开关 H1 , H2 , H3 LED 练习 6.2a:一个工作站的程序结构 程序的技术划分 传送带 工作站1 工作站2 工作站3 OB1 CALL FB1, DB1......CALL FB2, DB2 FB1: Station Initial LEDProxy_switch Transp_reqAcknowledge Clock_bit_qClock_bit_sConv_busy DB1 M10.1 S1 INI1 I 0.0 H1 DB2 FB2: Transport InitialLEDL_BarrierConv_rightAcknowledgeConv_leftTransp_reqClock_bit H4 K1_CONVR K2_CONVL I 0.0 LB1 S4 M10.1 M10.3 FB1 Station 的工作原理 FB1: Station Take_piece_from_conv:LED 快速闪烁 Piece_finished:LED 慢速闪烁 Process_pieceLED 连续点亮 IN 参数:数据类型:InitialBOOLProxy_switchBOOLAcknowledgeBOOLClock_bit_qBOOLClock_bit_sBOOLOUT 参数:LEDBOOLTransp_reqBOOLI/O 参数:Conv_busyBOOL静态变量:State STRUCTProcess_pieceBOOLPiece_finishedBOOLPlace_part_on_convBOOLWait_for_pieceBOOLTake_piece_from_con........

下载(注:源文件不在本站服务器,都将跳转到源网站下载)
备用下载
发帖评论
相关话题
发布一个新话题