• 沒有找到結果。

长沙工控帮教育科技有限公司整理

N/A
N/A
Protected

Academic year: 2022

Share "长沙工控帮教育科技有限公司整理"

Copied!
385
0
0

加載中.... (立即查看全文)

全文

(1)

状态位指令

长沙工控帮教育科技有限公司整理

(2)

SIMATIC S7 SITRAIN

Training for

S7-CPU 的寄存器和存储器区域

累加器

ACCU1 ACCU4 ACCU3 ACCU2

仅适用于

S7-400

AR2 AR1

地址寄存器

打开的 DB

DB 长度

数据块寄存器

状态位 状态字

32 位

32位

32位 32位

32位 32位

16位

16位

装载存储器

- 逻辑块 - 数据块

工作存储器

- 逻辑块 - 数据块

I/O 区域

系统存储器

- 过程映像输入表 - 过程映像输出表 - 位存储器 - 定时器 - 计数器 - 逻辑数据堆栈 - 中断堆栈 - 块堆栈

S7-CPU 寄存器 S7-CPU 存储器区域

T, S, =,...

L, A, O,...

16位

打开的 DI

DI 长度 长沙工控帮教育科技有限公司整理

(3)

状态字结构

位 定义 值 含义

0 /FC 20 首次检查位

1 RLO 21 逻辑运算结果

2 STA 22 状态位

3 OR 23

4 OS 24 保存溢出

5 OV 25 溢出

6 CC 0 26 条件代码

7 CC 1 27 条件代码

8 BR 28 二进制结果

9...15 未定义 29 ..210

状态字各位的含义

长沙工控帮教育科技有限公司整理

(4)

SIMATIC S7 SITRAIN

Training for

检查状态位

OV

S >0 S

M 4.0 M 4.0

在 STL中进行检查

 A OV 扫描溢出显示

 A OS 扫描存储的溢出标志

 A BR 扫描 BR标志 检查条件代码 (CC0, CC1)

 A == 0 结果等于 0

 A > 0 结果大于 0

 A <> 0 结果不等于 0

 A =< 0 结果小于或等于 0,等等

 A UO 无序指令

LAD FBD 中进行检查 长沙工控帮教育科技有限公司整理

(5)

| |

带有状态位的指令

指令码 含义 示例

 SET 将RLO位设置为“1“ SET //RLO-1

= M 0.1

 CLR 将RLO位设置为“0“ CLR //RLO-0

 NOT 将 RLO位取反 O 手动模式;

O 自动模式;

NOT;

= 操作模式

= M0.0

 SAVE 以二进制形式保存RLO 结果

 A BR 检查二进制形式结果

| |

I 1.0 I 1.1 I 1.2

| |

| |

( )

SAVE

| |

BR Q 4.2 Q 5.0

长沙工控帮教育科技有限公司整理

(6)

SIMATIC S7 SITRAIN

Training for

块调用或复杂功能 中的BR位及ENO

LAD STL

Network 1:

循环程序

I0.0 FC23

EN

MW10

Step_bit _memory

Step_dis play

ENO

( )

M100.0

QW12

Network 2: ???

MUL_I I0.1

EN

345 IN1 OUT

ENO

( )

M100.1

MW10 987 IN2

Network 1:

循环程序

A I 0.0 JNB _001 CALL FC 23

Step_bit_memory :=MW10 Step_display :=QW12 _001: A BR

= M 100.0

Network 2:???

A I 0.1

JNB _002

L 345

L 987

*I

T MW 10

AN OV SAVE CLR

_002: A BR

= M 100.1

长沙工控帮教育科技有限公司整理

(7)

取决于状态位的跳转功能

 JU 标号 1) 无条件跳转

 JC 标号 1) 如果“RLO” =1,则跳转

 JCN标号 1) 如果“RLO” =0,则跳转

 JCB标号 1) 如果“RLO” =1,则跳转,并将RLO保存在BR位中

 JNB标号 1) 如果“RLO” =0,则跳转,并将RLO保存在BR位中

 JBI标号 1) 如果“BR” =1,则跳转

 JNBI标号 1) 如果“BR” =0,则跳转

 JO标号 1) 如果状态字中的“OV”位 =1,则跳转

 JOS标号 1) 如果状态字中的“OS” 位=1,则跳转

长沙工控帮教育科技有限公司整理

(8)

SIMATIC S7 SITRAIN

Training for

取决于条件代码的跳转功能

 JZ 标号 1) 如果状态字“CC 1”位=0且“CC 0”位=0,则跳转

(结果 = 0)

 JN标号 1) 如果状态字“CC 1”位不等于“CC 0”位,则跳转

(结果 <> 0)

 JP标号 1) 如果状态字“CC 1”位=1且“CC 0”位=0(结果=0),则跳转

(结果 > 0)

 JM标号 1) 如果状态字“CC 1”位=0且“CC 0”位=1(结果=0),则跳转

(结果 < 0)

 JPZ标号 1) JZ和JP联合使用,同时满足条件,则跳转

(结果 >= 0)

 JMZ标号 1) JM和JZ联合使用,同时满足条件,则跳转

(结果 <= 0)

 JUO标号 1) 如果是无效的实数或者除数为0,则跳转

1) 标号可以由4位字母-数字字符组成

长沙工控帮教育科技有限公司整理

(9)

跳转分支的编程

装载跳转 分支数 JL OVER

. . .

ACCU1 > n 时的 指令段

示例:带有3个分支的跳转分支程序

L Recipe no// 装载分支程序数

JL OVER // 带有3个分支的跳转分支

JU Rec0 // 跳转到0号分支 (ACCU1 = 0)

JU Rec1 // 跳转到1号分支 (ACCU1 = 1)

JU Rec2 //跳转到2号分支 (ACCU1 = 2)

OVER: JU ERROR // 如果ACCU1 > 2,则跳转至标号OVER ...

Rec0: L DBW4 ...

Rec1: L DBW6 ...

Rec2: L DBW8 ...

ERROR: CLR

操作模式

M_n:

JU M_0

JU M_n

ACCU1 = 0 时的 指令段

. . .

ACCU1 = n 时的 指令段

OVER:

M_0:

长沙工控帮教育科技有限公司整理

(10)

SIMATIC S7 SITRAIN

Training for

循环指令的编程

初始化 循环计数器

LOOP NEXT 将ACCU1进行减1操作,

并作判断 ACCU1 <> 0 ?

继续

NEXT:

将循环执行数次的 代码段

将循环计数器内容 装入 ACCU1.

示例:进行4次循环扫描的循环指令编程

L +4 // 装载循环计数器

NEXT: T MW10

// 循环开始

. // 指令代码

. // 指令代码

. // 指令代码

L MW10 // 再次装载循环计数器 LOOP NEXT // 循环计数器值 –1,

// 如果Accu 1> 0,则 // 跳转到标号NEXT处

操作模式

将ACCU1内容 送入循环计数器

长沙工控帮教育科技有限公司整理

(11)

BE 块结束指令

BEU 无条件块结束指令(在块内)

BEC 条件块结束指令(取决于 RLO位)

(RET) 在 LAD 编程语言中

在 FBD编程语言中

块结束指令

长沙工控帮教育科技有限公司整理 RET

(12)

SIMATIC S7 SITRAIN

Training for

练习1.1:减法运算完成后跳转

拨码按钮

1 2 3 4

- D

正值结果 (>=0)

将IW 0 的值写入显示 删除显示

负值结果 [JM 标号]

转换为 DINT

转换为 BTD BTD DINT

0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 20

215 27

仿真器上的切换开关

十进制开关:S7-300: IW4 (IW2, 32位模式) 显示: S7-300: QW12 (QW6, 32位模式)

S7-400: IW 30 S7-400: QW38

切换开关: S7-300: IW0 (IW0)

S7-400: IW28

长沙工控帮教育科技有限公司整理

(13)

练习 1.2:乘法运算完成后跳转

无溢出

将结果输出显示 删除显示

溢出

[JO 标号]

十进制开关: S7-300: IW4 (IW2, 32位模式) 显示: S7-300: QW12 (QW6, 32位模式)

S7-400: IW30 S7-400: QW38

切换开关: S7-300: IW0 (IW0)

DTB 转换为

BCD码 拨码开关

1 2 3 4

* I

转换为 DINT

转换为 BTD BTD DINT

0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 20

215 27

仿真器上的切换开关

长沙工控帮教育科技有限公司整理

(14)

SIMATIC S7 SITRAIN

Training for

练习 1.3:跳转分支编程

拨码按钮

1

1 2 3 4 5

Motor_let 右转 Motor_let 左转 马达停转

喇叭开 喇叭关

使用Jump指令,跳转到所列标号

功能:

[ JL 标号]

标号:

地址: S7-300 (16位) S7-300 (32位) S7-400

马达右转: Q20.5 Q8.5 Q40.5

马达左转: Q20.6 Q8.6 Q40.6

喇叭: Q20.7 Q8.7 Q40.7

长沙工控帮教育科技有限公司整理

(15)

累加器指令

长沙工控帮教育科技有限公司整理

(16)

SIMATIC S7 SITRAIN

Training for

累加器指令概述

影响多个累加器的指令:

TAK:将累加器ACCU1和累加器ACCU2中的内容交换

PUSH:将累加器中的内容依次“向上”传递“(从ACCU1向ACCU4传递)

POP :将累加器里中内容依次“向下”传递“(从ACCU4 向ACCU1传递)

ENT :将累加器里中内容依次“向上”传递“ ,但 ACCU1内容不参与传递

LEAVE将累加器里中内容依次“向下”传递“,但 ACCU2内容不参与传递

算术指令及字逻辑指令

仅影响累加器ACCU1的指令

INC:累加器ACCU1-LL中的内容加1

DEC :累加器ACCU1-LL中的内容减1

CAW:将ACCU1-L中的两个字节翻转

CAD:将ACCU1中的双字数据翻转

INVI,INVD: 生成1的补码

NEGI,NEGD,NEGR:生成2的补码(取反)

SLW, SLD, SRW,SRD, SSI,SSD:将ACCU1中的内容逐字或双字左移或者右 移

RLD,RRD:将ACCU1中的内容向左或向右循环移位

RLDA, RRDA:经由条件代码位CC1,将ACCU1中的内容向左或向右循环移位

长沙工控帮教育科技有限公司整理

(17)

TAK指令(交换累加器ACCU1和累加器ACCU2的内容)

S7-300:

S7-400:

ACCU1 ACCU2

V1 V2

V2 V1

指令执行前 指令执行后

ACCU1 ACCU2

V1 V2 V3 V4

ACCU3

ACCU4

V2 V1 V3 V4

指令执行前 指令执行后

TAK

TAK

长沙工控帮教育科技有限公司整理

(18)

SIMATIC S7 SITRAIN

Training for

PUSH和POP指令

S7-300:

ACCU1 ACCU2

V1 V2

V1 V1 指令执行前

PUSH

指令执行后

S7-400:

ACCU1 ACCU2 ACCU3 ACCU4

V1 V2

V1 V2 V3 V4

V1 V1 V2 V3

指令执行前

PUSH

指令执行后

V2 V2 指令执行前

POP

指令执行后

V1 V2 V3 V4

V2 V3 V4 V4

指令执行前

POP

指令执行后

长沙工控帮教育科技有限公司整理

(19)

ENT和LEAVE指令(仅适用于S7-400)

ENT:

LEAVE:

V1 V2 V3 V4

ACCU1 ACCU2 ACCU3 ACCU4

V1 V2 V2 V3

指令执行前 指令执行后

V1 V2 V3 V4

ACCU1 ACCU2 ACCU3 ACCU4

V1 V3 V4 V4

指令执行前 指令执行后

长沙工控帮教育科技有限公司整理

(20)

SIMATIC S7 SITRAIN

Training for

算术指令

S7-300:

S7-400:

ACCU1 ACCU2

V1 V2

V2 op V1 V2

指令执行前 指令执行后

ACCU1 ACCU2

V1 V2 V3 V4

ACCU3

ACCU4

V3 V4 V4

指令执行前 指令执行后

操作: +., -., *., /.

V2 op V1 操作: +., -., *., /.

长沙工控帮教育科技有限公司整理

(21)

字逻辑指令

S7-300:

S7-400:

ACCU1 ACCU2

V1 V2

V2 op V1 V2

指令执行前 指令执行后

ACCU1 ACCU2

V1 V2 V3 V4

ACCU3

ACCU4

V2 V3 V4

指令执行前 指令执行后

操作类型: A.., O.., X..,

V2 op V1 操作类型: A.., O.., X..,

长沙工控帮教育科技有限公司整理

(22)

SIMATIC S7 SITRAIN

Training for

ACCU1交换指令

CAW:

CAD:

V4 V3 V2 V1

ACCU1-HH ACCU1-HL ACCU1-LH ACCU1-LL

V4 V3 V1 V2

V4 V3 V2 V1

V1 V2 V3 V4

长沙工控帮教育科技有限公司整理

(23)

ACCU1增量指令

ACCU1-HH ACCU1-HL ACCU1-LH ACCU1-LL

INC <const>:

V4 V3 V2 V1

V4 V3 V2 V1+<const>

+ <const>

DEC <const>:

V4 V3 V2 V1

V4 V3 V2 V1-<const>

- <const>

长沙工控帮教育科技有限公司整理

(24)

SIMATIC S7 SITRAIN

Training for

生成1的补码

0 1 0 0 0 0 1 0 0 1 0 0 1 0 0 1 1 0 0 0 1 1 0 0 0 1 0 0 0 1 1 1 0 31

INVI (ACCU1-L 1的补码):

15 ACCU1-L

ACCU1-H

0 1 0 0 0 0 1 0 0 1 0 0 1 0 0 1

0 1 1 1 0 0 1 1 1 0 1 1 1 0 0 0

0

31 15

0 1 0 0 0 0 1 0 0 1 0 0 1 0 0 1 1 0 0 0 1 1 0 0 0 1 0 0 0 1 1 1 0 31

INVD (ACCU1 1的补码):

15 ACCU1-L

ACCU1-H

1 0 1 1 1 1 0 1 1 0 1 1 0 1 1 0 0 1 1 1 0 0 1 1 1 0 1 1 1 0 0 0

0

31 15

长沙工控帮教育科技有限公司整理

(25)

数值取反(2的补码)

NEGI(INT数取反)

NEGD(DINT数取反):

0 1 0 0 0 0 1 0 0 1 0 0 1 0 0 1 1 0 0 0 1 1 0 0 0 1 0 0 0 1 1 1

31 0

1 0 1 1 1 1 0 1 1 0 1 1 0 1 1 0 0 1 1 1 0 0 1 1 1 0 1 1 1 0 0 0

31

1的补码

0

1 0 1 1 1 1 0 1 1 0 1 1 0 1 1 0 0 1 1 1 0 0 1 1 1 0 1 1 1 0 0 1

31

加上1 +

1

NEGR(REAL类型数取反):

= 1.3125

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 1 0 1 0 0 0

指数=8位

S 尾数 (23位)

22 0 23

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

1

0 1 1 1 1 1 1 1 0 1 0 1 0 0 0

= 1 112 116 295

长沙工控帮教育科技有限公司整理

(26)

SIMATIC S7 SITRAIN

Training for

经由CC1的32位循环移位指令

0 1 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 31

CC1位

RLDA (通过状态位CC1向左循环):

RRDA (通过状态位CC1向右循环):

0 1 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 31

CC1位

ACCU1

ACCU1

长沙工控帮教育科技有限公司整理

(27)

练习2.1:指数计算

示例: 通过连续使用PUSH和*I指令来生成一个整数的6次幂

ACCU1

ACCU2 用push指令

进行拷贝

乘以 *I

ACCU1 Puchwheel按钮

x y 0 0 转换成

INT类型 BTI

长沙工控帮教育科技有限公司整理

(28)

SIMATIC S7 SITRAIN

Training for

2 3

练习2.2: ACCU1中的数据交换

ACCU1 - L (指令执行前)

1 0

CAW

ACCU1 - L (指令执行后)

0 1

3 2

长沙工控帮教育科技有限公司整理

(29)

练习2.3:生成补码

位15 位0

生成1的补码:INVI

1 . . . 1 0 1

ACCU1-L (指令执行前)

位15 ACCU1-L (指令执行后) 位0

0 . . . 0 1 0

长沙工控帮教育科技有限公司整理

(30)

SIMATIC S7 SITRAIN

Training for

实数(REAL)指令

y=LN(x)

sin?

cos?

tan?

...?

?

?

长沙工控帮教育科技有限公司整理

(31)

SIMATIC S7中的实数(REAL)表示方法

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

0 1 0 0 0 0 1 0 1 1 0 1 0 0 0 0

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

指数: e = 8位 S

尾数: f (23位)

实数(REAL)表示格式(IEEE FP32位二进制格式):

常规REAL数值的表示方法:

S x (1.f) x 2

(e-127)

S = 符号位, (0对应于+,1对应于-)

f = 23 位尾数 最高有效位MSB = 2

-1

及最低有效位LSB =2

-23

e = 二进制整数形式的指数 (0 < e < 255)

常规REAL数值的范围:

2-1 2-23

 示例:

S = 0

e = 1000 0101 = 133

f = 1010 0000... = 0.5 + 0.125

R = +1.625 x 2 (133-127) = 1.625 x 64 = 104.0

长沙工控帮教育科技有限公司整理

(32)

SIMATIC S7 SITRAIN

Training for

对实数(REAL)操作的基本指令

实数(REAL) 加法:

L MD10 // 装载第1个实数(REAL)

L MD20 // 装载第2个实数(REAL)

+R // 两个实数相加 (MD10 + MD20)

T MD30 // 将结果传送到MD30中

实数(REAL) 减法:

L MD10 // 装载第1个实数(REAL)

L MD20 // 装载第2个实数(REAL)

-R // 两个实数相减(MD10 - MD20)

T MD30 // 将结果传送到MD30中

实数(REAL) 乘法:

L MD10 // 装载第1个实数(REAL)

L MD20 // 装载第2个实数(REAL)

*R // 两个实数相乘(MD10 * MD20)

T MD30 // 将结果传送到MD30中

实数(REAL) 除法:

L MD10 // 装载第1个实数(REAL)

L MD20 // 装载第2个实数(REAL)

/R // 两个实数相除(MD10 / MD20)

T MD30 // 将结果传送到MD30中

长沙工控帮教育科技有限公司整理

(33)

扩展的算术函数

 算术函数 :

SQR 平方 SQRT 开方

EXP 以e为底的指数函数 LN 自然对数

(e=2.718282)

 示例:

L MD10 // 装载实数(REAL)

SQR // 计算其平方值

T MD30 // 将结果传送到MD30中

EN SQR ENO

IN OUT

MD10 MD30

(STL)

(LAD)

长沙工控帮教育科技有限公司整理

(34)

SIMATIC S7 SITRAIN

Training for

三角函数及反三角函数

 三角函数:

SIN 正弦 COS 余弦 TAN 正切

 弧函数:

ASIN 反正弦 ACOS 反余弦 ATAN 反余切

 示例:

L MD10 // 装载实数(REAL)

SIN // 计算其正弦值

T MD30 // 将结果传送到MD30中

EN SIN ENO

IN OUT

MD22 MD30

(STL)

(LAD)

长沙工控帮教育科技有限公司整理

(35)

其它实数(REAL)操作指令

REAL类型到DINT类型转换指令:

RND+ 返回到下一个较大的DINT型数 RND- 返回到下一个较小的DINT型数 RND 返回到下一个整型数

TRUNC 取整

DINT类型到REAL类型转换指令:

DTR 舍入转换

其它REAL到REAL转换指令:

ABS 生成数的绝对值 NEGR 对一个实数的取反

 示例:

L MD10 // 装载实数(REAL)

RND+ // 转换为下一个较大的DINT类型的数

T MD30 // 将结果传送到MD30中

EN RND+ ENO

IN OUT

MD22 MD30

(STL)

(LAD)

长沙工控帮教育科技有限公司整理

(36)

SIMATIC S7 SITRAIN

Training for

练习3.1:计算距离

示例: 在直角坐标系中计算两点间的距离D

P1

P2

X1 X2 X

Y Y2

Y1

功能: FC31 D= (X2 - X1)

2

+ (Y2 - Y1)

2

D

长沙工控帮教育科技有限公司整理

(37)

间接寻址及地址寄存器指令

L W [AR1, P#200.0]

- - - -

1 2

9 10

#Ini_Value

#P ar _P oin ter

#Counter

? ?

?

长沙工控帮教育科技有限公司整理

(38)

SIMATIC S7 SITRAIN

Training for

STEP 7 中可能的寻址方式

寻址方式

直接寻址 间接寻址

绝对寻址 符号寻址 存储器间接寻址 寄存器间接寻址

示例:

A I 4.0 A "Mot_on" OPN DB[MW10] A I[MD30] A I[AR1,P#0.0] A [AR1,P#0.0]

L IW10 L #Num SP T["runtime"] L IW["Number"] L ID[AR1,P#5.0] T W[AR1,P#0.0]

16位指针

(DB, T, C)

32位指针 内部区域

32位指针 内部区域

32位指针 交叉区域

长沙工控帮教育科技有限公司整理

(39)

变量直接寻址

存储单元位置 (示例)

I 37.4

地址 附加访问宽度

字节,字,双字

含义 输入

Q 27.7

字节,字,双字 输出

PIB 655

字节,字,双字 外设输入

PQB 653

字节,字,双字 外设输出

M 55.0

字节,字,双字 位(Bit)存储器

T 114 --

定时器

C 13 --

计数器

DBX 2001.6

字节(DBB), 字(DBW),

双字(DBD) 通过DB寄存器寻址的数据

DIX 406.1

字节(DIB), 字(DIW),

双字(DID) 通过DI寄存器寻址的数据

L 88.5

字节(LB), 字(LW),

本地数据堆栈

长沙工控帮教育科技有限公司整理

(40)

SIMATIC S7 SITRAIN

Training for

DB中地址标识符直接寻址

打开的数据块 在数据块中装载和传递

OPN DB 19 OPN "Values"

OPN DI 20

组合指令

(包含OPN D DB..)

L DBB 1 装载数据字节1

L DBW 2 装载数据字2(字节2/3)

L 5 装载数字5

T DBW 4 传递到字4

L ‘A’ 装载ASCII字符A L DIB28 装载数据字节28

==I 比较

A DBX 0.0 从0字节的第0位开始扫描 L DB19.DBW4 从DB 19中装载数据字4 L “Values”.Number_1 符号访问变量

Number_1. DB19 具有变量名“Values”

A DB10.DBX4.7 从DB 10 的第4个字节的第7位开始扫描

长沙工控帮教育科技有限公司整理

(41)

用于DB寄存器的指令:

CDB:交换DB寄存器内容

将DB寄存器内容装载到ACCU1中

L DBNO (将打开的DB号装载到ACCU1中)

L DINO (将打开的DI号装载到ACCU1中)

 装载数据块长度

L DBLG (将打开的DB的长度/字节装载到ACCU1中)

L DILG (将打开的DI的长度/字节装载到ACCU1中)

在程序中分析数据块DB相关信息

指令执行前: 指令执行后:

CDB

123 24

24 123

DB寄存器

DI寄存器

长沙工控帮教育科技有限公司整理

(42)

SIMATIC S7 SITRAIN

Training for

字格式的16位指针(用于对DB、T、C进行寻址)

L 11 T MW 60

OPN DB[MW 60] OPN DB 11

双字格式的32位指针(用于对I、Q、M...进行寻址)

L P#24.0 T MD 50

L I W [MD50] L IW 24

存储 访问 地址

区域 宽度

存储器间接寻址

长沙工控帮教育科技有限公司整理

(43)

用于存储器间接寻址的指针结构

16位指针的结构:

为0 ... 65 535 之间的无符号整数

0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

20

215 27

146

32位指针的结构(内部区域):

B B B B B B B B B B B B B X X X

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

0 0 0 0 0 0 0 0 0 0 0 0 0 B B B

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

20 22

字节地址(无符号整数) 位地址

20 215

未定义

装载32位指针常量(内部区域):

L P#25.3 (P = 指针,字节地址= 25,位地址:3)

长沙工控帮教育科技有限公司整理

(44)

SIMATIC S7 SITRAIN

Training for

存储器间接寻址的特性 用于存储16位和32位指针的地址区域:

 位(Bit)存储区(绝对寻址或符号寻址)

例如: OPN DB[MW30],OPN DI[“Motor_1”] 等。

A I[MD30],T QD["Speed_1"],等)

 本地数据堆栈(绝对寻址或符号寻址,

例如: OPN DB[LW10],OPN DI[#DB_NO]等。

A I[LD10],T QD[#Par_Pointer],等。)

 全局(共享) 数据块(只能进行绝对寻址,DB必须预先打开,

例如: OPN DB[DBW0] (覆盖掉DB寄存器内容!!!),OPN DI[DBW22]等。

A I[DBD10],T QD[DBD22] , 等。)

 背景数据块(只能进行绝对寻址,DI必须预先打开,

例如: OPN DB[DIW20],OPN DI[DIW0] (覆盖掉DI寄存器内容!!!),等

A I[DID10], T QD[DID22]等。)

向FB和FC传递指针的特点

 在参数里传递的指针不能直接用于存储器间接寻址。

 用于存储器间接寻址而传递的指针,在访问之前必须拷贝到临时变量里去

长沙工控帮教育科技有限公司整理

(45)

间接寻址示例

FC30:间接寻址示例

Network(段) 1:使用间接寻址方式打开DB

L #dbnumber // 将DB号拷贝到MW100

T MW 100 //

OPN DB[MW 100] // 打开DB

Network (段) 2: 循环删除

L P#18.0 // 将终端地址(DBW18)作为指针

T MD 40 // 传送到MD 40;

L 10 // 将循环计数器值设置为10

next: T MB 50 // 传到MB 50中;

L 0 // 装载初始值

T DBW[MD 40] // 传到DB50中;

L MD 40 // 装载指针

L P#2.0 // 并减去2个字节

-D // 然后再传回

T MD 40 // 到MD 40;

L MB 50 // 装载循环计数器

LOOP next // 减去2个字节,条件满足则跳转;

长沙工控帮教育科技有限公司整理

(46)

SIMATIC S7 SITRAIN

Training for

练习4.1:用间接寻址的方法进行循环编程

- - - -

Meas_Value[1]

Meas_Value[2]

Meas_Value[9]

Meas_Value[10]

Meas_Value[11]

#Ini_Value

1.0 2.0

9.0 10.0 11.0

. .

. 等等。

DB41 0

4

32 36 40

DB

中指向地址的指针

#P ar _P oin ter

#Counter

字节地址

长沙工控帮教育科技有限公司整理

(47)

内部区域,寄存器间接寻址

LAR1 P#10.0 // 设置AR1 AR1: 00000000 0000 0000 0000 0000 0101 0000

+

200 L M W [AR1, P#200.0]

存储区域 访问 地址 偏移 扩展指令: L MW 210

宽度 寄存器 常量

AR 1或AR2中的内部区域指针:

B B B B B B B B B B B B B X X X

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

0 0 0 0 0 0 0 0 0 0 0 0 0 B B B

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

20 22

字节地址(无符号整数) 位地址

20 215

未定义

 指令语法规则:

长沙工控帮教育科技有限公司整理

(48)

SIMATIC S7 SITRAIN

Training for

交叉区域,寄存器间接寻址

LAR1 P#I10.0 //设置AR1 AR1: 10000001 0000 0000 0000 0000 0101 0000 L W [AR1, P#200.0]

+

200

访问 地址 偏移 扩展指令: L IW 210

宽度 寄存器 常量

AR 1或AR 2中的交叉区域指针:

B B B B B B B B B B B B B X X X

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

1 0 0 0 0 R R R 0 0 0 0 0 B B B

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16

字节地址(无符号整数) 位地址 地址标识符

 指令语法规则:

Bit 31=0: 内部区域 Bit 31=1: 交叉区域

 地址标识符:

000 I/O 001 输入(PII)

010 输出(PIQ) 011 位(Bit)存储器

100 DB寄存器中的数据 101 DB寄存器2中的数据(DI)

110 自有本地数据 111 调用块的LD(本地数据)

长沙工控帮教育科技有限公司整理

(49)

用于装载地址寄存器的指令 装载地址寄存器

 LARn (n =1 or 2): 将ACCU1中的内容装载到ARn

 LARn <地址> 将<地址>中的内容装载到ARn

 LARn P#<地址> 将<地址>中的地址装载到ARn

< 地址 >:

 处理器寄存器: AR1,AR2 (比如: LAR1 AR2 及LAR2 AR1)

 32位变量: MD,LD, DBD,DID (比如: L DBD5等)

 32位符号变量: 32位全局变量(比如: LAR1 “ 索引 ,等 )

(全局和局域的) 以及OB,FB及FC的TEMP(临时)变量

(比如: LAR1 #Address,等)

P#< 地址 >

 指向布尔型绝对地址 En.m,An.m,Mn.m,Ln.m,DBXn.m,DIXn.m 指针: (比如: LAR1 P#M5.3, LAR2 P#I3.6,等)

 指向本地、符号地址 OB: TEMP(临时)变量 (

比如: LAR1 P##Par_Pointer,

等)

长沙工控帮教育科技有限公司整理

(50)

SIMATIC S7 SITRAIN

Training for

其它用于地址寄存器的指令 传送出地址寄存器内容

 TARn (n =1 or 2): 从Arn传送到ACCU1

 TARn <Address> 从Arn传送到<地址>

<地址>:

 处理器寄存器: AR2 (比如:TAR1 AR2 )

 32位绝对地址变量: MDn, LDn, DBDn, DIDn (如TAR2 MD5等)

 32位符号变量: 32位全局变量(比如TAR1 “Index” , 等)

(全局和局域的) 及OB,FB及FC的TEMP(临时)变量

(比如TAR1 #Address等)

地址寄存器内容交换(Swap)指令

 TAR 将地址寄存器AR1和AR2的内容相互交换

地址寄存器加指令

 +ARn 将ACCU1-L内容加到ARn

 +ARn P#n.m 将内部区域指针P#n.m加到AR1或AR2中去

长沙工控帮教育科技有限公司整理

(51)

寄存器间接寻址的特性 在STL/LAD/FBD编辑器内使用AR1

 当访问FC中的参数时,如果参数为复杂数据类型(ARRAY、STRUCT、

DATE_AND_TIME) ,则AR1寄存器和DB寄存器内容将会被覆盖掉。

 当访问FB中的INOUT参数时,如果该INOUT参数是复杂数据类型(ARRAY、

STRUCT、DATE_AND_TIME),则AR1寄存器和DB寄存器内容将会被覆盖掉。

在装载地址寄存器和对目标变量进行寄存器间接寻址的时候,不允许 访问局部参数

在STL/LAD/FBD编辑器内使用AR2

在对FB内部所有参数和静态变量进行寻址的时候,AR2寄存器和DI寄存器均用作基 址寄存器。

如果用户在FB内部将 AR2或DI覆盖了,之后就可以访问该FB专用 参数或静态变量。也就是说,未恢复两个寄存器时不可访问。

 在FC内,对AR2寄存器和DI寄存器没有限制

长沙工控帮教育科技有限公司整理

(52)

SIMATIC S7 SITRAIN

Training for

#ACCU1

DB

中指向地址的指针

#A R1

#ACCU2

- - - -

Number[1]

Number[2]

Number[9]

Number[10]

Number[11]

1 2

9 10 11 . .

. 等等。

DB42 0

4

32 36 40 字节地址

练习4.2:用寄存器间接寻址进行循环编程

长沙工控帮教育科技有限公司整理

(53)

POINTER类型和ANY类型数据的块参数

地址 声明 名称 类型

0.0 输入参数 DB_Num WORD 2.0 输入参数 Area_Pointer DWORD 6.0 输入参数 Length WORD . . .

L #DB_Num T #I_DB_Num OPN DB[I_DB_Num]

.

L #Area_Pointer LAR1

L #Length ...

FC...

分别传送实际地址的各个信息

(STEP 5里的方式):

• DB号

• 起始地址

• 区域长度,等。

缺点:

• 程序员必须进行拆分

• 在调用期间,不能使用实际地址的符号名

• 一个地址(区域)需要好几个参数

• 无一致性检查纠正

地址 声明. 名称 类型

0.0 输入 Measure_1 POINTER . . .

8.0 输入 Measure_2 ANY . . .

L P##Measure_1 LAR1

L W[AR1,P#0.0]

T #I_DB_Num OPN DB[I_DB_Num]

L D[AR1,P#2.0]

LAR1 ....

FC...

使用POINTER或ANY类型参数传递

(STEP 7方式):

• 调用时,程序员可以使用实际地址的符号名

• 由LAD/FBD/STL编辑器拆分成单个信息

• 一个地址只需要一个参数

• 进行一致性检查纠正

长沙工控帮教育科技有限公司整理

(54)

SIMATIC S7 SITRAIN

Training for

POINTER类型的结构和参数赋值

Byte n

Byte n+2

Byte n+4

Byte n+1

Byte n+3

Byte n+5

DB号(INT)

1 O O O _ O R R R _ O O O O _ O B B B

(32位交叉区域指针)

B B B B _ B B B B _ B B B B _ B X X X

POINTER类型参数赋值

 指针显示

P#DBn .DBX x.y 其中:n= DB号, x= 字节数, y= 位数

P#DIn .DIX x.y (比如 P#DB5.DBX3.4,P#DI2.DIX10.0,等)

P#Zx.y 其中: Z=区域,比如:P,I,Q,M及L

(比如P#I5.3,P#M10.0,等)

 地址声明:

MD30 (这种情况下,DB号区域标识符及位地址自动输入

#Motor_on 到POINTER参数中)

 "Motor_1".speed

数据类型结构:POINTER

长沙工控帮教育科技有限公司整理

(55)

ANY数据类型的结构

ANY数据类型指针

Byte n Byte n+2

Byte n+4 DB号

1 O O O _ O R R R _ O O O O _ O B B B B B B B _ B B B B _ B B B B _ B X X X

16#10 Data type 复制系数

Byte n+6 Byte n+8

数据类型 标识符

VOID 00 BOOL 01 BYTE 02 CHAR 03 WORD 04 INT 05 DWORD 06 DINT 07 REAL 08 DATE 09 TOD 0A TIME 0B S5TIME 0C

DT 0E

STRING 13

参数类型 标识符

BLOCK_FB 17 BLOCK_FC 18 BLOCK_DB 19 BLOCK_SDB 1A COUNTER 1C TIMER 1D

ANY参数类型指针

Byte n Byte n+2

Byte n+4 16#0000

定时器,计数器或块的号

16#10 参数类型

16#0001

Byte n+6 Byte n+8

16#0000

长沙工控帮教育科技有限公司整理

(56)

SIMATIC S7 SITRAIN

Training for

ANY数据类型的参数赋值

指针显示:

P#[数据块.]位地址 类型号

P#DB10.DBX12.0 REAL 20 指向DB10中的一个区域:从

Byte 12开始的20个REAL类型的地址

(ARRAY[1..20] OF REAL)

P#I 10.0 BOOL 8 指向IB10里的一个8位区域 地址声明:

 绝对地址:

DB5.DBD10 数据类型:DWORD,复制系数:1 DB号:5,指针:P#DB5.DBX10.0

IW32 类型:WORD,WF: 1,DB 号:0,指针: P#I 32.0

T35 类型: TIMER,编号:35

 符号地址:

#Motor_1.speed 使用基本数据类型,编译器建立正确

“Pump”.Start 的数据类型,复制系数1以及指针

注意事项

符号(ARRAY、STRUCT、STRING、UDT)赋值时,数据类型标识符02(

BYTE)以及区域字节长度只能由编译器来建立,并输入到ANY指针。

长沙工控帮教育科技有限公司整理

(57)

ANY类型间接参数分配 使用临时变量对ANY数据类型进行实际参数赋值

在调用块中声明ANY数据类型临时变量 例如: temp aux_pointer ANY

用指针信息对ANY临时变量进行赋值 例如:

LAR1 P##aux_pointer // 装载辅助指针地址 L B#16#10 // 装载标识符10 T LB [AR1,P#0.0] // 并传送到Offset 0 L ...

...

使用变量辅助指针对ANY 块参数进行赋值 例如:

CALL FC 111

Targetfield:=#aux_pointer

优点

在运行期间,对ANY指针参数进行动态重复赋值

长沙工控帮教育科技有限公司整理

(58)

SIMATIC S7 SITRAIN

Training for

评估ANY型指针传递

地址 声明 名称 类型 初始值 注释

0.0 in Par_Pointer ANY

out in_out

0.0 temp Data_type BYTE

2.0 temp WF WORD

4.0 temp DB_Nr WORD

6.0 temp Area_Pointer DWORD Network 1:创建数据类型、复制系数、DB号及区域指针

L P##Par_Pointer // 将#Pointer地址装载到ACCU1

LAR1 // 并从ACCU1中将其装载到AR1;

L B [AR1,P#1.0] // 从指针创建数据类型

T #Data_type // 并装载到临时变量中;

L W [AR1,P#2.0] // 建立复制系数

T WF // 并装载到临时变量中;

L W [AR1,P#4.0] // 建立DB号

T #DB_Nr // 并装载到临时变量中;

L D [AR1,P#6.0] // 建立区域指针

T #Area_Pointer // 并装载到临时变量中;

长沙工控帮教育科技有限公司整理

(59)

练习4.3:用于求和及计算平均值的功能

FC 43

EN ENO

Measured_values Sum Mean_value

声明 名称 类型

输入参数 Measured_values ANY 输出参数 Sum REAL 输出参数 Mean_value REAL

DB43 103.45 2086.5 1.7895 ....

....

P#DB43.DBX0.0 REAL 8

名称 类型

STRUCT Measurement ARRAY[1..8]

REAL

END_STRUCT

长沙工控帮教育科技有限公司整理

(60)

SIMATIC S7 SITRAIN

Training for

STEP 7数据类型和变量

长沙工控帮教育科技有限公司整理

(61)

数据类型描述了数据基本特性

 连续区域:例如:实际速度

“是/非” 特性:例如:扰动 数据类型建立:

 允许范围

(INT:-32 768 ... +32 767,等等。)

 允许使用的指令

(算术指令: +,- 等。)

 存储器中位的表示方法抽象出的数据类型

变量可以保存并在以后继续处理数值

Actual_speed: REAL

扰动: BOOL

Set_speed: REAL

使能: BOOL

变量及数据类型含义

长沙工控帮教育科技有限公司整理

(62)

SIMATIC S7 SITRAIN

Training for

变量声明确定变量的如下特性:

 符号名

 数据类型

 有效范围

声明类型变量可以:

 在全局符号表中声明

(基本数据类型)

 在全局数据块的声明表中进行声明

 (所有数据类型)

 在逻辑块的声明表中进行声明

(OB,FB和FC)

变量特性及变量的声明

Meas_point[1]: Real Meas_point[2]: Real Meas_point[3]: Real

Meas_point[10]: Real Meas_point: ARRAY[1..10]

长沙工控帮教育科技有限公司整理

(63)

STEP 7数据类型概述

基本数据类型

(最长32位)

复杂数据类型

(长度大于32位)

用户自定义数据类型

(长度大于32位)

• 位(Bit)数据类型(BOOL, BYTE, WORD, DWORD, CHAR)

• 算术数据类型(INT, DINT, REAL)

• 时间数据类型(S5TIME, TIME, DATE, TIME_OF_DAY)

•时间型 (DATE_AND_TIME)

•数组型 (ARRAY)

•结构型 (STRUCT)

•字符串型(STRING)

UDT数据类型 (用户自定义型)

长沙工控帮教育科技有限公司整理

(64)

SIMATIC S7 SITRAIN

Training for

STEP 7中的基本数据类型

长度(单位:位)

BOOL BYTE WORD DWORD CHAR INT DINT REAL S5TIME TIME DATE

TIME-OF-DAY

1 8 16 32 8 16 32 32 16 32 16 32

关键字 类型常数示例

1或0 B#16#A9 W#16#12AF

DW#16#ADAC1EF5 'w'

123

65539或L#-1 1.2或34.5E-12 S5T#5s_200ms

T#2D_1H_3M_45S_12MS D#1999-06-14

TOD#12:23:45.12

长沙工控帮教育科技有限公司整理

(65)

复杂数据类型的重要性

Set_speed: REAL Actual_speed: REAL Enable: BOOL Disturbance: BOOL Motor: STRUCT

END_STRUCT

“更好地”构造数据:

 适合于任务

具有“适当的”数据类型

在块调用中

数据传输的精简形式:

一个参数传送“多个”数据项

 使结构化编程成为可能

 仅通过参数便实现 块间“通信”

 软件可重用性

5

. .

CALL #Controller Motor:="Hall_1".M5 . . .

. .

. .

A #Motor.Enable .

. in Drive UDT1

out ... ...

stat Control. FB1 in Motor UDT1 out ... ...

长沙工控帮教育科技有限公司整理

(66)

SIMATIC S7 SITRAIN

Training for

STEP 7中的复杂数据类型

长度(位)

DATE_AND_TIME

(日期和时间)

STRING

(字符串,最多254个字符)

ARRAY

(相同数据类型一组 元素的集合)

STRUCT

(结构,不同数据类型一组 元素的集合)

UDT(用户自定义类型 =

由基本数据类型和/或

复杂数据类型组成的“模板” )

64

8 * (字符数 +2)

用户自己定义

用户自己定义

用户自己定义

关键字 示例

DT#99-06-14-12:14:55.0

´This is a string´

´SIEMENS´

Meas_vals: ARRAY[1..20]

INT

Motor: STRUCT Speed: INT Current: REAL END_STRUCT

UDT 作为块 UDT 作为数组元素

STRUCT Drive: ARRAY[1..4]

Speed: INT UDT1

Current: REAL END_STRUCT

长沙工控帮教育科技有限公司整理

(67)

STEP 7参数类型

长度(位)

TIMER

COUNTER

BLOCK_FB BLOCK_FC BLOCK_DB BLOCK_SDB Pointer

ANY

16

16

16

48

80

关键字 示例

Contact time: TIMER .

SI #Contact_time

NoCompParts: COUNTER .

LC #No_Comp_Parts Recall: BLOCK_FB .

UC #Recall

Measure: POINTER .

L P##Measure .

Measured Values: ANY .

L P##Meas_Values .

长沙工控帮教育科技有限公司整理

(68)

SIMATIC S7 SITRAIN

Training for

变量建立的区域

数据块 DBx

DBy DBz

. . .

位(Bit)存储器 PIQ

PII I/O 区域(P)

本地数据 堆栈

“传统“

PLC区域

长沙工控帮教育科技有限公司整理

(69)

本地数据堆栈工作方式

为组织块 OB1分配 L Stack

如:256个字节

5

OB1 FB1 FC5

FC10 .

. CALL FB1

. .

1 2

4 3

.

5

.

CALL FC10 .

.

. . CALL FC5

. .

6

LD for OB1 LD for OB1 LD for FB1

LD for OB1 LD for FB1 LD for FC5

LD for OB1 LD for FB1

LD for OB1 LD for OB1

LD for FC10 free

free

free

free free

free

LD for OB1

free

长沙工控帮教育科技有限公司整理

(70)

SIMATIC S7 SITRAIN

Training for

示例:暂存器的替换 LAD中的分支

来自本地数据堆栈的 帮助变量

STL表示

分支位置

长沙工控帮教育科技有限公司整理

(71)

数据块(DB)

功能 FC10

功能 FC20

功能块 FB1 OB1

全局数据块 DB20 可以被所有块访问

背景数据 DB5 FB1的背景DB

长沙工控帮教育科技有限公司整理

(72)

SIMATIC S7 SITRAIN

Training for

数据类型:ARRAY

ARRAY(域):

 数组是相同数据类型 元素的组合

 数组的声明:

• 一维数组:

域名 :ARRAY[ 最小索引 .. 最大索引 ] OF 数据类型 ;

• 多维数组:

域名 : ARRAY[ 最小索引 1.. 最大索引 1, 最小索引 2.. 最大索引 2,...] OF 数据类型 ; 索引 :数据类型INT(-32768...32767)

示例:

 数组变量的声明:

• 一维:Meas_value: ARRAY[1..10] OF REAL;

• 多维:Position: ARRAY[1..5,2..8,...] OF INT;

 数组变量的访问:

• L #Meas_value[5] // 装载数组的第5个元素

// 将Meas_value装载到ACCU1中去

• T #Result[10,5]

Meas_value[1]: Real Meas_value[2]: Real Meas_value[3]: Real

Meas_value[10]: Real Meas_value: ARRAY[1..10]

. . . .

长沙工控帮教育科技有限公司整理

(73)

ARRAY的声明和初始化

DB5 "Declaration view"

DB5 "Data view"

长沙工控帮教育科技有限公司整理

(74)

SIMATIC S7 SITRAIN

Training for

存储器中ARRAY变量的存储

Byte n

1)

BYTE, CHAR 数据类型

一维数组 多维数组

BOOL数据类型

8 7 6 5 4 3 2 1

7 6 5 4 3 2 1 0

12 11 10 9

Byte n+1

Byte n

1)

Byte n+1 Byte n+2

Byte 1 Byte 2 Byte 3

WORD, DWORD,... 数据类型

Byte n

1)

Byte n+1

Byte n+2 Byte 3

.. .

Word 2 Byte n+2

.. .

 示例

ARRAY[1..2,1..3,1..2] OF BYTE

Byte n

1)

Byte n+1 Byte n+2

Byte 1.1.1 Byte 1.1.2 Byte 1.2.1

..

.

Byte 1.2.2

Byte 1.3.1 Byte 1.3.2 Byte 2.1.1 Byte 2.1.2 Byte 2.2.1 Byte 2.2.2 Byte 2.3.1 Byte 2.3.2

1)

n = 偶数

Word 1

长沙工控帮教育科技有限公司整理

(75)

STRUCT(结构):

 结构是不同数据类型 元素的组合

 结构的声明:

结构名称: STRUCT 元素 1 名称: 数据类型 ; 元素 2 名称: 数据类型 ; ...

END_STRUCT

示例:

 结构变量的声明: 访问结构变量:

• MotorControl : STRUCT S #MotorControl.ON

ON : BOOL; L #MotorControl.ActualSpeed OFF : BOOL; T #MotorControl.SetSpeed

SetSpeed : INT; ...

ActualSpeed : INT;

END_STRUCT;

数据类型:STRUCT

Set_Speed: REAL Actual_Speed: REAL Enable: BOOL Disturbance: BOOL Motor: STRUCT

END_STRUCT

长沙工控帮教育科技有限公司整理

(76)

SIMATIC S7 SITRAIN

Training for

结构(STRUCT)的声明 示例: 数组 – 结构 – 数组的声明

DB6 "Declaration view"

DB6 "Data view"

长沙工控帮教育科技有限公司整理

(77)

存储器中STRUCT变量的存储

Byte n

1)

基本数据类型结构 复杂数据类型结构

6 5 4 3 2 1

7 6 5 4 3 2 1 0

Byte n+1

Byte n+2

Byte 1 Byte 2 Byte 3

Byte n+8 Byte n+9

Byte 3

Word 1

Word 2

.. . Filler byte

Filler byte

Byte n+3

Byte n+4 Byte n+5

6 5 4 3 2 1 Filler byte

Byte n+6 Byte n+7

.. .

基本数据类型 元素

Word limit

ARRAY类型 元素

STRUCT类型 元素

Word limit

.. .

Word limit

长沙工控帮教育科技有限公司整理

(78)

SIMATIC S7 SITRAIN

Training for

用户自定义数据类型:UDT UDT用户自定义数据类型:

 在声明部分创建了 一个数据模板 供以后使用

 对程序文件夹的所有 块来说,是全局有效的

示例:

 新数据类型(结构)的定义:

UDT1 STRUCT

SetSpeed : REAL; ...

ActualSpeed : REAL;

Enable : BOOL;

Disturbance : BOOL;

END_STRUCT;

 变量的声明:

Motor_1: UDT1;

Motor_2: UDT1;

 对变量的访问:

L #Motor_1.ActualSpeed

Set_Speed: REAL Actual_Speed: REAL Enable: BOOL Disturbance: BOOL UDT1: STRUCT

END_STRUCT

长沙工控帮教育科技有限公司整理

(79)

UDT的使用

UDT5

FC23

长沙工控帮教育科技有限公司整理

(80)

SIMATIC S7 SITRAIN

Training for

数据类型: DATE_AND_TIME

Byte

n

1)

Byte n+2

Byte n+4

Byte n+1

Byte n+3

Byte n+5

(90 ... 89)

结构:

(01 ... 12)

(01 ... 31)

小时

(00 ... 23)

分钟

(00 ... 59)

(00 ... 59)

Byte n+6

毫秒

Byte n+7

(000 ... 999)

星期

(1..7)

所有数值都以BCD码格式存储

 变量的预先设置:

DT#年-月-日-小时:分钟:秒.[毫秒]

示例:DT#1998-03-21-17:23:00:00

通过IEC-Library功能处理

1=星期日 2=星期一 3=星期二 4=星期三 5=星期四 6=星期五 7=星期六

1)

n = 偶数

长沙工控帮教育科技有限公司整理

(81)

处理DT型变量的功能

标准库V3.x里的 IEC库

FC1 (AD_DT_TM):功能FC 1将一个时间段(TIME格式)加到一个时刻时间(DT格式)上 去,并返回新的时刻时间。

FC34 (SB_DT_DT):功能FC 34将两个时刻时间(DT格式)相减,返回一个时间段(TIME 格式) 。

FC35 (SB_DT_TM) :功能FC 35从一个时刻时间(DT格式)上减去一个时间段(TIME格式

) ,并返回新的时刻时间(DT格式) 。

FC3 (D_TOD_DT) :功能FC 3将DATE和TIME_OF_DAY (TOD)日期格式组合起来,并将 它们转换成DATE_AND_TIME(DT)这种日期格式。

FC6 (DT_DATE) :功能FC 6是从DATE_AND_TIME格式中提取日期。

FC7 (DT_DAY) :功能FC 7是从DATE_AND_TIME格式中提取星期。.

FC8 (DT_TOD) :功能FC 8是从DATE_AND_TIME格式中提取TIME_OF_DAY。

DT#变量比较函数: FC9 (EQ_DT),FC12 (GE_DT),

FC14 (GT_DT),FC18 (LE_DT),FC23 (LT_DT),FC28 (NE_DT)

长沙工控帮教育科技有限公司整理

參考文獻

相關文件

數位計算機可用作回授控制系統中的補償器或控制

线性拟合与二次拟合 数据拟合的线性模型 一次多项式拟合公式..

訊系 助理教授 張宏裕 冠捷科技公司 主任工程師 許景富 勝華科技股份有限公司 課長 李弘鈞 牧德科技股份有限公司 副理 陳政宏 國立虎尾科技大學 教授 吳宗霖

接收機端的多路徑測量誤差是GPS主 要誤差的原因之一。GPS信號在到達 地球沒有進到接收機之前,除了主要 傳送路徑之外,會產生許多鄰近目標 反射的路徑。接收機接收的首先是直

接收器: 目前敲擊回音法所採用的接收 器為一種寬頻的位移接收器 其與物體表

因應社會需要的轉變,科學、科技和工程的急速發展,根據各類調查和會面收集得到

、明泰科技、淩網科技有限公 司、威寶電信、神準科技、漢 翔航空、智邦電信公司、華寶 通訊股份有限公司、和碩聯合

超外差調幅 調幅 調幅(AM)無線 調幅 無線 無線 無線廣播接收機原理 廣播接收機原理 廣播接收機原理說明 廣播接收機原理 說明 說明 說明(續 續