- Khối Shared DB (DB): Là khối dữ liệu cú thể được truy cập bởi tất cả cỏc khối trong chương trỡnh đú.
2.1.7.1. Cấu trỳc lệnh trong STL.
Cấu trỳc Vớ dụ như: L MW20 // đọc nội dung của ụ nhớ của 2 byte MB20,MB21
Trong đú ‘’ L’’ là tờn lệnh và ‘’MW20’’ là toỏn hạng.
Toỏn hạnh cú thể là dữ liệu hoặc toỏn hạng cú thể là 1 địa chỉ.
Toỏn hạng là dữ liệu.
Là dạng toỏn hạng mà dữ liệu luụn đi kốm sau cõu lệnh vớ dụ như: L B#16#1A // Nạp số 1A vào byte thấp của thanh ghi ACCU1
Dữ liệu cú thể là nhiều loại dữ liệu khỏc nhau như dữ liệu logic, nhị phõn,số hexa, số nguyờn, số thực, cỏc dữ liệu về thời gian, bộ đếm, ký tự………
Toỏn hạng là địa chỉ.
Toỏn hạng địa chỉ là dạng toỏn hạng mà dữ liệu đó được cú trong địa chỉ. Địa chỉ ụ nhớ của S7-300 gồm 2 phần: Phần chữ và phần số:
Vớ dụ địa chỉ nhớ là MB10 thỡ ‘MB’ là phần chữ cũn ‘10’ là chỉ phần số. Phần chữ chỉ vị trớ và kớch thước của ụ nhớ với cỏc ụ nhớ như là M, I, Q, T, C, …….Phần số thỡ chỉ vị trớ của byte hoặc bits trong miền nhớ đó được xỏc định. lệnh trong STL cú dạng ‘’ Tờn lệnh + ‘’ Toỏn hạng’’
Vớ dụ như I1.0 thỡ chỉ bit thứ 0 trong byte 1 của ụ nhớ đệm cổng vào số I.
Thanh ghi trạng thỏi.
Khi thực hiện lệnh, CPU sẽ ghi nhận lại trạng thỏi của phộp tớnh trung gian cũng như của kết quả vào một thanh ghi đặc biệt gọi là thanh ghi trạng thỏi (status word). Thanh ghi này cú độ dài 16 bits nhưng chỉ sử dụng 9 bits với cấu trỳc của thanh ghi trạng thỏi như sau:
8 7 6 5 4 3 2 1 0
Hỡnh 2.11 Miờu tả cấu trỳc thanh ghi trạng thỏi
Bit FC (first check): Bit 0 của thanh ghi trạng thỏi được gọi là bits kiểm tra đầu tiờn (FC). Mỗi lệnh kiểm tra trạng thỏi tớn hiệu của FC. Cũng như trạng thỏi tớn hiệu của toỏn hạng. Nếu bits FC =0, lệnh cất kết quả kiểm tra trạng thỏi tớn hiệu vào bit RLO. Quỏ trỡnh này được gọi là kiểm tra đầu tiờn (first check) hay quột lần thứ nhất (first scan).
- Nếu bits /FC =1 thỡ lệnh kết hợp kết quả trước đú của toỏn hạng hiện tại với RLO trước đú để tạo ra RLO mới.
- Chuỗi lệnh logic luụn luụn kết thỳc bằng lệnh xuất (S,R hay =), lệnh nhảy liờn hệ với RLO, hoặc một trong cỏc lệnh lồng như A(, O(, X(, AN(, XN(, cỏc lệnh này reset bit /FC về 0.
RLO (Result of Logic Operation): Kết quả tức thời của phộp toỏn logic vừa được thực hiện.
- Nếu trước khi thực hiện mà bit FC=0 thỡ cú tỏc dụng chuyển nội dung của toỏn hạng vào bit trạng thỏi của RLO.
- Nếu trước khi thực hiện mà bit FC =1 thỡ cú tỏc dụng thực hiện phộp
and giữa giỏ trị RLO với giỏ trị logic của cổng toỏn hạng chỉ trong lệnh. Kết quả của phộp tớnh được ghi lại vào bit trạng thỏi RLO.
STA (Status bit): Bits trạng thỏi luụn cú giỏ trị logic của tiếp điểm được chỉ định trong lệnh.
OR: Ghi lại giỏ trị của phộp tớnh logic andcuối cựng được thực hiện để
phụ giỳp cho việc thực hiện phộp toỏn or sau đú. Điều này là cần thiết vỡ
trong biểu thức hàm 2 trị, phộp tớnh and bao giờ cũng được thực hiện trước
phộp tớnh or.
Bit OS (Stored overflow bit): Ghi lại giỏ trị bit bị tràn ra khỏi mảng ụ nhớ.
Bit OV (Overflow bit): Bit OV cú chức năng bỏo lỗi, bỏo kết quả bị
CCO và CC1 (Condition code): Hai bit bỏo trạng thỏi của kết quả phộp tớnh với số nguyờn, số thực, phộp dịch chuyển hoặc phộp tớnh logic trong ACCU1.
Bit BR (Binary Result): Bit BR trạng thỏi cho phộp liờn kết hai loại ngụn ngữ lập trỡnh STL và LAD.
Cỏc lệnh cơ bản trong STL của S7-300. Cỏc lệnh về logic tiếp điểm.
Gồm cú những lệnh như sau: - = (Lệnh gỏn). - A (Lệnh thực hiện phộp AND ). - AN (Lệnh thực hiện phộp ANDNOT). - O (Lệnh thực hiện phộp OR). - ON (Lệnh thực hiện phộp ORNOT).
- A ( (Lệnh thực hiện phộp AND với biểu thức). - AN( (Lệnh thực hiện phộp ANDNOT với biểu thức). - O( (Lệnh thực hiện phộp OR với biểu thức).
- ON( (Lệnh thực hiện phộp ORNOT với biểu thức). - X (Lệnh thực hiện phộp EXCLUSIVE OR).
- XN (Lệnh thực hiện phộp EXCLUSIVE OR NOT ).
- X ( (Lệnh thực hiện phộp EXCLUSIVE OR với biểu thức). - XN( (Lệnh thực hiện phộp EXCLUSIVE OR NOT với biểu thức ). - SET (Lệnh thực hiện ghi giỏ trị 1 vào RLO).
- CLR (Lệnh thực hiện ghi giỏ trị 0 vào RLO). - NOT (Lệnh đảo giỏ trị của RLO).
- S (Lệnh ghi giỏ trị 1 vào toỏn hạng khi mà trước đú RLO =1). - R (Lệnh ghi giỏ trị 0 vào toỏn hạng khi mà trước đú RLO =1). - FP (Lệnh phỏt hiện sườn lờn).
- SAVE (Lệnh chuyển nội dung của RLO với bit trang thỏi BR).
Cỏc lệnh về thanh ghi ACCU.
Thanh ghi ACCU cú 2 thanh ghi được kớ hiệu là ACCU1 và ACCU2. Hai thanh ghi này cựng cú kớch thước 32 bits, mọi phộp tớnh toỏn trờn số thực, số nguyờn, cỏc phộp tớnh logic với mảng nhiều bit …. Đều được thực hiện trờn hai thanh ghi trạng thỏi này.Cỏc tập lệnh trong 2 thanh ghi này cú nhiều lệnh khỏc nhau gồm những lệnh như:
Cỏc lệnh đọc ghi và chuyển nội dung thanh ghi ACCU.
- L (Lệnh đọc giỏ trị chỉ định trong toỏn hạng vào thành ghi ACCU1 và giỏ trị cũ của ACCU1 sẽ được chuyển tới thanh ghi ACCU2).
- T (Lệnh cất nội dung ACCU 1 vào ụ nhớ)
- POP (Lệnh chuyển nội dung của ACCU2 vào ACCU1) - PUSP (Lệnh chuyển nội dung của ACCU1 vào ACCU2) - TAK (Lệnh đảo nội dung của ACCU2 và ACCU1)
- CAW (Lệnh đảo nội dung 2 byte của từ thấp trong ACCU1) - CAD (Lệnh đảo nội dung cỏc byte trong ACCU1)
- INVI (Lệnh đảo giỏ trị cỏc bit trong từ thấpACCU1) - INVD (Lệnh đảo giỏ trị cỏc bit trong ACCU1)
Cỏc lệnh logic thực hiện trờn thanh ghi ACCU.
- AW (Lệnh thực hiện phộp tớnh AND giữa cỏc bit trong từ thấp của 2 thanh ghi ACCU1 và ACCU2 với nhau )
- AD (Lệnh thực hiện phộp tớnh AND giữa cỏc bit trong 2 thanh ghi ACCU1 và ACCU2 với nhau )
- OW (Lệnh thực hiện phộp tớnh OR giữa cỏc bit trong từ thấp của 2 thanh ghi ACCU1 và ACCU2 với nhau )
- OD (Lệnh thực hiện phộp tớnh OR giữa cỏc bit trong 2 thanh ghi ACCU1 và ACCU2 với nhau )
- XOW (Lệnh thực hiện phộp tớnh XOR giữa cỏc bit trong từ thấp của 2 thanh ghi ACCU1 và ACCU2 với nhau )
- XOD (Lệnh thực hiện phộp tớnh XOR giữa cỏc bit trong 2 thanh ghi ACCU1 và ACCU2 với nhau )
Nhúm lệnh tăng giảm nội dung thanh ghi ACCU
- INC (Lệnh tăng giỏ trị của byte thấp của từ thấp thanh ghi ACCU1 lờn 1 đơn vị )
- DEC (Lệnh giảm giỏ trị của byte thấp của từ thấp thanh ghi ACCU1 xuống 1 đơn vị )
Ngoài ra cũn cú cỏc lờnh về dich chuyển,so sỏnh,cỏc lệnh về toỏn học…. với nội dụng của 2 thanh ghi ACCU1 và ACCU2.
Cỏc lệnh logic tiếp điểm trờn thanh ghi trạng thỏi.
Do tất cả cỏc lệnh toỏn học với số nguyờn và số thực vừa trỡnh bày ở phớa trờn khụng làm thay đổi nội dung bits trạng thỏi RLO nờn người ta cú thể sử dụng chỳng kết hợp với lệnh logic AND,OR.. Dưới dạng lệnh logic tiếp điểm trờn thanh ghi trạng thỏi dựa vào giỏ trị của CCO và CC1:
Vớ dụ gồm cỏc lệnh:
- AND trờn thanh ghi trạng thỏi ( A< 0,A>0.A<>0…..). - OR trờn thanh ghi trạng thỏi ( O< 0,O>0. O<>0…..). - XOR trờn thanh ghi trạng thỏi ( X< 0,X>0. X<>0…..).
Cỏc lệnh đổi kiểu dữ liệu.
Vỡ trong quỏ trỡnh làm việc cú nhiều dạng dữ liệu khỏc nhau đặt ra vấn đề là chỳng ta phải chuyển đổi chỳng vớ dụ như.
- BTI (Lệnh chuyển đổi BCD thành số nguyờn 16 bit ) - BTD (Lệnh chuyển đổi BCD thành số nguyờn 32 bit ) - ITB (Lệnh chuyển đổi số nguyờn 16 bit thành BCD) - DTB (Lệnh chuyển đổi số nguyờn 32 bit thành BCD)
- DTR (Lệnh chuyển đổi số nguyờn 32 bit thành số thực) Ngoài ra cũn cú một vài lệnh về số thực.
Cỏc lệnh điều khiển chương trỡnh.
Nhúm lờnh kết thỳc chương trỡnh gồm cú BEC và BEU:
- BEU (Lệnh kết thỳc chương trỡnh vụ điều kiện)
- BEC (Lệnh kết thỳc chương trỡnh cú điều kiện khi mà RLO =1)
Nhúm lệnh rẽ nhỏnh theo bit trạng thỏi:
Là lệnh rẽ nhỏnh theo bit trạng thỏi là loại lệnh thực hiện bước nhảy nhằm bỏ qua một đoạn chương trỡnh để tới đoạn chương trỡnh khỏc được đỏnh dấu bằng ‘nhón’ nếu điều kiện kiểm tra trong thanh ghi trạng thỏi được thỏa món, với một điểm cần chỳ ý là lệnh ‘nhón ‘ nhảy tới phải cựng thuộc một khối mà của chương trỡnh đú vớ dụ khụng thể viết chương trỡnh từ khối FC10 mà lại gọi nhón ở khối FC3 được. Gồm cú cỏc lệnh như sau:
- JBJ (Lệnh rẽ nhỏnh khi bit trạng thỏi BR =1 ) - JNBJ (Lệnh rẽ nhỏnh khi bit trạng thỏi BR =0 ) - JC (Lệnh rẽ nhỏnh khi bit trạng thỏi RLO =1 ) - JCN (Lệnh rẽ nhỏnh khi bit trạng thỏi RLO =0)
- JM (Lệnh rẽ nhỏnh khi bit trạng thỏi CC1 =0 và CC0 =1) - JP (Lệnh rẽ nhỏnh khi bit trạng thỏi CC1 =1 và CC0 =0) - JN (Lệnh rẽ nhỏnh khi bit trạng thỏi CC1 # CC0 )
- JMZ (Lệnh rẽ nhỏnh khi bit trạng thỏi CC1=CC0 =0 hoặc CC1=0 và CC0=1 )
- JPZ (Lệnh rẽ nhỏnh khi bit trạng thỏi CC1=CC0 =0 hoặc CC1=1 và CC0=0)
- JU (Lệnh rẽ nhỏnh vụ điều kiện )
Lệnh xoay vũng (LOOP):
Khi gặp lệnh LOOP CPU S7-300 sẽ tự giảm nội dung của từ thấp trong thanh ghi ACCU1 đi một đơn vị và kiểm tra kết quả cú bằng khụng hay
khụng. Nếu kết quả khỏc khụng lệnh tiếp tục thực hiện bước nhảy tới đoạn chương trỡnh được đỏnh dấu bằng ‘nhón’, ngược lại nếu ACCU1 =0 thỡ CPU sẽ thực hiện lệnh kế tiếp sau lệnh LOOP.
Lệnh rẽ nhỏnh theo danh mục(JL):
Lệnh thực hiện một loạt sự rẽ nhỏnh tựy thuộc vào nội dung của thanh ghi ACCU1, danh mục cỏc nhỏnh rẽ phải được liệt kờ ngay sau lệnh JL dưới dạng lệnh nhảy vụ điều kiện, với thứ tự từ thấp đến cao theo nội dung của thanh ghi ACCU1 .
Lệnh gọi hàm và khối hàm bằng (CALL):
Ta cú thể sử dụng lệnh CALL để gọi cỏc hàm (FC) và khối hàm (FB) …….,lệnh này gọi FC hay FB …..Do ta chỉ ra và được thực thi bất chấp RLO hay bất kỳ điều kiện nào khỏc.