S7-200系列PLC功能指令及应用

第 5 章 S7-200 系列 PLC 功能指令及应用

PLC 作为一个计算机控制系统,不仅可以用来实现继电器接触系统的位控功能,而且也 能够应用于多位数据的处理、过程控制等领域。几乎所有的 PLC 生产厂家都开发增设了用于 特殊控制要求的指令,这些指令称之为功能指令。
本章所介绍的功能指令主要包括:数据处理指令、算术逻辑指令、表功能指令、转换指 令、中断指令、高速计数器、高速脉冲输出及 PID 运算指令等。
S7-200 中绝大多数功能指令的操作数类型及寻址范围如下: 字节型:VB、IB、QB、MB、SB、SMB、LB、AC、*VD、*LD、*AC 和常数。 字型:VW、IW、QW、MW、SW、SMW、LW、AC、T、C、*VD、*LD、*AC 和常数。 双字型:VD、ID、QD、MD、SD、SMD、LD、AC、*VD、*LD、*AC 和常数。 本章对于以上数据类型和寻址方式不再重复,对于个别稍有变化的指令,仅作补充和说 明,读者也可参阅 S7-200 编程手册。
5.1 数据传送指令

数据传送指令主要用于各个编程元件之间进行数据传送。主要包括单个数据传送、数据块 传送、交换、循环填充指令。
5.1.1 单个数据传送指令
单个数据传送指令每次传送一个数据,传送数据的类型分为:字节(B)传送、字(W) 传送、双字(D)传送和实数(R)传送,对于不同的数据类型采用不同的传送指令。
1. 字节传送指令 字节传送指令以字节作为数据传送单元,包括:字节传送指令 MOVB 和立即读/写字节 传送指令。 (1)字节传送指令 MOVB 字节传送指令指令格式:

MOV_B EN ENO
IN OUT
LAD 指令

MOVB IN, OUT STL 指令

MOV_B:字节传送梯形图指令盒标识符(也称功能符号,B 表示字节数据类型,下同); MOVB:语句表指令操作码助记符; EN:使能控制输入端(I、Q、M、T、C、SM、V、S、L 中的位);
96

IN:传送数据输入端; OUT:数据输出端; ENO:指令和能流输出端(即传送状态位)。 (后续指令的 EN、IN、OUT、ENO 功能同上,只是 IN 和 OUT 的数据类型不同) 指令功能:在使能输入端 EN 有效时,将由 IN 指定的一个 8 位字节数据传送到由 OUT 指定的字节单元中。 (2)立即读字节传送指令 BIR 立即读字节传送指令格式:

MOV_BIR EN ENO
IN OUT

BIR IN, OUT

LAD 指令

STL 指令

MOV_BIR:立即读字节传送梯形图指令盒标识符; BIR:语句表指令操作码助记符。 指令功能:当使能输入端 EN 有效时,BIR 指令立即(不考虑扫描周期)读取当前输入 继电器中由 IN 指定的字节(IB),并送入 OUT 字节单元(并未立即输出到负载)。 注意:IN 只能为 IB。 (3)立即写字节传送指令 BIW 立即写字节传送指令格式:

MOV_BIW EN ENO
IN OUT
LAD 指令

BIW IN, OUT STL 指令

MOV_BIW:立即写字节传送梯形图指令盒标识符; BIW:语句表指令操作码助记符。 指令功能:当使能输入端 EN 有效时,BIW 指令立即(不考虑扫描周期)将由 IN 指定的 字节数据写入到输出继电器中由 OUT 指定的 QB,即立即输出到负载。 注意:OUT 只能是 QB。 2. 字/双字传送指令 字/双字传送指令以字/双字作为数据传送单元。 字/双字指令格式类同字节传送指令,只是指令中的功能符号(标识符或助计符,下同) 中的数据类型符号不同而已: MOV_W/MOV_DW:字/双字梯形图指令盒标识符; MOVW/MOVD:字/双字语句表指令操作码助记符。
97

【例 5-1】在 I0.1 控制开关导通时,将 VW100 中的字数据传送到 VW200 中,程序如图 5-1 所示。

I0.1

MOV_W

EN ENO

VW100 IN OUT VW200

LAD 指令

LD I0.1 MOVW VW100, VW200
STL 指令

图5-1 字数据传送指令应用示例
【例 5-2】在 I0.1 控制开关导通时,将 VD100 中的双字数据传送到 VD200 中,程序如图 5-2 所示。

I0.1

MOV_DW

EN ENO

VD100 IN OUT VD200

LAD 指令

LD I0.1 MOVD VD100, VD200
STL 指令

图5-2 双字数据传送指令应用示例
3. 实数传送指令 MOVR 实数传送指令以 32 位实数双字作为数据传送单元。 实数传送指令功能符号为: MOV_R:实数传送梯形图指令盒标识符; MOVR:实数传送语句表指令操作码助记符。 【例 5-3】在 I0.1 控制开关导通时,将常数 3.14 传送到双字单元 VD200 中,程序如图 5-3 所示。

I0.1

MOV_R

EN ENO

3.14 IN OUT VD200

LAD 指令

LD I0.1 MOVR 3.14, VD100
STL 指令

图5-3 实数数据传送指令应用示例

5.1.2 块传送指令
块传送指令可用来一次传送多个同一类型的数据,最多可将 255 个数据组成一个数据块, 数据块的类型可以是字节块、字块和双字块。下面仅介绍字节块传送指令 BMB:
98

字节块传送指令格式:

BLKMOV_B

EN

ENO

IN

OUT

N

LAD 指令

BMB IN, OUT,N STL 指令

BLKMOV_B:字节块传送梯形图指令标识符; BMB:语句表指令操作码助记符; N:块的长度,字节型数据(下同)。 指令功能:当使能输入端 EN 有效时,以 IN 为字节起始地址的 N 个字节型数据传送到以 OUT 为起始地址的 N 个字节存储单元。 与字节块传送指令比较,字块传送指令为 BMW(梯形图标识符为 BLKMOV_W),双字 块传送指令为 BMD(梯形图标识符为 BLKMOV_D)。 【例 5-4】在 I0.1 控制开关导通时,将 VB10 开始的 10 个字节单元数据传送到 VB100 开 始的数据块中,程序如图 5-4 所示。

I0.1

BLKMOV_B

ENO

VB10 10
LAD 指令

VB100

LD I0.1 BMB VB10, VB100, 20
STL 指令

图5-4 字节块数据传送指令应用示例

5.1.3 字节交换与填充指令
1. 字节交换指令 SWAP SWAP 指令专用于对 1 个字长的字型数据进行处理。 指令格式:

SWAP EN ENO

SWAP IN

IN

LAD 指令

STL 指令

SWAP:字节交换梯形图指令标识符、语句表助计符。 指令功能:EN 有效时,将 IN 中的字型数据的高位字节和低位字节进行交换。 2. 填充指令 FILL 填充指令 FILL 用于处理字型数据。 指令格式:

99

FILL

EN

ENO

IN

OUT

N

LAD 指令

FILL IN, OUT,N STL 指令

FILL:填充梯形图指令标识符、语句表指令操作码助记符; N:填充字单元个数,N 为字节型数据。 指令功能:EN 有效时,将字型输入数据 IN 填充到从 OUT 开始的 N 个字存储单元。 【例 5-5】在 I0.0 控制开关导通时,将 VW100 开始的 256 个字节全部清 0。程序如图 5-5 所示。

网络 1
I0.0

FILL EN ENO

+0 IN
128 N

OUT VW100

LD FILL

I0.0 +0, VW100, 128

图5-5 填充指令应用示例
注意:在使用本指令时,OUT 必须为字单元寻址。

5.2 算术和逻辑运算指令

算术运算指令包括加法、减法、乘法、除法及一些常用的数学函数指令;逻辑运算指令 包括逻辑与、或、非、异或以及数据比较等指令。
5.2.1 算术运算指令
1. 加法指令 加法操作是对两个有符号数进行相加操作,包括整数加法指令、双整数加法指令和实数 加法指令。 (1)整数加法指令+I 整数加法指令格式:

ADD_I EN ENO
IN1 IN2 OUT LAD 指令

+I IN1 , OUT
STL 指令 IN2 同 OUT

ADD_I:整数加法梯形图指令标识符; +I:整数加法语句表指令操作码助记符;

100

MOVW IN1 , OUT +I IN2, OUT
STL 指令 IN2 不同 OUT

IN1:输入操作数 1(下同); IN2:输入操作数 2(下同); OUT:输出运算结果(下同); 操作数和运算结果均为单字长。 指令功能:当 EN 有效时,将两个 16 位的有符号整数 IN1 与 IN2(或 OUT)相加,产生 一个 16 位的整数,结果送到单字存储单元 OUT 中。 在使用整数加法指令时特别要注意: 对于梯形图指令实现功能为 OUT←IN1+IN2,若 IN2 和 OUT 为同一存储单元,在转为 STL 指令时实现的功能为 OUT←OUT+IN1;若 IN2 和 OUT 不为同一存储单元,在转为 STL 指令时实现的功能为先把 IN1 传送给 OUT,然后顺序 OUT← IN2+OUT。 (2)双字长整数加法指令+D 双字长整数加法指令的操作数和运算结果均为双字(32 位)长。指令格式类同整数加法 指令。 双字长整数加法梯形图指令盒标识符为:ADD_DI 双字长整数加法语句表指令助计符为:+D 【例 5-6】在 I0.1 控制开关导通时,将 VD100 的双字数据与 VD110 的双字数据相加,结 果送入 VD110 中。程序如图 5-6 所示。

I0.1

ADD_DI

EN ENO

VD100 IN1 VD110 IN2 OUT VD110
LAD 指令

LD I0.1 +D VD100, VD110
STL 指令 LAD 中 IN2 同 OUT

图5-6 双字长加法指令应用示例
(3)实数加法指令+R 实数加法指令实现两个双字长的实数相加,产生一个 32 位的实数。指令格式类同整数加 法指令。 实数加法梯形图指令盒标识符为:ADD_R: 实数加法语句表指令操作码助记符为:+R。 上述加法指令运算结果置位特殊继电器 SM1.0(结果为零)、SM1.1(结果溢出)、SM1.2 (结果为负)。 2. 减法指令 减法指令是对两个有符号数进行减操作,与加法指令一样,可分为:整数减法指令(-I)、 双字长整数减法指令(-D)和实数减法指令(-R)。其指令格式类同加法指令。 执行过程为:对于梯形图指令实现功能为 OUT←IN1-IN2;对于 STL 指令为:OUT← OUT-IN1。 【例 5-7】在 I0.1 控制开关导通时,将 VW100(IN1)整数(16 位)与 VW110(IN2) 整数(16 位)相减,其差送入 VW110(OUT)中。程序如图 5-7 所示。
101

I0.1

SUB_I

EN ENO

VW100 IN1 VW110 IN2 OUT VW110

LAD 指令

LD I0.1
INVW VW110
INCW VW110
+I VW100, VW110 STL 指令 LAD 中 IN2 同 OUT

图5-7 整数减法指令应用示例
【例 5-8】在 I0.1 控制开关导通时,将 VD100(IN1)整数(32 位)与 VD110(IN2)整 数(32 位)相减,其差送入 VD200(OUT)中。程序如图 5-8 所示。

I0.1

SUB_DI

EN ENO

VD100 IN1 VD110 IN2 OUT VD200

LAD 指令

LD I0.1 MOVD VD100, VD200 -D VD110, VD200
STL 指令 LAD 中 IN2 不同 OUT

图5-8 双字长整数减法指令应用示例

●梯形图指令中若 IN2 和 OUT 为同一存储单元,在转为 STL 指令时为:

INVW OUT

//求反

INCW OUT

//加 1,转换为补码

+I IN1, OUT

//为补码加法

●梯形图指令中若 IN2 和 OUT 不为同一存储单元,在转为 STL 指令时为:

MOVW IN1, OUT

//先把 IN1 传送给 OUT,

-I IN2, OUT

//然后顺序 OUT←OUT- IN2

减法指令对特殊继电器位的影响同加法指令。

3. 乘法指令

乘法指令是对两个有符号数进行乘法操作。乘法指令可分为整数乘法指令(*I)、完全整

数乘法指令(MUL)、双整数乘法指令(*D)和实数乘法指令(*R)。其指令格式类同加减法

指令。

对于梯形图指令为 OUT← IN1*IN2;对于 STL 指令为 OUT← IN1*OUT。

在梯形图指令中,IN2 和 OUT 可以为同一存储单元。

(1)整数乘法指令*I:

整数乘法指令格式:

102

MUL_I EN ENO
IN1 IN2 OUT LAD 指令

*I IN1,OUT STL 指令

指令功能:当 EN 有效时,将两个 16 位单字长有符号整数 IN1 与 IN2 相乘,运算结果仍 为单字长整数送 OUT 中。运算结果超出 16 位二进制数表示的有符号数的范围,则产生溢出。
(2)完全整数乘法指令 MUL 完全整数乘法指令将两个 16 位单字长的有符号整数 IN1 和 IN2 相乘,运算结果为 32 位 的整数送 OUT 中。 梯形图及语句表指令中功能符号均为 MUL。 (3)双整数乘法指令*D 双整数乘法指令将两个 32 位双字长的有符号整数 IN1 和 IN2 相乘,运算结果为 32 位的 整数送 OUT 中。 梯形图指令功能符号为:MUL_DI; 语句表指令功能符号为:DI。 (4)实数乘法指令*R 实数乘法指令将两个 32 位实数 IN1 和 IN2 相乘,产生一个 32 位实数送 OUT 中。 梯形图指令功能符号为:MUL_R; 语句表指令功能符号为:*R。 上述乘法指令运算结果置位特殊继电器 SM1.0(结果为零)、SM1.1(结果溢出)、SM1.2 (结果为负)。 【例 5-9】在 I0.1 控制开关导通时,将 VW100(IN1)整数(16 位)与 VW110(IN2) 整数(16 位)相乘,结果为 32 位数据送入 VD200(OUT)中。程序如图 5-9 所示。

I0.1

MUL

EN ENO

VW100 IN1 VW110 IN2 OUT VD200

LAD 指令

LD I0.1
MOVW VW100, VW202
MUL VW110, VD200
STL 指令 LAD 中 IN2 不同 OUT

图5-9 完全整数乘法指令应用示例
4. 除法指令 除法指令是对两个有符号数进行除法操作,类同乘法指令。 1)整数除法指令:两个 16 位整数相除,结果只保留 16 位商,不保留余数。 其梯形图指令盒标识符为:DIV_I;语句表指令助计符为:/I 。 2)完全整数除法指令:两个 16 位整数相除,产生一个 32 位的结果,其中低 16 位存商, 高 16 位存余数。

103

其梯形图指令盒标识符与语句表指令助计符均为:DIV。 3)双整数除法指令:两个 32 位整数相除,结果只保留 32 位整数商,不保留余数。 其梯形图指令盒标识符为:DIV_DI;语句表指令助计符为:/D 。 4)实数除法指令:两个实数相除,产生一个实数商。 其梯形图指令盒标识符为:DIV_R;语句表指令助计符为:/R。 除法指令对特殊继电器位的影响同乘法指令。 【例 5-10】在 I0.1 控制开关导通时,将 VW100(IN1)整数除以 10(IN2)整数,结果 为 16 位数据送入 VW200(OUT)中。程序如图 5-10 所示。

I0.1

DIV_I

EN ENO

VW100 IN1 10 IN2 OUT VW200

LD I0.1 MOVW VW100, VW200 /I +10, VW200

LAD 指令

STL 指令 LAD 中 IN2 不同 OUT

图5-10 整数除法指令应用示例

【例 5-11】乘除运算指令应用示例如图 5-11 所示。

网络 1
I0.0

ADD_I EN ENO

AC1 IN1 OUT AC0 AC0 IN2

MUL_I EN ENO

AC1 IN1 OUT VW100 VW100 IN2

DIV_I EN ENO

VW200 IN1 OUT VW200 VW10 IN2

LD I0.0

+I

AC1, AC0

*I

AC1, VW100

/I

VW10, VW200

图5-11 乘除算术运算指令应用示例

5.2.2 增减指令

增减指令又称为自动加 1 和自动减 1 指令。 增减指令可分为:字节增/减指令(INCB/DECB)、字增/减指令(INCW/DECW)和双字 增减指令(INCD/DECD)。下面仅介绍常用的字节增减指令: ●字节加 1 指令格式:

INC_B EN ENO
IN OUT LAD 指令

INCB OUT STL 指令

104

●字节减 1 指令格式:

DEC_B EN ENO
IN OUT LAD 指令

DECB OUT STL 指令

指令功能:当 EN 有效时,将一个 1 字节长的无符号数 IN 自动加(减)1,得到的 8 位 结果送 OUT 中。
在梯形图中,若 IN 和 OUT 为同一存储单元,则执行该指令后,IN 单元字节数据自动加 (减)1。

5.2.3 数学函数指令

S7-200PLC 中的数学函数指令包括指数运算、对数运算、求三角函数的正弦、余弦及正 切值,其操作数均为双字长的 32 位实数。
1. 平方根函数 SQRT:平方根函数运算指令。 指令格式:

SQRT EN ENO
IN OUT
梯形图指令

SQRT IN, OUT
STL指令

指令功能:当 EN 有效时,将由 IN 输入的一个双字长的实数开平方,运算结果为 32 位 的实数送到 OUT 中。
2. 自然对数函数指令 LN:自然对数函数运算指令。 指令格式:

LN EN ENO
IN OUT
梯形图指令

LN

IN, OUT

STL指令

指令功能:当 EN 有效时,将由 IN 输入的一个双字长的实数取自然对数,运算结果为 32 位的实数送到 OUT 中。
当求解以 10 为底 x 的常用对数时,可以分别求出 LNx 和 LN10(LN10=2.302585),然后 用实数除法指令/R 实现相除即可。
【例 5-12】求 log10100,其程序如图 5-12 所示。

105

LN
EN ENO I1.1 100.0 IN OUT AC0

LD I1.1 LN 100.0, AC0 //计算 LN100

LN EN ENO

10.0 IN

VD0

LN 10.0, VD0 //计算 LN10

DIV_R EN ENO

AC0 IN1

AC0

VD0 IN2

LAD 指令

/R VD0, AC0 //相除结果存入 AC0 中 STL 指令

图5-12自然对数指令应用示例

3. 指数函数指令 EXP:指数函数指令。 指令格式:

EXP EN ENO
IN OUT
梯形图指令

EXP

IN, OUT

STL指令

指令功能:当 EN 有效时,将由 IN 输入的一个双字长的实数取以 e 为底的指数运算,其 结果为 32 位的实数送 OUT 中。
由于数学恒等式 yx=exlny,故该指令可与自然对数指令相配合,完成以 y(任意数)为底, x(任意数)为指数的计算。
4. 正弦函数指令 SIN:正弦函数指令。 指令格式:

SIN EN ENO
IN OUT
梯形图指令

SIN

IN, OUT

STL指令

指令功能:当 EN 有效时,将由 IN 输入的一个字节长的实数弧度值求正弦,运算结果为 32 位的实数送 OUT 中。
注意:输入字节所表示必须是弧度值(若是角度值应首先转换为弧度值)。 【例 5-13】计算 130 度的正弦值。 首先将 130 度转换为弧度值,然后输入给函数,程序如图 5-13 所示。

106

图5-13 正弦指令应用示例

5. 余弦函数指令 COS:余弦函数指令。 指令格式:

COS EN ENO
IN OUT
梯形图指令

COS

IN, OUT

STL指令

指令功能:当 EN 有效时,将由 IN 输入的一个双字长的实数弧度值求余弦,结果为一个 32 位的实数送到 OUT 中。
6. 正切函数指令 TAN:正切函数指令。 指令格式:

TAN EN ENO
IN OUT
梯形图指令

TAN

IN, OUT

STL指令

指令功能: 当 EN 有效时,将由 IN 输入的一个双字长的实数弧度值求正切,结果为一 个 32 位的实数送到 OUT 中。
上述数学函数指令运算结果置位特殊继电器 SM1.0(结果为零)、SM1.(1 结果溢出)、SM1.2 (结果为负)SM4.3(运行时刻出现不正常状态)。
当 SM1.1=1(溢出)时,ENO 输出出错标志 0。

5.2.4 逻辑运算指令

逻辑运算指令是对要操作的数据按二进制位进行逻辑运算,主要包括逻辑与、逻辑或、 逻辑非、逻辑异或等操作。逻辑运算指令可实现字节、字、双字运算。其指令格式类同,这 里仅介绍一般字节逻辑运算指令。
字节逻辑指令包括下面 4 条: 1)ANDB:字节逻辑与指令;

107

2)ORB:字节逻辑或指令; 3)XORB:字节逻辑异或指令; 4)INVB:字节逻辑非指令。 指令格式如下:

WAND_B

EN

ENO

IN1

OUT

IN2

WOR_B

EN

ENO

IN1

OUT

IN2

WXOR_B

EN

ENO

IN1

OUT

IN2

INV_B EN ENO
IN OUT

ANDB IN1, OUT
字节逻辑与指令

ORB

IN1, OUT

字节逻辑或指令

XORB IN1, OUT
字节逻辑异或指令

INVB

OUT

字节逻辑非指令

指令功能:当 EN 有效时,逻辑与、逻辑或、逻辑异或指令中的 8 位字节数 IN1 和 8 位

字节数 IN2 按位相与(或、异或),结果为 1 个字节无符号数送 OUT 中;在语句表指令中,

IN1 和 OUT 按位与,其结果送入 OUT 中。

对于逻辑非指令,把 1 字节长的无符号数 IN 按位取反后送 OUT 中。

对于字逻辑、双字逻辑指令的格式,只是把字节逻辑指令中表示数据类型的“B”该为“W”

或“DW”即可。

逻辑运算指令结果对特殊继电器的影响:结果为零时置位 SM1.0、运行时刻出现不正常

状态置位 SM4.3。

【例 5-14】利用逻辑运算指令实现下列功能:屏蔽 AC1 的高 8 位;然后 AC1 与 VW100

或运算结果送入 VW100;AC1 与 AC0 进行字异或结果送入 AC0;最后,AC0 字节取反后输

出给 QB0。

程序如图 5-14 所示:

网络 1 I1.0

WAND_W

EN

ENO

16#00FF IN1 AC1 IN2

OUT AC1

LD I1.0 ANDW 16#00FF, AC1

WOR_W

EN

ENO

AC1 IN1 VW100 IN2

OUT VW100

ORW AC1, VW100

WXOR_W

EN

ENO

AC1 IN1 AC0 IN2

OUT AC0

XORW AC1, AC0

INV_B

AC0 EN

ENO

IN1

OUT QB0

MOVB AC0, QB0 INVB QB0

108

图5-14 逻辑运算指令应用示例

5.3 移位指令

移位指令的作用是对操作数按二进制位进行移位操作,移位指令包括:左移位、右移位、 循环左移位、循环右移位以及移位寄存器指令。
5.3.1 左移和右移指令
左移和右移指令的功能是将输入数据 IN 左移或右移 N 位,其结果送到 OUT 中。 移位指令使用时应注意: 1)被移位的数据:字节操作是无符号的;对于字和双字操作,当使用有符号数据类型时, 符号位也将被移动; 2)在移位时,存放被移位数据的编程元件的移出端与特殊继电器 SM1.1 相连,移出位送 SM1.1,另一端补 0; 3)移位次数 N 为字节型数据,它与移位数据的长度有关,如 N 小于实际的数据长度, 则执行 N 次移位,如 N 大于数据长度,则执行移位的次数等于实际数据长度的位数; 4)左、右移位指令对特殊继电器的影响:结果为零置位 SM1.0、结果溢出置位 SM1.1; 5)运行时刻出现不正常状态置位 SM4.3,ENO=0。 移位指令分字节、字、双字移位指令,其指令格式类同。这里仅介绍一般字节移位指令。 字节移位指令包括字节左移指令 SLB 和字节右移指令 SRB。 指令格式:

SHL_B EN ENO
IN OUT
N

MOVB SLB

IN, OUT OUT, N

SHR_B EN ENO
IN OUT
N

MOVB SRB

IN, OUT OUT, N

梯形图指令

STL指令

字节左移指令

梯形图指令

STL指令

字节右移指令

其中 N≦8。 指令功能:当 EN 有效时,将字节型数据 IN 左移或右移 N 位后,送到 OUT 中。在语句 表中,OUT 和 IN 为同一存储单元。 对于字移位指令、双字移位指令,只是把字节移位指令中的表示数据类型的“B”该为“W” 或“DW(D)”,N 值取相应数据类型的长度即可。 【例 5-15】利用移位指令指令实现下列功能: 将 AC0 字数据的高 8 位右移到低 8 位,输 出给 QB0。 程序如图 5-15 所示。

109

网络 1 I0.1

SHR_W

EN

ENO

1

AC0 IN1 8N

OUT AC0

SM0.0

WOV_B

EN

ENO

AC0 IN

OUT QB0

LD SRW

I0.1 AC0, 8

LD SM0.0 MOVB AC0, QB0

图5-15 逻辑运算指令应用示例

5.3.2 循环左移和循环右移指令

循环左移和循环右移是指将输入数据 IN 进行循环左移或循环右移 N 位后,把结果送到 OUT 中。
指令特点: 1)被移位的数据:字节操作是无符号的;对于字和双字操作,当使用有符号数据类型时, 符号位也将被移动; 2)在移位时,存放被移位数据的编程元件的最高位与最低位相连,又与特殊继电 SM1.1 相连。循环左移时,低位依次移至高位,最高位移至最低位,同时进入 SM1.1;循环右移时, 高位依次移至低位,最低位移至最高位,同时进入 SM1.1; 3)移位次数 N 为字节型数据,它与移位数据的长度有关,如 N 小于实际的数据长度, 则执行 N 次移位;如 N 大于数据长度,则执行移位的次数为 N 除以实际数据长度的余数; 4)循环移位指令对特殊继电器影响为:结果为零置位 SM1.0、结果溢出置位 SM1.1; 运行时刻出现不正常状态置位 SM4.3、ENO=0。 循环移位指令也分字节、字、双字移位指令,其指令格式类同。这里仅介绍字循环移位 指令。 字循环移位指令有字循环左移指令 RLW 和字循环右移指令 RRW。 指令格式:

ROL_W EN ENO
IN OUT
N

MOVW RLW

IN, OUT OUT, N

ROR_W EN ENO
IN OUT
N

MOVW RRW

IN, OUT OUT, N

梯形图指令

STL指令

梯形图指令

STL指令

字循环左移指令

字循环右移指令

指令功能:当 EN 有效时,把字型数据 IN 循环左移/右移 N 位后,送到 OUT 指定的字单

元中。

5.3.3 移位寄存器指令

移位寄存器指令又称自定义位移位指令。 移位寄存器指令格式如下:

110

SHRB EN ENO

SHRB

DATA, S_BIT, N

DATA
S_BIT
N

梯形图指令

STL指令

其中:DATA 为移位寄存器数据输入端,即要移入的位;S_BIT 为移位寄存器的最低位; N 为移位寄存器的长度和移位方向。
注意:

1)移位寄存器的操作数据由移位寄存器的长度 N(N 的绝对值≦64)任意指定。 2)移位寄存器最低位的地址为 S_BIT;最高位地址的计算方法为:
MSB =(∣N∣-1+(S_BIT 的(位序)号))/8(商); MSB_M =(∣N∣-1+(S_BIT 的(位序)号))MOD 8(余数) 则最高位的字节地址为:MSB +S_BIT 的字节号(地址); 最高位的位序号为: MSB_M。 例如:设 S_BIT=V20.5(字节地址为 20,位序号为 5),N=16。 则 MSB=(16-1+5)/8 的商 MSB=2、余数 MSB_M=4。 则移位寄存器的最高位的字节地址为 MSB +S_BIT 的字节号(地址)=2+20=22、位序号 为 MSB_M=4,最高位为 22.4,自定义移位寄存器为 20.5~22.4,共 16 位,如图 5-16 所示。





D7

D6

D5

D4

D3

D2

D1 D0

字 20
节 21


S_BIT 20.5

址 22

最高位 22.4

图5-16 自定义位移位寄存器示意图
3)N﹥0 时,为正向移位,即从最低位依次向最高位移位,最高位移出。 4)N﹤0 时,为反向移位,既从最高位依次向最低位移位,最低位移出。 5)移位寄存器的移出端与 SM1.1 连接。 指令功能:当 EN 有效时,如果 N﹥0,则在每个 EN 的上升沿,将数据输入 DATA 的状 态移入移位寄存器的最低位 S_BIT;如果 N﹤0,则在每个 EN 的上升沿,将数据输入 DATA 的状态移入移位寄存器的最高位,移位寄存器的其它位按照 N 指定的方向,依次串行移位。 【例 5-16】在输入触点 I0.1 的上升沿,从 VB100 的低 4 位(自定义移位寄存器)由低向 高移位,I0.2 移入最低位,其梯形图、时序图如图 5-17 所示。

111

网络 1 I0.1
P

SHRB EN ENO

I0.2 DATA V100.0 S_BIT
+4 N

梯形图

I0.1 正脉冲(P)

LD I0.1 EU
SHRB I0.2, V100.0, +4

I0.2 7
第 1 次移位前 V100

0 01 0 1

溢出(SM1.1)

第 1 次移位后 第 2 次移位前 V100

1 011

溢出(SM1.1) 0

第 2 次移位后 V100

01 1 0

语句表

溢出(SM1.1) 1 时序图

I0.2=1 I0.2=0 I0.2=0

图5-17 移位寄存器应用示例
本例工作过程: 1)建立移位寄存器的位范围为 V100.0~V100.3, 长度 N=+4。 2)在 I0.1 的上升,移位寄存器由低位→高位移位,最高位移至 SM1.1,最低位由 I0.2 移 入。 移位寄存器指令对特殊继电器影响为:结果为零置位 SM1.0、溢出置位 SM1.1;运行时 刻出现不正常状态置位 SM4.3,ENO=0。
5.4 表功能指令

所谓表是指定义一块连续存放数据的存储区,通过专设的表功能指令可以方便地实现对 表中数据的各种操作,S7-200PLC 表功能指令包括:填表指令、查表指令、表中取数指令。
5.4.1 填表指令
填表指令 ATT(Add To Table)用于向表中增加一个数据。 指令格式:

AD_T_TBL

EN

ENO

DATA TBL

梯形图指令

ATT DATA, TBL STL 指令

其中:DATA 为字型数据输入端;TBL 为字型表格首地址。 指令功能:当 EN 有效时,将输入的字型数据填写到指定的表格中。 在填表时,新数据填写到表格中最后一个数据的后面。 注意: 1)表中的第一个字存放表的最大长度(TL);第二个字存放表内实际的项数(EC),如

112

图 5-18 所示。 2 每填加一个新数据 EC 自动加 1。表最多可以装入 100 个有效数据(不包括 LTL 和 EC)。 3)该指令对特殊继电器影响为:表溢出置位 SM1.4、运行时刻出现不正常状态置位 SM4.3,
同时 ENO=0(以下同类指令略)。 【例 5-17】将 VW100 中数据填入表中(首地址为 VW200),如图 5-18 所示。

网络 1 I0.0

AD_T_TBL

EN

ENO

VW100 DATA VW200 TBL

LD

I0.0

ATT VW100, VW200

ATT 指令执行前 VW100 5678

VW200 VW202 VW204 VW206 VW208 VW210 VW212

0005 TL 0002 EC 1234 数据 0 4321 数据 1
**** **** ****

ATT 指令执行后

VW200 0005 TL

VW202 VW204 VW206 VW208

0003 1234 4321 5678

EC 数据 0 数据 1 数据 2

VW210 **** VW212 ****

图5-18 填表指令应用示例

本例工作过程: 1)设首地址为 VW200 的表存储区(表中数据在执行本指令前已经建立,表中第一字单 元存放表的长度为 5,第二字单元存放实际数据项 2 个,表中两个数据项为 1234 和 4321); 2)将 VW100 单元的字数据 5678 追加到表的下一个单元(VW208))中,且 EC 自动加 1。
5.4.2 查表指令

查表指令 FND(Table Find)用于查找表中符合条件的字型数据所在的位置编号。 指令格式如下:

其中:

TBL_FIND

EN

ENO

TBL PTN INDX CMD
梯形图指令

FND= FND<> FND< FND>

TBL, PTN, INDX TBL, PTN, INDX TBL, PTN, INDX TBL, PTN, INDX

STL指令

TBL 为表的首地址; PTN 为需要查找的数据; INDX 为用于存放表中符合查表条件的数据的地址;

113

CMD 为比较运算符代码“1”、“2”、“3”、“4”,分别代表查找条件:“=”、“﹤﹥”、“﹤” 和“﹥”。
指令功能:在执行查表指令前,首先对 INDX 清 0,当 EN 有效时,从 INDX 开始搜索 TBL,查找符合 PTN 且 CMD 所决定的数据,每搜索一个数据项,INDX 自动加 1;如果发现 了一个符合条件的数据,那么 INDX 指向表中该数的位置。为了查找下一个符合条件的数据, 在激活查表指令前,必须先对 INDX 加 1。如果没有发现符合条件的数据,那么 INDX 等于 EC。
注意:查表指令不需要 ATT 指令中的最大填表数 TL。因此,查表指令的 TBL 操作数比 ATT 指令的 TBL 操作数高两个字节。例如,ATT 指令创建的表的 TBL=VW200,对该表进行 查找指令时的 TBL 应为 VW202。
【例 5-18】查表找出 3130 数据的位置存入 AC1 中(设表中数据均为十进制数表示),程 序如图 5-19 所示。

网络 1
I0.1

TBL_FIND

EN

ENO

VW202 3130 AC1 1

TBL PTN INDX CMD

LD FND=

I0.1 VW202, 3130, AC1

执行前

AC1

0

执行后

AC1

2

VW202 0006

VW204 4542

VW206 4142

VW208 VW210 VW212

3130 3234 3235

EC
数据0 数据1

VW202 0006 VW204 4542 VW206 4142 VW208 3130 VW210 3234 VW212 3235

EC
数据0 数据1

图5-19 查表指令应用示例
执行过程: 1)表首地址 VW202 单元,内容 0006 表示表的长度,表中数据从 VW204 单元开始; 2)若 AC1=0,在 I0.1 有效时,从 VW204 单元开始查找; 3)在搜索到 PTN 数据 3130 时,AC1=2,其存储单元为 VW208。
5.4.3 表中取数指令
在 S7-200 中,可以将表中的字型数据按照“先进先出”或“后进先出”的方式取出,送 到指定的存储单元。每取一个数,EC 自动减 1。
1. 先进先出指令 FIFO 先进先出指令格式:

114

FIFO

EN

ENO

TBL DATA

梯形图指令

FIFO TBL, DATA STL 指令

指令功能:当 EN 有效时,从 TBL 指定的表中,取出最先进入表中的第一个数据,送到 DATA 指定的字型存储单元,剩余数据依次上移。
FIFO 指令对特殊继电器影响为:表空时置位 SM1.5。 【例 5-19】先进先出指令应用示例如图 5-20 所示。 执行过程: 1)表首地址 VW200 单元,内容 0006 表示表的长度,数据 3 项,表中数据从 VW204 单 元开始; 2)在 I0.0 有效时,将最先进入表中的数据 3256 送入 VW300 单元,下面数据依次上移, EC 减 1。

网络 1
I0.0

FIFO

EN

ENO

VW200 TBL DATA VW300

LD FIFO

I0.0 VW200, VW300

FIFO执行前

VW200 VW202 VW204 VW206 VW208 VW210

0006 0003 3256 4673 5678 ****

TL EC
数据0 数据1 数据2

FIFO执行后

VW200 VW202 VW204 VW206 VW208 VW210

0006 0002 4673 5678 **** ****

TL EC
数据0 数据1

VW300 3256

2. 后进先出指令 LIFO 后进先出指令格式:

图5-20 FIFO指令应用示例

LIFO EN ENO TBL DATA
梯形图指令

LIFO

TBL, DATA

STL 指令

指令功能:当 EN 有效时,从 TBL 指定的表中,取出最后进入表中的数据,送到 DATA 指定的字型存储单元,其余数据位置不变。
LIFO 指令对特殊继电器影响为:表空时置位 SM1.5。
115

【例 5-20】后进先出指令应用示例如图 5-21 所示。 执行过程: 1)表首地址 VW100 单元,内容 0006 表示表的长度,数据 3 项,表中数据从 VW104 单 元开始; 2)在 I0.0 有效时,将最后进入表中的数据 3721 送入 VW200 单元,EC 减 1。

网络 1
I0.0

LIFO

EN

ENO

VW100 TBL DATA VW200

LD LIFO

I0.0 VW100, VW200

LIFO执行前

VW100 VW102 VW104 VW106 VW108 VW110

0006 0003 1234 5678 3721 ****

TL EC
数据0 数据1 数据2

LIFO执行后

VW100 VW102 VW104 VW106 VW108 VW110

0006 0002 1234 5678 **** ****

TL EC
数据0 数据1

VW200 3721

图5-21 LIFO指令应用示例

5.5 转换指令

在 S7-200 中,转换指令是指对操作数的不同类型及编码进行相互转换的操作,以满足程 序设计的需要。
5.5.1 数据类型转换指令
在 PLC 中,使用的数据类型主要包括:字节数据、整数、双整数和实数,对数据的编码 主要有 ASCII 码、BCD 码。数据类型转换指令是将数据之间、码制之间或数据与码制之间进 行转换,以满足程序设计的需要。
1. 字节与整数转换指令 字节到整数的转换指令 BIT 和整数到字节的转换指令 ITB 的指令格式:

B_I

EN

ENO

IN

OUT

梯形图指令

BTI

IN, OUT

STL指令

字节到整数的转换指令

I_B

EN

ENO

IN

OUT

梯形图指令

ITB

IN, OUT

STL指令

整数到字节的转换指令

字节到整数的转换指令功能:当 EN 有效时,将字节型 IN 转换成整数型数据,结果送 OUT 中。

116

整数到字节的转换指令功能:当 EN 有效时,将整数型 IN 转换成字节型数据,结果送 OUT 中。
2. 整数与双整数转换指令 整数到双整数的转换指令 ITD 和双整数到整数的转换指令 DTI 的指令格式:

I_DI

EN

ENO

IN

OUT

梯形图指令

ITD

IN, OUT

STL指令

整数到双整数的转换指令

DI_I

EN

ENO

IN

OUT

梯形图指令

DTI

IN, OUT

STL指令

双整数到整数的转换指令

整数到双整数的转换指令功能:当 EN 有效时,将整数型输入数据 IN,转换成双整数型 数据,结果送 OUT 中。
双整数到整数的转换指令功能:当 EN 有效时,将双整数型输入数据 IN,转换成整数型 数据,结果送 OUT 中。
3. 双整数与实数转换指令 (1)实数到双整数转换 1)实数到双整数转换 ROUND 指令格式:

ROUND

EN

ENO

IN

OUT

ROUND IN, OUT

梯形图指令

STL 指令

指令功能:当 EN 有效时,将实数型输入 IN,转换成双整数型数据(对 IN 中的小数四舍 五入),结果送 OUT 中。
2)实数到双整数转换 TRUNC 指令格式: 指令格式如下:

TRUNC

EN

ENO

IN

OUT

TRUNC IN, OUT

梯形图指令

STL 指令

指令功能:当 EN 有效时,将实数型输入数据 IN,转换成双整数型数据(舍去 IN 中的小 数部分),结果送 OUT 中。
(2)双整数到实数转换指令 DTR 双整数到实数转换指令格式:

117

DI_R

EN

ENO

IN

OUT

DTR IN, OUT

梯形图指令

STL 指令

指令功能:当 EN 有效时,将双整数型输入数据 IN,转换成实数型,结果送 OUT 中。 【例 5-21】将计数器 C10 数值(101 英寸)转换为厘米,转换系数 2.54 存于 VD8 中,转 换结果存入 VD12 中,程序如图 5-22 所示。

网络 1 将英寸转换为厘米
I0.0

I_DI

EN

ENO

C10 IN

OUT AC1

DI_R

EN

ENO

AC1 IN

OUT VD0

MUL_R

EN

ENO

VD0 IN1 VD4 IN2

OUT VD8

ROUND

EN

ENO

VD8 IN

OUT VD12

网络 1
LD ITD DTR MOVR *R ROUND

将英寸转换为厘米

I0.0 C10, AC1 AC1, VD0 VD0, VD8 VD4, VD8 VD8, VD12

//将计数器数值(英寸)装入AC1 //将值转换为实数
//乘以2.54(转换为厘米) //将值转换回整数

测试数据

C10 101

计数=101英寸

VD0 101.0 计数(作为实数)

VD4 2.54

2.54常量(英寸与厘米的转换系数)

VD8 256.54 256.54厘米(作为实数)

VD12 257

257厘米(作为双整数)

图5-22 转换指令应用示例

4. 整数与 BCD 码转换指令 (1)整数到 BCD 码的转换指令 IBCD 整数到 BCD 码的转换指令格式:

I_BCD

EN

ENO

IN

OUT

IBCD IN, OUT

梯形图指令

STL 指令

指令功能:当 EN 有效时,将整数型输入数据 IN(0~9999)转换成 BCD 码数据,结果 送到 OUT 中。
在语句表中,IN 和 OUT 可以为同一存储单元。 上述指令对特殊继电器的影响为:BCD 码错误,置位 SM1.6。 (2)BCD 码到整数的转换指令 BCDI BCD 码到整数的转换指令格式:

118

BCD_I

EN

ENO

IN

OUT

BCDI IN, OUT

梯形图指令

STL 指令

指令功能:当 EN 有效时,将 BCD 码输入数据 IN(0~9999)转换成整数型数据,结果

送到 OUT 中。

在语句表中,IN 和 OUT 可以为同一存储单元。

上述指令对特殊继电器的影响为:BCD 码错误,置位 SM1.6。

【例 5-22】将存放在 AC0 中的 BCD 码数 0001 0110 1000 1000(图中使用 16 进制数表示

为 1688)转换为整数,指令如图 5-23 所示。

网络 1
I3.0

BCD_I

EN

ENO

AC0 IN

OUT AC0

网络 1

LD

I0.3

BCDI

AC0

测试数据 AC0 1688
BCDI AC0 0698

图5-23 BCD码到整数的转换指令应用示例

转换结果 AC0=0698(16 进制数)。
5.5.2 编码和译码指令

1. 编码指令 ENCO 在数字系统中,编码是指用二进制代码表示相应的信息位。 指令格式:

ENCO

EN

ENO

IN

OUT

ENCO IN, OUT

梯形图指令

STL 指令

IN:字型数据; OUT:字节型数据低 4 位。 指令功能:当 EN 有效时,将 16 位字型输入数据 IN 的最低有效位(值为 1 的位)的位 号进行编码,编码结果送到由 OUT 指定字节型数据的低 4 位。 例如:设 VW20=0000000 00010000(最低有效位号为 4);
执行指令:ENCO VW20, VB1 结果:VW20 的数据不变,VB1=xxxx0100(VB1 高 4 位不变)。 2. 译码指令 DECO 译码是指将二进制代码用相应的信息位表示。 指令格式:

119

DECO

EN

ENO

IN

OUT

DECO IN, OUT

梯形图指令

STL 指令

IN:字节型数据; OUT:字型数据。 指令功能:当 EN 有效时,将字节型输入数据 IN 的低 4 位的内容译成位号(00~15),由 该位号指定 OUT 字型数据中对应位置 1,其余位置 0。 例如:设 VB1=00000100=4;
执行指令:DECO VB1, AC0 结果:VB1 的数据不变,AC0=00000000 00010000(第 4 位置 1)。

5.5.3 七段显示码指令

1.七段 LED 显示数码管 在一般控制系统中,用 LED 作状态指示器具有电路简单、功耗低、寿命长、响应速度快 等特点。LED 显示器是由若干个发光二极管组成显示字段的显示器件,应用系统中通常使用 七段 LED 显示器,如图 5-24 所示。
+5v

a

a

g f com a b

b

b

c

c

a

d

d

e

e

f

f

g

g

f

b

g

e

c

d dp

dp

dp

e d com c dp

a)

b)

c)

a)共阴型 b)共阳型 c)管脚分布

图5-24 七段数码管

120

表5-1 七段LED数码管的段码

显示数码

共阴型段码

共阳型段码

显示数码

共阴型段码

共阳型段码



00111111

11000000

A

01110111

10001000



00000110

11111001

b

01111100

10000011



01011011

10100100

c

00111001

11000110



01001111

10110000

d

01011110

10100001



01100110

10011001

E

01111001

10000110



01101101

10010010

F

01110001

10001110



01111101

10000010



00000111

11111000



01111111

10000000

9

01101111

10010000

注:表中段码顺序为“dp gfedcba”
在 LED 共阳极连接时,各 LED 阳极共接电源正极,如果向控制端 abcdefg dp 对应送入 00000011 信号,则该显示器显示“0”字型;在 LED 共阴极连接时,各 LED 阴极共接电源负 极(地),如果向控制端 abcdefg dp 对应送入 11111100 信号,则该显示器显示“0”字型
控制显示各数码加在数码管上的二进制数据称为段码,显示各数码共阴和共阳七段 LED 数码管所对应的段码见表 5-1。
2. 七段显示码指令 SEG 七段显示码指令 SEG 专用于 PLC 输出端外接七段数码管的显示控制。 指令格式:

SEG

EN

ENO

IN

OUT

SEG IN, OUT

梯形图指令

STL 指令

指令功能:当 EN 有效时,将字节型输入数据 IN 的低 4 位对应的七段共阴极显示码,输 出到 OUT 指定的字节单元(如果该字节单元是输出继电器字节 QB,则 QB 可直接驱动数码 管)。
例如:设 QB0.0~QB0.7 分别连接数码管的 a、b、c、d、e、f、g 及 dp(数码管共阴极连 接),显示 VB1 中的数值(设 VB1 的数值在 0~F 内)。
若 VB1=00000100=4; 执行指令:SEG VB1, QB0 结果:VB1 的数据不变,QB0= 01100110(“4”的共阴极七段码),该信号使数码管显示 “4”。

121

5.5.4 字符串转换指令

字符串是指由 ASCII 码所表示的字符的序列,如“ABC”,其 ASCII 码分别为“65、66、 67”。字符串转换指令是实现由 ASCII 码表示字符串数据与其它数据类型之间的转换。
1. ASCII 码与十六进制数的转换 (1)ASCII 码转换为十六进制数指令 ATH 指令格式:

ATH

EN

ENO

IN

OUT

LEN

梯形图指令

ATH IN, OUT,LEN STL 指令

其中:IN 为开始字符的字节首地址;LEN 为字符串长度,字节型,最大长度 255;OUT 为输出字节首地址。
指令功能:当 EN 有效时,把从 IN 开始的 LEN(长度)个字节单元的 ASCII 码,相应转 换成十六进制数,依次送到 OUT 开始的 LEN 个字节存储单元中。
(2)十六进制数转换为 ASCII 码指令 HTA 指令格式:

HTA

EN

ENO

IN

OUT

LEN

梯形图指令

HTA IN, OUT,LEN STL 指令

其中:IN 为十六进制开始位的字节首地址;LEN 为转换位数,字节型,最大长度 255; OUT 为输出字节首地址。
指令功能:当 EN 有效时,把从 IN 开始的 LEN 个十六进制数的每一数位转换为相应的 ASCII 码,并将结果送到以 OUT 为首地址的字节存储单元。
2. 整数转换为 ASCII 码指令 整数转换为 ASCII 码指令 ITA 格式:

ITA EN ENO

IN FMT

OUT

ITA IN, OUT, FMT

梯形图指令

STL 指令

其中:IN 为整数数据输入;FMT 为转换精度或转换格式(小数位或格式整数的表示方式); OUT 为连续 8 个输出字节的首地址。
指令功能:当 EN 有效时,把整数输入数据 IN,根据 FMT 指定的转换精度,转换成 8 个字符的 ASCII 码,并将结果送到以 OUT 为首地址的 8 个连续字节存储单元。
122

操作数 FMT 的定义如下:

MSB

LSB

7

0

0 0 0 0c n n n

在 FMT 中,高 4 位必须是 0。C 为小数点的表示方式,C=0 时,用小数点来分隔整数和 小数;C=1 时,用逗号来分隔整数和小数。nnn 表示在首地址为 OUT 的 8 个连续字节中小数 的位数,nnn=000~101,分别对应 0~5 个小数位,小数部分的对齐方式为右对齐。
例如:在 C=0,nnn=011 时,其数据格式在 OUT 中的表示方式见表 5-2。

表 5-2 经 FMT 格式化后的数据格式

IN

OUT

OUT+1

OUT+2

OUT+3

12

0

-123



0

1234

1

-12345



1

2

【例 5-23】ITA 指令应用示例如图 5-25 所示。

OUT+4 . . . .

OUT+5 0 1 2 3

OUT+6 1 2 3 4

OUT+7 2 3 4 5

网络 1
I0.0

ITA

EN

ENO

VW2 IN 16#0B FMT

OUT VB10

网络 1
//将位于VW2位置的整数值转换为8个ASCII字符 //从VB10位置开始,使用16#0B格式,用逗号代表小数点, //随后有3位数

LD

I0.0

ITA

VW2, VB10, 16#0B

测试数据 12345 VW2

'' ITA 20
VB10

'' 20 VB11

'1' 31 VB12

'2' 32 VB13

',' 2C VB14

'3' 33 VB15

'4' 34 VB16

'5' 35 VB17

图5-25 ITA指令应用示例

注:1)图中 VB10~VB17 单元存放的为十六进制表示的 ASCII 码;
2)FMT 操作数 16#0B 的二进制数为 00001011。
双整数转换为 ASCII 码指令 DTA 类同 ITA,读者可查阅 S7-200 编程手册。 3. 实数转换为 ASCII 码指令 RTA 实数转换为 ASCII 码指令 RTA 格式:

RTA EN ENO

IN FMT

OUT

梯形图指令

RTA IN, OUT, FMT STL 指令

其中:IN 为实数数据输入;FMT 为转换精度或转换格式(小数位表示方式);OUT 为连 续 3~15 个输出字节的首地址。
指令功能:当 EN 有效时,把实数输入 IN ,根据 FMT 指定的转换精度,转换成始终是

123

8 个字符的 ASCII,并将结果送到首地址 OUT 的 3~15 个连续字节存储单元。 FMT 的定义如下:

MSB

LSB

7

0

s s s sc nnn

在 FMT 中,高 4 位 SSSS 表示 OUT 为首地址的连续存储单元的字节数,SSSS=3~15。C 及 nnn 同前面 FMT 介绍。
例如:在 SSSS=0110,C=0,nnn=001 时,用小数点进行格式化处理的数据格式,在 OUT 中的表示格式见表 5-3。

表 5-3 经 FMT 后的数据格式

IN

OUT

OUT+1

OUT+2

1234.5

1

2

3

0.0004

1.96

-3.6571



【例 5-24】RTA 指令应用示例如图 5-26 所示。

OUT+3 4 0 2 3

OUT+4 . . . .

OUT+5 5 0 0 7

网络 1
I0.0

RTA

EN

ENO

VD2 IN 16#A3 FMT

OUT VB10

网络 1
//将位于VD2位置的实数值转换为10个ASCII字符 //从VB10位置开始,使用16#A3格式,用逗号代表小数点,

//随后有3位数

LD

I0.0

RTA

VD2, VB10, 16#A3

测试数据 123.45 VD2

'' RTA 20
VB10

'' 20 VB11

'' 20 VB12

'1' 31 VB13

'2' 32 VB14

'3' 33 VB15

',' 33 VB16

'4' 34 VB17

'5' 35 VB18

'0' 30 VB19

图5-26 RTA指令应用示例

其中 16#A3 的二进制数为 10100011,高 4 位 1010 表示以 OUT 为首地址连续 10 个字节 存储单元存放转换结果。

5.6 中断指令

所谓中断,是指当 PLC 在执行正常程序时,由于系统中出现了某些急需处理的特殊情况 或请求,使 PLC 暂时停止现行程序的执行,转去对这种特殊情况或请求进行处理(即执行中 断服务程序),当处理完毕后,自动返回到原来被中断的程序处继续执行。S7-200PLC 中断系 统包括:中断源、中断事件号、中断优先级及中断控制指令。
5.6.1 中断源、中断事件号及中断优先级
S7-200 对申请中断的事件、请求及其中断优先级在硬件上都作了明确的规定和分配,通

124

过软中断指令可以方便地对中断进行控制和调用。 1. 中断源及中断事件号 中断源是请求中断的来源。在 S7-200 中,中断源分为三大类:通信中断、输入输出中断
和时基中断,共 34 个中断源。每个中断源都分配一个编号,称为中断事件号,中断指令是通 过中断事件号来识别中断源的,见表 5-4。

表 5-4 中断事件号及优先级顺序

中断事件号

中断源描述

优先级

组内优先级

8

端口 0:接收字符

9

端口 0:发送完成

通讯中断 0 (最高) 0

23

端口 0:接收信息完成

0

24

端口 1:接收信息完成

1

25

端口 1:接收字符

1

26

端口 1:发送完成

1

19

PTO 0 完成中断

I/O 中断 0

20

PT0 1 完成中断

(中等) 1

0

上升沿 I0.0

2

2

上升沿 I0.1

3

4

上升沿 I0.2

4

6

上升沿 I0.3

5

1

下降沿 I0.0

6

3

下降沿 I0.1

7

5

下降沿 I0.2

8

7

下降沿 I0.3

9

12

HSC0 CV=PV(当前值=预置值)

10

27

HSC0 输入方向改变

11

28

HSC0 外部复位

12

13

HSC1 CV=PV(当前值=预置值)

13

14

HSC1 输入方向改变

14

15

HSC1 外部复位

15

16

HSC2 CV=PV(当前值=预置值)

16

17

HSC2 输入方向改变

17

18

HSC2 外部复位

18

32

HSC3 CV=PV(当前值=预置值)

19

29

HSC4 CV=PV(当前值=预置值)

20

30

HSC4 输入方向改变

21

31

HSC4 外部复位

22

33

HSC5 CV=PV(当前值=预置值)

23

125

10

定时中断 0 SMB34

11

定时中断 1 SMB35

21

定时器 T32 CT=PT 中断

22

定时器 T96 CT=PT 中断

定时中断 0 (最低) 1
2 3

(1)通信中断 PLC 与外部设备或上位机进行信息交换时可以采用通信中断,它包括 6 个中断源(中断 事件号为:8、9、23、24、25、26)。通信中断源在 PLC 的自由通信模式下,通信口的状态 可由程序来控制。用户可以通过编程来设置协议、波特率和奇偶校验等参数。 (2)I/O 中断 I/O 中断是指由外部输入信号控制引起的中断。 ●外部输入中断:利用 I0.0~I0.3 的上升沿可以产生 4 个外部中断请求;利用 I0.0~I0.3 的 下降沿可以产生 4 个外部中断请求; ●脉冲输入中断:利用高速脉冲输出 PTO0、PTO1 的串输出完成(见 5.7 节)可以产生 2 个中断请求; ●高速计数器中断:利用高速计数器 HSCn 的计数当前值等于设定值、输入计数方向的 改变、计数器外部复位等事件,可以产生 14 个中断请求(见 5.7 节)。 (3)时基中断 通过定时和定时器的时间到达设定值引起的中断为时基中断。 ●定时中断:设定定时时间以 ms 为单位(范围为 1~255ms),当时间到达设定值时,对 应的定时器溢出产生中断,在执行中断处理程序的同时,继续下一个定时操作,周而复始, 因此,该定时时间称为周期时间。定时中断有定时中断 0 和定时中断 1 两个中断源,设置定 时中断 0 需要把周期时间值写入 SMB34;设置定时中断 1 需要把周期时间写入 SMB35。 ●定时器中断:利用定时器定时时间到达设定值时产生中断,定时器只能使用分辨率为 1ms 的 TON/TOF 定时器 T32 和 T96。当定时器的当前值等于设定值时,在主机正常的定时刷 新中,执行中断程序。 2. 中断优先级 在 PLC 应用系统中通常有多个中断源,给各个中断源指定处理的优先次序称为中断优先 级。这样,当多个中断源同时向 CPU 申请中断时,CPU 将优先响应处理优先级高的中断源的 中断请求。SIEMENS 公司 CPU 规定的中断优先级由高到低依次是:通信中断、输入/输出中 断、定时中断,而每类中断的中断源又有不同的优先权,见表 5-4。 经过中断判优后,将优先级最高的中断请求送给 CPU,CPU 响应中断后首先自动保护现 场数据(如逻辑堆栈、累加器和某些特殊标志寄存器位),然后暂停正在执行的程序(断点), 转去执行中断处理程序。中断处理完成后,又自动恢复现场数据,最后返回断点继续执行原 来的程序。在相同的优先级内,CPU 是按先来先服务的原则以串行方式处理中断,因此,任 何时间内,只能执行一个中断程序。对于 S7-200 系统,一旦中断程序开始执行,它不会被其 它中断程序及更高优先级的中断程序所打断,而是一直执行到中断程序的结束。当另一个中 断正在处理中,新出现的中断需要排队,等待处理。

126

5.6.2 中断指令

中断功能及操作通过中断指令来实现,S7-200 提供的中断指令有 5 条:中断允许指令、 中断禁止指令、中断连接指令、中断分离指令及中断返回指令,指令格式及功能见表 5-5。

LAD ENI

DISI

ATCH

EN

ENO

INT EVNT

表 5-5 中断类指令的指令格式

STL

功能描述

中断允许指令 ENI
开中断指令,输入控制有效时,全局地允许所有中断事件中断。

中断禁止指令

DISI

关中断指令,输入控制有效时,全局地关闭所有被连接的中断事

件。

ATCH INT, EVENT

中断连接指令 又称中断调用指令,使能输入有效时,把一个中断源的中断事件 号 EVENT 和相应的中断处理程序 INT 联系起来,并允许这一中 断事件。

DTCH

EN

ENO

EVNT

DTCH EVENT

中断分离指令 使能输入有效时,切断一个中断事件号 EVENT 和所有中断程序 的联系,并禁止该中断事件。

RETI

CRETI

有条件中断返回指令 输入控制信号(条件)有效时,中断程序返回。

中断指令使用说明: 1)操作数 INT:输入中断服务程序号 INT n(n=0~127),该程序为中断要实现的功能操 作,其建立过程同子程序; 2)操作数 EVENT:输入中断源对应的中断事件号(字节型常数 0~33); 3)当 PLC 进入正常运行 RUN 模式时,系统初始状态为禁止所有中断,在执行中断允许 指令 ENI 后,允许所有中断,即开中断。 4)中断分离指令 DTCH 禁止该中断事件 EVENT 和中断程序之间的联系,即用于关闭该 事件中断;全局中断禁止指令 DISI,禁止所有中断。 5)RETI 为有条件中断返回指令,需要用户编程实现;Setp-Micro/WIN 自动为每个中断 处理程序的结尾设置无条件返回指令,不需要用户书写。 6)多个中断事件可以调用同一个中断程序,但一个中断事件不能同时连续调用多个中断 程序。

5.6.3 中断设计步骤

为实现中断功能操作,执行相应的中断程序(也称中断服务程序或中断处理程序),在 S7-200 中,中断设计步骤如下:
1)确定中断源(中断事件号)申请中断所需要执行的中断处理程序,并建立中断处理程 序 INT n,其建立方法类同子程序,唯一不同的是在子程序建立窗口中的 Program Block 中选

127

择 INT n 即可。 2)在上面所建立的编辑环境中编辑中断处理程序。中断服务程序由中断程序号 INT n 开
始,以无条件返回指令结束。在中断程序中,用户亦可根据前面逻辑条件使用条件返回指令, 返回主程序。注意,PLC 系统中的中断指令与一般微机中的中断有所不同,它不允许嵌套。
中断服务程序中禁止使用以下指令:DISI、ENI、CALL、HDEF、FOR/NEXT、LSCR、 SCRE、SCRT、END。
3)在主程序或控制程序中,编写中断连接(调用)指令(ATCH),操作数 INT 和 EVENT 由步骤 1)所确定。
4)设中断允许指令(开中断 ENI)。 5)在需要的情况下,可以设置中断分离指令(DTCH)。 【例 5-25】编写实现中断事件 0 的控制程序。 中断事件 0 是中断源 I0.0 上升沿产生的中断事件。 当 I0.0 有效且开中断时,系统可以对中断 0 进行响应,执行中断服务程序 INT0,中断服 务程序的功能为是若使 I1.0 接通,则 Q1.0 为 ON; 若 I0.0 发生错误(自动 SM5.0 接通有效),则立即禁止其中断。 主程序及中断子程序如图 5-27 所示。

网络 1 主程序 SM0.1

ATCH

EN

ENO

INT_0 INT 0 EVNT

网络 2 SM5.0

ENI

DTCH

EN

ENO

网络 3 M5.0

0 EVNT DISI

网络 1 SM5.0
网络 2 I1.0

INT-0
RETI Q1.0

网络 1 主程序
//在首次扫描时,将中断处理程序 INT_0 定义为 // I0.0 上升沿中断(0 号),并全局启用中断

LD ATCH ENI

I0.0 INT_0, 0

网络 2 //检测到 I/O 错误,置位 SM5.0 则禁用 I0.0 的下降沿中断

LD

SM5.0

DTCH 0

网络 3 //当 M5.0 打开时,禁止所有的中断

LD

M5.0

DISI

网络 1 中断程序 INT-0
//I0.0 上升沿中断处理程序 //根据 I/O 错误执行的有条件返回

LD

SM5.0

CRETI 网络 2
LD I1.0 = Q1.0

图5-27 中断程序示例

【例 5-26】编写定时中断周期性(每隔 100ns)采样模拟输入信号的控制程序。 1)由主程序调用子程序 SBR_0; 2)子程序中: ●设定定时中断 0(中断事件 10 号),时间间隔 100ms(即将 100 送入 SMB34);

128

●通过 ATCH 指令把 10 号中断事件和中断处理程序 INT_0 连接起来; ●允许全局中断。 从而实现子程序每隔 100ms 调用一次中断程序 INT_0。 3)中断程序中,读取模拟通道输入寄存器的值送入 VW4 字单元。 控制程序如图 5-28 所示。

网络 1 主程序 SM0.1

SBR_0 EN

网络 1 主程序 LD SM0.1

SBR_ 网络 1 SM0.00

MOV_B

E

ENO

CALL SBR_0//在首次扫描时,调用子程序 SBR_0 子程序 SBR_0

N100 I

OUT SMB34 网络 1

//每 100ms 调用一次中断程序 INT0

N

E

ATCH ENO

INNT_0 INT 10 EVNT

LD SM0.0

MOVB 100, SMB34 //设置定时中断时间间隔 100ms

ATCH INT_0,10 //连接中断程序 INT0 到定时中断 0

//(中断事件号 10 号)

ENI

//允许全局中断

ENI

INT_0
网络 1 SM0.0

MOV_W

EN

ENO

AIW I

4

N

LAD

OUT VW4

网络 1 中断程序 INT_0 //每 100ms 执行一次中断程序
LD SM0.0 MOVW AIW4,VW4 .//读取模拟通道输入寄存器 AIW4 值
//送入 VW4 STL

图5-28 定时中断周期性读取模拟输入信号示例

5.7 高速处理指令
高速处理指令有高速计数指令和高速脉冲输出指令两类。
5.7.1 高速计数指令
高速计数器 HSC(High Speed Counter)用来累计比 PLC 扫描频率高得多的脉冲输入 (30kHz),适用于自动控制系统的精确定位等领域。高速计数器是通过在一定的条件下产生 的中断事件完成预定的操作。
1. S7-200 高速计数器 不同型号 PLC 主机,高速计数器的数量不同,使用时每个高速计数器都有地址编号 HCn, 其中 HC(或 HSC)表示该编程元件是高速计数器,n 为地址编号。S7-200 系列中 CPU221 和 CPU222 支持 4 个高速计数器,它们是 HC0、HC3、HC4 和 HC5;CPU224 和 CPU226 支
129

持 6 个高速计数器,它们是 HC0~HC5。每个高速计数器包含有两方面的信息:计数器位和计 数器当前值,高速计数器的当前值为双字长的有符号整数,且为只读值。
2. 中断事件类型 高速计数器的计数和动作可采用中断方式进行控制。不同型号的 PLC 采用高速计数器的 中断事件有 14 个,大致可分为三种类型: ●计数器当前值等于预设值中断; ●计数输入方向改变中断; ●外部复位中断。 所有高速计数器都支持当前值等于预设值中断,但并不是所有的高速计数器都支持三种 类型,高速计数器产生的中断源、中断事件号及中断源优先级见表 5-4。 3. 工作模式和输入点的连接 (1)工作模式 每种高速计数器有多种功能不同的工作模式,高速计数器的工作模式与中断事件密切相 关。使用任一个高速计数器,首先要定义高速计数器的工作模式(可用 HDEF 指令来进行设 置)。 在指令中,高速计数器使用 0~11 表示 12 种工作模式。 不同的高速计数器有不同的模式,见表 5-6、5-7。

表 5-6 HSC0、HSC3、HSC4、HSC5 工作模式

计数器名称→

HSC0

HSC3 HSC4

HSC5

计数器工作模式↓

I0.0 I0.1 I0.2 I0.1 I0.3 I0.4 I0.5 I0.4

0:带内部方向控制的单向计数器 计数

计数 计数

计数

1:带内部方向控制的单向计数器 计数

复位

计数

复位

2:带内部方向控制的单向计数器

3:带外部方向控制的单向计数器 计数 方向

计数 方向

4:带外部方向控制的单向计数器 计数 方向 复位

计数 方向 复位

5:带外部方向控制的单向计数器

6:增、减计数输入的双向计数器 增计数 减计数

增计数 减计数

7:增、减计数输入的双向计数器 增计数 减计数 复位

增计数 减计数 复位

8:增、减计数输入的双向计数器

9:A/B 相正交计数器(双计数输入) A 相 B 相

A相 B相

10 :A/B 相正交计数器(双计数输入) A 相 B 相 复位

A 相 B 相 复位

11:A/B 相正交计数器(双计数输入)

例如,模式 0(单相计数器):一个计数输入端,计数器 HSC0、HSC1、HSC2、HSC3、 HSC4、HSC5 可以工作在该模式。HSC0~HSC5 计数输入端分别对应为 I0.0、I0.6、I1.2、I0.1、 I0.3、I0.4。

130

表 5-7 HSC1、HSC2 工作模式

计数器名称→

HSC1

HSC2

计数器工作模式↓

I0.6 I0.7 I1.0 I1.1 I1.2 I1.3 I1.4 I1.5

0:带内部方向控制的单向计数器 计数

计数

1:带内部方向控制的单向计数器 计数

复位

计数

复位

2:带内部方向控制的单向计数器 计数

复位 启动 计数

复位 启动

3:带外部方向控制的单向计数器 计数 方向

计数 方向

4:带外部方向控制的单向计数器 计数 方向 复位

计数 方向 复位

5:带外部方向控制的单向计数器 计数 方向 复位 启动 计数 方向 复位 启动

6:增、减计数输入的双向计数器 增计数 减计数

增计数 减计数

7:增、减计数输入的双向计数器 增计数 减计数 复位

增计数 减计数 复位

8:增、减计数输入的双向计数器 增计数 减计数 复位 启动 增计数 减计数 复位 启动

9:A/B 相正交计数器(双计数输入) A 相 B 相

A相 B相

10 :A/B 相正交计数器(双计数输入) A 相 B 相 复位

A 相 B 相 复位

11:A/B 相正交计数器(双计数输入) A 相 B 相 复位 启动 A 相 B 相 复位 启动
例如,模式 11(正交计数器): 两个计数输入端,只有计数器 HSC1、HSC2 可以工作在 该模式,HSC1 计数输入端为 I0.6(A 相)和 I0.7(B 相),所谓正交即指:当 A 相计数脉冲 超前 B 相计数脉冲时,计数器执行增计数;当 A 相计数脉冲滞后 B 相计数脉冲时,计数器执 行减计数。

(2)输入点的连接 在使用一个高速计数器时,除了要定义它的工作模式外,还必须注意系统定义的固定输 入点的连接。如 HSC0 的输入连接点有 I0.0(计数)、I0.1(方向)、I0.2(复位);HSC1 的输 入连接点有 I0.6(计数)、I0.7(方向)、I1.0(复位)、I1.1(启动)。 使用时必须注意,高速计数器输入点、输入输出中断的输入点都在一般逻辑量输入点的 编号范围内。一个输入点只能作为一种功能使用,即一个输入点可以作为逻辑量输入或高速 计数输入或外部中断输入,但不能重叠使用。

4. 高速计数器控制字、状态字、当前值及设定值 (1)控制字 在设置高速计数器的工作模式后,可通过编程控制计数器的操作要求,如启动和复位计 数器、计数器计数方向等参数。 S7-200 为每一个计数器提供一个控制字节存储单元,并对单元的相应位进行参数控制定 义,这一定义称其为控制字。编程时,只需要将控制字写入相应计数器的存储单元即可。控 制字定义格式及各计数器使用的控制字存储单元见表 5-8。

表 5-8 高速计数器控制字格式

位地址

控制字各位功能

0

复位电平控制 0:高电平 1:低电平

HSC0 HSC1 HSC2 HSC3 SM37 SM47 SM57 SM137 SM37.0 SM47.0 SM57.0

HSC4

HSC5

SM147 SM157

SM147.0

131

1

启动控制 1:高电平启动 0:低电平启动

SM37.1 SM47.1 SM57.1

SM147.1

2

正交速率 1:1 倍速率 0:4 倍速率

SM37.2 SM47.2 SM57.2

SM147.2

3

计数方向 0:减计数 1:增计数

SM37.3 SM47.3 SM57.3 SM137.3 SM147.3 SM157.3

4

计数方向改变 0:不能改变 1:改变

SM37.4 SM47.4 SM57.4 SM137.4 SM147.4 SM157.4

5

写入预设值允许:0:不允许 1:允许

SM37.5 SM47.5 SM57.5 SM137.5 SM147.5 SM157.5

6

写入当前值允许 0:不允许 1:允许

SM37.6 SM47.6 SM57.6 SM137.6 SM147.6 SM157.6

7

HSC 指令允许 0:禁止 HSC 1:允许 HSC SM37.7 SM47.7 SM57.7 SM137.7 SM147.7 SM157.7

例如,选用计数器 HSC0 工作在模式 3,要求复位和启动信号为高电平有效、1 倍计数速 率、减方向不变、允许写入新值、允许 HSC 指令,则其控制字节为 SM37=2#11100100。
(2)状态字 每个高速计数器都配置一个 8 位字节单元,每一位用来表示这个计数器的某种状态,在 程序运行时自动使某些位置位或清 0,这个 8 位字节称其为状态字。HSC0~HSC5 配备相应的 状态字节单元为特殊存储器 SM36、SM46、SM56、SM136、SM146、SM156。 各字节的 0~4 位未使用;第 5 位表示当前计数方向(1 为增计数);第 6 位表示当前值 是否等于预设值(0 为不等于,1 为等于);第 7 位表示当前值是否大于预设值(0 为小于等于, 1 为大于),在设计条件判断程序结构时,可以读取状态字判断相关位的状态,来决定程序应 该执行的操作(参看 S7 200 用户手册-特殊存储器)。 (3)当前值 各高速计数器均设 32 位特殊存储器字单元为计数器当前值(有符号数),计数器 HSC0~HSC5 当前值对应的存储器为 SMD38、SMD48、SMD58、SMD138、SMD148、SMD158。 (4)预设值 各高速计数器均设 32 位特殊存储器字单元为计数器预设值(有符号数),计数器 HSC0~HSC5 预设值对应的存储器为 SMD42、SMD52、SMD62、SMD142、SMD152、SMD162。 5. 高速计数指令 高速计数指令有两条:HDEF 和 HSC,其指令格式和功能见表 5-9。 注意:

1)每个高速计数器都有固定的特殊功能存储器与之配合,完成高速计数功能。这些特殊 功能寄存器包括 8 位状态字节、8 位控制字节、32 位当前值、32 位预设值。
2)对于不同的计数器,其工作模式是不同的。 3)HSC 的 EN 是使能控制,不是计数脉冲,外部计数输入端见表 5-6、表 5-7。

LAD

HDEF

EN

ENO

HSC MODE

表 5-9 高速计数指令的格式、功能

STL

功能及参数

HDEF HSC, MODE

高速计数器定义指令: 使能输入有效时,为指定的高速计数器分配一种工作模式; HSC:输入高速计数器编号(0~5); MODE:输入工作模式(0~11);

132

HSC

EN

ENO

高速计数器指令: 使能输入有效时,根据高速计数器特殊存储器的状态,并

N

HSC N

按照 HDEF 指令指定的模式,设置高速计数器并控制其工

作;

6. 高速计数器初始化程序

N:高速计数器编号(0~5)

使用高速计数器必须编写初始化程序,其编写步骤如下:

1)人工选择高速计数器、确定工作模式:

根据计数的功能要求,选择 PLC 主机型号,如 S7-200 中,CPU222 有 4 个高速计数器(HC0、

HC3、HC4 和 HC5);CPU224 有 6 个高速计数器(HC0~HC5),由于不同的计数器其工作模

式是不同的,故主机型号和工作模式应统筹考虑。

2)编程写入设置的控制字:

根据控制字(8 位)的格式,设置控制计数器操作的要求,并根据选用的计数器号将其

通过编程指令写入相应的 SMBxx 中(见表 5-8)。

3)执行高速计数器定义指令 HDEF:

在该指令中,输入参数为所选计数器的号值(0~5)及工作模式(0~11)。

4)编程写入计数器当前值和预设值:

将 32 位的计数器当前值和 32 位的计数器的预设值写入与计数器相应的 SMDxx 中,初始

化设置当前值是指计数器开始计数的初值。

5)执行中断连接指令 ATCH:

在该指令中,输入参数为中断事件号 EVENT 和中断处理程序 INTn,建立 EVENT 与 INTn

的联系(一般情况下,可根据计数器的当前值与预设值的比较条件是否满足产生中断)。

6)执行全局开中断指令 ENI。

7)执行 HSC 指令,在该指令中,输入计数器编号,在 EN 信号的控制下,开始对计数

器对应的计数输入端脉冲计数。

【例 5-27】带外部方向控制的单向计数器,增计数、外部低电平复位、外部低电平启动、

允许更新当前值、允许更新预设值、初始计数值=0、预设值=50、1 倍计数速率、当计数器当

前值(CV)等于预设值(PV)时,响应中断事件(中断事件号为 13),连接(执行)中断处

理程序 INT_0。

编程步骤如下:

1)根据题中要求,选用高速计数器 HSC1;定义为工作模式 5;

2)控制字(节)为 16#FC,写入 SMB47;

3)HDEF 指令定义计数器,HSC=1,MODE=5;

4)当前值(初始计数值=0)写入 SMD48;预设值 50 写入 SMD52;

5)执行中断连接指令 ATCH:INT=INT_0,EVENT=13;

6)执行 ENI 指令;

7)执行 HSC 指令,N=1。

中断处理程序 INT_0 的设计略。

初始化程序如图 5-29 所示。

133

网络 1 SM0.0

MOV_B

EN

ENO

16#FC IN

OUT SMB47

HDEF

EN

ENO

1 HSC 5 MODE

MOV_DW

EN

ENO

+0 IN

OUT SMD48

MOV_DW

EN

ENO

+50 IN

OUT SMD52

ATCH

EN

ENO

INT_0 INT 13 EVNT

ENI

LD

SM0.0

MOVB 16#FC, SMB47

HDEF 1, 5

MOVD +0, SMD48 MOVD +50, SMD52

ATCH INT_0, 13 ENI

HSC EN ENO 1N
图5-29 高速计数器初始化程序

HSC 1

5.7.2 高速脉冲输出
高速脉冲输出功能是在 PLC 的某些输出端产生高速脉冲,用来驱动负载实现高速输出和 精确控制。
1. 高速脉冲的输出方式和输出端子的连接 (1)高速脉冲的输出方式 高速脉冲输出可分为:高速脉冲串输出 PTO 和宽度可调脉冲输出 PWM 两种方式。 1)高速脉冲串输出 PTO 主要是用来输出指定数量的方波,用户可以控制方波的周期和 脉冲数,其参数为: 占空比:50%; 周期变化范围:以 μs 或 ms 为单位,50~65 535μs 或 2~65 535ms(16 位无符号数据),编 程时周期值一般设置为偶数。 脉冲串的个数范围:1~4 294 967 295 之间(双字长无符号数)。 2)宽度可调脉冲输出 PWM 主要用来输出占空比可调的高速脉冲串,用户可以控制脉冲 的周期和脉冲宽度,PWM 的周期或脉冲宽度以 μs 或 ms 为单位,周期变化范围同高速脉冲串 PTO。 (2)输出端子的连接
134

每个 CPU 有两个 PTO/PWM 发生器产生高速脉冲串或脉冲宽度可调的波形,系统为其分 配 2 个位输出端 Q0.0 和 Q0.1。PTO/PWM 发生器和输出映像寄存器共同使用 Q0.0 和 Q0.1, 但一个位输出端在某一时刻只能使用一种功能,在执行高速输出指令中使用了 Q0.0 和 Q0.1, 则这两个位输出端就不能作为通用输出使用,或者说如何其它操作及指令对其操作无效。
如果 Q0.0 或 Q0.1 设定为 PTO 或 PWM 功能输出但未执行其输出指令时,仍然可以将 Q0.0 和 Q0.1 作为通用输出使用,但一般是通过操作指令将其设置为 PTO 或 PWM 输出时的起始电 位 0。
2. 相关的特殊功能寄存器 1)每个 PTO/PWM 发生器都有 1 个控制字节来定义其输出位的操作: ● Q0.0 的控制字节位为 SMB67; ● Q0.1 的控制字节位为 SMB77。 2)每个 PTO/PWM 发生器都有 1 个单元(或字或双字或字节)定义其输出周期时间、脉 冲宽度、脉冲计数值等,例如: ● Q0.0 周期时间数值为 SMW68; ● Q0.1 周期时间数值为 SMW78。 其它相关的特殊功能寄存器及参数定义可参看附录Ⅱ,其理解及使用方式类同高速计数 器。一旦这些特殊功能寄存器的值被设成所需操作,可通过执行脉冲指令 PLS 来执行这些功 能。 3. 脉冲输出指令 脉冲输出指令可以输出两种类型的方波信号,在精确位置控制中有很重要的应用,其指 令格式见表 5-10。

表 5-10 脉冲输出指令的格式

LAD

PLS

EN

ENO

Q0.X

STL PLS Q

功能
脉冲输出指令,当使能端输入有效时,检测用程序设置的特殊 功能寄存器位,激活由控制位定义的脉冲操作。从 Q0.0 或 Q0.1 输出高速脉冲。

说明: 1)脉冲串输出 PTO 和宽度可调脉冲输出都由 PLC 指令来激活输出; 2)输入数据 Q 必须为字型常数 0 或 1; 3)脉冲串输出 PTO 可采用中断方式进行控制,而宽度可调脉冲输出 PWM 只能由指令 PLS 来激活。 【例 5-28】编写实现脉冲宽度调制 PWM 的程序。根据要求控制字节(SMB77)=16#DB 设 定周期为 10000ms,通过 Q0.1 输出。 设计程序如图 5-30 所示。

135

网络 1 PWM主程序

SM0.1

Q0.1 R 1

SBR_0 EN

网络 1 PWM主程序

LD

SM0.1

R

Q0.1, 1

CALL SBR_0

//第一次扫描标志SM0.1=1
//将Q0.1清零 //调用子程序SBR_0

网络 1 子程序SBR_0
SM0.0

MOV_B

EN

ENO

16#D1B6#D8 IN

OUT

MOV_W

EN

ENO

SMB77

+10000 IN

OUT SMW78

MOV_W

EN

ENO

+1000 IN

OUT SMW80

PLS

EN

ENO

1 Q0.X

网络 1 子程序SBR_0

LD

SM0.0

MOVB 16#DB, SMB77

//当系统处于RUN模式时 //设置控制字(SMB77)=16#DB

MOVW +10000, SMW78 //设置周期(SMW78)=10000

MOVW +1000, SMW80 //设置脉冲宽度(SMW80)=1000

PLS 1

//执行PLS

图5-30 PWM控制程序

5.8 PID 操作指令

在模拟量作为被控参数的控制系统中,为了使被控参数按照一定的规律变化,需要在控 制回路中设置比例(P)、积分(I)、微分(D)运算及其运算组和,S7-200 设置了专用于 PID 运算的回路表参数和 PID 回路指令,可以方便地实现 PID 运算操作。

5.8.1 PID 算法

在一般情况下,控制系统主要针对被控参数 PV(又称过程变量)与期望值 SP(又称给 定值)之间产生的偏差 e 进行 PID 运算。其数学函数表达式为:

? M (t) ? Kpe ? Ki edt ? Kdde / dt

式中

M(t):PID 运算的输出,M 是时间 t 的函数; e: 控制回路偏差,PID 运算的输入参数;

Kp:比例运算系数(增益); Ki:积分运算系数(增益); Kd:微分运算系数(增益)。 使用计算机处理该表达式,必须将其由模拟量控制的函数通过周期性地采样偏差 e,使其

函数各参数离散化,为了方便算法实现,离散化后的 PID 表达式可整理为:

Mn=Kc en+Kc (Ts/Ti)en+MX+Kc(Td/Ts)(en-en-1)

136

式中

Mn:时间 t=n 时的回路输出; en:时间 t=n 时采样的回路偏差,即 SPn 与 PVn 之差; en-1:时间 t=n-1 时采样的回路偏差,即 SPn-1 与 PVn-1 之差; Kc:回路总增益,比例运算参数; Ts:采样时间; Ti:积分时间,积分运算参数; Td:微分时间,微分运算参数; Kc=Kp; Kc (Ts/Ti)=Ki: Kc(Td/Ts)=Kd: MX:是所有积分项前值之和,每次计算出 Kc (Ts/Ti)en 后,将其值累计入 MX
中。

由上式可以看出:

●Kc en 为比例运算项 P; ●Kc (Ts/Ti)en 为积分运算项 I(不含 n 时刻前积分值); ●Kc(Td/Ts)(en-en-1)为微分运算项 D; ●比例回路增益 Kp 将影响 Ki 和 Kd。 在控制系统中,常使用的控制运算为:

●比例控制(P):不需要积分和微分,可设置积分时间 Ti=∞,使 Ki=0;微分时间 Td=0, 使 Kd=0。其输出:Mn=Kc en;
●比例、积分控制(PI):不需要微分,可设置微分时间 Td=0,Kd=0。其输出: Mn=Kc en+ Kc (Ts/Ti)en;
●比例、积分、微分控制(PID):可设置比例系数 Kp、积分时间 Ti、微分时间 Td,其输 出:

Mn=Kc en+Kc (Ts/Ti)en+Kc(Td/Ts)(en-en-1)

5.8.2 PID 回路输入转换及标准化数据

1. PID 回路 S7-200 为用户提供了 8 条 PID 控制回路,回路号为 0~7,即可以使用 8 条 PID 指令实现 8 个回路的 PID 运算。 2. 回路输入转换及标准化数据 每个 PID 回路有两个输入量,给定值(SP)和过程变量(PV)。一般控制系统中,给定 值通常是一个固定的值。由于给定值和过程变量都是现实世界的某一物理量值,其大小、范 围和工程单位都可能有差别,所以,在 PID 指令对这些物理量进行运算之前,必须对它们及 其它输入量进行标准化处理,即通过程序将它们转换成标准的浮点型表达形式。其过程如下: 1)首先将 PLC 读取的输入参数(16 位整数值)转成浮点型实数值,其实现方法可通过 下列指令序列实现:
ITD AIW0,AC0 //将输入值转换为双整数。
DTR AC0, AC0 //将 32 位双整数转换为实数。

137

2)然后将实数值表达形式转换成 0.0~1.0 之间的标准化值,可采用下列公式实现:

式中

RNorm=((RRaw/Span)+Offset RNorm :经标准化处理后对应的实数值; RRaw :没有标准化的实数值或原值; Offset :单极性(即 RNorm 变化范围在 0.0~1.0)为 0.0;双极性(即 RNorm 在 0.5
上下变化)为 0.5; Span:值域大小,可能的最大值减去可能的最小值,单极性为 32,000(典型值)

双极性为 64,000(典型值)。

把双极性实数标准化为 0.0~1.0 之间的实数的实现方法可通过下列指令序列实现:

/R 64000.0, AC0

//累加器中的标准化值

+R 0.5, AC0

//加上偏置,使其在 0.0~1.0 之间

MOVR AC0, VD100

//标准化的值存入回路表

上述指令/R、+R 功能参看附录Ⅱ。

5.8.3 回路输出值转换成标定数据

PID 回路输出值一般是用来控制系统的外部执行部件(如电炉丝加热、电动机转速等),

由于执行部件 PID 回路输出的是 0.0~1.0 之间标准化的实数值,对于模拟量控制的执行部件,

回路输出在驱动模拟执行部件之前,必须将标准化的实数值转换成一个 16 位的标定整数值, 这一转换,是上述标准化处理的逆过程。转换过程如下:

1)首先将回路输出转换成一个标定的实数值,公式为:

式中:

Rscal= (Mn-Offset)*Span Rscal:回路输出按工程标定的实数值; Mn:回路输出的标准化实数值;

Offset:单极性为 0.0,双极性为 0.5; Span:值域大小,可能的最大值减去可能的最小值,单极性为 32,000(典型值)

双极性为 64,000(典型值)。

实现这一过程可指令序列为:

MOVR VD108, AC0

//把回路输出值移入累加器(PID 回路表首地址为 VB100)

-R 0.5, AC0

//仅双极性有此句.

*R 64000.0, AC0

//在累加器中得到标定值.

上述指令/R、*R 功能参看附录Ⅱ。 2)然后把回路输出标定实数值转换成 16 位整数,可通过下面的指令序列来完成:

ROUND AC0,AC0

//把 AC0 中的实数转换为 32 位整数.

DTI AC0, LW0

//把 32 位整数转换为 16 位整数.

MOVW LW0,AQW0 //把 16 位整数写入模拟输出寄存器.

5.8.4 正作用和反作用回路

在控制系统中,PID 回路只是整个控制系统中的一个(调节)环节,在确定系统其它环 节的正反作用(如执行部件为调节阀时,根据需要可为有信号开阀或有信号关阀)后,为了

138

保证整个系统为一个负反馈的闭合系统,必须正确选择 PID 回路的正反作用。 如果 PID 回路增益为正,则该回路为正作用回路;如果 PID 回路增益为负,则该回路为
反作用回路;对于增益值为 0.0 的 I 或 D 控制,如果设定积分时间、微分时间为正,就是正 作用回路;如果设定其为负值,就是反作用回路。
5.8.5 回路输出变量范围、控制方式及特殊操作
1. 过程变量及范围 过程变量和给定值是 PID 运算的输入值,因此回路表中的这些变量只能被 PID 指令读而 不能被改写,而输出变量是由 PID 运算产生的,所以在每一次 PID 运算完成之后,需更新回 路表中的输出值,输出值被限定在 0.0~1.0 之间。当输出由手动转变为 PID(自动)控制时, 回路表中的输出值可以用来初始化输出值。(有关 PID 指令的方式详见下面的“控制方式”一 节)。 如果使用积分控制,积分项前值要根据 PID 运算结果更新。这个更新了的值用作下一次 PID 运算的输入,当计算输出值超过范围(大于 1.0 或小于 0.0),那么积分项前值必须根据下 列公式进行调整: 当输出 Mn>1.0 时: MX=1.0-(MPn+MDn) 当输出 Mn<0.0 时: MX=-(MPn+MDn) 式中,MX:积分前项值
MPn:第 n 采样时刻的比例项值 MDn:第 n 采样时刻的微分项值 Mn:第 n 采样时刻的输出值 这样调整积分前项值,一旦输出回到范围后,可以提高系统的响应性能。而且积分前项 值限制在 0.0~0.1 之间,在每次 PID 运算结束时,把积分前项值写入回路表,以备在下次 PID 运算中使用。 在实际运用中,用户可以在执行 PID 指令以前修改回路表中积分项前值,以求对控制系 统的扰动影响最小。手工调整积分项前值时,应保证写入的值在 0.0~1.0 之间。 回路表中的给定值与过程变量的差值(e)是用于 PID 运算中的差分运算,用户最好不要 去修改此值。 2. 控制方式 S7-200 的 PID 回路没有设置控制方式,只有当 PID 盒接通时,才执行 PID 运算。在这种 意义上说,PID 运算存在一种“自动“运行方式。当 PID 运算不被执行时,称之为“手动” 模式。 同计数器指令相似,PID 指令有一个使能位,当该使能位检测到一个信号的正跳变(从 0 到 1),PID 指令执行一系列的动作,使 PID 指令从手动方式无扰动地切换到自动方式。为了 达到无扰动切换,在转变到自动控制前,必须把手动方式下的输出值填入回路表中的输出栏 中。PID 指令对回路表中的值进行下列动作,以保证当使能位正跳变出现时,从手动方式无 扰动切换到自动方式: 置给定值(SPn )=过程变量(PVn ) 置过程变量前值(PVn-1 )=过程变量现值(PVn-1 )
139

置积分项前值(MX)=输出值(Mn ) 3. 特殊操作 特殊操作是指故障报警、回路变量的特殊计算、跟踪检测等操作。虽然 PID 运算指令简 单、方便且功能强大,但对于一些特殊操作,则须使用 S7-200 支持的基本指令来实现。
5.8.6 PID 回路表
回路表用来存放控制和监视 PID 运算的参数,每个 PID 控制回路都有一个确定起始地址 (TBL)的回路表。每个回路表长度为 80 字节,0~35 字节(36~79 字节保留给自整定变量) 用于填写 PID 运算公式的 9 个参数,这些参数分别是过程变量当前值(PVn),过程变量前值 (PVn-1),给定值(SPn),输出值(Mn),增益(Kc),采样时间(Ts),积分时间(TI),微 分时间(TD)和积分项前值(MX),其回路表格式见表 5-11。

表 5-11 PID 回路表

地址

参数(域)

数据格式 类型

数据说明

表起始地址+0

过程变量(PVn)

实数

IN

在 0.0~0.1 之间

表起始地址+ 4

设定值(SPn)

实数

IN

在 0.0~0.1 之间

表起始地址+ 8

输出(Mn)

实数

IN/OUT 在 0.0~0.1 之间

表起始地址+12

增益(Kc)

实数

IN

比例常数可大于 0 或小于 0

表起始地址+16

采样时间(Ts)

实数

IN

单位:秒(正数)

表起始地址+20

积分时间(Ti)

实数

IN

单位:分钟(正数)

表起始地址+24

微分时间(Td)

实数

IN

单位:分钟(正数)

表起始地址+28

积分前项(MX)

实数

IN/OUT 在 0.0~0.1 之间

表起始地址+32

过程变量前值(PVn-1)

实数

IN/OUT 上一次执行 PID 指令时的过程变量

注:表中偏移地址是指相对于回路表的起始地址的偏移量
注意:PID 的 8 个回路都应有对应的回路表,可以通过数据传送指令完成对回路表的操 作。

5.8.7 PID 回路指令

PID 运算通过 PID 回路指令来实现,其指令格式如下:

PID

EN

ENO

TBL LOOP

PID

TBL, LOOP

LAD 指令

STL 指令

EN:启动 PID 指令输入信号; TBL:PID 回路表的起始地址(由变量存储器 VB 指定字节性数据); LOOP:PID 控制回路号(0~7)。 指令功能:在输入有效时,根据回路表(TBL)中的输入配置信息,对相应的 LOOP 回

140

路执行 PID 回路计算,其结果经回路表指定的输出域输出。 注意: ●在使用该指令前,必须建立回路表,因为该指令是以回路表 TBL 提供的过程变量、设
定值、增益、积分时间、微分时间、输出等进行运算的。 ●PID 指令不检查回路表中的一些输入值,必须保证过程变量和设定值在 0.0 到 1.0 之间。 ●该指令必须使用在以定时产生的中断程序中。 ●如果指令指定的回路表起始地址或 PID 回路号操作数超出范围,则在编译期间,CPU
将产生编译错误(范围错误),从而编译失败;如果 PID 算术运算发生错误,则特殊存储器标 志位 SM1.1 置 1,并且中止 PID 指令的执行(在下一次执行 PID 运算之前,应改变引起算术 运算错误的输入值)。
5.8.8 PID 编程步骤及应用
综和前面几节所述,下面结合某一水箱的水位控制来说明 PID 控制程序编写步骤。 水箱控制要求如下: ●被控参数(过程变量):水箱水位,通过液位变送器产生与水位下限~上限线性对应的
单 极性模拟量输入信号; ●设定值:满水箱水位液位的%60=0.6; ●调节参数:通过控制水箱进水调节阀门的开度调节水位,回路输出单极性模拟量控制
调节阀开度(%0~%100); ●要求水位维持在设定值,在水位发生变化时,快速消除余差。 根据以上要求,控制系统宜采用 PI 或 PID 控制回路,设正回路可构成控制系统为闭合负 反馈系统,依据工程设备特点及经验参数,初步设置 PID 回路参数:
增益:Kc=0.5 积分时间:Ti=35min 微分时间:Td=20min 采样时间:Ts=0.2s(采用定时中断周期为 200ms 实现) 在实际工程中,系统的输入信号(如量程、零点迁移、A/D 转换等)、输出信号(如 D/A 转换、负载所需物理量等)及 PID 参数整定等工程问题都要综和考虑及处理(这些问题读者 可参考有关控制系统的资料)。 下面仅给出 PID 控制回路的编程步骤及程序: 1)首先指定内存变量区回路表的首地址(设为 VB200); 2)根据表 5-11 格式及地址,设定值 SPn 写入 VD204(双字,下同)、增益 Kc 写入 VD212、 采样时间 Ts 写入 VD216、积分时间 Ti 写入 VD220、微分时间 Td 写入 VD224、PID 输出值 由 VD208 输出; 3)设置定时中断初始化程序,PID 指令必须使用在定时中断程序中(中断事件号为 9 或 10)。 4)读取过程变量模拟量 AIW2,并进行回路输入转换及标准化处理后写入回路表首 VD200; 5)执行 PID 回路运算指令;
141

6)对 PID 回路运算的输出结果 VD208 进行数据转换后送入模拟量输出 AQW21,作为 控制调节阀的信号。
在实际工程中,还要设置参数报警、手动←→自动无扰动切换等。 程序如图 5-31(PID 回路表和定时 0 中断初始化程序)、图 5-32(PID 运算中断处理程序) 所示。

SM0.1

主程序
SBR_1 EN

SBR_1 PID 回路表、定时中断 0 初始化子程序

网络 1 SM0.0

MOV_R

EN

ENO

0.6 IN

OUT VD204

MOV_R

EN

ENO

0.5 IN

OUT VD212

MOV_R

EN

ENO

0.2 IN

OUT VD216

MOV_R

EN

ENO

35.0 IN

OUT VD220

MOV_R

EN

ENO

20 IN

OUT VD224

LD SM0.1 CALL SBR_1 //调用子程序 SBR_1
LD SM0.0 //子程序 SBR_1 MOVR 0.6, VD204 //回路表初始化 MOVR 0.5, VD212
MOVR 0.2, VD216
MOVR 35.0, VD220
MOVR 20.0, VD224

MOV_B

EN

ENO

200 IN

OUT SMB34

ATCH

EN

ENO

INT-0 INT 10 EVENT

ENI

MOVB 200, SMB34 //定时中断初始化

ATCH INT_0, 10

ENI

//开中断

LAD

STL

图5-31 PID回路表及定时0中断初始化程序

142

INT_0 10 号(定时中断 0)处理程序

网络 1 SM0.0

I_DI

EN

ENO

AIW2 IN

OUT AC0

EN

DI_R ENO

AC0 IN

OUT AC0

DIV_R

EN

ENO

AC0 IN1 32000 IN2

OUT AC0

MOV_R

EN

ENO

AC0 IN

VD200

I0.2

PID

EN

ENO

VD200 TBL 0 LOOP

LD SM0.1 //采样模拟量 AIW1 IDT ATW2, AC0 DTR AC0, AC0 //输入量标准化
/R 32000.0, AC0
MOVR AC0, VD200 //送入回路表
LD I0.2 //启动 PID 运算 (手动/自动切换)

SM0.0

MUL_R

EN

ENO

VD208 IN1 32000 IN2

OUT AC0

ROUND

EN

ENO

AC0

OUT AC0

DI_I

EN

ENO

AC0

OUT VW20

VW20

MOV_B

EN

ENO

OUT AQW2

LD SM0.0 //输出转换

图5-32 PID运算中断处理程序

5.9 时钟指令
利用时钟指令可以方便地设置、读取时钟时间,以实现对控制系统的实时监视等操作。

143

5.9.1 读实时时钟指令 TODR

指令格式:

READ_RTC

EN PID

ENO

T

TODR

T

LAD

STL

其中操作数 T:指定 8 个字节缓冲区的首地址,T 存放“年”、T+1 存放“月”、T+2 存放 “日”、T+3 存放“小时”、 T+4“分钟”、 T+5 存放“秒”、 T+1 存放 0、T+7 存放“星期”。
指令功能:EN 有效时,读取当前时间和日期存放在以 T 开始的 8 个字节的缓冲区。 注意: ●S7-200 CPU 不检查和核实日期与星期是否合理,例如,对于无效日期 February 30(2 月 30 日)可能被接受,因此必须确保输入的数据是正确的。 ●不要同时在主程序和中断程序中使用时钟指令,否则,中断程序中的时钟指令不会被 执行。 ●S7-200 PLC 只使用年信息的后两位。 ●日期和时间数据表示均为 BCD 码,例如:用 16#09 表示 2009 年。

5.9.2 写实时时钟指令 TODW

指令格式:

STR_RTC

EN

ENO

T

TODW

T

LAD

STL

其中操作数 T 含义同 TODR。 指令功能:EN 有效时,将以地址 T 开始的 8 个字节的缓冲区中设定的当前时间和日期写 入硬件时钟。 注意事项同 TODR。

5.10 实训 5 中断等功能指令编程练习

1. 实训目的 1)掌握常用功能指令的作用和使用方法。 2)掌握如何利用中断指令和中断处理程序完成其功能操作。 2. 实训内容 1)编写实现中断事件 0 的控制程序,当 I0.0 有效(上升沿)且开中断时,系统可以对中 断事件 0 进行响应,执行中断服务程序 INT-0。中断处理程序功能为:
144

●从 VW200 开始的 256 个字节全部清 0; ●将 VB20 开始的 10 个字节数据传送到 VB100 开始的存储区; ●报警信号使 QB0.0~QB0.7 全部点亮,将当前时间和日期存放在 VB300 开始的缓冲区。 ●按下控制 I0.7 的按钮,返回主程序,QB0 复位。 2)编写实现时基中断 0(中断事件号为 10)的控制程序,要求每 250ms 周期性执行中断 处理程序,采集模拟通道 AIW0 数据,并送入处理单元 VW200。 提示:参考【例 5-26】编程方法。 3.实训设备及元器件 1)S7-200 PLC 实验工作台或 PLC 装置。 2)安装有 STEP7-Micro/WIN 编程软件的 PC 机。 3)PC/PPI+通讯电缆线。 4)常闭、常开按钮若干个、信号灯 8 个(QB0)、导线等必备器件。 4. 实训操作步骤 1)将 PC/PPI+通讯电缆线与 PC 机连接; 2)运行 STEP7-Micro/WIN 编程软件,分别编辑主程序、中断处理程序直至编译成功; 提示:实训内容“1)”的主程序、中断处理程序 INT_0 如图 5-33 所示。
图5-33 主程序及中断处理程序
3)编译、保存、下载梯形图程序到 S7-200 PLC 中; 4)启动运行 PLC,观察运行结果,发现运行错误或需要修改程序重复上面过程。 思考:若实训内容“1)”的中断事件号改为 1,其它不变,程序如何改动,如何产生中 断?
145

●参看中断事件号和实现方法。 5.实训操作报告 1)整理出运行调试后的梯形图程序。 2)写出该程序的调试步骤和观察结果。
5.11 思考与练习 5
1. 什么是 PLC 功能指令,常见的功能指令有哪些? 2. 简述左、右移位指令和循环左、右移位指令的异同? 3. 字节传送、字传送、双字传送、实数传送指令的功能和指令格式有什么异同? 4. 编程分别实现以下功能:
1)从 VW200 开始的 256 个字节全部清 0。 2)将 VB20 开始的 100 个字节数据传送到 VB200 开始的存储区。 3)当 I0.1 接通时,记录当前的时间,时间秒值送入 QB0。 5. 使用 ATT 指令创建表,表格首地址为 VW100,使用表指令找出 2000 数据的位置,存 入 AC1 中。 6. 当 I1.1=1 时,将 VB10 的数值(0~7)转换为(译码)7 段显示器码送入 QB0 中。 7. 在输入触点 I0.0 脉冲作用下,读取 4 次 I0.1 的串行输入信号,移位存放在 VB0 的低 4 位;QB0 外接 7 段数码管用于显示串行输入的数据,编写梯形图程序。 8. 设 4 个行程开关(I0.0、I0.1、I0.2、I0.3)分别位于 1~4 层位置,开始 Q1.1 控制电机 启动,当某一行程开关闭合时,数码管显示相应层号,到达 4 层时,电机停,Q1.0 为 ON, 延时 5 秒钟后,Q1.0 为 OFF,电机再次启动,编写梯形图程序。 9 什么是中断源、中断事件号、中断优先级、中断处理程序?S7-200 PLC 中断与其他计 算机中断系统有什么不同? 10.定时中断和定时器中断有什么不同?主要应用在哪些方面? 11 编写实现中断事件 1 的控制程序,当 I0.1 有效且开中断时,系统可以对中断 1 进行响 应,执行中断服务程序 INT1(中断服务程序功能根据需要确定)。 12 高速脉冲的输出方式有哪几种,其作用是什么? 13 PID 回路表的作用是什么?PID 回路指令能否工作在任何程序段中? 14 简述 PID 控制回路的编程步骤。
146


相关文档

S7-200系列PLC的基本指令及应用
S7-200系列PLC的功能指令表
S7-200 PLC功能指令及应用
第6章 S7-200 PLC的功能指令及使用
第5部分 S7-200系列PLC基本指令系统及应用
第6章S7-200系列PLC功能指令
S7-200_PLC的功能指令及运算指令
第8章S7-200系列PLC功能指令
S7-200 PLC功能指令应用及实例
第8章 S7-200系列PLC的功能指令
电脑版