当前位置:文档之家› 西门子S7-200 PLC指令简介及实例分析

西门子S7-200 PLC指令简介及实例分析

西门子S7-200 PLC指令简介及实例分析
西门子S7-200 PLC指令简介及实例分析

数据处理、运算指令及应用

本章要点

? 数据传送、字节交换、字节立即读写、移位、转换指令的介绍、应用及实训 ? 算术运算、逻辑运算、递增/递减指令的介绍、应用及实训

? 表的定义、填表指令、表取数指令、填充指令、表查找指令的介绍

5.1 数据处理指令

5.1.1 数据传送指令

1. 字节、字、双字、实数单个数据传送指令MOV

数据传送指令MOV ,用来传送单个的字节、字、双字、实数。指令格式及功能如表5-1所示。

表5-1单个数据传送指令MOV 指令格式

使

EN O = 0即使能输出断开的错误条件是:SM4.3(运行时间),

0006(间接寻址错误)。

【例5-1】将变量存储器VW10中内容送到VW100中。程序如图5-1所示。

LD I0.1

MOVW VW10, VW100

5-1

例5-1题图

2. 字节、字、双字、实数数据块传送指令BLKMOV

数据块传送指令将从输入地址IN 开始的N 个数据传送到输出地址OUT 开始的N 个单元中,N 的范围为1至255,N 的数据类型为:字节。指令格式及功能如表5-2所示。

表5-2 数据传送指令BLKMOV 指令格式

使ENO

= 0的错误条件:0006(间接寻址错误)0091(操作数超出范围)。

【例5-2】程序举例:将变量存储器VB20开始的4个字节(VB20- VB23)中的数据,移至VB100开始的4个字节中

(VB100-VB103)。程序如图5-2所示。

LAD STL

LD I0.0

BMB VB20 ,VB100, 4

图5-2 例5-2图

程序执行后,将VB20~VB23中的数据30、31、32、33送到

VB100~VB103。

执行结果如下:数组1数据 30 31 32 33

数据地址 VB20 VB21 VB22 VB23

块移动执行后:数组2数据 30 31 32 33

数据地址 VB100 VB101 VB102 VB103

5.1.2 字节交换、字节立即读写指令

1. 字节交换指令

字节交换指令用来交换输入字IN 的最高位字节和最低位字节。指令格式如表5-3所示。

表5-3 字节交换指令使用格式及功能

ENO = 0的错误条件:0006(间接寻址错误),SM4.3(运行时间) 【例5-3】字节交换指令应用举例。如图5-3所示。

程序执行结果:

指令执行之前VW50中的字为:D6 C3

指令执行之后VW50中的字为:C3 D6

2. 字节立即读写指令

字节立即读指令(MOV-BIR)读取实际输入端IN给出的1个字节的数值,并将结果写入OUT所指定的存储单元,但输入映像寄存器未更新。

字节立即写指令从输入IN所指定的存储单元中读取1个字节的数值并写入(以字节为单位)实际输出OUT端的物理输出点,同时刷新对应的输出映像寄存器。指令格式及功能如表5-4所示。

表5-4字节立即读写指令格式

存取扩展模块。

5.1.3 移位指令及应用举例

移位指令分为左、右移位和循环左、右移位及寄存器移位指令三大类。前两类移位指令按移位数据的长度又分字节型、字型、双字型3种。

1. 左、右移位指令

左、右移位数据存储单元与SM1.1(溢出)端相连,移出位被放到特殊标志存储器SM1.1位。移位数据存储单元的另一端补0。移位指令格式见表5-5。

(1)左移位指令(SHL)

使能输入有效时,将输入IN的无符号数字节、字或双字中的各位向左移N位后(右端补0),将结果输出到OUT所指定的存储单元中,如果移位次数大于0,最后一次移出位保存在“溢出”存储器位SM1.1。如果移位结果为0,零标志位SM1.0置1。

(2)右移位指令

使能输入有效时,将输入IN的无符号数字节、字或双字中的各位向右移N位后,将结果输出到OUT 所指定的存储单元中,移出位补0,最后一移出位保存在SM1.1。如果移位结果为0,零标志位SM1.0置1。

(3)使ENO = 0的错误条件:

0006(间接寻址错误),SM4.3(运行时间)

5-5 移位指令格

式及功能

说明:在

STL指令中,若

IN和OUT指定

的存储器不同,

则须首先使用

数据传送指令

MOV将IN中

的数据送入OUT所指定的存储单元。如:

MOVB IN,OUT

SLB OUT,N

2. 循环左、右移位指令

循环移位将移位数据存储单元的首尾相连,同时又与溢出标志SM1.1连接,SM1.1用来存放被移出的

位。指令格式见表5-6。

(1)循环左移位指令(ROL)

使能输入有效时,将IN输入无符号数(字节、字或双字)循环左移N位后,将结果输出到OUT所指

定的存储单元中,移出的最后一位的数值送溢出标志位SM1.1。当需要移位的数值是零时,零标志位SM1.0

为1。

(2)循环右移位指令(ROR)

使能输入有效时,将IN输入无符号数(字节、字或双字)循环右移N位后,将结果输出到OUT所指

定的存储单元中,移出的最后一位的数值送溢出标志位SM1.1。当需要移位的数值是零时,零标志位SM1.0

为1。

(3)移位次数N≥数据类型(B、W、D)时的移位位数的处理

如果操作数是字节,当移位次数N≥8时,则在执行循环移位前,先对N进行模8操作(N除以8后

取余数),其结果0-7为实际移动位数。

如果操作数是字,当移位次数N≥16时,则在执行循环移位前,先对N进行模16操作(N除以16后

取余数),其结果0-15为实际移动位数。

如果操作数是双字,当移位次数N≥32时,则在执行循环移位前,先对N进行模32操作(N除以32

后取余数),其结果0-31为实际移动位数。

(4)使ENO = 0的错误条件:0006(间接寻址错误),SM4.3(运行时间)。

表5-6 循环左、右移位指令格式及功能

说明:在

STL指令中,若

IN和OUT指定

的存储器不同,

则须首先使用

数据传送指令

MOV将IN中

的数据送入

OUT所指定的

存储单元。如:

MOVB IN,

OUT

LB OUT,N

【例5-4】程序

应用举例,将

AC0中的字循

环右移2位,将

VW200中的字

左移3位。程序

及运行结果如

图5-4所示。

图5-4 例5-4题图

【例5-5】用I0.0控制接在Q0.0~Q0.7上的8个彩灯循环移位,从左到右以0.5s的速度依次点亮,保持任意时刻只有一个指示灯亮,到达最右端后,再从左到右依次点亮。

分析:8个彩灯循环移位控制,可以用字节的循环移位指令。根据控制要求,首先应置彩灯的初始状态为QB0=1,即左边第一盏灯亮;接着灯从左到右以0.5s的速度依次点亮,即要求字节QB0中的“1”用循环左移位指令每0.5s移动一位,因此须在ROL-B指令的EN端接一个0.5s

的移位脉冲(可用定时器指

图5-5 例5-5题图

令实现)。梯形图程序和语句表程序如图5-5所示。

LD SM0.1 //首次扫描时

MOVB 1, QB0 //置8位彩灯初态

LD I0.0 //T37产生周期为

AN T37 0.5s的移位脉冲

TON T37, +5

LD T37 //每来一个脉冲

RLB QB0, 1 彩灯循环左移1位

3. 移位寄存器指令(SHRB)

移位寄存器指令是可以指定移位寄存器的长度和移位方向的移位指令。其指令格式如图5-6所示。

说明:(1)移位寄存器指令SHRB将DATA数值移入移位寄存器。梯形图中,EN为使能输入端,连接移位脉冲信号,每次使能有效时,整个移位寄存器移动1位。DATA为数据输入端,连接移入移位寄存器的二进制数值,执行指令时将该位的值移入寄存器。S_BIT指定移位寄存器的最低位。N指定移位寄存器的长度和移位方向,移位寄存器的最大长度为64位,N为正值表示左移位,输入数据(DA TA)移入移位寄存器的最低位(S_BIT),并移出移位寄存器的最高位。移出的数据被放置在溢出内存位(SM1.1)中。N为负值表示右移位,输入数据移入移位寄存器的最高位中,并移出最低位(S_BIT)。移出的数据被放置在溢出内存位(SM1.1)中。

(2)DA TA和S-BIT的操作数为I, Q, M, SM, T, C, V, S, L 。数据类型为:BOOL变量。N的操作数为VB, IB, QB, MB, SB, SMB, LB, AC, 常量。数据类型为:字节。

(3)使ENO = 0的错误条件:0006(间接地址),0091(操作数超出范围),0092(计数区错误)。

(4)移位指令影响特殊内部标志位:SM1.1(为移出的位值设置溢出位)。

【例5-6】移位寄存器应用举例。程序及运行结果如图5-7所示。

?溢出位(SM1.1)

S-BIT

I0.1

S-BIT

I0.1

S-BIT

I0.1

溢出位(SM1.1)

溢出位(SM1.1)

溢出位

第一次移位

第一次移位后

第二次移位后

第一次移位前

时序图

MB10

?MB10

?MB10

?I0.0

?I0.1

图5-7 例5-6梯形图、语句表、时序图及运行结果

【例5-7】用PLC构成喷泉的控制。用灯L1~L12分别代表喷泉的12个喷水注。

(1)控制要求:按下起动按钮后,隔灯闪烁,L1亮0.5秒后灭,接着L2亮0.5秒后灭,接着L3亮0.5秒后灭,接着L4亮0.5秒后灭,接着L5、L9亮0.5秒后灭,接着L6、L10亮0.5秒后灭,接着L7、L11亮0.5秒后灭,接着L8、L12亮0.5秒后灭,L1亮0.5秒后灭,如此循环下去,直至按下停止按钮。如图5-8所示。

?图5-8 喷泉控制示意图

(2)I/O分配

输入输出

(常开)起动按钮:I0.0 L1:Q0.0 L5、L9:Q0.4

(常闭)停止按钮:I0.1 L2:Q0.1 L6、L10:Q0.5

L3:Q0.2 L7、L11:Q0.6

L4:Q0.3 L8、L12:Q0.7

(3)喷泉控制梯形图

梯形图程序如图5-10所示。

分析:应用移位寄存器控制,根据喷泉模拟控制的8位输出(Q0.0~Q0.7),须指定一个8位的移位寄存器(M10.1~M11.0),移位寄存器的S-BIT位为M10.1,并且移位寄存器的每一位对应一个输出。如

图5-9所示。

DATA

图5-9 移位寄存器的位与输出对应关系图

在移位寄存器指令中,EN 连接移位脉冲,每来一个脉冲的上升沿,移位寄存器移动一位。移位寄存器应0.5s 移一位,因此需要设计一个0.5s 产生一个脉冲的脉冲发生器(由T38构成)。

M10.0为数据输入端DATA ,根据控制要求,每次只有一个输出,因此只需要在第一个移位脉冲到来时由M10.0送入移位寄存器S-BIT 位(M10.1)一个“1”,第二个脉冲至第八

T38构成0.5s 产生一个机器扫描周期脉冲的脉冲发生器 8位的移位寄存器 移位寄存器的每一位 对应一个输出

?图5-10 例5-7喷泉模拟控制梯形图

个脉冲到来时由M10.0送入M10.1的值均为“0”,这在程序中由定时器T37延时0.5s 导通一个扫描周期实现,第八个脉冲到来时M11.0置位为1,同时通过与T37并联的M11.0常开触点使M10.0置位为1,在第九个脉冲到来时由M10.0送入M10.1的值又为1,如此循环下去,直至按下停止按钮。按下常闭停止按钮(I0.1),其对应的常闭触点接通,触发复位指令,使M10.1~M11.0的8位全部复位。

5.1.4 转换指令

转换指令是对操作数的类型进行转换,并输出到指定目标地址中去。转换指令包括数据的类型转换、数据的编码和译码指令以及字符串类型转换指令。

不同功能的指令对操作数要求不同。类型转换指令可将固定的一个数据用到不同类型要求的指令中,包括字节与字整数之间的转换,整数与双整数的转换,双字整数与实数之间的转换,BCD 码与整数之间的转换等。

1. 字节与字整数之间的转换

字节型数据与字整数之间转换的指令格式见表5-7所示。

表5-7 字节型数据与字整数之间转换指令

2. 字整数与双字整数之间的转换

字整数与双字整数之间的转换格式、功能及说明,如表5-8所示。

3. 双整数与实数之间的转换

双整数与实数之间的转换的转换格式、功能及说明,如表5-9所示。

表5-8 字整数与双字整数之间的转换指令

表5-9 双字整数与实数之间的转换指令

值得注意的是:不论是四舍五入取整,还是截位取整,如果转换的实数数值过大,无法在输出中表示,则产生溢出,即影响溢出标志位,使SM1.1=1,输出不受影响。

4. BCD码与整数的转换

BCD码与整数之间的转换的指令格式、功能及说明,如表5-10所示。

表5-10 BCD码与整数之间的转换的指令

0000 0000~1001 1001 1001 1001(BCD码)。

(2)指令影响特殊标志位SM1.6(无效BCD)。

(3)在表5-10的LAD和STL指令中,IN和OUT的操作数地址相同。若IN和OUT操作数地址不是同一个存储器,对应的语句表指令为:MOV IN OUT

BCDI OUT

5. 译码和编码指令

译码和编码指令的格式和功能如表5-11所示。

表5-11 译码和编码指令的格式和功能

若(AC2)=2,执

行译码指令,则将输出字VW40的第二位置1,VW40中的二进制数为2#0000 0000 0000 0100;若(AC3)=2#0000 0000 0000 0100,执行编码指令,则输出字节VB50中的错误码为2。

6. 七段显示译

码指令

图5-12 与七段显示码

对应的代码

七段显示器的abcdefg 段分别对应于字节的第0位~第6位,字节的某位为1时,其对应的段亮;输出字节的某位为0时,其对应的段暗。将字节的第7位补0,则构成与七段显示器相对应的8位编码,称为七段显示码。数字0~9、字母A ~F 与七段显示码的对应如图5-12所示。

七段译码指令SEG 将输入字节16#0~F 转换成七段显示码。指令格如表5-12所示。

表5-12七段显示译码指令

使ENO = 0的错误条件:0006 间接地址,SM4.3 运行时间。

【例5-9】编写显示数字0的七段显示码的程序。程序实现如图5-13所示。

LD I0.1 SEG 0, AC1

图5-13 例5-9题图

程序运行结果为AC1中的值为16#3F(2#0011 1111)。 7. ASCII 码与十六进制数之间的转换指令

ASCII 码与十六进制数之间的转换指令指令格式和功能如表5-13所示。

表5-13 ASCII 码与十六进制数之间转换指令的格式和功能

注意:合法的ASCII 码对应的十六进制数包括30H 到39H ,41H 到46H 。如果在ATH 指令的输入中

包含非法的ASCII 码,则终止转换操作,特殊内部标志位SM1.7置位为1。

【例5-10】将VB10~VB12中存放的3个ASCII 码33、45、41,转换成十六进制数。 梯形图和语句表程序如图5-14所示。

LD I1.0

ATH VB10, VB20, 3

图5-14 例5-10题图

程序运行结果如下:

可见将VB10~VB12中存放的3个ASCII 码33、45、41,转换成十六进制数3E 和Ax ,放在VB20和VB21中,“x ”表示VB21的“半字节”即低四位的值未改变。

5.1.5 天塔之光的模拟控制实训

1. 实训目的

(1)掌握移位寄存器指令的应用方法

(2)用移位寄存器指令实现天塔之光控制系统 (3)掌握PLC 的编程技巧和程序调试的方法 2. 控制要求

如图5-15所示的天塔的灯光,可以用PLC 控制灯光的闪耀移位及时序的变化等。控制要求如下:按起动按钮,L12→L11→L10→L8→L1→L1、L2、L9→L1

、L5、L8→L1、L4、L7→L1、L3、L6→L1→L2、L3、L4、L5→L6、L7、L8、L9→L1、L2、L6→L1、L3、L7→L1、L4、L8→L1、L5、L9→L1→L2、L3、L4、L5→L6、L7、L8、L9→L12→L11→L10 ……循环下去,直至按下停止按钮。

3. I/O 分配

输入 输出

起动按钮:I0.0 L1:Q0.0 L4 Q0.3 L7:Q0.6 L10 Q1.1

停止按钮:I0.1 L2:Q0.1 L5 Q0.4 L8:Q0.7 L11 Q1.2

L3:Q0.2 L6 Q0.5 L9:Q1.0 L12 Q1.3

4. 程序设计

分析:根据灯光闪亮移位,分为19步,因此可以指定一个19位的移位寄存器(M10.1~M10.7,M11.0~M11.7,M12.0~M12.3),移位寄存器的每一位对应一步。而对于输出,如:L1(Q0.0)分别在“5、6、7、8、9、10、13、14、15、16、17”步时被点亮,即其对应的移位寄存器位“M10.5、M10.6、M10.7、M11.0、M11.1、M11.2、M11.5、M11.6、M12.0、M12.1”置位为1时,Q0.0置位为1,所以需要将这些位所对应的常开触点并联后输出Q0.0,以此类推其它的输出。参考程序如图5-16所示。

图5-16天塔之光控制梯形图

图5-16 天塔之光控制梯形图(续)

5. 输入、调试程序并运行程序

6. 思考题

如果控制要求改为L12→L11→L10→L8→L1→L2、L3、L4、L5→L6、L7、L8、L9,循环如何修改程序。输入程序,调试观察现象。

5.2 算术运算、逻辑运算指令

算术运算指令包括加、减、乘、除运算和数学函数变换,逻辑运算包括逻辑与或非指令等。

5.2.1 算术运算指令

1. 整数与双整数加减法指令

整数加法(ADD-I)和减法(SUB-I)指令是:使能输入有效时,将两个16位符号整数相加或相减,并产生一个16位的结果输出到OUT。

双整数加法(ADD-D)和减法(SUB-D)指令是:使能输入有效时,将两个32位符号整数相加或相减,并产生一个32位结果输出到OUT。

整数与双整数加减法指令格式如表5-14所示。

表5-14 整数与双整数加减法指令格式

(1)当IN1、IN2和OUT操作数的地址不同时,在STL指令中,首先用数据传送指令将IN1中的数值送入OUT,然后再执行加、减运算即:OUT+IN2=OUT、OUT-IN2=OUT。为了节省内存,在整数加法的梯形图指令中,可以指定IN1或IN2=OUT,这样,可以不用数据传送指令。如指定INI=OUT,则语句表指令为:+I IN2,OUT;如指定IN2=OUT,则语句表指令为:+I IN1,OUT。在整数减法的梯形图指令中,可以指定IN1=OUT,则语句表指令为:-I IN2,OUT。这个原则适用于所有的算术运算指令,且乘法和加法对应,减法和除法对应。

(2)整数与双整数加减法指令影响算术标志位SM1.0(零标志位),SM1.1(溢出标志位)和SM1.2(负数标志位)。

【例5-11】求5000加400的和,5000在数据存储器VW200中,结果放入AC0。程序如图5-17所示。

LD I0.0

MOVW VW200, AC0 //VW200→AC0

+I +400, AC0 //VW200+400=AC0

图5-17 例5-11题图

2. 整数乘除法指令

整数乘法指令(MUL-I)是:使能输入有效时,将两个16位符号整数相乘,并产生一个16位积,从OUT指定的存储单元输出。

整数除法指令(DIV-I)是:使能输入有效时,将两个16位符号整数相除,并产生一个16位商,从OUT指定的存储单元输出,不保留余数。如果输出结果大于一个字,则溢出位SM1.1置位为1。

双整数乘法指令(MUL-D):使能输入有效时,将两个32位符号整数相乘,并产生一个32位乘积,从OUT指定的存储单元输出。

双整数除法指令(DIV-D):使能输入有效时,将两个32位整数相除,并产生一个32位商,从OUT 指定的存储单元输出,不保留余数。

整数乘法产生双整数指令(MUL):使能输入有效时,将两个16位整数相乘,得出一个32位乘积,从OUT指定的存储单元输出。

整数除法产生双整数指令(DIV):使能输入有效时,将两个16位整数相除,得出一个32位结果,从OUT指定的存储单元输出。其中高16位放余数,低16位放商。

整数乘除法指令格式如表5-15所示。

整数双整数乘除法指令操作数及数据类型和加减运算的相同。

整数乘法除法产生双整数指令的操作数:IN1/IN2:VW, IW, QW, MW, SW, SMW, T, C, LW, AC, AIW, 常量, *VD, *LD, *AC。数据类型:整数。

OUT:VD, ID, QD, MD, SMD, SD, LD, AC, *VD, *LD, *AC 。数据类型:双整数。

使ENO = 0的错误条件:0006(间接地址),SM1.1(溢出),SM1.3(除数为0)。

对标志位的影响:SM1.0(零标志位),SM1.1(溢出),SM1.2(负数),SM1.3(被0除)。

表5-15 整数乘除法指令格式

LD I0.0

MUL AC1 VD100

DIV VW10 VD200

图5-18 例5-12题图

注意:因为VD100包含:VW100和VW102两个字,VD200包含:VW200和VW202两个字,所以在语句表指令中不需要使用数据传送指令。

3. 实数加减乘除指令

实数加法(ADD-R)、减法(SUB-R)指令:将两个32位实数相加或相减,并产生一个32位实数结果,从OUT指定的存储单元输出。

实数乘法(MUL-R)、除法(DIV-R)指令:使能输入有效时,将两个32位实数相乘(除),并产生一个32位积(商),从OUT指定的存储单元输出。

操作数:IN1/IN2:VD, ID, QD, MD, SMD, SD, LD, AC, 常量, *VD, *LD, *AC。

OUT:VD, ID, QD, MD, SMD, SD, LD, AC, *VD, *LD, *AC 。

数据类型:实数。

指令格式如表5-16所示。

表5-16 实数加减乘除指令

【例5-13】实数运算指令的应用,程序如图5-19所示。

LD I0.0

+R AC1, VD100

/R VD100, AC0

图5-19 例5-13题图

4. 数学函数变换指令

(1)平方根(SQRT)指令:对32位实数(IN)取平方根,并产生

一个32位实数结果,从OUT指定的存储单元输出。

(2)自然对数(LN)指令:对IN中的数值进行自然对数计算,并

将结果置于OUT指定的存储单元中。

求以10为底数的对数时,用自然对数除以2.302585(约等于10的

自然对数)。

(3)自然指数(EXP)指令:将IN取以e为底的指数,并将结果置

于OUT指定的存储单元中。

将“自然指数”指令与“自然对数”指令相结合,可以实现以任意数为底,任意数为指数的计算。求y x,输入以下指令:EXP (x * LN (y))。

例如:求23=EXP(3*LN(2))=8;27的3次方根=271/3=EXP(1/3*LN(27))=3。

(4)三角函数指令:将一个实数的弧度值IN分别求SIN、COS、TAN,得到实数运算结果,从OUT 指定的存储单元输出。

函数变换指令格式及功能如表5-17所示。

表5-17 函数变换指令格式及功能

使ENO = 0的错误条件:0006(间接地址),SM1.1(溢出)SM4.3(运行时间)

对标志位的影响:SM1.0(零),SM1.1(溢出),SM1.2(负数)

【例5-14】求45o正弦值。

分析:先将45o转换为弧度:(3.14159/180)*45,再求正弦值。程序如图5-20所示。

LD I0.1

MOVR 3.14159, AC1

/R 180.0, AC1

*R 45.0, AC1

SIN AC1, AC0

图5-20 例5-14题图

5.2.2 逻辑运算指令

逻辑运算是对无符号数按位进行与、或、异或和取反等操作。操作数的长度有B、W、DW。指令格式如表5-18所示。

1. 逻辑与(WAND )指令:将输入IN1,IN2按位相与,得到的逻辑运算结果,放入OUT 指定的存储单元。

2. 逻辑或(WOR )指令:将输入IN1,IN2按位相或,得到的逻辑运算结果,放入OUT 指定的存储单元。

3. 逻辑异或(WXOR )指令:将输入IN1,IN2按位相异或,得到的逻辑运算结果,放入OUT 指定的存储单元。

4. 取反(INV )指令:将输入IN 按位取反,将结果放入OUT 指定的存储单元。

表5-18 逻辑运算指令格式

说明:

(1)在表5-18中,在梯形图指令中设置IN2和OUT 所指定的存储单元相同,这样对应的语句表指令如表中所示。若在梯形图指令中,IN2(或IN1)和OUT 所指定的存储单元不同,则在语句表指令中需使用数据传送指令,将其中一个输入端的数据先送入OUT ,在进行逻辑运算。如MOVB IN1,OUT ANDB IN2,OUT

(2)ENO=0的错误条件:0006 间接地址,SM4.3 运行时间 (3)对标志位的影响:SM1.0(零)

【例5-15】逻辑运算编程举例,程序如图5-21所示。

//字节与操作 LD I0.0 ANDB VB1, VB2 //字或操作

MOVW VW100, VW300 ORW VW200, VW300

//双字异或操作

XORD AC0, AC1

//字节取反操作

MOVB VB5, VB6

INVB VB6

图5-21 例5-15题图

运算过程如下:

VB1 VB2 VB2

0001 1100 W AND 1100 1101 →0000 1100

VW100 VW200 VW300

0001 1101 1111 1010 WOR 1110 0000 1101 1100→1111 1101 1111 1110

VB5 VB6

0000 1111 INV 1111 0000

5.2.3 递增、递减指令

递增、递减指令用于对输入无符号数字节、符号数字、符号数双字进行加1或减1的操作。指令格式如表5-19所示。

1. 递增字节(INC-B)/递减字节(DEC-B)指令

递增字节和递减字节指令在输入字节(IN)上加1或减1,并将结果置入OUT指定的变量中。递增和递减字节运算不带符号。

2. 递增字(INC-W)/递减字(DEC-W)指令

递增字和递减字指令在输入字(IN)上加1或减1,并将结果置入OUT。递增和递减字运算带符号(16#7FFF > 16#8000)。

3.递增双字(INC-DW)/递减双字(DEC-DW)指令

递增双字和递减双字指令在输入双字(IN)上加1或减1,并将结果置入OUT。递增和递减双字运算带符号()。

表5-19 递增、递减指令格式

说明:

(1)使ENO = 0的错误条件:SM4.3(运行时间),0006(间接地址),SM1.1溢出)

(2)影响标志位:SM1.0 (零),SM1.1(溢出),SM1.2(负数)。

(3)在梯形图指令中,IN和OUT可以指定为同一存储单元,这样可以节省内存,在语句表指令中不需使用数据传送指令。

5.2.4 运算单位转换实训

1. 实训目的

(1)掌握算术运算指令和数据转换指令的应用。

(2)掌握建立状态表及通过强制调试程序的方法。

(3)掌握在工程控制中,进行运算单位转换的的方法及步骤。

2. 实训内容

将英寸转换成厘米,已知C10的当前值为英寸的计数值,1英寸=2.54厘米。

3. 写入程序、编译并下载到PLC

分析:将英寸转换为厘米的步骤为:将C10中的整数值英寸→双整数英寸→实数英寸→实数厘米→整数厘米。参考程序如图5-22所示。

//(VD4)=2.54

LD SM0.1

MOVR 2.54, VD4

// 将计数器数值(英寸)载入AC1

LD I0.0

ITD C10 AC1

// 将数值转换为实数

DTR AC1 VD0

MOVR VD0 VD8

// 乘以2.54(转换为厘米)

*R VD4 VD8

// 将数值转换回整数

ROUND VD8 VD12

?图5-22 将英寸转换为厘米参考程序

注意:在程序中VD0、VD4、VD8、VD12,都是以双字(4个字节)编址的。

4. 建立状态表,通过强制,调试运行程序。

(1)创建状态表

用鼠标右键单击目录树中的状态表图标或单击已经打开的状态表,将弹出一个窗口,在窗口中选择“插入状态表”选项,可创建状态表。在状态表的地址列输入地址I0.0、C10、AC1、VD0、VD4、VD8、VD12。

(2)起动状态表

与可编程控制器的通信连接成功后,用菜单“调试→状态表”或单击工具条上的状态表图标,可起动状态表,再操作一次关闭状态表。状态表被起动后,编程软件从PLC读取状态信息。

(3)用状态表强制改变数值

通过强制C,模拟逻辑条件,方法是在显示状态表后,在状态表的地址列中选中“C”操作数,在“新数值”列写入模拟数值,然后单击工具条的“强制”图标,被强制的数值旁边将显示锁定图标。

(4)在完成对“C”的“新数值”列的改动后,可以使用“全部写入”,将所有需要的改动发送至PLC。

(5)运行程序并通过状态表监视操作数的当前值,记录状态

表的数据。

5.3 表功能指令

数据表是用来存放字型数据的表格,如图5-23所示。表格的第一个字地址即首地址,为表地址,首地址中的数值是表格的最大长度(TL),即最大填表数。表格的第二个字地址中的数值是表的实际长度(EC),指定表格中的实际填表数。每次向表格中增加新数据后,

EC加1。从第三个字地址开始,存放数据(字)。表格最多可存放100

个数据(字),不包括指定最大填表数(TL)和实际填表数(EC)的

参数。

图5-23 数据表

要建立表格,首先须确定表的最大填表数。如图5-24所示。

// 输入表格的最大填表数

LD SM0.1

MOVW +6, VW200

西门子S 指令表

西门子S7-200 PLC指令学习(1) S7-200系列的基本逻辑指令 S7-200系列的基本逻辑指令与FX系列和CPM1A系列基本逻辑指令大体相似,编程和梯形图表达方式也相差不多,这里列表表示S7-200系列的基本逻辑指令(见表)。 表 S7-200系列的基本逻辑指令 S7-200系列PLC的比较指令 在SIEMENS S7-200的编程软件STEP-7中,有专门的比较指令:IN1与IN2比较,比较的数据类型可以是B、I(W)、D、R,即字节、字整数、双字整数和实数;还可以有其他的比较式:>、<、≥、≤、<>等等。当满足比较等式,则该触点闭合。 与LMODSOFT指令对照:在LMODSOFT中,没有直接的数的比较指令,但SUB指令可以通过其执行减法功能后的三个输出端的状态实现整数的比较功能。 若与LMODSOFT 中的SUB指令对应,则在STEP-7中应有三个比较指令: >、=、< 来分别对应SUB 指令的三个输出;若还要对应≥、≤、或<>,则根据SUB指令三个输出端的不同组合,均可找到对应的比较指令。 比如:①(30007)>(40030) ②(30007)=(40030) ③(30007)<(40030) ①+②(30007)≥ ②+③(30007)≤(40030) ①+③(30007)<>(40030) S7-200系列PLC的定时器指令 类型、编号及分辨率 TON——接通延时 TONR——有记忆接通延时 TOF——断开延时

3种分辨率(时基):1ms、10ms、100ms——分别对应不同的定时器号 定时器6个要素: 指令格式(时基、编号等)预置值——PT 使能——IN 复位——3种定时器不同 当前值——Txxx 定时器状态(位)——可由触点显示 定时值=时基×预置值PT。由于定时器的计时间隔与程序的扫描周期并不同步,定时器可能在其时基(1ms、10ms、100ms)内任何时间启动,所以,未避免计时时间丢失,一般要求设置PT预置值必须大于最小需要的时间间隔。例如:使用10ms时基定时器实现140ms延时(时间间隔),则PT应设置为15(10ms×15=150ms)。 2)功能 (1)接通延时定时器TON——一般用于单一时间间隔的定时 指令格式:见图,编号与分辨率及定时器类型有关。(见教材P221:Fig8-3-3a) 使能:——IN:I2.0 =“1” 当前值——T33,当在线(Online)时,此处显示当前值 预置值——PT=3,即定时时间=10ms×3=30ms 复位——IN:I2.0 = “0” 定时器状态(位)——“1”或“0” 与MODICON PLC的定时器指令对照: 区别:对MODICON PLC,当10001=“0” ,10002=“1”时,定时器当前值保持;当计时时间到,即(40040)= 30时,只要10002=“1”,定时器也是保持 对S7-200 PLC,只要I0.0=“1”,即计时,当T33当前值=3时,定时器继续计时,直至I0.0=“0”,定时器复位(相当于10002=“0” ) (1)断开延时定时器TOF——一般用于故障时间后的时间延时

西门子PLC程序指令注意点

PLC程序详解(图文并貌) 一、时间继电器: TON 使能=1计数,计数到设定值时(一直计数到32767),定时器位=1。使能=0复位(定时器位=0)。TOF 使能=1,定时器位=1,计数器复位(清零)。使能由1到0负跳变,计数器开始计数,到设定值时(停止计数),定时器位=0。如下图: 图1:使能=1时,TOF(T38)的触点动作图 图2:使能断开后,计数到设定值后,TOF(T38)的触点动作图(其中T38常开触点是在使能由1到0负跳变后计数器计时到设定值后变为0的) TONR 使能=1,计数器开始计数,计数到设定值时,计数器位=1。使能断开,计数器停止计数,计数器位仍为1,使能位再为1时,计数器在原来的计数基础上计数。

以上三种计数器可以通过复位指令复位。 正交计数器 A相超前B相90度,增计数 B相超前A相90度,减计数 当要改变计数方向时(增计数或减计数),只要A相和B相的接线交换一下就可以了。 二、译码指令和编码指令: 译码指令和编码指令执行结果如图所示: DECO是将VW2000的第十位置零(为十进制的1024),ENCO输入IN最低位为1的是第3位,把3写入VB10(二进制11)。 三、填表指令(ATT) S7-200填表指令(ATT)的使能端(EN)必须使用一个上升沿或下降沿指令(即在下图的I0.1后加一个上升沿或下降沿),若单纯使用一个常开触点,就会出现以下错误:

这一点在编程手册中也没有说明,需要注意。其他的表格指令也同样。 四、数据转换指令 使用数据转换指令时,一定要注意数据的范围,数据范围大的转换为数据范围小的发注意不要超过范围。如下图所示为数据的大小及其范围。 (1)BCD码转化为整数(BCD_I) 关于什么是BCD码,请参看《关于BCD码》。 BCD码转化为整数,我是这样理解的:把BCD码的数值看成为十进制数,然后把BCD到整数的转化看成是十进制数到十六进制数的转化。如下图所示,BCD码为54,转化为整数后为36。

PLC培训-西门子PLC指令大全

金蓝PLC培训,西门子PLC指令大全 金蓝PLC培训,西门子PLC指令大全。自动化编程学习起来很困难,很多人对于学习plc 编程头疼不已,下面是山东金蓝plc培训机构为大家整理的经常用到的金蓝PLC培训,西门子PLC指令大全。 1、位逻辑指令 1.1 -||- 常开接点(地址) 1.2 -|/|- 常闭接点(地址) 1.3 XOR 位异或 1.4 -|NOT|- 信号流反向 1.5 -( ) 输出线圈 1.6 -(#)- 中间输出 1.7 -(R) 线圈复位 1.8 -(S) 线圈置位 1.9 RS 复位置位触发器

1.10 RS 置位复位触发器 1.11 -(N)- RLO下降沿检测 1.12 -(P)- PLO上升沿检测 1.13 -(SAVE) 将RLO存入BR存储器1.14 MEG 地址下降沿检测 1.15 POS 地址上升沿检测 2、比较指令 2.1 CMP?I 整数比较 2.2 CMP?D 双整数比较

2.3 CMP?R 实数比较 3、转换指令 3.1 BCD_IBCD码转换为整数 3.2 I_BCD 整数转换为BCD码 3.3 I_DINT 整数转换为双整数 3.4 BCD_DIBCD码转换为双整数 3.5 DI_BCD 双整数转换为BCD码 3.6 DI_REAL 双整数转换为浮点数 3.7 INV_I 整数的二进制反码 3.8 INV_DI 双整数的二进制反码 3.9 NEG_I 整数的二进制补码 3.10 NEG_DI 双整数的二进制补码 3.11 NEG_R 浮点数求反 3.12 ROUND 舍入为双整数 3.13 TRUNC 舍去小数取整为双整数 3.14 CEIL 上取整

西门子PLC指令

指令(英文全称意思) :指令含义 1 、LD( Load 装载) :动合触点 2、LDN ( Load Not 不装载) : 动断触点 3、A ( And 和动合) : 用于动合触点串联 4、AN ( And Not 和动断) :用于动断触点串联 5、O ( Or 或动合) :用于动合触点并联 6、ON ( Or Not 或动断) : 用于动断触点并联 7、= ( Out 输出) :用于线圈输出 8、OLD ( Or Lode): 块或 9、ALD ( And Lode): 块和 10、LPS ( Logic Push ) :逻辑入栈 11、LRD ( Logic Read ) :逻辑读栈 12、LPP ( Logic Pop ) :逻辑出栈 13、NOT ( not 并非) :非 14、NOP ( No Operation Performed ) : 无操作 15、AENO ( And ENO ) :指令盒输出端ENO相和 16、S ( Set 放置) : 置1 17、R ( Reset 重置,清零) :清零 18、P ( Positive) :上升沿 19、N ( Negative) :下降沿

20、TON ( On_Delay Timer ) :接通延时定时器 21、TONR ( Retentive On_Delay Timer ) : 有记忆接通延时定时器 22、TOF ( Off_ Delay Timer ) :断开延时定时器 23、CTU ( Count Up ) : 增计数器 24、CTD ( Count Down ) : 减计数器 25、CTDU ( Count Up/ Count Down ) :增减计数器 26、ADD ( add 加) : 加注意 //ADD_I (_ I 表示整数) ADD_DI( DI表示双字节整数) ADD-R (R 表示实数) 它们都是加运算只是数的大小不同。 27、SUB ( Subtract 减去,减少) :减 28、MUL ( Multiply ) : 乘 29、DIV ( Divide ) : 除 30、SQRT ( Square root ) : 求平方根 31、LN ( Napierian Logarithm 自然对数) : 求自然对数 32、EXP ( Exponential 指数的) :求指数 33、INC_B ( Increment 增加) :增1 //其中_B代表数据类型还有W(字节)、DW双字后面几个都是这样的。34、DEC_B ( Decrement 减少) :减1 35、WAND_B ( Word and 和命令) :逻辑和 36、WOR_B ( Word or 或命令) : 逻辑或

西门子PLC指令表

1 位逻辑指令 1.1 位逻辑指令概述 1.2 -||- 常开接点(地址) 1.3 -|/|-常闭接点(地址) 1.4 XOR位异或 1.5 -|NOT|- 信号流反向 1.6 -( ) 输出线圈 1.7 -(#)- 中间输出 1.8 -(R) 线圈复位 1.9 -(S) 线圈置位 1.10 RS复位置位触发器 1.11 RS置位复位触发器 1.12 -(N)- RLO下降沿检测 1.13 -(P)- PLO上升沿检测 1.14 -(SAVE) 将RLO存入BR存储器 1.15 MEG地址下降沿检测 1.16 POS地址上升沿检测 1.17 立即读操作 1.18 立即写操作 2 比较指令 2.1 比较指令概述 2.2 CMP?I整数比较 2.3 CMP?D双整数比较 2.4 CMP?R实数比较 3 转换指令 3.1 转换指令概述 3.2 BCD_IBCD码转换为整数 3.3 I_BCD整数转换为BCD码 3.4 I_DINT整数转换为双整数 3.5 BCD_DIBCD码转换为双整数 3.6 DI_BCD双整数转换为BCD码 3.7 DI_REAL双整数转换为浮点数 3.8 INV_I整数的二进制反码 3.9 INV_DI双整数的二进制反码 3.10 NEG_I整数的二进制补码 3.11 NEG_DI双整数的二进制补码 3.12 NEG_R浮点数求反 3.13 ROUND舍入为双整数 3.14 TRUNC舍去小数取整为双整数 3.15 CEIL上取整 3.16 FLOOR下取整 4 计数器指令 4.1 计数器指令概述 4.2 S_CUD加减计数 4.3 S_CU加计数器 4.4 S_CD减计数器 4.5 -(SC)计数器置初值 4.6 -(CU)加计数器线圈 4.7 -(CD)减计数器线圈 5 数据块指令 5.1 -(OPN)打开数据块:DB或DI 6 逻辑控制指令 6.1 逻辑控制指令概述 6.2 -(JMP)- 无条件跳转 6.3 -(JMP)- 条件跳转 6.4 -(JMPN)- 若非则跳转 6.5 LABEL标号 7 整数算术运算指令 7.1 整数算术运算指令概述 7.2 判断整数算术运算指令后状态字的位 7.3 ADD_I 整数加法 7.4 SUB_I 整数减法 7.5 MUL_I 整数乘法 7.6 DIV_I 整数除法 7.7 ADD_DI 双整数加法 7.8 SUB_DI 双整数减法 7.9 MUL_DI 双整数乘法 7.10 DIV_DI 双整数除法 7.11 MOD_DI 回送余数的双整数 8 浮点算术运算指令 8.1 浮点算术运算指令概述 8.2 判断浮点算术运算指令后状态字的位 8.3 基础指令 8.3.1 ADD_R实数加法 8.3.2 SUB_R实数减法 8.3.3 MUL_R实数乘法 8.3.4 DIV_R实数除法 8.3.5 ABS浮点数绝对值运算 8.4 扩展指令 8.4.1 SQR浮点数平方 8.4.2 SQRT浮点数平方根 8.4.3 EXP浮点数指数运算 8.4.4 LN浮点数自然对数运算 8.4.5 SIN浮点数正弦运算 8.4.6 COS浮点数余弦运算 8.4.7 TAN浮点数正切运算

西门子plc指令表

1 位逻辑指令 1.1 -||- 常开接点(地址) 1.2 -|/|- 常闭接点(地址) 1.3 XOR 位异或 1.4 -|NOT|- 信号流反向 1.5 -( ) 输出线圈 1.6 -(#)- 中间输出 1.7 -(R) 线圈复位 1.8 -(S) 线圈置位 1.9 RS 复位置位触发器 1.10 RS 置位复位触发器 1.11 -(N)- RLO下降沿检测 1.12 -(P)- PLO上升沿检测 1.13 -(SAVE) 将RLO存入BR存储器1.14 MEG 地址下降沿检测 1.15 POS 地址上升沿检测 2 比较指令 2.1 CMP?I 整数比较 2.2 CMP?D 双整数比较 2.3 CMP?R 实数比较 3 转换指令 3.1 BCD_IBCD码转换为整数 3.2 I_BCD 整数转换为BCD码 3.3 I_DINT 整数转换为双整数 3.4 BCD_DIBCD码转换为双整数 3.5 DI_BCD 双整数转换为BCD码3.6 DI_REAL 双整数转换为浮点数3.7 INV_I 整数的二进制反码 3.8 INV_DI 双整数的二进制反码3.9 NEG_I 整数的二进制补码 3.10 NEG_DI 双整数的二进制补码3.11 NEG_R 浮点数求反 3.12 ROUND 舍入为双整数 3.13 TRUNC 舍去小数取整为双整数3.14 CEIL 上取整 3.15 FLOOR 下取整 4 计数器指令 4.1 S_CUD 加减计数 4.2 S_CU 加计数器 4.3 S_CD 减计数器 4.4 -(SC) 计数器置初值 4.5 -(CU) 加计数器线圈 4.6 -(CD) 减计数器线圈 5 数据块指令

西门子S7-200 PLC指令学习

西门子S7-200 PLC指令学习 S7-200PLC数据传送指令 数据传送指令如表4-22所示。 S7-200系列的基本逻辑指令 S7-200系列的基本逻辑指令与FX系列和CPM1A系列基本逻辑指令大体相似,编程和梯形图表达方式也相差不多,这里列表表示S7-200系列的基本逻辑指令(见表)。 表S7-200系列的基本逻辑指令 S7-200系列PLC的比较指令 在SIEMENS S7-200的编程软件STEP-7中,有专门的比较指令:IN1与IN2比较,比较的数据类型可以是B、I(W)、D、R,即字节、字整数、双字整数和实数;还可以有其他的比较式:>、<、≥、≤、<>等等。当满足比较等式,则该触点闭合。 与LMODSOFT指令对照:在LMODSOFT中,没有直接的数的比较指令,但SUB指令可以通过其执行减法功能后的三个输出端的状态实现整数的比较功能。 若与LMODSOFT 中的SUB指令对应,则在STEP-7中应有三个比较指令:>、=、< 来分别对应SUB 指令的三个输出;若还要对应≥、≤、或<>,则根据SUB指令三个输出端的不同组合,均可找到对应的比较指令。 比如:①(30007)>(40030) ②(30007)=(40030) ③(30007)<(40030) ①+②(30007)≥ ②+③(30007)≤(40030) ①+③(30007)<>(40030) S7-200系列PLC的定时器指令 类型、编号及分辨率 TON——接通延时 TONR——有记忆接通延时 TOF——断开延时 3种分辨率(时基):1ms、10ms、100ms——分别对应不同的定时器号 定时器6个要素: 指令格式(时基、编号等)预置值——PT

西门子plc指令表

1.1 -||- 常开接点(地址) 1.2 -|/|- 常闭接点(地址) 1.3 XOR 位异或 1.4 -|NOT|- 信号流反向 1.5 -( ) 输出线圈 1.6 -(#)- 中间输出 1.7 -(R) 线圈复位 1.8 -(S) 线圈置位 1.9 RS 复位置位触发器 1.10 RS 置位复位触发器 1.11 -(N)- RLO下降沿检测 1.12 -(P)- PLO上升沿检测 1.13 -(SAVE) 将RLO存入BR存储器1.14 MEG 地址下降沿检测 1.15 POS 地址上升沿检测

2.1 CMP?I 整数比较 2.2 CMP?D 双整数比较 2.3 CMP?R 实数比较 3 转换指令 3.1 BCD_IBCD码转换为整数 3.2 I_BCD 整数转换为BCD码 3.3 I_DINT 整数转换为双整数3.4 BCD_DIBCD码转换为双整数3.5 DI_BCD 双整数转换为BCD码3.6 DI_REAL 双整数转换为浮点数3.7 INV_I 整数的二进制反码 3.8 INV_DI 双整数的二进制反码3.9 NEG_I 整数的二进制补码 3.10 NEG_DI 双整数的二进制补码3.11 NEG_R 浮点数求反

3.12 ROUND 舍入为双整数 3.13 TRUNC 舍去小数取整为双整数3.14 CEIL 上取整 3.15 FLOOR 下取整 4 计数器指令 4.1 S_CUD 加减计数 4.2 S_CU 加计数器 4.3 S_CD 减计数器 4.4 -(SC) 计数器置初值 4.5 -(CU) 加计数器线圈 4.6 -(CD) 减计数器线圈 5 数据块指令 5.1 -(OPN) 打开数据块:DB或DI 6 逻辑控制指令 6.1 -(JMP) 无条件跳转 6.2 -(JMP) 条件跳转

西门子PLC的性能指标

(1)编程语言及指令功能:梯形图语言、助记符语言在西门子PLC模块中较为常见,梯形图语言一般在计算机屏幕上编辑,使用起来简单方便。助记符语言与计算机编程序相似,如果对有编制程序基础的工程技术人员来说,学习助记符会容易一些,只要理解各个指令的含义,就可以像做计算机程序一样写PLC 的控制程序。如果两种语言都会使用更好,因为它们之间可以相互转换。西门子PLC实际上只认识助记符语言,梯形图语言是需要转换成助记符语言后,存入PLC的存储器中。 现在功能图语言的使用有上升趋势。编程语言中还有一个内容是指令功能。衡量指令功能强弱可看两个方面:一是指令条数多少;二是指令中有多少综合性指令。一条综合性指令一般就能完成一项专门操作。用户编制的程序完成的控制任务,取决于指令的多少,指令功能越多,MT6100IV5编程越简单和方便,完成一定的控制任务越容易。 (2)输入输出点数:输入输出点数是PLC可以接受的输入开关信号和输出开关信号的最大数量,值得注意的是输入点数往往的大于输出点数的,且二者不能相互替代。 (3)扫描速度数是指PLC扫描1k(1k=1024)字用户程序所需的时间,通常以ms/k字为单位,扫描速度越快越好。 (4)存储容量:存储容量是存放用户程序的存储器的容量。通常用k来表示。也有的西门子PLC直接用所能存放的程序量表示。在编制西门子PLC 程序时,需要用到大量的寄存器来存放变量、中间结果、保持数据、定时计数、模块设置和各种标志位等信息。这些寄存器的多少,直接关系到程序的编制,该存储器的容量越大,就可以编制出更复杂的程序。 (5)可扩展性:在现代工业生产中西门子PLC的可扩展性也显的非常重要。主要包括:1)输入输出点数的扩展;2)存储容量的扩展;3)联网功能的扩展;4)可扩展的模块数;另外,可编程序控制器的可靠性、易操作性及经济性等功能指示也受用户的关注。 艾驰商城是国内最专业的MRO工业品网购平台,正品现货、优势价格、迅捷配送,是一站式采购的工业品商城!具有10年工业用品电子商务领域研究,以强大的信息通道建设的优势,以及依托线下贸易交易市场在工业用品行业上游供应链的整合能力,为广大的用户提供了传感器、图尔克传感器、变频器、断路器、继电器、PLC、工控机、仪器仪表、气缸、五金工具、伺服电机、劳保用品等一系列自动化的工控产品。 如需进一步了解相关PLC产品的选型,报价,采购,参数,图片,批发等信息,请关注艾驰商城。https://www.doczj.com/doc/2212462293.html,/

相关主题
文本预览
相关文档 最新文档