现代电器及PLC控制技术(S7-1200)教案第7章6.1位逻辑指令.docx
*大学本科教学教案第一周,第一次课章节名称:6.1位逻辑指令主要内容:位逻辑及相关指令的原理与编程教学目标:使学生熟练掌握常开、常闭、线圈、复位/置位、上升沿/下降沿、触发器等位逻辑及相关指令的原理,最终能够利用PLC对典型RS-485通信设备进行独立 编程。教学方法:PPT、TIA Portal与课本相结合。本节主要以学生使用TIA Portal软件进行自主仿真训练,知识点可通过PPT向学生展示。教学重点难点:重点为位逻辑及相关指令的原理,难点为TIA Portal程序编程。课后作业:§ 6-1位逻辑指令.触电指令(1)触点与线圈1.1 常开触点常开触点的激活取决于相关操作数的信号状态。当操作数的信号状态为“1”时, 常开触点关闭,同时输出的信号状态置位为输入的信号状态。当操作数的信号状态为 “0”时,不会激活常开触点,同时该指令输出的信号状态复位为“0”。两个或多个 常开触点串联时,将逐位进行“与”运算,所有触点都闭合后才产生信号流。常开触点并联时,将逐位进行“或”运算,有一个触点闭合就会产生信号流。示例-1 -MOO,TaglnTMO.1,Tagln2*MO.2'Tagln3"XQO.OTagOufTN卜20.0TagM-图6T5在信号下降沿置位操作数指令示例如果信号输入的状态从“1”变为“0”,则将操作数TagOut (Q0.0)置位一个 程序周期。在其他任何情况下,操作数TagOut (Q0.0)的信号状态均为“0”。(5)扫描RLO的信号上升沿使用“扫描RLO的信号上升沿”指令,可查询逻辑运算结果的信号状态从“0”到“1”的更改。该指令将比较RLO的当前信号状态与保存在边沿存储位(操 作数)中上一次查询的信号状态。如果该指令检测到RLO从“0”变为“1”,则说 明出现了一个信号上升沿。每次执行指令时,都会查询信号上升沿。检测到信号上升沿时,该指令输出Q 的信号状态为“1”。在其它任何情况下,该输出返回的信号状态均为“0”。示例 如图6-16所示。W10.0,TaglnTW1O.1,Tagln2,XQ0.0P TRIG,TagOut,CLK QW20.0"TagM-Ts)W1O.2,Tagln3,图6-16扫描RLO的信号上升沿指令示例之前查询的RLO的信号状态保存在边沿存储位TagM (M20. 0)中。如果检测到 RLO的信号状态从“0”变为“1”,则置位操作数TagOut (Q0.0)。(6)扫描RLO的信号下降沿使用“扫描RLO的信号下降沿”指令,可查询逻辑运算结果RLO的信号状态从 “1”到“0”的更改。该指令将比较RLO的当前信号状态与保存在边沿存储位(操作数)中上一次查询的信号状态。如果该指令检测到RLO从“1”变为“0”,则说 明出现了一个信号下降沿。每次执行指令时,都会查询信号下降沿。检测到信号下降沿时,该指令输出Q 的信号状态为“1”。在其它任何情况下,该输出返回的信号状态均为“0”。示例 如图6-17所示。加0.0 ,Ta gin V加0.1,Tagln2eN_TRIGCLK Q%Q0 0,TagOufTs)-“20.09 102 ,Tagln3"Tag”图6T7扫描RLO的信号下降沿指令示例之前查询的RLO的信号状态保存在边沿存储位TagM (M20. 0)中。如果检测到 RLO的信号状态从“1”变为“0”,则置位操作数TagOut (Q0.0) 0(7)检查信号上升沿(R_TRIG)使用“检测信号上升沿”指令,可以检测输入CLK从“0”到“1”的状态变 化。该指令将输入CLK的当前信号状态与保存在指定实例中的上次查询(边沿存储 位)的状态进行比较。如果该指令检测到输入CLK的信号状态从“0”变成了“1”,就会在输出Q中生成一个信号上升沿,输出的值将在一个循环周期内为 “1”。在其它任何情况下,该指令输出的信号状态均为“0”。示例如图6-18所不OWB10R_TOG_DB'R_IRIGEN ENOMOO%Q0.0"TaglnVq «"TagOut,I ICLK图6T8检查信号上升沿指令示例输入CLK中变量的上一个信号状态存储在“R_TRIG_DB”变量中。如果在操作数Taglnl (M10. 0)检测到信号状态从“0”变为“1”,则输出TagOut (Q0. 0)的信号 状态在一个循环周期内为“1” O(8)检查信号下降沿(F_TRIG)使用“检测信号下降沿”指令,可以检测输入CLK的从“1”到“0”的状态变 化。该指令将输入CLK的当前信号状态与保存在指定实例中的上次查询(边沿存储 位)的状态进行比较。如果该指令检测到输入CLK的状态从“1”变成了 “0”,就 会在输出Q中生成一个信号下降沿,输出的值将在一个循环周期内为“1”。在其它 任何情况下,该指令输出的信号状态均为“0”。示例如图6T9所示。知B11 F_7RIG_DB"F_7RIG EN ENO加10.0%QQ.O"Taglnl*q <*TagOut"I ICLK图6-18检查信号下降沿指令示例输入CLK中变量的上一个信号状态存储在“F_TRIG_DB”变量中。如果在操作数 Taglnl (M10. 0)检测到信号状态从“1”变为“0”,则输出TagOut (Q0. 0)的信号 状态在一个循环周期内为"I" O:本节结束;如图6-1所示。M0.0旬 10.1%00-0,TaglnTeTagln2''TagOut,加0.2 'Tagln3'图6T常开触电示例当满足以下任意条件时,将置位操作数TagOut (Q0.0):操作数Taglnl (M10. 0)和Tagln2 (MIO. 1)的信号状态为“1”;操作数Tagln3 (M10. 2)的信号状态为“1”。1. 2常闭触点常闭触点的激活取决于相关操作数的信号状态。当操作数的信号状态为“1”时, 常闭触点打开,同时该指令输出的信号状态复位为“0”。当操作数的信号状态为“0” 时,不会启用常闭触点,同时将该输入的信号状态传输到输出。两个或多个常闭触点 串联时,将逐位进行“与”运算,所有触点都闭合后才产生信号流。常闭触点并联时, 将进行“或”运算,有一个触点闭合就会产生信号流。示例如图6-2所示。10.010.1%Q0.0,TaglnT'TaglnZ''TagOut'10.2 ,Tagln3e图6-2常闭触电示例当满足以下任意条件时,将置位操作数TagOut (Q0.0): 操作数Taglnl (M10. 0)和Tagln2 (MIO. 1)的信号状态为“1” ;操作数Tagln3 (M10. 2)的信号状态为“0”。L3线圈可以使用“赋值”指令来置位指定操作数的位。如果线圈输入的逻辑运算结果 的信号状态为“1”,则将指定操作数的信号状态置位为“1”。如果线圈输入的信 号状态为“0”,则将指定操作数的位将复位为“0”。示例如图6-3所示。W10.0W11.0*XQO o'TaglnV,Tagln2*'Tagln4''TagOufW1O.2 ,Tagln3-图6-3线圈示例当满足以下任意条件时,将置位操作数TagOut (Q0.0):操作数 Taglnl (M10. 0)和 Tagln2 (M10. 1)的信号状态为 “1",Tagln4(M11.0)的信号状态为“0” ;操作数Tagln3 (M10. 2)的信号状态为“1",Tagln4 (M11.0)的信号状态 为 “0”。(2)取反指令使用“取反RLO”指令,可对逻辑运算结果(RLO)的信号状态进行取反。如果 该指令输入的信号状态为“1”,则指令输出的信号状态为“0" o如果该指令输入 的信号状态为“0”,则输出的信号状态为“1" o示例如图6-4所示。10.0%J 10.1%Q0.0,TaglnT'Tag''TagOut"如02*Tagln3'图6-4取反触电指令示例当满足以下任意条件时,将置位操作数TagOut (Q0.0):操作数Taglnl (M10. 0)或Tagln2 (MIO. 1)的信号状态为“0” ;操作数Tagln3 (M10.2)的信号状态为“0”。二.输出类指令(1)赋值取反指令使用“赋值取反”指令,可将逻辑运算的结果(RLO)进行取反,然后将其赋值 给指定操作数。线圈输入的RLO为“1”时,复位操作数。线圈输入的RLO为“0” 时,置位操作数。示例如图6-5所示。MO.OW1O.1%00.0"TaglnT-Tagln2B,TagOurT I1 I(/)«如0<2-Tagln3"-M图6-5赋值取反指令示例当满足以下任意条件时,将复位操作数TagOut (QO.O): 操作数Taglnl (M10. 0)和Tagln2 (MIO. 1)的信号状态为“1” ;操作数Tagln3 (M10. 2)的信号状态为“0”。(2)复位与置位2. 1复位指令使用“复位输出”指令,可将指定操作数的信号状态复位为“0”。仅当线圈 输入的逻辑运算结果RLO为“1”时,才执行该指令。如果线圈输入的RLO为“1”,则指定的操作数复位为“0”。如果线圈输入的RLO为“0”,则指定操作数 的信号状态将保持不变。示例如图6-6所示。M0.0,10.1%00.0'Taglnl''Tagln2B'TagOuf10.2'Tagln3'-L4-图6-6复位指令示例当满足以下任意条件时,将复位操作数TagOut (Q0.0):操作数Taglnl (M10. 0)和Tagln2 (MIO. 1)的信号状态为“1” ;操作数Tagln3 (M10. 2)的信号状态为“0”。3. 2置位指令使用“置位输出”指令,可将指定操作数的信号状态置位为“1”。仅当线圈输 入的逻辑运算结果为“1”时,才执行该指令。如果线圈输入的RLO为“1”,则指 定的操作数置位为“1”。如果线圈输入的RLO为“0”,则指定操作数的信号状态 将保持不变。示例如图6-7所示。10.0"XM1O.1KQ0.0,Taglnl*'Tag*'TagOufT I1 I(s)"IM102T8gln3"-w图6-7置位指令示例当满足以下任意条件时,将置位操作数TagOut (Q0.0):操作数Taglnl (M10. 0)和Tagln2 (MIO. 1)的信号状态为“1” ;操作数Tagln3 (M10.2)的信号状态为“0”。(3)置位/复位触发器(SR)使用“置位/复位触发器”指令,根据输入S和R1的信号状态,置位或复位指 定操作数的位。如果输入S的信号状态为“1”且输入R1的信号状态为“0”,则将 指定的操作数置位为“1”。如果输入S的信号状态为“0”且输入R1的信号状态为 “1”,则将指定的操作数复位为“0”。输入R1的优先级高于输入S。输入S和R1的信号状态都为“1”时,指定操作 数的信号状态将复位为“0”。如果两个输入S和R1的信号状态都为“0”,则不会执行该指令。因此操作数 的信号状态保持不变。操作数的当前信号状态被传送到输出Q,并可在此进行查询。示例如图6-8所不O100.0W10.0'Ta95RB%00.0'Taglnl,SR'TagOut*1 IS Q( )910.1'Tagln2'图6-8置位/复位触发器指令示例当满足以下条件时,将置位操作数TagSR (M100. 0)和TagOut (Q0. 0):操作数Taglnl (MIO. 0)的信号状态为“1”,操作数Tagln2 (MIO. 1)的信号 状态为“0”。当满足以下任意条件时,将复位操作数TagSR (M100. 0)和TagOut (Q0. 0):操作数Taglnl (M10.0)的信号状态为“0”,且操作数Tagln2 (M10. 1)的 信号状态为T ;操作数Taglnl (M10.0)和Tagln2 (M10. 1)的信号状态为“1”。(4)复位/置位触发器(RS)使用“复位/置位触发器”指令,根据输入R和S1的信号状态,复位或置位指 定操作数的位。如果输入R的信号状态为“1”,且输入S1的信号状态为“0”,则 指定的操作数将复位为“0”。如果输入R的信号状态为“0”且输入S1的信号状态 为“1”,则将指定的操作数置位为“1”。输入S1的优先级高于输入R。当输入R和S1的信号状态均为“1”时,将指定 操作数的信号状态置位为“1”。如果两个输入R和S1的信号状态都为“0”,则不会执行该指令。因此操作数 的信号状态保持不变。操作数的当前信号状态被传送到输出Q,并可在此进行查询。示例如图6-9所不O卸100.1W10.0TagRS。%Q0.0TaglnKrs'TagOut'10.1'Tagln2'图6-9复位/置位触发器指令示例当满足以下条件时,将复位操作数TagRS (M100. 1)和TagOut (Q0. 0):操作数Taglnl (M10. 0)的信号状态为“1”,操作数Tagln2 (M10. 1)的信号 状态为“0”。当满足以下任意条件时,将置位操作数TagRS (M100. 1)和TagOut (Q0. 0):操作数Taglnl (M10. 0)的信号状态为“0”,且操作数Tagln2 (M10. 1)的 信号状态为“1” ;操作数Taglnl (M10. 0)和Tagln2 (M10. 1)的信号状态为“1”。(5)置位位域(SET_BF)使用“置位位域”指令,可对从某个特定地址开始的多个位进行置位。可使用 值操作数1指定要置位的位数。要置位位域的首位地址由操作数2指定。 操作数1的值不能大于选定字节中的位数。示例如图6-10所示。加0.0TaglnT加0.1-Tagln20数据块二七(SE1LBF )-15图6-10置位位域指令示例操作数Taglnl (M10.0)和操作数Tagln2 (MIO. 1)的信号状态为“1”,则将 置位从数据块1. a0的地址开始的5个位。复位位域(RESET_BF)使用“复位位域”指令,可对从某个特定地址开始的多个位进行复位。可使用 值操作数1指定要复位的位数。要复位位域的首位地址由操作数2指定。 操作数1的值不能大于选定字节中的位数。示例如图6-11所示。W10.010.1WBLDBX0.0'TaglnT"Taglnr数据块11 I1 I(RESE1LBFH图6-11复位位域指令示例操作数Taglnl (M10. 0)和操作数Tagln2 (MIO. 1)的信号状态为“1”,则将 复位从数据块1. a0的地址开始的5个位。三.其他指令(1)扫描操作数的信号上升沿使用“扫描操作数的信号上升沿”指令,可以确定所指定操作数(操作数 1)的信号状态是否从“0”变为“1”。该指令将比较操作数1的当前信号状 态与上一次扫描的信号状态,上一次扫描的信号状态保存在边沿存储位(操作数2)中。如果该指令检测到逻辑运算结果从“0”变为“1”,则说明出现了一个上 升沿。每次执行指令时,都会查询信号上升沿。检测到信号上升沿时,操作数1的 信号状态将在一个程序周期内保持置位(为"1” ) o在其它任何情况下,操作数的 信号状态均为“0”。示例如图6T2所示。'XMIO.O'XMIO.I%Q0.0,TaglnV'Tagln2,"TagOut"1 IPI( )'KM20.0 ,TagW图6-12扫描操作数的信号上升沿指令示例当同时满足以下条件时,将置位操作数TagOut (Q0.0):操作数Taglnl (M10. 0)的信号状态为 T ;操作数Tagln2 (M10. 1)为上升沿,上一次扫描的信号状态存储在边沿存储 位 TagM (M20. 0)中。(2)扫描操作数的信号下降沿使用”扫描操作数的信号下降沿”指令,可以确定所指定操作数(操作数 1»的信号状态是否从“1”变为“0" o该指令将比较操作数1的当前信号状 态与上一次扫描的信号状态,上一次扫描的信号状态保存在边沿存储器位操作数 2中。如果该指令检测到逻辑运算结果从“1”变为“0”,则说明出现了一个下降 沿。每次执行指令时,都会查询信号下降沿。检测到信号下降沿时,操作数1的 信号状态将在一个程序周期内保持置位(为"1” ) o在其它任何情况下,操作数的 信号状态均为“0”。示例如图6T3所示。W10.010.1%00.0"TaglnV-Tagln2e'TagOut"划 20.0TagM"图6-13扫描操作数的信号下降沿指令示例当同时满足以下条件时,将置位操作数TagOut (Q0. 0): 操作数Taglnl (M10. 0)的信号状态为“1” ;操作数Tagln2 (M10. 1)为下降沿,上一次扫描的信号状态存储在边沿存储 位 TagM (M20. 0)中。(3)在信号上升沿置位操作数在逻辑运算结果从“0”变为“1”时置位指定操作数(操作数1)。该指令 将当前RLO的信号状态与保存在边沿存储位中(操作数2>)上次查询的RLO的信 号状态进行比较。如果该指令检测到RLO从“0”变为“1”,则说明出现了 一个信 号上升沿。每次执行指令时,都会查询信号上升沿。检测到信号上升沿时,操作数1>的 信号状态将在一个程序周期内保持置位(为“1”)。在其它任何情况下,操作数的 信号状态均为“0”。示例如图6-14所示。W10.0,Taglnl*,Tagln2,*1O<2,XQO.O ,TagOut, Tp )_ %M20.0 ,TagM, 'Tagln3"图6-14在信号上升沿置位操作数指令示例如果信号输入的状态从“0”变为“1”,则将操作数TagOut (Q0.0)置位一个 程序周期。在其他任何情况下,操作数TagOut (Q0.0)的信号状态均为“0”。(4)在信号下降沿置位操作数在逻辑运算结果从“1”变为“0”时置位指定操作数(操作数1)。该指令 将当前RLO的信号状态与保存在边沿存储位中(操作数2>)上次查询的RLO的信 号状态进行比较。如果该指令检测到RLO从“1”变为“0”,则说明出现了 一个信 号下降沿。每次执行指令时,都会查询信号下降沿。检测到信号下降沿时,操作数1>的 信号状态将在一个程序周期内保持置位(为“1”)。在其它任何情况下,操作数的 信号状态均为“0”。示例如图6-15所示。-9 -