状态位指令
长沙工控帮教育科技有限公司整理
SIMATIC S7 SITRAIN
Training forS7-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 长度 长沙工控帮教育科技有限公司整理
状态字结构
位 定义 值 含义
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
状态字各位的含义
长沙工控帮教育科技有限公司整理
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 中进行检查 长沙工控帮教育科技有限公司整理
| |
带有状态位的指令
指令码 含义 示例
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
长沙工控帮教育科技有限公司整理
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
长沙工控帮教育科技有限公司整理
取决于状态位的跳转功能
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,则跳转
长沙工控帮教育科技有限公司整理
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位字母-数字字符组成
长沙工控帮教育科技有限公司整理
跳转分支的编程
装载跳转 分支数 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:
长沙工控帮教育科技有限公司整理
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内容 送入循环计数器
长沙工控帮教育科技有限公司整理
BE 块结束指令
BEU 无条件块结束指令(在块内)
BEC 条件块结束指令(取决于 RLO位)
(RET) 在 LAD 编程语言中
在 FBD编程语言中
块结束指令
长沙工控帮教育科技有限公司整理 RET
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
长沙工控帮教育科技有限公司整理
练习 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
仿真器上的切换开关
长沙工控帮教育科技有限公司整理
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
长沙工控帮教育科技有限公司整理
累加器指令
长沙工控帮教育科技有限公司整理
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中的内容向左或向右循环移位长沙工控帮教育科技有限公司整理
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
长沙工控帮教育科技有限公司整理
SIMATIC S7 SITRAIN
Training forPUSH和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
指令执行后长沙工控帮教育科技有限公司整理
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
指令执行前 指令执行后
长沙工控帮教育科技有限公司整理
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 操作: +., -., *., /.
长沙工控帮教育科技有限公司整理
字逻辑指令
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..,
长沙工控帮教育科技有限公司整理
SIMATIC S7 SITRAIN
Training forACCU1交换指令
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
长沙工控帮教育科技有限公司整理
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>
长沙工控帮教育科技有限公司整理
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
031 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
031 15
长沙工控帮教育科技有限公司整理
数值取反(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
长沙工控帮教育科技有限公司整理
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
长沙工控帮教育科技有限公司整理
练习2.1:指数计算
示例: 通过连续使用PUSH和*I指令来生成一个整数的6次幂
ACCU1
ACCU2 用push指令
进行拷贝
乘以 *I
ACCU1 Puchwheel按钮
x y 0 0 转换成
INT类型 BTI
长沙工控帮教育科技有限公司整理
SIMATIC S7 SITRAIN
Training for2 3
练习2.2: ACCU1中的数据交换
ACCU1 - L (指令执行前)
1 0
CAW
ACCU1 - L (指令执行后)
0 1
3 2
长沙工控帮教育科技有限公司整理
练习2.3:生成补码
位15 位0
生成1的补码:INVI
1 . . . 1 0 1
ACCU1-L (指令执行前)
位15 ACCU1-L (指令执行后) 位0
0 . . . 0 1 0
长沙工控帮教育科技有限公司整理
SIMATIC S7 SITRAIN
Training for实数(REAL)指令
y=LN(x)
sin?
cos?
tan?
...?
?
?
长沙工控帮教育科技有限公司整理
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
长沙工控帮教育科技有限公司整理
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中
长沙工控帮教育科技有限公司整理
扩展的算术函数
算术函数 :
SQR 平方 SQRT 开方
EXP 以e为底的指数函数 LN 自然对数
(e=2.718282)
示例:
L MD10 // 装载实数(REAL)
SQR // 计算其平方值
T MD30 // 将结果传送到MD30中
EN SQR ENO
IN OUT
MD10 MD30
(STL)
(LAD)
长沙工控帮教育科技有限公司整理
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)
长沙工控帮教育科技有限公司整理
其它实数(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)
长沙工控帮教育科技有限公司整理
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长沙工控帮教育科技有限公司整理
间接寻址及地址寄存器指令
L W [AR1, P#200.0]
- - - -
1 2
9 10
#Ini_Value
#P ar _P oin ter
#Counter
? ?
?
长沙工控帮教育科技有限公司整理
SIMATIC S7 SITRAIN
Training forSTEP 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位指针 交叉区域
长沙工控帮教育科技有限公司整理
变量直接寻址
存储单元位置 (示例)
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),本地数据堆栈
长沙工控帮教育科技有限公司整理
SIMATIC S7 SITRAIN
Training forDB中地址标识符直接寻址
打开的数据块 在数据块中装载和传递
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位开始扫描
长沙工控帮教育科技有限公司整理
用于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寄存器
长沙工控帮教育科技有限公司整理
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
存储 访问 地址
区域 宽度
存储器间接寻址
长沙工控帮教育科技有限公司整理
用于存储器间接寻址的指针结构
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)
长沙工控帮教育科技有限公司整理
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传递指针的特点
在参数里传递的指针不能直接用于存储器间接寻址。
用于存储器间接寻址而传递的指针,在访问之前必须拷贝到临时变量里去
长沙工控帮教育科技有限公司整理
间接寻址示例
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个字节,条件满足则跳转;
长沙工控帮教育科技有限公司整理
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
字节地址
长沙工控帮教育科技有限公司整理
内部区域,寄存器间接寻址
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
未定义
指令语法规则:
长沙工控帮教育科技有限公司整理
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(本地数据)
长沙工控帮教育科技有限公司整理
用于装载地址寄存器的指令 装载地址寄存器
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,等)
长沙工控帮教育科技有限公司整理
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中去
长沙工控帮教育科技有限公司整理
寄存器间接寻址的特性 在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寄存器没有限制
长沙工控帮教育科技有限公司整理
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:用寄存器间接寻址进行循环编程
长沙工控帮教育科技有限公司整理
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编辑器拆分成单个信息
• 一个地址只需要一个参数
• 进行一致性检查纠正
长沙工控帮教育科技有限公司整理
SIMATIC S7 SITRAIN
Training forPOINTER类型的结构和参数赋值
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
长沙工控帮教育科技有限公司整理
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
长沙工控帮教育科技有限公司整理
SIMATIC S7 SITRAIN
Training forANY数据类型的参数赋值
指针显示:
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指针。
长沙工控帮教育科技有限公司整理
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指针参数进行动态重复赋值
长沙工控帮教育科技有限公司整理
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 // 并装载到临时变量中;
长沙工控帮教育科技有限公司整理
练习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
长沙工控帮教育科技有限公司整理
SIMATIC S7 SITRAIN
Training forSTEP 7数据类型和变量
长沙工控帮教育科技有限公司整理
数据类型描述了数据基本特性
连续区域:例如:实际速度
“是/非” 特性:例如:扰动 数据类型建立:
允许范围
(INT:-32 768 ... +32 767,等等。)
允许使用的指令
(算术指令: +,- 等。)
存储器中位的表示方法抽象出的数据类型
变量可以保存并在以后继续处理数值
Actual_speed: REAL
扰动: BOOL
Set_speed: REAL
使能: BOOL
变量及数据类型含义
长沙工控帮教育科技有限公司整理
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]
长沙工控帮教育科技有限公司整理
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数据类型 (用户自定义型)
长沙工控帮教育科技有限公司整理
SIMATIC S7 SITRAIN
Training forSTEP 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
长沙工控帮教育科技有限公司整理
复杂数据类型的重要性
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 ... ...
长沙工控帮教育科技有限公司整理
SIMATIC S7 SITRAIN
Training forSTEP 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
长沙工控帮教育科技有限公司整理
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 .
长沙工控帮教育科技有限公司整理
SIMATIC S7 SITRAIN
Training for变量建立的区域
数据块 DBx
DBy DBz
. . .
位(Bit)存储器 PIQ
PII I/O 区域(P)
本地数据 堆栈
“传统“
PLC区域
长沙工控帮教育科技有限公司整理
本地数据堆栈工作方式
为组织块 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
长沙工控帮教育科技有限公司整理
SIMATIC S7 SITRAIN
Training for示例:暂存器的替换 LAD中的分支
来自本地数据堆栈的 帮助变量
STL表示
分支位置
长沙工控帮教育科技有限公司整理
数据块(DB)
功能 FC10
功能 FC20
功能块 FB1 OB1
全局数据块 DB20 可以被所有块访问
背景数据 DB5 FB1的背景DB
长沙工控帮教育科技有限公司整理
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]
. . . .
长沙工控帮教育科技有限公司整理
ARRAY的声明和初始化
DB5 "Declaration view"
DB5 "Data view"
长沙工控帮教育科技有限公司整理
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
等长沙工控帮教育科技有限公司整理
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
长沙工控帮教育科技有限公司整理
SIMATIC S7 SITRAIN
Training for结构(STRUCT)的声明 示例: 数组 – 结构 – 数组的声明
DB6 "Declaration view"
DB6 "Data view"
长沙工控帮教育科技有限公司整理
存储器中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 3Byte n+8 Byte n+9
Byte 3
Word 1Word 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
长沙工控帮教育科技有限公司整理
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
长沙工控帮教育科技有限公司整理
UDT的使用
UDT5
FC23
长沙工控帮教育科技有限公司整理
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 = 偶数
长沙工控帮教育科技有限公司整理
处理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)