2.2 Giới thiệu về PLC S7-300
2.2.4 Kiểu dữ liệu và phân chia bộ nhớ
Một chơng trình ứng dụng trong S7 - 300 có thể sử dụng các kiểu dữ liệu sau:
1, BOOL: với dung lợng một bit và có giá trị là 0 hoặc 1 (đúng hoặc sai). Đây là kiểu dữ liệu cho hai biến trị.
640 ÷655
656 ÷671
672 ÷687
689 ÷703
704 ÷719
720 ÷735
736 ÷751
752 ÷765 IM
NhËn
IM NhËn
512 ÷527
528 ÷543
544 ÷559
560 ÷575
576 ÷591
592 ÷607
608 ÷623
624 ÷639
IM NhËn
384 ÷399
400 ÷415
416 ÷431
432 ÷447
448 ÷463
464 ÷479
480 ÷495
496 ÷511
CPU + Nguồn
Nuôi IM
Gửi
256 ÷271
272 ÷287
288 ÷303
304 ÷319
320 ÷335
336 ÷351
352 367÷
368 ÷383 Rack 3
Rack 2
Rack 1
Rack3 Rack2
NhËnIM 96.0÷ 99.7
100.0 103.7 ÷
104.0 107.7÷
108.0 111.7÷
112.0 115.7÷
116.0 119.7÷
120.0 123.7÷
124.0 127.7÷
IM
NhËn 64.0÷ 67.7
68.0 71.7÷
72.0 75.7÷
76.0 79.7÷
80.0 83.7÷
84.0 87.7÷
88.0 91.7÷
92.0 95.7÷
NhËnIM 32.0÷ 35.7
36.0 39.7÷
40.0 43.7÷
44.0 47.7÷
48.0 51.7÷
52.0 55.7÷
56.0 59.7÷
60.0 63.7÷
IM Gửi
0.0 3.7÷
4.0 7.7÷
8.0 11.7÷
12.0 15.7÷
16.0 19.7÷
20.0 23.7÷
24.0 27.7÷
28.0 31.7÷ CPU +
Nguồn Nuôi
Rack1
2, BYTE: gồm 8 bits, thờng đợc dùng để biểu diễn một số nguyên dơng trong khoảng từ 0 đến 255 hoặc mã ASCII một ký tự. Ví dụ:
L B#16#14 // Nạp số nguyên 14 viết theo hệ cơ số 16 độ dài 1 byte vào ACCU1.
3, WORD: Gồm 2 bytes, để biểu diễn một số nguyên dơng từ 0 đến 65535.
VÝ dô:
L 930.
L W#16#3A2.
4, INT: Cũng có dung lợng là 2 bytes, dùng để biểu diễn một số nguyên trong khoảng -32768 ữ32767. Ví dụ:
L 930.
L W#16#3A2.
5, DINT: Gồm 4 bytes, dùng để biểu diễn một số nguyên từ -2147483648 đến 2147483647.
VÝ dô:
L L#930
L DW#16#3A2.
6, REAL: Gồm 4 bytes, dùng để biểu diễn một số thực dấu phẩy động.
VÝ dô:
L 1.234567e+13 L 930.0
7, S5T (hay S5TIME): Khoảng thời gian, đợc tính theo giờ/phút/giây/miligiây.
VÝ dô:
L S5T#2h_1m_0s_5ms.
Là lệnh tạo trễ khoảng thời gian là 2 tiếng một phút và 5 miligiây.
8, TOD: Biểu diễn giá trị thời gian tính theo giờ/phút/giây.
VÝ dô:
L TOD#5: 45: 00
Là lệnh khai báo giá trị thời gian trong ngày 5 giờ 45 phút.
9, DATE: Biểu diễn giá trị thời gian tính theo năm/tháng/ngày.
VÝ dô:
L DATE#1999 - 12 - 8
là lệnh khai báo ngày mùng 8 tháng 12 năm 1999.
10, CHAR: Biểu diễn một hoặc nhiều ký tự (nhiều nhất là 4 ký tự).
VÝ dô:
L 'ABCD '.
L 'E'
2.2.4.2 CÊu tróc bé nhí CPU
Bộ nhớ của S7 – 300 đợc chia làm 3 vùng chính:
1, Vùng chứa chứa chơng trình ứng dụng: Vùng nhớ chơng trình đợc chia thành 3 miÒn:
a, OB ( Organisation block ) : Miền chứa chơng trình tổ chức .
b, FC ( Function ) : Miền chứa chơng trình con đợc tổ chức thành hàm có biến hình thức để trao đổi với chơng trình đã gọi nó
c, FB (funtion block): miền chứa chơng trình con,đợc tổ chức thành hàm và có khả năng trao đổi dữ liệu với bất cứ một khối chơng trình nào khác.Các dữ liệu này phải đợc xây dựng thành một khối dữ liệu riêng(gọi là DB-Data block)
2, Vùng chứa tham số của hệ điêù hành và chơng trình ứng dụng , đợc phân chia thành 7 miền khác nhau :
a, I ( Process image input ) : Miền bộ đệm các dữ liệu cổng vào số. Trớc khi bắt
đầu thực hiện chơng trình, PLC sẽ đọc giá trị logic của tất cả các cổng đầu vào và cất giữ chúng trong vùng nhớ I .Thông thờng chơng trình ứng dụng không đọc trực tiếp trạng thái logic của cổng vào ra số mà chỉ lấy dữ liệu của cổng vào từ bộ đệm I.
b, Q ( Process image output ) : Miền bộ đệm các dữ liệu cổng ra số. Kết thúc giai đoạn thực hiện chơng trình, PLC sẽ chuyển giá trị logic của bộ đệm Q tới các cổng ra số. Thông thờng chơng trình không trực tiếp gán giá trị tới cổng ra mà chỉ chuyển chúng vào bộ đệm.
c, M : Miền các biến cờ . Chơng trình ứng dụng sử dụng vùng nhớ này để lu giữ
các tham số cần thiết và có thể truy cập nó theo bít ( M) byte ( MB ) từ ( M W) hay tõ kÐp ( MD ).
d, T : Miền nhớ phục vụ bộ thời gian ( Timer ) bao gồm việc lu giữ giá trị thời gian đặt trớc ( PV – preset value ) giá trị đếm của thời gian tức thời ( CV – Current value ) cũng nh giá trị logic của bộ thời gian .
e, C: Miền nhớ phục vụ bộ đếm ( Counter ) bao gồm việc lu giữ giá trị đặt trớc ( PV ) , giá trị đếm tức thời ( CV ) và giá trị đầu ra của bộ đếm .
f, PI: Miền địa chỉ cổng vào của các modul tơng tự ( I/O External input ) . Các giá trị tơng tự tại cổng vào của modul tơng tự sẽ đợc modul đọc và chuyển tự động theo những địa chỉ . Chơng trình ứng dụng có thể truy cập miền nhớ PI theo từng byte ( PIB) từng từ ( PIW) hoặc theo từng từ kép (PID).
g, PQ: Miền địa chỉ cổng ra cho các modul tơng tự (I/O External output ) . Các giá trị theo những địa chỉ này sẽ đợc các modul tơng tự chuyển các cổng ra tơng tự . Chơng trình ứng dụng có thể truy cập miền nhớ PQ theo từng byte ( PQB ) từng từ ( PQW ) hoặc theo từng từ kép ( PQD ) .
3, Vùng nhớ các khối dữ liệu đợc chia làm hai loại :
a, DB ( Data block ): Miền chứa các dữ liệu đợc tổ chức thành khối. Kích thớc cũng nh số lợng khối do ngời sử dụng quy định , phù hợp với từng bài toán điêù khiển. Chơng trình có thể truy cập miền này theo từng bít ( DBX ) byte ( DBB ) từng từ ( DBW ) hoặc từng từ kép ( DBD ) .
b, L ( Local data block ): Miền dữ liệu địa phơng đợc các khối chơng trình OB, FC, FB, tổ chức và sử dụng cho các biến nháp tức thời và trao đổi dữ liệu của biến hình thức và những khối chơng trình đã gọi nó. Nội dung của một số dữ liệu trong miền nhớ này sẽ bị xoá khi kết thúc chơng trình ứng dụng trong OB, FC, FB. Miền này có thể đợc truy cập từ chơng trình theo bít ( L) byte ( LB ) từ ( LW ) hoặc từ kÐp ( LD ).
Phân chia bộ nhớ cho các vùng nhớ khác nhau, bao gồm:
- Vùng nhớ chứa các thanh ghi.
- Vùng System memory.
- Vùng Load memory.
- Vùng Work memory.
Kích thớc của các vùng nhớ này phụ thuộc vào chủng loại của từng modul CPU.
+ Load memory: Là vùng nhớ chứa chơng trình ứng dụng (do ngời sử dụng viết) bao gồm tất cả các khối chơng trình ứng dụng OB, FC, FB, các khối chơng trình trong th viện hệ thống đợc sử dụng ( SFC, SFB ) và các khối dữ liệu DB.
Vùng nhớ này đợc tạo bởi một phần bộ nhớ RAM của CPU và EFPROM ( nếu có ).
Khi thực hiện động tác xoá bộ nhớ ( MRES ) toàn bộ các khối chơng trình và các khối dữ liệu trong RAM sẽ bị xoá. Cũng nh vậy khi chơng trình hay khối dữ liệu đ- ợc đổ ( down load ) từ thiết bị lập trình ( PG . máy tính ) vào modul CPU chúng sẽ
đợc ghi lên phần RAM của vùng nhớ load memory.
+ Work memory: Là vùng nhớ chứa các khối DB đang đợc mở, khối chơng trình ( OB, FC, SFC hoặc SFB ) đang đợc CPU thực hiện và phần bộ nhớ cấp phát cho những tham số hình thức để các khối chơng trình này trao đổi tham trị với hệ
điêù hành và các khối chơng trình khác ( local block ).Tại một thời điểm nhất định vùng work memory chỉ chứa một khối chơng trình. Sau khi khối chơng trình đó thực hiện xong thì hệ điều hành sẽ xoá nó khỏi word memory và nạp vào
đó khối chơng trình kế tiếp đến lợt đợc thực hiện.
Hình 3-22: Phân chia các vùng nhớ trong CPU
+ System memory: Là vùng nhớ chứa các bộ đệm vào / ra số ( Q/ I ) , các biến cờ ( M ) thanh ghi C – Word, PV, T – bít của Timer, thanh ghi C – Word, PV, T – bít của Counter. Việc truy cập sủa đổi dữ liệu những ô nhớ này đợc phân chia hoặc bởi hệ điều hành của CPU hoặc do chơng trình ứng dụng có thể thấy rằng các vùng nhớ đợc trình bày trên không có vùng nhớ nào đợc dùng làm bộ đệm cho các cổng vào ra tơng tự. Nói cách khác các cổng vào ra tơng tự không có bộ đệm và nh vậy mỗi lệnh truy cập modul tơng tự ( đọc giữ các giá trị ) đều có tác dụng trực tiếp với cổng vật lý của modul .
System memory
Bộ đệm ra số Q Bộ đệm vào số I Timer T Counter C Vùng nhớ cờ M
- Logic block - Data block
- Local block, Stack Work memory
Load memory
- User program (RAM) - User Program (EEPROM) Accumulator
ACCU1 ACCU2
Address register AR1
AR2
Data block register DB (share) DI (instance) Status word
Status
Bảng sau trình bày chi tiết hơn về ý nghĩa các vùng nhớ :
Tên gọi Kích thớc truy nhËp
KÝch thíc
tối đa ý nghĩa
Process- inmage Input ( I ) Bộ đệm vào sè
I IB IW ID
0.0 ÷ 127.7 0.0 ÷ 127 0.0 ÷ 126 0.0 ÷ 124
Đối với mỗi vòng quét hệ điêù hành sẽ ghi vào phần
nhỏ này các giá trị đợc lấy từ cổng vào số vật lý của modul mở rộng Process-
inmage Output ( Q )
Bộ đệm ra số
Q QB QW QD
0.0 ÷ 127.7 0.0 ÷ 127 0.0 ÷ 126 0.0 ÷ 124
Cuối mỗi vòng quét hệ
điều hành sẽ đọc nội dung của miền nhớ này và chuyển ra cổng ra số của modul mở rộng .
BÝt memory ( M )
Vùng nhớ cê
M MB MW MD
0.0 ÷ 255.7 0.0 ÷ 255 0.0 ÷ 254 0.0 ÷ 252
Đợc sử dụng nh một miền các biến cờ cho chơng trình ứng dụng .
Timer ( T )
T0 ữ T255 Miền nhớ lu giữ các giá trị PV, CV và T- bít của Timer. Đợc truy cập
để sửa đổi bởi hệ điều hành và ch-
ơng trình ứng dụng.
Counter ( C )
C0 ữ C255 Miền nhớ lu giữ các giá trị PV, CV và C- bít của Counter.
Data block ( DB )
Khối dữ liệu Shaer
DBX DBB DBW DBD
0.0 ÷ 65535.7 0.0 ÷ 65535 0.0 ÷ 65534 0.0 ÷ 65532
Đợc mở bằng lệnh
“ OPN DB ”
Data block ( DI )
Khối dữ liệu Instance
DIX DIB DIW DID
0.0 ÷ 65535.7 0.0 ÷ 65535 0.0 ÷ 65534 0.0 ÷ 65532
Là khối DB nhng
đợc mở bằng lệnh
“ OPN DI ” Local block
( L)
Miền nhớ địa phơng cho các tham số hình thức
L LB LW LD
0.0 ÷ 65535.7 0.0 ÷ 65535 0.0 ÷ 65534 0.0 ÷ 65532
Miền nhớ đợc cấp phát cho các khối OB, FC, FB
Mỗi khi khối này đợc gọi để thực hiện. Miền nhớ này cũng sẽ đợc giải phóng khi thực hiện xong các khối Peri pheral
input ( PI )
PIB PIW PID
0.0 ÷ 65535 0.0 ÷ 65534 0.0 ÷ 65532
Chỉ có địa chỉ truy cập để
đọc. Không có phần bộ nhớ . Peri pheral
output (PQ )
PQB PQW PQD
0.0 ÷ 65535 0.0 ÷ 65534 0.0 ÷ 65532
Chỉ có địa chỉ truy cập để
đọc. Không có phần bộ nhớ thực sự
Trừ phần bộ nhớ EFPROM thuộc vùng Load memory và một phần RAM tự nuôi đặc biệt ( Von – voldtile ) dùng để lu giữ tham số cấu hình trạm PLC nh địa chỉ trạm ( MPI address ) tên các modul mở rộng tất cả các phần bộ nhớ còn lại ở chế độ mặc định không có khả năng tự nhớ ( Non- rententive ). Khi mất nguồn nuôi hoặc thực hiện công việc xóa bộ nhớ ( MRES ) toàn bộ nội dung bộ nhớ ( Non- rententive ) sẽ bị mất. Tuy nhiên ta có thể sử dụng phần mềm Step 7 để chuyển những khối DB chứa những dữ liệu quan trọng, cũng nh các dữ liệu của Timer , Counter vào phần bộ nhớ RAM tự nuôi khi mất điện .
Bảng sau trình bày những dữ liệu có thể đợc chuyển vào phần bộ nhớ ( Non- rententive ) của CPU 314 nhờ Step 7 :
Dữ liệu thuộc miền Phần có thể chuyển Mặc định của Step 7 Vùng nhớ cờ ( M ) 0 ữ 256 ( byte ) 16 ( Số các byte )
Timer 0 ữ 128 0 ( Số các Timer )
Counter 0 ữ 64 8 ( Số các Counter )
Các khối DB 0 ữ 127 1. Có thể quy định từng phần chứ không cần phải toàn bộ DB