750 likes | 916 Views
第八章 S7-200 系列 PLC 基本功能指令及应用. 第一节 功能指令的分类及用途. 用途: 用于数据的传输、运算、变换、程序控制及通讯等功能。 分类: 数据处理类、程序控制类、特种功能类及外部设备类。. 第二节 功能指令的表达形式及使用要素. 表达形式: 梯形图--功能框 语句表--助记符 1 、功能框及指令的标题. 功能框. 指令助记符. 数据类型. 指令标识. 操作数. 2 、语句表达格式 由两部分组成:指令的功能、数据地址或数据
E N D
第一节 功能指令的分类及用途 • 用途: 用于数据的传输、运算、变换、程序控制及通讯等功能。 • 分类: 数据处理类、程序控制类、特种功能类及外部设备类。
第二节 功能指令的表达形式及使用要素 • 表达形式: 梯形图--功能框 语句表--助记符 1、功能框及指令的标题 功能框 指令助记符 数据类型 指令标识 操作数
2、语句表达格式 由两部分组成:指令的功能、数据地址或数据 如:+I IN1, OUT //整数加法 -I IN1, OUT //整数减法 MOVB IN,OUT //字节传送 ﹡D IN1,OUT //双整数乘 /D IN2,OUT //双整数除 操作数 功能
3、操作数类型及长度 源操作数:指令执行后不改变其内容。 目标操作数:指令执行后改变其内容。 长度:字节(B)、字(W)、双字(DW)。 4、指令的执行条件及执行形式 “能流”EN(可分为连续执行和脉冲执行) 5、指令功能及ENO状态 “能流”正常传递ENO为1,出错为0 6、指令执行结果对特殊标志位的影响 如溢出、负值等。 7、指令的机型适用范围 不同机型可适用的指令不尽相同。
MOV-W MOV-B EN EN ENO ENO OUT OUT IN IN MOV-DW MOV-R EN EN ENO ENO OUT OUT IN IN 字节 字 双字 实数 MOVW IN,OUT MOVB IN,OUT MOVDW IN,OUT MOVR IN,OUT 第三节 S7-200系列PLC基本功能指令 一、传送指令—数据传送指令 字节、字、双字、实数传送指令,在不改变原值的情况下将(IN)中的值传送到OUT中。使ENO=0的错误条件:0006(间接寻址)。 LAD STL
读 写 MOV-BIW MOV-BIR EN ENO EN ENO OUT IN OUT IN BIW IN,OUT BIR IN,OUT 传送字节立即读、写指令 传送字节立即读(BIR)指令,读取输入端(IN)指定字节地址的物理输入点(IB)的值,并写入输出端(OUT)指定字节地址的存储单元中。 传送字节立即写(BIW)指令,将从输入端(IN)指定字节地址的内容写入输出端(OUT)指定字节地址的物理输出点(QB)。 LAD STL 传送字节立即读 传送字节立即写
BLKMOV-DW BLKMOV-W BLKMOV-B EN ENO EN ENO EN ENO IN IN IN OUT OUT OUT N N N 数据块传送指令 数据块传送指令把从输入(IN)指定地址的(N) 个连续字节、字、双字的内容传送到从输出(OUT)指定地址开始的N个连续字节、字、双字的存储单元中去。 字节 字 双字 BMW IN,OUT,N BMB IN,OUT,N BMD IN,OUT,N 有效操作数:
二、比较指令 比较指令含数值比较指令及字符串比较指令,数值比较指令用于比较两个数值,字符串比较指令用于比较两个字符串的ASCⅡ码字符。比较指令在程序中主要用于建立控制节点。 本节仅说明数值比较指令。 数值比较含 IN1=IN2, IN1>=IN2, IN1<=IN2, 1N1 > IN2, 1N1 < IN2, IN1<>IN2等6种情况。
被比较的数据可以是字节、整数、双字及实数。其中,字节比较是无符号的,整数、双字、实数的比较是有符号的。被比较的数据可以是字节、整数、双字及实数。其中,字节比较是无符号的,整数、双字、实数的比较是有符号的。 比较指令以触点形式出现在梯形图及指令表中,因而有“LD'’、 “A”、 “O”三种基本形式。 对于LAD,当比较结果为真时,指令使能点接通;对于STL,比较结果为真时,将栈顶值置1。比较指令为上下限控制及事件的比较判断提供了极大的方便。
三、数字运算类指令 数字运算指令是运算功能的主体指令,含四则运算指令、数学功能指令及递增、递减指令。 四则运算含整数、双整数、实数四则运算,一般说来,源操作数与目标操作数具有一致性,但也有整数运算产生双整数的指令。数学功能指令指三角函数、对数及指数、平方根等指令。运算类指令与存储器及标志位的关系密切,使用时需注意。
(一)四则运算指令 1、整数四则运算指令 使两个16位整数(IN1、IN2)运算后产生一个16位结果存入(OUT)中。且不保留余数。 加 减 乘 除 MUL-I ADD-I SUB-I DIV-I EN EN EN EN ENO ENO ENO ENO IN1 IN1 IN1 IN1 +I IN1,OUT -I IN2,OUT *I IN1,OUT /I IN2,OUT OUT OUT OUT OUT IN2 IN2 IN2 IN2 LAD STL 整数加法、减法、乘法、除法操作数:
整数运算指令举例: //AC1和AC0中的数据 相加,和置于AC0中 //AC1和VW100中的数 据相乘,积置于VW100中 //VW200中的数据为被除数, VW10中的数据为除数, 商置于VW200中
加 减 乘 除 MUL-DI ADD-DI SUB-DI DIV-DI EN EN EN EN ENO ENO ENO ENO IN1 IN1 IN1 IN1 OUT OUT OUT OUT IN2 IN2 IN2 IN2 +D IN1,OUT -D IN2,OUT *D IN1,OUT /D IN2,OUT 2、双整数四则运算指令 使两个32位整数(IN1、IN2)运算后产生一个32位结果存入(OUT)中。且不保留余数。 LAD STL 双整数加法、减法、乘法、除法操作数:
MUL-R ADD-R SUB-R DIV-R EN EN EN EN ENO ENO ENO ENO IN1 IN1 IN1 IN1 OUT OUT OUT OUT IN2 IN2 IN2 IN2 3、实数四则运算指令 使两个32位整数(IN1、IN2)运算后产生一个32位结果存入(OUT)中。 加 减 乘 除 LAD STL +R IN1,OUT -R IN2,OUT *R IN1,OUT /R IN2,OUT 实数加法、减法、乘法、除法操作数:
实数运算指令举例: //AC1和AC0中的数据 相加,和置于AC0中 //AC1和VD100中的数 据相乘,积置于VD100中 //VD200中的数据为被除数, VD10中的数据为除数, 商置于VD200中
乘 除 MUL DIV EN EN ENO ENO IN1 IN1 OUT OUT IN2 IN2 MUL IN1,OUT DIV IN2,OUT 4、整数乘法产生双整数(完全乘法)和带余数的整数除法指令 整数乘法产生双整数指令将两个16位整数相乘,得到32位结果存入(OUT)中。 带余数的整数除法指令将两个16位整数相除,得到32位结果存入(OUT)中。其中高16位为余数,低16位为商。 LAD STL 整数完全乘法、除法操作数:
整数乘法产生双整数和带余数的整数除法指令举例:整数乘法产生双整数和带余数的整数除法指令举例:
注意: 执行加法指令操作时,将操作数IN2与OUT共用一个地址单元: LAD:IN1+IN2=OUT STL:IN1+OUT=OUT 执行减法指令操作时,将操作数IN1与OUT共用一个地址单元: LAD:IN1-IN2=OUT STL:OUT-IN2=OUT 执行乘法指令操作时,将操作数IN2与OUT共用一个地址单元: LAD:IN1﹡IN2=OUT STL:IN1﹡OUT=OUT 执行除法指令操作时,将操作数IN1与OUT共用一个地址单元: LAD:IN1/IN2=OUT STL:OUT/IN2=OUT
(二)数学功能指令 SIN COS TAN EN EN EN ENO ENO ENO OUT OUT OUT IN IN IN SIN IN,OUT COS IN,OUT TAN IN,OUT LN EXP SQRT EN EN EN ENO ENO ENO OUT OUT OUT IN IN IN LN IN,OUT EXP IN,OUT SQRT IN,OUT SIN-正弦 COS-余弦 TAN-正切 LN-自然对数 EXP-自然指数 SQRT-平方根 LAD STL 操作数
正弦、余弦、正切指令使输入端(IN)指定的32位实数的弧度值取正弦、余弦、正切,结果存入(OUT)中。正弦、余弦、正切指令使输入端(IN)指定的32位实数的弧度值取正弦、余弦、正切,结果存入(OUT)中。 自然对数指令(LN)将输入端(IN)的32位实数取自然对数,结果存入(OUT)中。 求常用对数(㏒x)时,只要将对应的自然对数( ㏑ x)除以2.302585即可。 自然指数指令(EXP)将输入端(IN)的32位实数取以e为底的指数,结果存入(OUT)中。 自然指数指令与自然对数指令配合,即可完成以任意实数为底的指数运算。 如:53=EXP(3×㏑5)=125 = EXP(㏑5/3)=5 实数的开方指令(SQRT)将输入端(IN)的32位实数开方,得到32位实数结果并存入(OUT)中。
(三)递增、递减指令 也称加1、减1指令 字节加1 字节减1 字加1 INC-B DEC-B INC-W EN EN EN ENO ENO ENO LAD OUT OUT OUT IN IN IN INCB OUT DECB OUT INCW OUT STL 字减1 双字加1 双字减1 DEC-W INC-DW DEC-DW EN EN EN ENO ENO ENO OUT OUT OUT IN IN IN DECW OUT INCD OUT DECD OUT
操作数: 举例:
字节的取反 字的取反 双字的取反 INV-B INV-W INV-DW EN EN EN ENO ENO ENO OUT OUT OUT IN IN IN INVB IN INVW IN INVD IN 四、逻辑操作指令 逻辑操作指令适用于数据对应位间的逻辑操作,含与、或、异或及取反指令。 (一)字节、字和双字取反指令 将输入(IN)取反的结果存入(OUT)中。
操作数: 举例:
(二)与、或、异或指令 1、字节的与、或、异或指令 将两个输入字节(IN1,IN2)按位与、或、异或,得到的字节结果存入(OUT)中。 字节与 字节或 字节异或 WAND-B WOR-B WXOR-B EN EN EN ENO ENO ENO LAD IN1 IN1 IN1 OUT OUT OUT IN2 IN2 IN2 STL ANDB IN1,IN2 ORB IN1,IN2 XORB IN1,IN2
2、字的与、或、异或指令 将两个输入字(IN1,IN2)按位与、或、异或,得到的字结果存入(OUT)中。 字与 字或 字异或 WAND-W WOR-W WXOR-W LAD EN EN EN ENO ENO ENO IN1 IN1 IN1 OUT OUT OUT IN2 IN2 IN2 STL ANDW IN1,IN2 ORW IN1,IN2 XORW IN1,IN2
3、双字的与、或、异或指令 将两个输入双字(IN1,IN2)按位与、或、异或,得到的双字结果存入(OUT)中。 双字与 双字或 双字异或 WAND-DW WOR-DW WXOR-DW LAD EN EN EN ENO ENO ENO IN1 IN1 IN1 OUT OUT OUT IN2 IN2 IN2 STL ANDD IN1,IN2 ORD IN1,IN2 XORD IN1,IN2
五、移位与循环移位指令 包括移位、循环移位、移位寄存器及字节交换等指令。 此类指令在程序中可方便地实现某些运算,如乘2及除2等。 1、字节、字、双字左移和右移指令 字节右移 字节左移 把输入端(IN)指定 的数据字节右移或左移N 位,结果存入OUT单元。 SHR-B SHL-B LAD EN EN ENO ENO IN IN OUT OUT N N STL SRB OUT,N SLB OUT,N
字右移 字左移 把输入端(IN)指定 的数据字右移或左移N位, 结果存入OUT单元。 SHR-W SHL-W LAD EN EN ENO ENO IN IN OUT OUT N N STL SRW OUT,N SLW OUT,N
双字右移 双字左移 把输入端(IN)指定 的数据双字右移或左移N 位,结果存入OUT单元。 SHR-DW SHL-DW LAD EN EN ENO ENO IN IN OUT OUT N N STL SRD OUT,N SLD OUT,N
2、字节、字、双字循环移位指令 字节循环左移 字节循环右移 把输入端(IN)指定 的数据字节循环右移或循 环左移N位,结果存入 OUT单元。 ROR-B ROL-B LAD EN EN ENO ENO IN IN OUT OUT N N STL RRB OUT,N RLB OUT,N
字循环左移 字循环右移 把输入端(IN)指定 的数据字循环右移或循 环左移N位,结果存入 OUT单元。 ROR-W ROL-W LAD EN EN ENO ENO IN IN OUT OUT N N STL RRW OUT,N RLW OUT,N
双字循环左移 双字循环右移 把输入端(IN)指定 的数据双字循环右移或循 环左移N位,结果存入 OUT单元。 ROR-DW ROL-DW LAD EN EN ENO ENO IN IN OUT OUT N N STL RRD OUT,N RLD OUT,N
移位寄存器指令(SHRB)把输入端DATA的数值移入移位寄存器,而该移位寄存器是有S-BIT和N决定的。移位寄存器指令(SHRB)把输入端DATA的数值移入移位寄存器,而该移位寄存器是有S-BIT和N决定的。 S-BIT-指定最低位 N-指定移位寄存器的长度和移位的方向(正向N,反向-N). 3、移位寄存器指令和字节交换指令 字节交换 移位寄存器 SHRB SWAP LAD EN EN ENO ENO DATA S-BIT OUT OUT N IN STL SHRB DATA,S-BIT,N SWAP IN 字节交换指令将输入字的高字节与低字节交换
移位寄存器的操作数: 移位寄存器举例:
字节交换操作数: 字节交换举例:
六、表指令 表指令是存储器指定区域中数据的管理指令。可以指定一个不大于100个字的数据区,可以依次向该数据区内填入数据,也可以依次取出数据,还可以在数据区内查找符合一定条件的数据,进而对表内的数据进行统计、排序、比较等处理。 表指令含填表、查表、先进先出和后进先出及存储器填充指令,存储器填充指令常见于程序初始化。 1、填表指令 填表指令(ATT)可以向表(TBL)中填入一个数值(DATA),表中第一个数是最大填表数( TL ),第二个数是实际填表数(EC),指已填入表的数据的个数。新填入的数据加在表中的上一个数据的后边。每向表中填加一个新数据(EC)会自动加1。
表指令 ADTTBL LAD EN ENO DATA OUT TBL STL ATT DATA,TBL 表指令操作数:
2、先进先出、后进先出指令 先进先出(FIFO)指令从表(TBL)中移走第一个数据,并将此数据输出到DATA。剩余数据依次上移一个位置。后进先出(LIFO)指令从表中移走最后一个数据,并将此数据输出到DATA。每执行一次指令,表中的实际填表数(EC)减1。 后进先出 先进先出 FIFO LIFO LAD EN EN ENO ENO DATA DATA TBL TBL STL FIFO TBL,DATA LIFO TBL,DATA
先进先出、后进先出指令操作数: 先进先出指令举例: