SITRAIN Training for
Automation and Drives
ST-7PRO1
Data Storagein DataBlocks
Page 1
Contents Page
Objectives 2
Storage Areas forData………… 3
DataBlocks (DBs) 4
OverviewofData Typesin STEP 7 5
ElementaryData Typesin STEP 7 6
Creatinga NewDataBlock 7
Entering,Saving,DownloadingandMonitoringaDataBlock 8
Addressing DataElements… 9
AccessingDataElements 10
Exercise: Counting the TransportedParts (FC 18) ……… ……………………………….… 11
Complex Data Types………… 12
Exampleof an Array 13
Exampleof aStructure 14
Date:25.07.2008
File:PRO1_09E.1
SIMATIC
®
S7
Siemens AG 2002. All rights reserved.
SITRAIN Training for
Automation and Drives
Data StorageinDataBlocks
SITRAIN Training for
Automation and Drives
ST-7PRO1
Data Storagein DataBlocks
Page 2
Date:25.07.2008
File:PRO1_09E.2
SIMATIC
®
S7
Siemens AG 2002. All rights reserved.
SITRAIN Training for
Automation and Drives
Objectives
Sau khi hoàn thành chương này người học sẽ:
hiểu được mục đích của khối dữ liệu toàn cục (globaldata
block)
làm quen với kiểu dữ liệu sơ cấp, cơ bản vàkiểu dữ liệu phức
tạp (elementaryandcomplex data types)
cókhả năng chỉnh sửa, lưu vàdownload một khối dữ liệu với
những biến sơ cấp vào CPU
làm quen vàcóthểứng dụng khả năng định địa chỉ cho các
biến của khối dữ liệu
SITRAIN Training for
Automation and Drives
ST-7PRO1
Data Storagein DataBlocks
Page 3
Overview Bên cạnh các khối chương trình (program block) thìmột chương trình còn có
các dữ liệu chứa thông tin về tình trạng xử lý, tín hiệu .v.v Sau đónhững dữ
liệu này sẽ được xử lý tùy theo các câu lệnh trong chương trình.
Dữ liệu được lưu trong các biến của chương trình. Các biến này được nhận
dạng bằng :
•Nơi lưu trữ (địa chỉ: vídụ như P, PII, PIQ, bit nhớ, L stack, DB)
•Kiểu dữ liệu (kiểu sơ cấp hoặc phức tạp, loại thông số)
Ngoài ra cũng cóthể phân biệt dựa vào khả năng truy cập:
•Các biến toàn cục được khai báo trong bảng ký hiệu tượng trưng toàn cục
hoặc trong các khối dữ liệu toàn cục (global symbol table or global data
blocks)
•Biến cục bộ, được khai báo trong phần khai báo của OB, FB vàFC.
Các biến cóthể lưu ở vùng nhớ cố định trong vùng đệm, vùng nhớ hoặc trong
các khối dữ liệu. Chúng cũng cóthể được tạo ra một cách linh động trong ngăn
xếp L khi một block được thực hiện.
Local Data Stack Ngăn xếp dữ liệu cục bộ (L stack) làvùng lưu trữ:
•các biến tạm của một khối logic, bao gồm thông tin khởi động OB
•các địa chỉ thực sự khi gọi khối chức năng FC
•những kết quả logic trung gian trong LAD
Những vấn đề này được đề cập đến trong chương "Functions and Function
Blocks".
Data Blocks Các khối logic của chương trình dùng các khối dữ liệu (data block) để lưu trữ dữ
liệu. Không giống như các dữ liệu tạm thời, dữ liệu trong những khối dữ liệu
không bị ghi đèlên khi kết thúc việc thi hành khối logic hoặc khi đóng DB.
Date:25.07.2008
File:PRO1_09E.3
SIMATIC
®
S7
Siemens AG 2002. All rights reserved.
SITRAIN Training for
Automation and Drives
Bitmemories
PIQ
PII
StorageAreasforData
Data blocks
DBx
DBy
DBz
.
.
.
I/Oarea
Lstack
SITRAIN Training for
Automation and Drives
ST-7PRO1
Data Storagein DataBlocks
Page 4
Overview Các khối dữ liệu được dùng để lưu trữ dữ liệu của người sử dụng. Giống như
các khối logic, khối dữ liệu cũng chiếm dụng những vùng trong bộ nhớ. Các
khối dữ liệu chứa các biến dữ liệu (vídụ như các giátrị số học) được dùng
trong chương trình.
Chương trình của người sử dụng cóthể truy cập đến dữ liệu trong các khối dữ
liệu bằng các thao tác về bit, byte, word hoặc doubleword. Việc truy cập này
cóthể sử dụng địa chỉ theo ký hiệu tượng trưng hoặc địa chỉ tuyệt đối.
Uses Bạn cóthể sử dụng các khối dữ liệu theo nhiều cách tùy thuộc nội dung của
chúng. Bạn cần phân biệt giữa:
•Các khối dữ liệu toàn cục (global data block): Những khối này chứa thông
tin màtất cả các khối logic trong chương trình (bao gồm cả OB1) cóthể
truy xuất đến được.
•Các khối dữ liệu cábiệt (instance data block): Những khối này luôn được
gán cho một khối FB nhất định. Dữ liệu trong mỗi DB chỉ được dùng bởi
FB được gán đó.
Những khối dữ liệu cábiệt được đề cập chi tiết hơn trong chương Functions
and Function Blocks".
CreatingDBs Bạn cóthể tạo ra các khối dữ liệu toàn cục -globalDBbằng cách dùng công
cụ soạn thảo chương trình hoặc với một "user-defined data type" (UDT, kiểu
dữ liệu do người dùng định nghĩa) màbạn đã tạo ra trước đó.
Các khối dữ liệu cábiệt được tạo ra khi gọi khối FB.
Registers CPU có2 thanh ghi khối dữ liệu (datablockregister), thanh ghi DBvàDI.Vì
vậy bạn cóthể mở hai khối dữ liệu cùng lúc.
Vấn đề này được đề cập trong giáo trình lập trình nâng cao.
Date:25.07.2008
File:PRO1_09E.4
SIMATIC
®
S7
Siemens AG 2002. All rights reserved.
SITRAIN Training for
Automation and Drives
DataBlocks (DBs)
Function
FC10
Function
FC20
Function
block
FB1
OB1
Globaldata
DB20
Accessibleto allblocks
Instance data
DB5
InstanceDB forFB1
SITRAIN Training for
Automation and Drives
ST-7PRO1
Data Storagein DataBlocks
Page 5
Overview Kiểu dữ liệu xác định tính chất của dữ liệu, nghĩa lànội dung của một hay
nhiều địa chỉ kết hợp được thể hiện như thế nào vàphạm vi cho phép của giá
trị làgì.
Kiểu dữ liệu cũng xác định loại thao tác nào cóthể sử dụng với kiểu dữ liệu
đó.
Elementary Kiểu dữ liệu sơ cấp, cơ bản (elementary data type) được định nghĩa từ trước
Data Types theo tiêu chuẩn IEC 61131-3. Kiểu dữ liệu này xác định khoảng trống bộ nhớ
cần thiết. VD dữ liệu dạng word chiếm 16 bit trong bộ nhớ.
Kiểu dữ liệu sơ cấp không bao giờ dài quá32 bit vàcóthể được nạp toàn bộ
vào trong các accumulator của bộ xử lý S7 và được xử lý với các lệnh cơ bản
của STEP 7.
Complex Kiểu dữ liệu phức tạp chỉ cóthể được sử dụng trong việc kết nối với các biến
Data Types khai báo trong các khối dữ liệu toàn cục. Kiểu dữ liệu phức tạp không thể nạp
được hết vào trong accumulators bằng lệnh load. Bạn dùng các khối chuẩn từ
thư viện ("IEC" S7 Program) để xử lý các kiểu dữ liệu phức tạp.
User-Defined Kiểu dữ liệu do người dùng định nghĩa được dùng cho các khối dữ liệu hoặc
Data Types dùng như làmột kiểu dữ liệu trong bảng khai báo biến.
Bạn dùng trình biên tập khối dữ liệu - Data Block Editor để tạo ra UDT.
Cấu trúc của một UDTcóthể chứa các nhóm dữ liệu dạng sơ cấp và/hoặc các
kiểu dữ liệu phức tạp.
Date:25.07.2008
File:PRO1_09E.5
SIMATIC
®
S7
Siemens AG 2002. All rights reserved.
SITRAIN Training for
Automation and Drives
Overviewof DataTypesin STEP 7
Elementary
data types
(up to 32 bits)
Complex
data types
(longerthan32 bits)
User-defined data types
(longerthan32 bits)
•Bitdata types(BOOL, BYTE, WORD, DWORD, CHAR)
•Mathematicaldata types(INT, DINT, REAL)
•Timetypes(S5TIME, TIME, DATE, TIME_OF_DAY)
•Time (DATE_AND_TIME)
•Array (ARRAY)
•Structure(STRUCT)
•Character chain(STRING)
Data typeUDT (User Defined Type)
SITRAIN Training for
Automation and Drives
ST-7PRO1
Data Storagein DataBlocks
Page 6
BOOL, BYTE, WORD Các biến kiểu dữ liệu BOOLgồm 1 bit. Các biến kiểu dữ liệu BYTE, WORD,
DWORD, CHAR vàDWORDlần lượt là8, 16 và32 bit.Các bit riêng lẻ không được xếp vào
những kiểu dữ liệu này.
Những dạng đặc biệt của những kiểu dữ liệu này làsốBCD vàgiátrị đếm
dùng kết hợp với chức năng đếm. Kiểu dữ liệu CHAR thể hiện một ký tự trong
bảng mã ASCII.
S5TIME Các biến thuộc kiểu dữ liệu S5TIME cần dùng để chỉ giátrị thời gian trong
chức năng định thời. Định dạng này được biểu diễn bằng cụm S5T#, theo sau
làgiátrị thời gian. Bạn chỉ thời gian ở dạng đơn vị giờ, phút, giây, miligiây.
Bạn cóthể nhập giátrị thời gian với một dấu gạch thấp (1h_4m) hoặc không
códấu gạch thấp (1h4m).
FC 33 vàFC40 (lấy từ thư viện) chuyển đổi dạng S5TIME thành dạng TIME và
ngược lại, chuyển đổi dạng TIME thành dạng S5TIME.
INT, DINT, REAL Các biến của những kiểu dữ liệu này biểu diễn các con số cóthể dùng trong
các phép tính toán học.
TIME Một biến kiểu dữ liệu TIME chiếm một doubleword. Chẳng hạn biến này được
dùng để chỉ các giátrị thời gian trong chức năng timer IEC. Nội dung của các
biến được phiên dịch ra thành một số DINT tính bằng đơn vị milligiây vàcóthể
làsố dương hay số âm (vídụ:T#1s=L#1 000, T#24d20h31m23s647msw =
L#214748647).
DATE Một biến kiểu dữ liệu DATE được lưu trong một word ở dạng số nguyên không
dấu -unsigned integer. Nội dung của biến thể hiện số ngày tính từ ngày
01.01.1990 (vídụ: D#2168-12-31 = W#16#FF62).
TIME_OF_DAY Một biến kiểu dữ liệu TIME_OF_DAYchiếm một doubleword.Biến này chứa
số milligiây tính từ lúc bắt đầu 1 ngày (0:00 giờ) ở dạng một số nguyên không
dấu.(vídụ:TOD#23:59:59.999 = DW#16#05265B77).
Date:25.07.2008
File:PRO1_09E.6
SIMATIC
®
S7
Siemens AG 2002. All rights reserved.
SITRAIN Training for
Automation and Drives
ElementaryDataTypesin STEP 7
BOOL11 or0
BYTE8B#16#A9
WORD16W#16#12AF
DWORD32DW#16#ADAC1EF5
CHAR8' w '
S5TIME16S5T#5s_200ms
INT16123
DINT3265539
REAL321.2 or34.5E-12
TIME32T#2D_1H_3M_45S_12MS
DATE16D#1993-01-20
TIME_OF_DAY32TOD#12:23:45.12
KeywordLength(in bits)Exampleof a constantof thistype
SITRAIN Training for
Automation and Drives
ST-7PRO1
Data Storagein DataBlocks
Page 7
Creatinga DB Bạn cóthể chèn một khối dữ liệu mới -xem hình-trong SIMATIC
®
Manager
bằng cách chọn thư mục Blockscủa chương trình S7vàtheo các bước như
hình.
Bạn cũng cóthể tạo một khối dữ liệu mới trong trình soạn thảo LAD/STL/FBD
Editor bằng cách chọn như sau:
File -> New -> chọn Projectand ProjectName -> chọn thư mục Blocks của S7
program-> chọn tên Object:DB 99
SharedDB Các khối dữ liệu chia sẻ -shared data blocks được dùng để lưu các dữ liệu
toàn cục. Nghĩa là lưu những dữ liệu chung màmọi khối logic (OB, FC, FB)
đều cóthể truy cập đến được.
Người sử dụng phải tự sửa đổi những khối dữ liệu toàn cục bằng cách khai
báo các biến cần thiết để lưu dữ liệu trong khối dữ liệu.
Instance DB Các khối dữ liệu cábiệt - Instance data blocks được dùng như là"vùng nhớ
riêng" hoặc "bộ nhớ" của một khối chức năng -function block(FB). Các thông
số vàcác biến tĩnh -static variables của một FB được quản lý trong khối dữ
liệu cábiệt của FB đó.
Thông thường các khối dữ liệu cábiệt không được sửa đổi bởi người sử dụng
màchúng thường được tạo ra bởi trình biên tập - Editor (xem chương
Functions and Function Blocks).
DB of Type Các khối dữ liệu cóthể được trình biên tập tạo ra theo kiểu "do người sử dụng
định nghĩa" User defined Data Type (UDT). Ban đầu phải biên tập UDT giống
như một khối dữ liệu và sau đónó được dùng làm khuôn mẫu cho các khối dữ
liệu kiểu này. UDT cóthể được dùng làm khuôn mẫu để tạo ra các khối dữ
liệu phụ và/hoặc thông thường để khai báo các biến vàthông số của block.
Date:25.07.2008
File:PRO1_09E.7
SIMATIC
®
S7
Siemens AG 2002. All rights reserved.
SITRAIN Training for
Automation and Drives
Creatinga NewDataBlock
SITRAIN Training for
Automation and Drives
ST-7PRO1
Data Storagein DataBlocks
Page 8
Declaration View Các khối dữ liệu được biên tập, sửa đổi trong phần "declaration view",nghĩa là
(Entering Variables)người sử dụngkhai báo các biến cần thiết để lưu trữ dữ liệu. Các biến này
được tổ chức tạo ra trong một bảng, tổ chức thành các dòng vàcột.
Columns Ý nghĩa của các cột như sau:
•Address-địa chỉ, được nhập bằng Program Editor. Nóchiếm địa chỉ
byte địa chỉ đầu tiên của biến.
•Name-tên, làtên ký hiệu tượng trưng của biến
•Type-kiểu dữ liệu (INT, REAL, , bạn chọn mục này bằng
cách dùng chuột phải)
•Initialvalue-giátrị ban đầu, dùng để thiết lập giátrị mặc định cho một
biến vào lần đầu tiên khối dữ liệu được tạo ra và/hoặc
sửa đổi. Nếu bạn không nhập giátrị vào mục này thìtrình
soạn thảo sẽ tự động nhập giátrị 0.
•Comment-chúthích, để cung cấp thêm thông tin về biến (tùy chọn)
Save Bạn lưu khối dữ liệu vào đĩa cứng của thiết bị lập trình bằng cách bấm vào
biểu tượng "đĩa mềm" .
Download Bạn phải download các khối dữ liệu vào CPU,giống như với các khối logic.
Data View Bạn cóthể giám sát trực tuyến giátrị hiện hành của các biến trong khối dữ liệu
(Monitor DB)(giátrị thực tế của các biến trong CPU). Để làm vậy đầu tiên bạn phảivào
menu "View" vàchọn "Data View".Bạn cóthể kích hoạt chức năng này bằng
cách dùng biểu tượng “mắt kính“.
Initialize DB Khi bạn khởi chạy -initialize một khối dữ liệu thìbạn sẽ ghi các giátrị khởi
chạy (initial value, giátrị ban đầu) đèlên các giátrị hiện hành của các biến.
Việc này làcần thiết khi các giátrị khởi chạy, bị thay đổi sau đó, phải được
chấp nhận như các giátrị thực tế.
View -> Data View -> Edit -> Initialize Data Block
Date:25.07.2008
File:PRO1_09E.8
SIMATIC
®
S7
Siemens AG 2002. All rights reserved.
SITRAIN Training for
Automation and Drives
Entering,Saving,DownloadingandMonitoringaDataBlock
Declaration View
Data View
SITRAIN Training for
Automation and Drives
ST-7PRO1
Data Storagein DataBlocks
Page 9
Date:25.07.2008
File:PRO1_09E.9
SIMATIC
®
S7
Siemens AG 2002. All rights reserved.
SITRAIN Training for
Automation and Drives
AddressingDataElements
07
8 Bits
DataByte 0
DBB 0
DataByte 1
DBW 0
DataByte 8191
DBD 8188
DBW 8190
DBB 8191
DataByte 2
DBD 0
DataByte 3
DBX 4.1
General Bạn định địa chỉ cho các phần tử của khối dữ liệu theo từng byte giống như
các bit nhớ.
Bạn cóthể nạp vàtruyền (load and transfer) dữ liệu dạng byte, word hoặc
doubleword. Khi sử dụng dữ liệu dạng word,bạn chỉ ra byte địa chỉ đầu tiên (ví
dụ như L DBW 2) vàkết quả là2 byte, bắt đầu bằng byte đầu tiên này, sẽ
được nạp. Với doubleword, 4 byte được nạp, bắt đầu bằng byte địa chỉ đầu
tiên màbạn nhập vào.
Number, Length Số lượng các khối dữ liệu cóthể dùng phụ thuộc vào CPU màbạn sử dụng.
Độ dài lớn nhất của một khối là 8KByte đối với S7-300™và64KByte đối với
S7-400™.
Note Nếu bạn truy cập đến một phần tử dữ liệu hoặc khối dữ liệu không tồn tại thì
một lỗi hệ thống: "Area Length error" sẽ xuất hiện. CPUsẽchuyển sang chế
độ Stopnếu bạn không lập trình một OB quản lý lỗi (error OB).
SITRAIN Training for
Automation and Drives
ST-7PRO1
Data Storagein DataBlocks
Page 10
Traditional Access Theo kiểu truy cập truyền thống đến các khối dữ liệu (điển hình như trong S5),
các khối dữ liệu phải được mở rõ ràng trước khi cótruy cập thật sự. Việc này
cóthể thực hiện bằng cách mở theo địa chỉ tuyệt đối hoặc địa chỉ ký hiệu
tượng trưng với các lệnh như: OPNDB 99 hoặc OPN "Values" (xem vídụ).
Nếu cómột khối dữ liệu khác được mở thìkhối dữ liệu nào mở đầu tiên sẽ tự
động đóng lại. Các phần tử dữ liệu cóthể được truy cập theo từng bit (DBX ),
theo từng byte (DBB ), theo từng word (DBW ) hoặc theo từng doubleword
(DBD ) màkhông cần phải chỉ ra khối dữ liệu ở mỗi lần truy cập.
Nhược điểm:
• Khi truy cập các phần tử dữ liệu, bạn phải đảm bảo làmở đúng khối dữ
liệu.
•Chỉ cóthể truy cập theo địa chỉ tuyệt đối. Người lập trình phải chắc chắn là
đã truy cập đến đúng giátrị mình cần ở trong khối dữ liệu. Trong vídụ, nếu
DBW3 được nạp thì đókhông phải làgiátrị của biến Number màcũng
không phải làgiátrị của biến Weight[1]. Đólàmột giátrị không cóhiệu lực.
•Sựtruy cập theo địa chỉ tuyệt đối gây khó khăn, làm cản trở khả năng sửa
chữa chương trình vàlàm chương trình trở nên khó đọc.
Fully-qualified Một sự truy cập với đầy đủ điều kiện (a fully-qualified access) làmởmột khối
Access dữ liệu và đóng bất kỳ khối dữ liệu nào đã được mở trước đó. sự truy cập với
đầy đủ điều kiện cóthể làtruy cập theo địa chỉ tuyệt đối hoặc địa chỉ tượng
trưng.
absolute Truy cập theo địa chỉ tuyệt đối làmởmột khối dữ liệu vàtruy cập đến phần tử
dữ liệu bằng cách kết hợp trong một câu lệnh. Nhược điểm của phương pháp
này cũng giống như truy cập theo kiểu truyền thống.
symbolic Truy cập theo địa chỉ ký hiệu tượng trưng đến một biến trong một khối dữ liệu
chỉ thực hiện được khi khối dữ liệu vàcác phần tử của nó đều được truy cập
theo ký hiệu tượng trưng. Trình soạn thảo cho phép dùng hỗn hợp cả địa chỉ
tuyệt đối và địa chỉ tượng trưng trong quátrình biên tập. Tuy nhiên nósẽ
chuyển đổi toàn bộ sang địa chỉ tượng trưng sau khi đã xác nhận xong mục
dữ liệu vừa nhập.
Date:25.07.2008
File:PRO1_09E.10
SIMATIC
®
S7
Siemens AG 2002. All rights reserved.
SITRAIN Training for
Automation and Drives
Accessing DataElements
DB 99 "Values"
Traditional
Access
Fully-qualifiedAccess
or LDB99.DBB1 or L"Values".States
or A DB99.DBX0.0 or A"Values".Status
or LDB99.DBW2 or L "Values".Number
or LDB99.DBD8 or L "Values".Weight[2]
absolutesymbolic
OPNDB 99
LDBB 1
1.0StatesBYTE
OPN"Values"
ADBX 0.0
0.0StatusBOOL
OPN"Values"
TDBW 2
2.0NumberINT
4.0Weight[1]REAL
OPNDB 99
LDBD 8
8.0Weight[2]REAL
Add.NameType
SITRAIN Training for
Automation and Drives
ST-7PRO1
Data Storagein DataBlocks
Page 11
Function till Now: •Các sản phẩm được vận chuyển trong chế độ AUTO được đếm (bằng
in FC 18 cách cộng vào MW 20, dùng bit nhớ phụ M 18.0 để phát hiện sườn xung)
ngay khi nó đến cuối băng tải và đi qua hàng rào ánh sáng.
•Số lượng thực sự của các sản phẩm đã vận chuyển - ACTUAL number of
parts được hiển thị trên màn hình hiển thị sốởdạng BCD.
•Bạn cóthể đặt số lượng sản phẩm cần vận chuyển - SETPOINT-number
of parts - bằng cách dùng nút ấnBCDthumbwheel. Nếu đạt đến giátrị
SETPOINT-number ofparts thìsẽhiển thị đèn LED đỏ (Q 20.4 / Q 8.4) ở
cuối băng tải.
•Khi phát ra thông báo SETPOINT number of parts reached (đèn LED đỏ)
thìsẽkhông cho chức năng vận chuyển nào khác được khởi động (khóa
liên động trong FC 16).
• ACTUAL number of parts (MW 20) được set về 0 khi tắt hệ thống hoặc khi
thông báo "SETPOINT number of parts reached" được xác nhận bằng
cách bấm nút ở cuối băng tải.
Task: Bài tập:
•Chức năng đã được lập trình trong FC 18 vẫn giữ nguyên. Tuy nhiên, thay
vìdùng MW20 để đếm bằng cách cộng dồn thìbây giờ dùng biến
ACT_Number_of_parts (INT), được khai báo trong DB18.
Thay vìdùng bit nhớ phụ M 18.0 phát hiện sườn tín hiệu để đếm thìbây
giờ dùng biến Edge_Aux (BOOL), cũng được khai báo trong DB 18.
What to Do:Những việc cần làm:
1.Sửa đổi khối dữ liệu DB18(xem hình)với các biến
ACT_Number_of_parts (INT) và Edge_Aux (BOOL) rồi downloadchúng
vào trong CPU.
2.Gán cho DB18 tên ký hiệu tượng trưng "DB_Parts"trong bảng ký hiệu
tượng trưng toàn cục
3.Thay đổi FC 18 như đã mô tảởtrên. Sử dụng truy cập với đầy đủ điều
kiện vàtruy cập theo ký hiệu tượng trưng (fully qualified,symbolic
accesses!)
Date:25.07.2008
File:PRO1_09E.11
SIMATIC
®
S7
Siemens AG 2002. All rights reserved.
SITRAIN Training for
Automation and Drives
Exercise: Counting the TransportedParts (FC 18)
SITRAIN Training for
Automation and Drives
ST-7PRO1
Data Storagein DataBlocks
Page 12
Complex Kiểu dữ liệu phức tạp -complexdata types(arraysvàstructures) cóchứa các
Data Types nhóm dữ liệu sơ cấp hoặcdữliệu phức tạp.
Bạn cóthể tạo ra các kiểu dữ liệu màbạn cấu trúc thành một lượng lớn dữ
liệu vàxửlý chúng theo kiểu tượng trưng.
Các kiểu dữ liệu phức tạp (dài hơn 32 bit) không thể được xử lý bằng lệnh
STEP 7 cùng một lúc được. Tại một thời điểm chỉ cómột phần tử được xử lý.
Kiểu dữ liệu phức tạp được định nghĩa trước. Kiểu dữ liệu DATE_AND_TIME
có độ dài 64 bit. Độ dài của các kiểu dữ liệu ARRAY, STRUCT và STRING
được định nghĩa bởi người sử dụng.
Các biến thuộc kiểu dữ liệu phức tạp chỉ cóthể được khai báo trong các khối
dữ liệu toàn cục vàlàthông số hoặc biến cục bộ của khối logic.
User-Defined Kiểu dữ liệu do người sử dụng định nghĩa (user-defined data types) thể hiện
Data Type một cấu trúc tự định nghĩa (a self-defined structure). Cấu trúc này được lưu
trong các khối UDT (UDT1 đếnUDT65535) vàcóthể được dùng như một
"khuôn mẫu" trong một kiểu dữ liệu khác.
Bạn cóthể tiết kiệm thời gian gõ bàn phím khi bạn nhập một khối dữ liệu nếu
bạn cần dùng nhiều lần với cùng một cấu trúc.
Vídụ: Bạn cần dùng một cấu trúc 10 lần trong một khối dữ liệu. Đầu tiên bạn
tạo một UDT, định nghĩa cấu trúc và lưu nólại (vídụtên làUDT1). Rồi bạn tạo
một khối dữ liệu toàn cục -global DB và định nghĩa một biến (VD
"Tank_Farm") với kiểu dữ liệu của biến này làARRAY [1 10]. Ở hàng kế tiếp
bạn tham chiếu đến UDT màbạn đã định nghĩa trước đó. Chương trình sẽ tạo
10 vùng dữ liệu, mỗi vùng cócấu trúc đã được định nghĩa trong UDT 1.
Date:25.07.2008
File:PRO1_09E.12
SIMATIC
®
S7
Siemens AG 2002. All rights reserved.
SITRAIN Training for
Automation and Drives
ComplexDataTypes
KeywordLength(in bits)Example
DATE_AND_TIME 64DT#01-08-24-12:14:55:234-1
STRING 8 * (numberof ´This isastring´
(character stringwith characters+2) ´SIEMENS´
max. 254 characters)
ARRAY user-defined Measured values: ARRAY[1 20]
(Group ofelements INT
ofthe same data type)
STRUCT user-defined Motor: STRUCT
(Group ofelementsSpeed : INT
of differentdata types)Current: REAL
END_STRUCT
UDT UDT asblock UDT asarray element
(User Defined Data Type =user-defined
"Template"consistingof STRUCT Drive: ARRAY[1 4]
elementary or complexSpeed : INT UDT1
data typesCurrent: REAL
END_STRUCT
SITRAIN Training for
Automation and Drives
ST-7PRO1
Data Storagein DataBlocks
Page 13
Date:25.07.2008
File:PRO1_09E.13
SIMATIC
®
S7
Siemens AG 2002. All rights reserved.
SITRAIN Training for
Automation and Drives
Exampleof an Array
Display inthe ProgramEditor (Datablock DB 2):
Measuring_point
1. Measuring_point, data typeReal
2. Measuring_point, data typeReal
3. Measuring_point, data typeReal
10. Measuring_point, data typeReal
Array with the name"Measuring_point"
(several elementsof the same data type)
•
•
•
Array Một mảng gồm nhiều phần tử cùng kiểu dữ liệu. Trong hình bạn cóthể thấy
mảng "Measuring_point" có10 phần tử kiểu REAL.
Sau đónhiều giátrị đo được sẽ lưu vào trong mảng này.
Define Array in DB Từ khóa (keyword) cho một mảng là"ARRAY[n m]". Phần tử đầu tiên(n) và
phần tử cuối cùng(m) được chỉ định trong dấu ngoặc vuông. Vídụ: [1 10]
nghĩa làmảng có10 phần tử, phần tử đầu tiên được định địa chỉ bằng chỉ mục
[1] vàphần tử cuối cùng làchỉ mục [10]. Thay vì[1 10]thìbạn cóthể định
nghĩa khác, vídụ[0 9].Phần tử đầu tiên làchỉ mục [0] vàphần tử cuối cùng là
chỉ mục [9].
InitialValues Một giátrị đơn lẻ được nhập vào chỉ cung cấp giátrị cho phần tử đầu tiên. Một
dãy các giátrị phân cách bởi dấu phẩy sẽ cung cấp một dãy các giátrị lần lượt
theo thứ tự. Công thức x(initial value) sẽ chèn giátrị ban đầu x lần theo thứ tự.
Data View Để xem các giátrị thực được lưu trữ tại các phần tử đơn lẻ, bạn chọn menu
View -> Data View để chuyển đổi sang kiểu hiển thị khác. Ở chế độ "Data
View", bạn sẽ thấy ở trong cột "Actual Value" những giátrị hiện đang lưu trữ.
SITRAIN Training for
Automation and Drives
ST-7PRO1
Data Storagein DataBlocks
Page 14
Structure Hìnhtrên cho thấy một vídụcủa một cấu trúc cótên là"Motor_data". Cấu trúc
bao gồm nhiều phần tử thuộc các kiểu dữ liệu khác nhau. Các phần tử riêng lẻ
của một cấu trúc cóthể làkiểu dữ liệu sơ cấp hoặc kiểu dữ liệu phức tạp.
Việc truy cập đến các phần tử riêng lẻ của một cấu trúc phải cóchứa tên của
cấu trúc đó. Điều này làm cho chương trình dễ đọc hơn.
Để cóthể truy cập theo ký hiệu tượng trưng đến các phần tử thìkhối dữ liệu
phải được cấp một tên ký hiệu tượng trưng, vídụ như "Drive_1".
Vídụ: truy cập đến các phần tử của một cấu trúc bằng cách dùng lệnh load "L"
L "Drive_1".Motor_data.rated_current
L "Drive_1".Motor_data. speed
Định dạng dữ liệu này là:
tên ký hiệu tượng trưng của block,dấu chấm,tên cấu trúc,dấu chấm,tên
phần tử.
Chúý rằng các tên ký hiệu tượng trưng của block ("Drive_1") được đặt trong
dấu nháy để chỉ ra rằng cái tên đólàtừtrình soạn thảo ký hiệu tượng trưng
toàn cục -global symbol editor. Tên cấu trúc vàtên phần tử không để trong
dấu nháy vìchúng làcác ký hiệu tượng trưng được định nghĩa trong khối dữ
liệu và không được liệt kê trong trình soạn thảo ký hiệu tượng trưng toàn cục.
Define Structure Từ khóa của một cấu trúc là"STRUCT". Kết thúc của một cấu trúc được chỉ
in DB thị bằng "END_STRUCT". Một cái tên được định nghĩa cho cấu trúc (vídụ:
"Motor_data").
Date:25.07.2008
File:PRO1_09E.14
SIMATIC
®
S7
Siemens AG 2002. All rights reserved.
SITRAIN Training for
Automation and Drives
Exampleof a Structure
Display intheProgramEditor (Datablock DB 1):
Motor_data
Speed,datatypeInteger
Rated_current, data typeReal
Starting_current, data typeReal
Direction, data type Bool
Structurewith the name"Motor_data"
(several elements
withdifferentdata types)