160 likes | 257 Views
数据块中的数据存储. 目标. 学习了本章之后,你将 ... ... 懂得全局数据块的用途 ... 熟悉基本和复杂数据类型 ... 能够对带有单元变量的数据块编辑、存储和下装到 CPU ... 熟悉并能够应用编址数据块变量. 位存储器. DBz. PIQ. DBy. PII. DBx. I/O 区. L 堆栈. 数据块. 数据存储区. 所有块可以访问. 全局数据 DB20. FB1 的背景 DB. 背景数据 DB5. 数据块 ( DB). 功能 FC10. OB1. 功能 FC20. 功能块
E N D
目标 学习了本章之后,你将 ... ... 懂得全局数据块的用途 ... 熟悉基本和复杂数据类型 ... 能够对带有单元变量的数据块编辑、存储和下装到CPU ... 熟悉并能够应用编址数据块变量
位存储器 DBz . PIQ . DBy . PII DBx I/O 区 L 堆栈 数据块 数据存储区
所有块可以访问 全局数据 DB20 FB1的背景DB 背景数据 DB5 数据块 (DB) 功能 FC10 OB1 功能 FC20 功能块 FB1
• 位数据类型 (BOOL, BYTE, WORD, DWORD, CHAR) • 数学数据类型 (INT, DINT, REAL) • 定时器类型 (S5TIME, TIME, DATE, TIME_OF_DAY) • 时间 (DATE_AND_TIME) • 矩阵 (ARRAY) • 结构 (STRUCT) • 字符串 (STRING) 数据类型UDT (用户定义数据类型) STEP 7数据类型概述 基本数据 类型 (到32 位) 复杂数据 类型 (长于32位) 用户定义数据类型 (长于 32 位)
STEP 7基本数据类型 关键字 长度 (位) 该类型的常数举例 BOOL 1 True 或 False (1 或0) BYTE 8 B#16#A9 WORD 16 W#16#12AF DWORD 32 DW#16#ADAC1EF5 CHAR 8 ' w ' S5TIME 16 S5T#5s_200ms INT 16 123 DINT 32 L#65539 REAL 32 1.2 或 34.5E-12 TIME 32 T#2D_1H_3M_45S_12MS DATE 16 D#1993-01-20 TIME_OF_DAY 32 TOD#12:23:45.12
输入、保存、下载和监视数据块 Declaration View Data View
数据字节 0 DBB 0 数据字节 1 DBW 0 数据字节 2 DBD 0 数据字节 3 DBX 4.1 DBD 8188 DBW 8190 数据字节 8191 DBB 8191 寻址数据单元 8 位 7 0
0.0 Status BOOL OPN "Values" A DBX 0.0 A DB99.DBX0.0 A "Values".Status 或 或 1.0 States BYTE 2.0 Number INT OPN DB 99 L DBB 1 L DB99.DBB1 L "Values".States 或 或 4.0 Weight[1] REAL OPN "Values" T DBW 2 T DB99.DBW2 T "Values".Number 或 或 OPN DB 99 L DBD 8 L DB99.DBD8 L "Values".Weight[2] 8.0 Weight[2] REAL 或 或 访问数据单元 完全表示访问 DB 99 "Values" 传统访问方法 Add. Name Type 绝对寻址符号寻址
练习: 计数传送的零件 (FC 18, DB 18): 模拟器 CPU 程序: DB 18, FC 18 ACTUAL-number of parts QW 6 SETPOINT-number of parts 0 8 1 5 IW 2 传送带模型 - LED ACTUAL=SETPOINT Q 8.4
ENO 练习: 计数传送的零件(FC 18), 答案提示 NW 1: Set "counter" to 0 MOVE 复位的条件 EN OUT "DB_Parts".ACT_Number_of_parts 0 IN ENO NW 2: Counting using memory word, ACTUAL number of parts ADD_I 计数事件的上升沿 EN "DB_Parts".ACT_Number_of_parts IN1 OUT "DB_Parts".ACT_Number_of_parts 1 IN2 NW 3: Display ACTUAL number of parts on BCD digital display 零件的实际值("DB_Parts".ACT_Number_of_parts)从整数到BCD转换 ->结果在 BCD 数字显示 ( QW 6) NW 4: Readin SETPOINT number of parts and convert from BCD to Integer 来自数码拨轮 ( IW 2)的值从 BCD 转换到整数 -> 把零件的给定值 (Integer)存储在 MW 200 NW 5: ACTUAL-SETPOINT comparison, LED (red LED Q8.4) 比较实际值 (“DB_Parts”.ACT_Number_of_parts)和给定值(MW 200),比较的结果送到红色的LED
复杂数据类型 DATE_AND_TIME 64 DT#97-09-24-12:14:55.0 STRING 8 * (字符个数+2 ) ´This is a string´(最多254个字符的字符串) ´SIEMENS´ ARRAY用户定义Measured values :ARRAY[1..20](相同数据类型的元素组) INT STRUCT用户定义Motor: STRUCT(不同数据类型的元素组)Speed : INT Current: REAL END_STRUCT UDT UDT 作为块 UDT作为array 元素(用户定义数据类型 = 用户定义基本或复杂数据类型STRUCT Drive: ARRAY[1..4] 组成的模板)Speed : INT UDT1 Current: REAL END_STRUCT 关键字 长度 (位) 举例
1. Measuring_point, data type Real 2. Measuring_point, data type Real 3. Measuring_point, data type Real 10. Measuring_point, data type Real 矩阵举例 Measuring_point 带有名字“Measuring_point” 的矩阵 (相同数据类型的几个元素) • • • 程序编辑器中的显示 (数据块DB 2):
结构举例 Motor_data Speed, data type Integer Rated_current, data type Real 带有名字“Motor_data” 的结构 (不同数据类型的几个元素) Starting_current, data type Real Direction, data type Bool 程序编辑器中的显示 (数据块DB 1):
MW4 MW2 MW6 MW8 QW6 IB3 练习(选作): 数据块和数据格式 BIN IB1 DB10. DBW2 DB11. DBW8 + = QW6 BCD I0.7=“0” : BEC BCD IB2 BIN + BCD BIN = BIN DB11. DBW10 BCD : BE