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ù
Trang 1Contents Page
Objectives 2
Storage Areas for Data ………… 3
Data Blocks (DBs) 4
Overview of Data Types in STEP 7 5
Elementary Data Types in STEP 7 6
Creating a New Data Block 7
Entering, Saving, Downloading and Monitoring a Data Block 8
Addressing Data Elements … 9
Accessing Data Elements 10
Exercise: Counting the Transported Parts (FC 18) ……… ……….… 11
Complex Data Types ………… 12
Example of an Array 13
Example of a Structure 14
Date: 25.07.2008 File: PRO1_09E.1
SIMATIC®S7
Siemens AG 2002 All rights reserved.
SITRAINTraining for Automation and Drives
Data Storage in Data Blocks
Trang 2Date: 25.07.2008 File: PRO1_09E.2 SIMATIC®S7
Siemens AG 2002 All rights reserved.
SITRAINTraining 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 (global data
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 (elementary and complex 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
Trang 3Overview 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.
SITRAINTraining for Automation and Drives
Bit memories PIQ
PII
Storage Areas for Data
Data blocks
DBx DBy DBz
. I/O area
L stack
Trang 4Overview 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"
Creating DBs Bạn có thể tạo ra các khối dữ liệu toàn cục - global DB bằ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 (data block register), thanh ghi DB và 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.
SITRAINTraining for Automation and Drives
Data Blocks (DBs)
Function FC10
Function FC20
Function block FB1
OB1
Global data DB20 Accessible to all blocks
Instance data DB5 Instance DB for FB1
Trang 5Overview 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 UDT có 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.
SITRAINTraining for Automation and Drives
Overview of Data Types in STEP 7
Elementary
data types
(up to 32 bits)
Complex
data types
(longer than 32 bits)
User-defined data types
(longer than 32 bits)
• Bit data types (BOOL, BYTE, WORD, DWORD, CHAR)
• Mathematical data types (INT, DINT, REAL)
• Time types (S5TIME, TIME, DATE, TIME_OF_DAY)
• Time (DATE_AND_TIME)
• Array (ARRAY)
• Structure (STRUCT)
• Character chain (STRING)
Data type UDT (User Defined Type)
Trang 6BOOL, BYTE, WORD Các biến kiểu dữ liệu BOOL gồm 1 bit Các biến kiểu dữ liệu BYTE, WORD,
DWORD, CHAR và DWORD lầ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_DAY chiế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.
SITRAINTraining for Automation and Drives
Elementary Data Types in STEP 7
Keyword Length (in bits) Example of a constant of this type
Trang 7Creating a 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 Blocks của chương trình S7 và 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 Project and Project Name -> chọn thư mục Blocks của S7
program -> ch ọn tên Object : DB 99
Shared DB 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.
SITRAINTraining for Automation and Drives
Creating a New Data Block
Trang 8Declaration 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ụng khai 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)
• Initial value - 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ải và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.
SITRAINTraining for Automation and Drives
Entering, Saving, Downloading and Monitoring a Data Block
Declaration View
Data View
Trang 9Date: 25.07.2008 File: PRO1_09E.9
SIMATIC®S7
Siemens AG 2002 All rights reserved.
SITRAINTraining for Automation and Drives
Addressing Data Elements
0 7
8 Bits
Data Byte 8191
DBD 8188 DBW 8190 DBB 8191
Data Byte 2
DBD 0
Data Byte 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 CPU sẽ chuyển sang chế
độ Stop nếu bạn không lập trình một OB quản lý lỗi (error OB)
Trang 10Traditional 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ư: OPN DB 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.
SITRAINTraining for Automation and Drives
Accessing Data Elements
DB 99 "Values" Traditional
Access
Fully-qualified Access
absolute symbolic
OPN "Values"
OPN "Values"
4.0 Weight[1] REAL
8.0 Weight[2] REAL