CHƯƠNG II. CẤU TRÚC HỆ THỐNG CIM
CHƯƠNG 5. THIẾT KẾ BĂNG TẢI
IV. Tìm hiểu về PLC S7200
4.2. Cấu trúc bộ nhớ
4.2.1 Phân chia bộ nhớ.
Bộ nhớ của S7_200 được phân chia thành 4 vùng với một tụ có nhiệm vụ duy trì dữ liệu trong một khoảng thời gian nhất định khi bị mất nguồn. Bộ nhớ của S7_200 có tính năng động cao, đọc và ghi được trong toàn vùng, loại trừ phần bit nhớ đặt biệt được kí hiệu bởi SM (Special Memory) chỉ có thể truy nhập để đọc.
- Vùng chương trình là vùng bộ nhớ được sử dụng để lưu trữ các lệnh chương trình. Vùng này thuộc kiểu non-volatile đọc/ghi được.
- Vùng tham số: là miền lưu giữ các tham số như: từ khóa, địa chỉ trạm…Cũng giống như vùng chương trình, vùng tham số cũng thuộc non- volatile đọc/ghi được.
- Vùng dữ liệu: được sử dụng để cất các dữ liệu của chương trình bao gồm các kết quả các phép tính, hằng số được định nghĩa trong chương trình, bộ đệm truyền thông… Một phần của vùng nhớ này (1KB đầu tiên với CPU214) thuộc kiểu non-volatile đọc/ghi được.
- Vùng đối tượng: Timer, bộ đếm, bộ đếm tốc độ cao và các cổng vào/ra tương tự được đặt trong vùng nhớ cuối cùng. Vùng này không thuộc kiểu non- volatile nhưng đọc ghi được.
Hai vùng nhớ cuối có ý nghĩa quan trọng trong việc thực hiện một chương trình.
4.2.2. Vùng dữ liệu.
Vùng dữ liệu là một miền nhớ động. Nó có thể được truy nhập theo từng bit, từng byte, từng từ đơn(word) hoặc theo từng từ kép và được sử dụng làm miền lưu dữ liệu cho các thuật toán, các hàm truyền thông, lập bản, các hàm dịch chuyển, xoay vòng thanh ghi, con trỏ địa chỉ…
Ghi các dữ liệu kiểu bản bị hạn chế rất nhiều vì các dữ liệu kiểu bảng thường chỉ được sử dụng theo những mục đích nhất định.
Vùng chương trình Vùng tham số Vùng dữ liệu Vùng đối tượng
Chương trình Tham số Dữ liệu
Chương trình Tham số Dữ liệu C
EEPROM Bộ nhớ ngoài
Hình: Bộ nhớ trong và ngoài của S7-200
Vùng dữ liệu lại được chia ra thành những miền nhớ nhỏ với các công dụng khác nhau. Chúng được kí hiệu bằng các chữ cái đầu tiên của chữ trong tiếng Anh, đặc trưng cho công dụng riêng của chúng như sau:
V Variable memory
I Input image register O Output image register M Internal Memory bits SM Special Memory bits
Tất cả các miền này đều có thể truy cập được theo từng bit, từng byte, từng từ đơn (word- 2 byte) hoặc từ kép (2 words).
Hình sau mô tả vùng dữ liệu của CPU212 và CPU214
V0 V0
… …
V1023 V4095
I0.x(x=0÷7) I0.x(x=0÷7)
… …
I7.x(x=0÷7) I7.x(x=0÷7)
Q0.x(x=0÷7) Q0.x(x=0÷7)
… …
Q7.x(x=0÷7) Q7.x(x=0÷7)
M0.x(x=0÷7) M0.x(x=0÷7)
… …
M15.x(x=0÷7) M31.x(x=0÷7)
SM0.x(x=0÷7) SM0.x(x=0÷7)
… …
SM29.x(x=0÷7) SM29.x(x=0÷7) SM30.x(x=0÷7) SM30.x(x=0÷7)
… …
CPU212 7 6 5 4 3 2 1 0
CPU214 7 6 5 4 3 2 1 0 Miền V Đọc/Ghi
Vùng đệm cổng vào I (Đọc/Ghi)
Vùng đệm cổng vào I (Đọc/Ghi)
Vùng đệm cổng ra Q (Đọc/Ghi)
Vùng nhớ nội M (Đọc/Ghi)
Vùng nhớ đặc biệt SM (chỉ đọc)
Vùng nhớ đặc biệt SM (Đọc/Ghi)
SM45.x(x=0÷7) SM85.x(x=0÷7) Địa chỉ truy cập được qui ước bởi công thức:
- Truy nhập theo bit: tên miền (+) địa chỉ byte(+) . (+)chỉ số bit. Ví dụ V150.4 chỉ bit 4 của byte 150 thuộc miền V.
- Truy nhập theo Byte: Tên miền (+) B (+) địa chỉ của byte trong miền. Ví dụ VB150 chỉ Byte 150 thuộc miền V.
- Truy nhập theo từ: Tên miền (+) W (+) địa chỉ byte cao của từ trong miền. Ví dụ VW150 chỉ từ đơn gồm hai Byte 150 và 151 thuộc miền V, trong đó byte 150 có vai trò là byte cao trong từ.
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
VW150 VB150(byte cao) VB151(byte thấp)
- Truy nhập theo từ kép: Tên miền (+) D (+) địa chỉ byte cao của từ trong miền.
Ví dụ VD150 chỉ từ kép gồm 4 byte 150, 151, 152, 153 thuộc miền V, trong đó byte 150 có vai trò là byte cao và byte 153 có vai trò là byte thấp trong từ kép.
Bit: 63 32 31 16 15 8 7 0 VD150 VB150 (byte
cao) VB151 VB152 VB153 (byte
thấp)
Tất cả các byte thuộc vùng dữ liệu đều có thể truy nhập được bằng con trỏ.
Con trỏ được định nghĩa trong miềnV hoặc các thanh ghi AC1, AC2 và AC3. Mỗi con trỏ chỉ địa chỉ gồm 4 byte(từ kép). Qui ước sử dụng con trỏ để truy nhập như sau:
&địa chỉ byte (cao) là toán hạng lấy địa chỉ của byte, từ hoặc từ kép.
Ví dụ:
- AC1=&VB150, thanh ghi chứa địa chỉ Byte 150 thuộc miền V.
- VD100=&VW150, từ kép VD100 chứa địa chỉ byte cao (VB150) của từ đơn VW150.
- AC2=&VD150, thanh ghi AC2 chứa địa chỉ byte cao (VB150) của từ kép VD150.
* con trỏ: là toán hạn lấy nội dung của byte, từ hoặc từ kép mà con trỏ đang chỉ vào.
Ví dụ như với phép gán địa chỉ trên thì:
- *AC1, lấy nội dung của byte VB150.
- *VD100, lấy nội dung của từ đơn VW150.
- *AC2, lấy nội dung của từ kép VD150.
Phép gán địa chỉ và sử dụng con trỏ như trên cũng có tác dụng với những thanh ghi 16 bit của timer, bộ đếm thuộc vùng đối tượng sẽ được trình bày ở phần dưới:
4.2.3. Vùng đối tượng.
Vùng đối tượng được sử dụng để lưu dữ liệucho các đối tượng lập trình như các giá trị tức thời, giá trị đặt trướccủa bộ đếm hay Timer. Dữ liệu kiểu đối tượng bao gồm các thanh ghi của Timer, bộ đếm, bộ đếm tốc độ cao, bộ đệm vào/ra tương tự và các thanh ghi Accumulator(AC).
Kiểu dữ liệu đối tượng bị hạn chế rất nhiều vì các dữ liệu kiểu đối tượng chỉ được ghi theo mục đích cần sử dụng đối tượng đó.
Vùng nhớ đối tượng được phân chia như sau:
CPU212 CPU214
15 0 15 0 Timer
(đọc/ghi)
T0(Word) T0 T0 T0
… … … …
T63 T63 T127 T127
Bộ đếm (đọc/ghi)
C0(Word) C0 C0 C0
… … … …
C63 C63 C127 C127
Bộ đệm cổng vào tương tự (chỉ đọc)
AW0 (Word) AW0
… …
AW30 AW30
Bộ đệm cổng ra tương tự (chỉ ghi)
AQW0 (Word) AQW0
… …
AQW30 AQW30
Thanh ghi Accumulator (đọc/ghi)
AC0 (không có khả năng làm con trỏ) AC1
AC2 AC3
Bộ đếm tốc độ cao (Đọc/Ghi)
HSC0