位指令 I0.0 I0.1 Q 8.0 Q 8.1 I 1.0 ( MCR< ) (MCRA) Q 8.0 I 0.0 I 1.1 ( ) SR S Q R I1.2 I1.3 M0.0 Q 9.3 目录 页 循环程序执行 ….................................................................................................................................... 2 过程映象 ............................................................................................................................................... 3 程序结构 .............................................................................................................................................. 4 程序块类型 ......................................................................................................................................... 5 常开和常闭触点,传感器和符号.............................................................................................................. 6 练习 .................................................................................................................................................... 7 S7-300模块的编址………........................................................................................................................ 8 多层组态中的DI/DO寻址......................................................................................................................... 9 基本逻辑指令:与,或 ....................................................................................................................... 10 位逻辑指令:异或 (XOR) ................................................................................................................... 11 逻辑操作结果,首次检查:举例….......................................................................................................... 12 赋值、置位和复位.................................................................................................................................. 13 触发器的置位/复位 ............................................................................................................................... 14 连接器 ............................................................................................................................................. 15 影响RLO的指令 …………............................................................................................ ........................ 16 主控继电器功能 ................................................................................................................................... 17 无条件跳转 (不依赖于RLO) .................................................................................................................... 18 有条件跳转 (依赖于RLO) .................................................................................................................... 19 RLO 边沿检测 …........................................................................................................... ...................... 20 信号边沿检测 ….................................................................................................................................. 21 练习:瓶装线编程 (模式选择) …………. ............................................................................................. 22
从模块读信号状态,并保存到过程映象区 (PII) 循环程序执行 启动块 (OB 100) 上电后执行一次 循环监视时间的开始 输入 模块 CPU 循环 从模块读信号状态,并保存到过程映象区 (PII) 执行OB1中的程序 (循环执行) 事件 (日期时间中断、硬件中断等) 调用其他 OB,FB,FC A I 0.1 A I 0.2 = Q4.0 块OB 1 输出 模块 启动 当PLC得电或从STOP 切换到RUN模式时,CPU执行一次全启动 (使用OB100)。 在全启动期间,操作系统清除非保持位存储器、定时器和计数器,删除中断堆栈 和块堆栈,复位所有保存的硬件中断,并启动扫描循环监视时间。 扫描循环 CPU的循环操作包括三个主要部分,见上图: • CPU 检查输入信号的状态并刷新过程影响输入表。 • 执行用户程序 • 把过程输出映象输出表写到输出模块 把过程映象输出表(PIQ) 写到输出模块
过程映象 PII PIQ 用户程序 字节 0 字节 1 字节 2 : CPU 存储器区 字节 0 字节 1 字节 2 : 1 : A I 2.0 1 简介 在每个扫描周期, CPU检查输入和输出的状态。 有特定的存储器区保存模块的数据:PII 和 PIQ。在处理程序时访问这些寄存器。 PII 过程映象输入表建立在CPU存储器区,所有输入模块的信号状态存放在这里。 PIQ 过程映象输出表包含程序执行的结果值,在扫描的结束传送到实际输出模块上。 用户程序 在用户程序中检查输入时,例如:A I 2.0,使用PII的状态。这样就保证在一个扫描周期内使用相同的信号状态。 = Q 4.3 : CPU 存储器区
程序结构 线性化程序 分块程序 结构化程序 所有的指令都放在一个块中 (通常是组织块OB 1) Recipe A Recipe B Mixer Outlet OB 1 Pump Outlet OB 1 线性编程 整个程序写在一个连续的程序块中,这种方法和PLC所代替的硬接线继电器控制类似,CPU 逐条地处理指令。 分块编程 程序被分成一些块,每块包含处理一部分任务的程序。在一个块中可以进一步分解成段。可以为相同类型的段生成段模板。组织块 OB 1 包含按顺序调用其他块的指令。 结构化编程 结构化程序包含带参数的块,即所谓的可分配参数的块。这些块以通用的方式进行设计。当调用可分配参数的块时,给出当前参数 (输入和输出的确切地址和参数值)。 例如: • “泵控制块”包含泵控制的指令 • 负责特殊泵控制的程序块称为“泵控制块”,将要控制泵的参数传递给它。 • 当“泵控制块”执行结束时,程序返回调用的块 (如:OB 1),继续执行调用 前的程序。
程序块类型 FB SFB FC FB FB SFC 操作系统 OB 循环 定时 过程 故障 组织块 阴影: OB = 组织块 用户块 用户块包括程序代码和用户数据。 在结构化程序中,一些块循环调用处理,一些块需要时才调用。 系统块 系统块是在CPU操作系统中预先定义好的功能和功能块。这些块不占用用户程序空间。 用户程序调用系统块,在整个系统中这些块具有相同的接口、相同的标示和相同的号。用户程序可以容易地转换到不同的CPU或PLC。 OB = 组织块 FB = 功能块 FC = 功能 SFB = 系统功能块 SFC = 系统功能 FB 带背景数据块 阴影:
常开和常闭触点,传感器和符号 PLC程序中的解释 过程 动作 不动作 传感器 是 ... 输入端 有电压 吗? 输入端 的信号 状态 检查信号状态“1” 检查信号状态“0” 传感器 是 ... 符号 / 指令 检查 结果 符号 / 指令 检查 结果 有 1 Yes 1 No 常开 触点 LAD: 常开触点 LAD: 常闭触点 无 No Yes 1 & FBD: & FBD: 常闭 触点 动作 无 No Yes 1 过程 在一个过程中,传感器的常开和常闭触点和安全规章有关系。 限位开关和安全开关总是采用常闭触点,所以,如果传感器回路出现断线,不会造成危险事件。 出于同样的原因,常闭触点也用于关闭机械。 符号 在梯形图中,“常开触点”的符号检查信号的“1”状态,“常闭触点”的符号检查信号的“0”状态。 过程信号的“1”状态是由常开触点提供,或是由常闭触点提供,是没有区别。 举例 如果机器中的常闭触点不动作,其“常开触点”符号的检查结果是“1”。 不动作 有 1 Yes 1 No A I x.y STL: AN I x.y STL:
练习 LAD FDB STL 任务:当 S1 动作和S2 不动作时,在所有三个例子中灯应该点亮! 硬件 I1.0 S1 I1.1 S2 Q 4.0 可编程控制器 I 1.0 I 1.1 Q 4.0 可编程控制器 I 1.0 I 1.1 Q 4.0 可编程控制器 Light Light Light 软件 I 1.0 I 1.1 Q 4.0 I1.0 I1.1 Q 4.0 I1.0 I1.1 Q 4.0 LAD Q 4.0 I 1.0 I1.1 & Q 4.0 I1.0 I1.1 & Q 4.0 I1.0 I1.1 & FDB 练习 完成上面的程序,可以得到如下的功能:当开关S1动作而S2不动作时,在三种情况下指示灯都亮。 注意 ! 根据它们是用在硬件回路中还是作为软件中的符号,“常开触点”和“常闭触点”有不同的含义。 ....... I1.0 ....... I1.1 ....... Q 4.0 ....... I1.0 ....... I1.1 ....... Q 4.0 ....... I1.0 ....... I1.1 ....... Q 4.0 STL
S7-300 模块的编址 1 2 4 5 6 7 8 9 10 槽号 PS CPU SM SM SM SM SM SM SM 模块 1 2 4 5 6 7 8 9 10 槽号 PS CPU SM SM SM SM SM SM SM 模块 地址 0.0 地址 0.7 地址 1.0 地址 1.7 插槽号 在S7-300中,机架上的插槽号简化了模块编址。模块的第一个地址由机架上的模块地址决定。 槽 1 电源,这是缺省的第一个槽位。 电源模块不是必须的,S7-300也可以直接用24V 供电。 槽 2 CPU的插槽 槽 3 当采用扩展机架进行多层组态时,为接口模板(IM)保留。即使不安装IM,也必须保留这个位置用于寻址。 插入一个DM370占位模块可以物理地保留该槽位。 (例如:以后安装IM) 槽 4-11 槽位4 是用于 I/O 模块、通讯处理器(CP)或功能模块(FM)的第一个槽位。 编址举例: • 在4号槽位插入一个DI 模块,它的起始地址就是0。 • 在5号槽位上的DO模块上的顶端 LED 指示灯就是Q4.0。 注 为每个槽位保留4个字节, 当使用16通道 DI / DO 模块时, 每个槽位就会丢失两个字节。
多层组态中的 DI/DO 编址 机架 3 96.0 to 99.7 100.0 103.7 104.0 107.7 108.0 111.7 112.0 115.7 116.0 119.7 120.0 123.7 124.0 127.7 IM (接受) PS 机架 2 64.0 to 67.7 68.0 70.7 72.0 75.7 76.0 79.7 80.0 83.7 84.0 87.7 88.0 91.7 92.0 95.7 IM (接受) PS 机架 1 IM (接受) 32.0 to 35.7 36.0 39.7 44.0 47.7 48.0 51.7 52.0 55.7 56.0 59.7 60.0 63.7 40.0 43.7 PS 多层组态 在多层组态中也使用固定编址。 例如: • Q7.7 是0号机架5号槽位上32通道DO 模块的最后一个通道 • IB105 是3号机架6号槽位DI 模块上第2个字节 • QW60 是1号机架11号槽位DO 模块上前2 个字节 • ID80 是2号机架8号槽位32通道DI 模块上所有4个字节 PS CPU IM (发送) 0.0 to 3.7 4.0 to 7.7 8.0 to 11.7 12.0 to 15.7 16.0 to 19.7 20.0 to 23.7 24.0 to 27.7 28.0 to 31.7 机架 槽 1 2 3 4 5 6 7 8 9 10 11
基本逻辑指令:与, 或 LAD FBD STL L1 (Q 4.0) S1 (I 0.0) S2 (I 0.1) L2 (Q 4.1) 电路图 I0.0 I0.1 Q 4.0 Q 4.1 LAD = Q 4.0 & I 0.0 I 0.1 Q 4.1 FBD A I0.0 A I0.1 = Q 4.0 = Q 4.1 STL AND L3 (Q 4.2) S3 (I 0.2) S4 (I 0.3) I0.2 I0.3 Q 4.2 I 0.2 I 0.3 >=1 = Q 4.2 O I0.2 O I0.3 = Q 4.2 逻辑表 AND I 0.0 I 0.1 Q 4.0 0 0 0 1 1 0 1 1 OR I 0.2 I 0.3 Q 4.2 0 0 0 1 1 0 1 1 OR
基本逻辑指令:异或 (XOR) LAD FBD STL A I0.4 I 0.4 & AN I0.5 I0.4 I0.5 O Q 4.0 >=1 = Q 4.0 & I 0.4 I 0.5 FBD STL A I0.4 AN I0.5 O AN I0.4 A I0.5 = Q4.0 I 0.4 I 0.5 XOR = Q4.0 X I0.4 X I0.5 = Q4.0 逻辑表 XOR I 0.4 I 0.5 Q 4.0 0 0 0 1 1 0 1 1 规则 异或操作(XOR)满足下面的规则:当两个信号中仅有一个满足时,输出信号状态才是“1”。(两个中有一个时才是“1”) 注意 ! 这个规则不能使用于多个地址的异或逻辑操作! (n个中有一个时才是“1”) 三个输入的异或指令,旧的RLO 和另一个输入作异或运算。
逻辑操作结果,首次检查,举例 1 1 例 1 信号状态 检查结果 逻辑操作结果 首次检查 例 2 信号状态 检查结果 逻辑操作结果 首次检查 例 3 信号状态 检查结果 逻辑操作结果 首次检查 A I 1.0 AN I 1.1 A M 4.0 = Q 4.0 = Q 4.1 A I 2.0 信号状态 逻辑操作由系列的指令组成,检查信号的状态和指令,设置Q,M,T,C 或D。这些信号包括输入(I)、输出(Q)、位存储器(M)、定时器(T)、计数器(C)或数据位(D)。 检查结果 当程序执行时,得到检查结果。如果满足检查条件,检查结果就是“1”,如果不满足,就是“0”。 首次检查 首次检查结果存放在逻辑操作结果(RLO)中。 逻辑操作结果 当执行下面的检查指令时, 逻辑操作结果 (RLO) 和检查结果运算, 得到新的RLO。 当执行逻辑操作的最后一个检查指令时,RLO 保持不变。后面跟着使用相同 RLO的一些指令。 注 首次检查的结果的存放和逻辑操作无关。所以,语句表程序中首次检查是AND或者是OR都没有区别。要使程序转换成其他的编程语言,应该使用恰当的指令。
赋值,置位,复位 ( ) (S) (R) LAD FBD STL 赋值 置位 复位 A I 1.0 A I 1.1 = Q 4.0 ( ) Q 4.0 I 1.0 I 1.1 & = A I 1.0 A I 1.1 = Q 4.0 赋值 (S) Q 4.1 I 1.2 I 1.3 & S A I 1.2 A I 1.3 S Q 4.1 置位 (R) Q 4.1 I 1.4 >=1 R I 1.5 O I 1.4 O I 1.5 R Q 4.1 复位 赋值 赋值指令把RLO 传送到指定的地址 (Q, M, D),当RLO 变化时,相应地址的信号状态也变化。 置位 如果 RLO=“1”,指定的地址被设定为状态“1”,而且一直保持到它被另一个指令复位为止。 复位 如果RLO= “1”,指定的地址被复位为状态“0”,而且一直保持到它被另一个指令置位为止。
触发器的置位 / 复位 LAD FBD STL SR R Q S I1.2 I1.3 M0.0 = Q5.3 复位 优先 Q 5.3 A I 1.2 S M 0.0 A I 1.3 R M 0.0 A M 0.0 = Q 5.3 RS S Q R I1.3 I1.2 M0.0 = Q5.3 置位 优先 Q 5.3 A I 1.3 R M 0.0 A I 1.2 S M 0.0 A M 0.0 = Q 5.3 触发器 触发器有置位输入和复位输入,根据输入端的RLO=1,对存储器位置位或复位。 如果两个输入端同时出现RLO=1,根据优先级决定。 优先级 在LAD 和 FBD 中,有置位优先和复位优先有不同的符号。 在STL中,最后编写的指令具有高优先级。 注 如果用置位指令把输出置位,当CPU全启动时它被复位。 在上面的例中,如果 M 0.0 声明保持,当 CPU 全启动时,它就一直保持置位状态,被启动复位的Q5.3 会再次被赋值“1”。
连接器 ( ) LAD A I 1.0 A I 1.1 = M 0.0 A M 0.0 A I 2.0 A I 2.1 NOT ( ) M0.0 I 2.0 I 2.1 M 1.1 NOT Q 4.0 A I 1.0 A I 1.1 = M 0.0 A M 0.0 A I 2.0 A I 2.1 NOT = M 1.1 A M 1.1 = Q 4.0 STL I 1.0 I 1.1 & I 2.0 I 2.1 M0.0 M1.1 Q 4.0 = FBD 连接器 连接器是中间赋值元件,它把当前RLO 保存到指定地址。 当它和其他元件串联时,“连接器”指令和触点一样插入。 连接器不能: • 直接连接到电源母线 • 直接跟一个分支 • 用在分支结尾 可以用“NOT”元件对连接器进行取反操作。
影响RLO的指令 LAD FBD STL A I0.0 A I0.1 NOT = Q4.0 ( ) ( SAVE ) & A I1.6 ( ) NOT 不存在 CLR 不存在 SET I1.6 ( SAVE ) SAVE & A I1.6 = Q4.1 BR ( ) A BR = Q 4.1 NOT 把RLO取反。 CLR 把RLO复位 (目前仅用在STL中!). SET 把RLO 置位(目前仅用在STL中!). SAVE 把RLO保存到状态寄存器中的“BR”。 BR 用来重新检查保存的RLO。 Status word 15 8 1 BR RLO
主控继电器功能 ( MCRA ) ( MCR< ) ( ) ( MCR> ) ( MCRD ) LAD ( S ) & FBD I0.7 ( ) Q4.5 M0.6 I0.4 ( S ) Q8.0 M69.0 I 2.7 M5.5 ( MCR< ) ( MCRD ) ( MCR> ) I0.0 MCR< & A0.0 MCRA S A0.4 Q8.0 MCR> = M5.5 M69.0 I 2.7 MCRD A0.7 Q4.5 M0.6 FBD MCRA // 激活 A I0.0 // 允许 MCR MCR( // 打开 MCR A I0.7 // NO 触点 = Q4.5 // 输出线圈 = M0.6 //输出线圈 A I0.4 // NO 触点 S Q8.0 // 置位输出 )MCR // 关闭 MCR AN M5.5 // 紧急触点 AN I 2.7 // 紧急触点 = M69.0 // 输出线圈 MCRD // 取消 STL MCR 主控继电器是一个用来接通或断开电流的逻辑主开关。中断的路径代表写入零值而不是计算值或不修改当前存储器值。 举例 如果MCR 条件不满足: • “0” 分配给输出线圈 • “置位线圈”和“复位线圈”指令不改变当前值 • “MOVE”指令把数0传到指定目的地址 MCRA MCRA 指令启动主控继电器功能。 MCR( “MCR(”打开一个MCR 区,并触发一个把RLO 传到MCR堆栈的指令,堆栈有8 (对于STL) 级。这就是说,在“MCRA”和 “MCRD”指令之间最多有8级嵌套。 )MCR “)MCR”指令结束一个 MCR 区。 (对于STL) MCRD “Deactivate Master Control Relay”指令取消MCR 功能。不再打开MCR 区,直到另一个“MCRA”指令起作用。
无条件跳转 (不依赖于 RLO) ( JMP ) ( ) LAD .... M5.5 I 2.7 M69.0 FBD NEW1 Network 1 Network 2 : Network x ( ) M69.0 I 2.7 M5.5 LAD NEW1 JMP .... & M5.5 I 2.7 = M69.0 Network 1 Network 2 : Network x FBD Network 1 JU NEW1 Network 2 : Network x NEW1: AN M5.5 AN I 2.7 = M69.0 STL 跳转指令 在LAD/FBD中,在线圈符号上面输入作为标示的标号或符号。在STL中,它跟在跳转指令后面。 标号最多有4个字符,第一个字符必须使用字母或“_”。 编号标志着程序继续执行的地点,在跳转指令和标号之间的任何指令和段都不执行。 可以向前或向后跳转。 跳转指令和跳转目的必须在同一个块中 (最大跳转长度 = 64k字节)。在一个块中跳转目的只能出现一次。 跳转指令可以用在FB、FC和OB中。 插入标号 在LAD 和FBD中,利用程序元件浏览器插入一个标号: Program Elements -> Logic Control / Jump -> Label. 在STL中,在指令的左面输入标号,程序从这里继续执行。 JMP 无条件跳转指令使程序跳转到一个标号,而和RLO无关。
条件跳转 (依赖于 RLO) (JMP) (JMPN) LAD FBD STL A I0.0 A I0.1 JC NEW1 NEW1 & I0.0 I0.1 JMP (JMP) 如果RLO=1 就跳转 A I0.2 A I0.3 JCN NEW2 JMPN I0.2 I0.3 NEW2 I 0.2 I 0.3 如果RLO=0 就跳转 (JMPN) & JC 只有当RLO是“1”时,条件跳转“JC”才执行。 如果RLO 是“0”,不执行跳转,RLO 设定为“1”,继续执行程序下一条指令。 JCN 只有当RLO是“0”时,条件跳转“JCN”才执行。 如果RLO 是“1”,不执行跳转,继续执行程序下一条指令。 注 STL 提供其他的跳转指令,这些指令在其他的编程课中讨论。
RLO - 边沿检测 P N LAD P = & N FBD STL I1.0 I1.1 M1.0 M8.0 M1.1 M8.1 I1.0 A I1.0 A I1.1 FP M1.0 = M8.0 A I 1.0 A I 1.1 FN M1.1 = M8.1 STL OB1-循环 I1.0 I1.1 RLO M1.0 M8.0 M8.1 M1.1 例如 RLO 边沿 当逻辑操作结果变化时,产生RLO 边沿。 正边沿 当RLO 从“0”变化到“1”时,“FP”检查指令产生一个扫描周期的信号“1” (例如:在 M 8.0) 。 允许系统检测边沿变化,RLO 也必须保存在一个FP 位存储器中或数据位中 (例如:M 1.0)。 负边沿 当RLO从“1”变化到“0”时,"FN"检查指令产生一个扫描周期的信号“1” (例如:在 M 8.1) 。 允许系统检测边沿变化,RLO 也必须保存在一个FN 位存储器中或数据位中 (例如:M 1.1)。
信号 - 边沿检测 LAD = FBD STL I1.1 M8.0 POS M_BIT M1.0 Q I1.0 M8.1 NEG M1.1 & I1.0 M8.1 NEG M1.1 FBD A I1.0 A ( A I1.1 FP M1.0 ) = M8.0 A ( A I1.1 FN M1.1 = M8.1 STL I1.0 I1.1 例如 信号边沿 当信号变化时,产生信号边沿。 举例 输入 I 1.0 作为静态允许,输入 I 1.1 作为动态监视,检测每个信号变化。 正边沿 只要I 1.0的信号状态是“1”,当 I1.1 的信号状态从“0”变化到“1”时,“POS”检查指令在输出上产生一个扫描周期的“1”状态(见上例)。 要允许系统检测边沿变化,I 1.1 的信号状态必须保存到一个M_BIT (位存储器或数据位)中,例如:M 1.0。 负边沿 只要I 1.0的信号状态是“1”,当 I1.1 的信号状态从“1”变化到“0”时,“NEG”检查指令在输出上产生一个扫描周期的“1”状态(见上例)。 要允许系统检测边沿变化,I 1.1 的信号状态必须保存到一个M_BIT (位存储器 或数据位)中,例如:M 1.1。 M1.0 M1.1 OB1-周期 M8.0 M8.1
练习:灌装线编程 (模式选择) M 设备 ON/OFF: 手动/自动模式: I 0.0 = 启动 (瞬态常开触点开关) I 0.4 = 启动 (瞬态常开触点开关) I 0.4 = 手动/自动 (开关) I 0.1 = 停止 (瞬态常闭触点开关) I 0.5 = 接受模式 (瞬态常开触点开关) I 0.2 = 向前点动(瞬态常开触点开关) I 0.3 = 向后点动 (瞬态常开触点开关) 瓶子传感器 I 8.6 任务 写瓶装线程序的模式区,使之满足下面的要求: • 输入I 0.0 (常开瞬态触点开关) 使装置接通 ON。 • 输入 I 0.1 (常闭瞬态触点开关)使装置停止OFF。 • 当装置接通时,输出Q 4.1 处的指示器点亮。 • 当装置接通时,可以选择操作模式: - 当I 0.4=0时,选择手动模式;当I 0.4=1 时,选择自动模式。 - 输入I 0.5 的脉冲接受设定的模式。 • 选择的模式指示器如下: 手动 = Q 4.2,自动 = Q 4.3. • 当改变模式或装置停止时,以前选择的模式必须取消。 • 在手动模式,传送带可以用开关I 0.2向前点动 Q8.5;用I 0.3向后点动Q8.6. 操作 1. 编写操作模式的控制程序,使用图中给出的I/O地址和设备。 2. 在项目“My Project”下,建立一个名为“FILL”的S7程序。 3. 在FC 15中写瓶装线的模式选择程序。 4. 打开 (离线) OB1,输入一个FC15调用。 (在 STL中采用指令“CALL FC 15”)。 5. 保存程序,下载并在培训设备上调试。 结果 应该工作正常。 M Q 8.5 传送带向前 Q 8.6 传送带向后