197
Chương I. Cơ sở lý thuyết về điều khiển Logic I.1 Lý thuyết về điều khiển Logic I.1.1 Định nghĩa - Khái niệm về logic 2 trạng thái: Trong cuộc sống hàng ngày những sự vật hiện tượng chúng ta thường quy ước 2 trạng thái này đối lập nhau hoàn toàn, ví dụ: có/không; thiếu/đủ; còn/hết; trong/đục; nhanh/chậm... Bảng 1.1 Ví dụ về bảng chân lý hàm 1 biến Trong kỹ thuật, 2 trạng thái thường sử dụng là: đóng/mở; chạy/dừng... Để lượng hóa 2 trạng thái này, trong toán học, người ta quy ước bằng con số “0” và “1”. Từ đó, xây dựng nên các hàm và biến dựa trên 2 biến logic này. I.1.2 Các hàm logic cơ bản - Hàm logic 1 biến - Hàm logic n biến Hàm logic n biến : y = f(x1,x2,x3,..,xn). Ta có: 1 biến nhận 2 1 giá trị n biến nhận 2 n giá trị; 1

Giao Trinh PLC In

Embed Size (px)

DESCRIPTION

Giao trinh PLC s7-300 va s7-200

Citation preview

Page 1: Giao Trinh PLC In

Chương I. Cơ sở lý thuyết về điều khiển Logic

I.1 Lý thuyết về điều khiển Logic

I.1.1 Định nghĩa

- Khái niệm về logic 2 trạng thái:

Trong cuộc sống hàng ngày những sự vật hiện tượng chúng ta thường quy ước

2 trạng thái này đối lập nhau hoàn toàn, ví dụ: có/không; thiếu/đủ; còn/hết; trong/đục;

nhanh/chậm...

Bảng 1.1 Ví dụ về bảng chân lý hàm 1 biến

Trong kỹ thuật, 2 trạng thái thường sử dụng là: đóng/mở; chạy/dừng...

Để lượng hóa 2 trạng thái này, trong toán học, người ta quy ước bằng con số

“0” và “1”. Từ đó, xây dựng nên các hàm và biến dựa trên 2 biến logic này.

I.1.2 Các hàm logic cơ bản

- Hàm logic 1 biến

- Hàm logic n biến

Hàm logic n biến : y = f(x1,x2,x3,..,xn).

Ta có: 1 biến nhận 21 giá trị n biến nhận 2n giá trị; mà một tổ hợp nhận 2 giá trị,

do vậy hàm có tất cả là trường hợp.

Ví dụ :1 biến tạo 4 hàm.

2 biến tạo 16 hàm.

3 biến tạo 256 hàm.

Qua ví dụ trên, ta có thể thấy khả năng tạo hàm rất lớn nếu số biến càng nhiều.

Tuy nhiên tất cả khả năng này đều được hiện qua các khả năng sau: tổng logic, nghịch

đảo logic, tích logic.

1

Page 2: Giao Trinh PLC In

I.1.3 Tính chất

- Quan hệ giữa các hệ số:

0. 1 =0

1. 0 =0

0 +0 =0

0 +1 =1

1 +0 =1

1 +1 =1

= 1 = 0Đây là quan hệ giữa 2 hằng số “0” và “1”, là tiền đề cho các hàm logic sau này.

- Quan hệ giữa các biến và hằng số:

A.0 =0

A. 1 =A

A+1 =1

A +0 =A

A. A =0

A + A =1

- Các tính chất khác:

+ Luật giao hoán :

A. B =B. A

A +B =B +A

+ Luật kết hợp :

( A +B) +C =A +( B +C)

( A. B). C =A. ( B. C)

+ Luật phân phối :

A ( B +C) =A. B +A. C

+ Các tính chất đặc thù logic:

A. A =A

A +A =A

+ Định lý De Mogan :

2

Page 3: Giao Trinh PLC In

= + = + Luât hàm nguyên : =A.

I.1.4 Các phương pháp biểu diễn hàm logic

- Bảng logic

* Nếu hàm có n biến thì bảng có n+1 cột (n cột cho biến & 1 cột cho hàm)

* 2n hàng tương ứng với 2n tổ hợp biến.

Bảng này gọi là bảng sự thật hay là bảng chân lý.

Ví dụ: Trong nhà có 3 công tắc A,B,C. Khi muốn đèn sáng khi: công tắc A,B,C

đều hở; hoặc A đóng B, C hở; hoặc A hở B đóng C hở. Với giá trị của hàm y đã cho ở

trên ta biểu diễn thành bảng như sau:

Bảng 1.2 Bảng chân lý các giá trị tiếp điểm

- Biểu diễn hình học

Thông thường, với số lượng biến từ 2 đến 3 biến, người ta biểu diễn trên hình học

giống như các hệ tọa độ. Ví dụ biểu diễn 2 biến như hình 1.1

Hình 1.1 Biểu diễn biến số trên hệ tọa độ

3

Công tắc đèn ĐènA B C Y0 0 0 1 sáng0 0 1 00 1 0 1 sáng0 1 1 01 0 0 1 sáng1 0 1 01 1 0 01 1 1 0

Page 4: Giao Trinh PLC In

- Biểu diễn biểu thức đại số

Đối với tất cả các hàm logic đều có thể biểu diễn được dưới dạng tổng chuẩn và

tích chuẩn đầy đủ.

- Biểu diễn dạng bìa Karnaugh

Hình 1.2 Biểu diễn bằng dạng bìa Karnaugh

Bằng các phương pháp biểu diễn trên, ta sẽ tổng hợp mạch logic để được kết

quả rút gọn. Dựa trên các kết quả đó ta sẽ có các phương pháp tính toán điều khiển bài

toán tối ưu nhất.

4

Page 5: Giao Trinh PLC In

I.2 Logic trình tự và mạch tổ hợp

I.2.1 Mô hình toán học mạch tổ hợp

- Định nghĩa: Mạch tổ hợp là mạch mà tín hiệu đầu ra ở thời điểm bất kỳ chỉ phụ

thuộc vào tổ hợp các giá trị tín hiệu đầu vào ở thời điểm đó

- Mạch tổ hợp thường có nhiều tín hiệu đầu vào (x1, x2, x3, …) và nhiều tín hiệu

đầu ra (y1, y2, y3, …). Một cách tổng quát có thể biểu diễn theo mô hình toán

học như sau:

y1 = f1(x1, x2,... )

y2 = f2(x1, x2,... )

...

Hình 1.3 Mạch tổ hợp logic

I.2.2 Phân tích mạch tổ hợp

Từ yêu cầu nhiệm vụ đã cho ta biến thành các vấn đề logic, để tìm ra bảng chức

năng ra bảng chân lý. Được thực hiện theo các bước sau:

Hình 1.4 Các bước thực hiện phân tích mạch tổ hợp logic

Các bước thực hiện:

- Phân tích yêu cầu: cần nắm rõ yêu cầu của bài toán

+ xác định nào là biến đầu vào.

+ xác định nào là biến đầu ra.

+ tìm ra mối liên hệ giữa chúng với nhau.

Điều này đòi hỏi người thiết kế phải nắm rõ yêu cầu thiết kế đây là một việc khó

khăn nhưng rất quan trọng trong qua trình thiết kế

- Kê bảng chân lý: liệt kê thành bảng về mối quan hệ giữa đầu vào và ra

5

y1; y2;...Mạch tổ hợpx1; x2;...

Page 6: Giao Trinh PLC In

Ví dụ:

- Tổng hợp mạch chân lý: Nếu số biến tương đối ít thì dùng phương pháp hình vẽ

Nếu số biến tương đối nhiều thì dùng phương pháp đại số

Một số mạch tổ hợp thường gặp trong thực tế: như bộ mã hóa, mạch lật FF…

I.2.3 Logic trình tự

a, Định nghĩa: tín hiệu đầu ra chỉ được thực hiện khi các tín hiệu đầu vào được thực

hiện theo trình tự đã thiết lập từ trước.

Ví dụ: các mạch lật FF...

b, Phương pháp mô tả mạch trình tự:

- Bảng trạng thái

- Hình đồ trạng thái

- Grafcet

Một số mạch tổ hợp thường gặp trong hệ thống

thường là bộ giải mã, dồn kênh,...

Hình 1.5 Mạch tổ hợp logic trình tự

I.2.4 Khái niệm về mạch trình tự

a, Định nghĩa: là mạch có tín hiệu đầu ra chỉ bị kích hoạt khi các đầu vào được kích

hoạt theo một trình tự nào đó.

Điều này có thể thấy không thể thực hiện mạch logic trình tự theo các mạch

logic thông thường mà sử dụng các đặc tính của mạch lật FF

Một số phần tử logic trình tự: rơ le thời gian, các mạch lật FF: RS, JK,...

6

y1; y2;...Mạch tổ hợp

Logic trình tựx1; x2;...

ph

Page 7: Giao Trinh PLC In

Hình 1.6 Ví dụ về mạch trình tự dung mạch lật FF

b, Mô tả mạch trình tự

- Phương pháp chuyển trạng thái

Sau khi khảo sát một công nghệ nào đó, ta có được bảng 1.3:

Bảng 1.3 Bảng mô tả sơ đồ công nghệ

+ Các cột của bảng ghi biến đầu vào và biến đầu ra (x1… y1…)

+ Số hang ghi rõ số trạng thái cần có của hệ (S1…)

+ Ô giao giữa cột xi với trạng thái Sj ghi trạng thái của mạch, nếu trạng thái mạch

trùng với trạng thái hàng thì trạng thái đó ổn định

+ Ô giao giữa yi và Sj là tín hiệu ra tương ứng

Để thực hiện tốt việc lập bảng, ta phải nắm rõ được quy trình công nghệ và biết chắc

7

Page 8: Giao Trinh PLC In

các trạng thái chuyển đổi rõ ràng. Các trạng thái khác không biết hoặc chưa biết thì bổ

xung sau. Phân tích từng ô để xét trạng thái. Tuy nhiên, sẽ rất khó khăn khi phân biết

các trạng thái tương tự như ở bảng 1.4

Bảng 1.4 Các trạng thái tương tự

- Phương pháp lưu đồ

Phương pháp này mô tả trực quan, bao gồm các khối cơ bản:

+ Khối biểu thị giá trị ban đầu

+ Khối biểu thị công việc tính toán

+ Khối kiểm tra điều kiện

+ Khối kết thúc công việc

8

Page 9: Giao Trinh PLC In

I.3 Grafcet

I.3.1 Định nghĩa

Trong dây chuyền sản xuất công nghiệp máy móc thường hoạt động theo trình

tự logic chặt chẽ nhằm đảm bảo chất lượng sản phẩm, an toàn cho người và thiết bị.

Cấu trúc hoạt động trình tự của dây chuyền đã đưa ra yêu cầu cho điều khiển đồng thời

cũng gợi ý cho ta sự phân nhóm logic của hoạt động trình tự bởi các tập hợp con của

máy móc và các thuật toán điều khiển bằng chương trình con. Sơ đồ khối của hệ điều

khiển quá trình được thể hiện theo sơ đồ sau:

Hình 1.7 Sơ đồ khối điều khiển quá trình

Một quá trình công nghệ bao gồm ba hình thức hoạt động sau:

+ Hoàn toàn tự động

+ Bán tự động

+ Bằng tay

Trong quá trình hệ thống làm việc, để đảm bảo an toàn và linh hoạt, hệ điều

khiển cần phải có sự chuyển đổi dễ dàng từ “tự động” → “bán tự động” hoặc “bằng

tay” và ngược lại → như vậy hệ mới đáp ứng được yêu cầu thực tế.

Trong quá trình làm việc, sự “không bình thường” (sự cố) của hệ thống có rất

nhiều loại; vì vậy trong quá trình phân tích hệ thống cố gắng mô tả chúng một cách

đầy đủ nhất, nghĩa là các sự kiện về lỗi đa số phải được định nghĩa trước. Trong vấn đề

về sự cố người ta thường phân ra làm 3 nhóm sau:

+ Hư hỏng “một bộ phận” trong cấu trúc điều khiển.

+ Hư hỏng “cấu trúc trình tự” điều khiển.

+ Hư hỏng “bộ phận chấp hành”.

9

Page 10: Giao Trinh PLC In

Khi thiết kế hệ thống phải tính đến các phương án khác nhau như: việc dừng máy khẩn

cấp, xử lý tắc ngẽn vật liệu và nhiều hiện tượng nguy hiểm khác đồng thời cho phép

người vận hành can thiệp ngay điểm xảy ra sự cố hoặc cô lập vùng xảy ra sự cố đó.

Grafcet là cộng cụ rất hữu ích để thiết kế và thực hiện đầy đủ các yêu cầu của hệ thống

tự động hoá các quá trình công nghệ.

Định nghĩa Grafcet: Grafcet là từ viết tắt của tiếng Pháp “Graphe fontionnel de

commande étape transition”, là đồ hình chức năng cho phép mô tả các trạng thái hoạt

động của hệ thống và biểu diễn quá trình điều khiển với các trạng thái chuyển biến từ

trạng thái này sang trạng thái khác, đó là một graph định hướng và xác định bởi các

phần tử sau: G := {E, T, A, M}

+ E = {E1, E2, E3, ... , Em} là một tập hữu hạn các trạng thái (giai đoạn ) của

hệ thống, được kí hiệu bằng hình vuông. Ứng với mỗi trạng thái sao cho hành vi điều

khiển là không thay đổi, hành vi đó có thể hoạt động hoặc là không hoạt động. ⇒ Điều

khiển chính là thực hiện các mệnh đề logic chứa các biến vào/ra để hệ thống có được

trạng thái xác định trong hệ và đây cũng chính là một trong các trạng thái của Grafcet.

+ T = {t1, t2, t3, ... ti} là tập hữu hạn các chuyển trạng thái, biểu diễn bằng dấu

“gạch ngang”. Giữa hai trạng thái luôn tồn tại một chuyển trạng thái, chuyển trạng thái

này có dạng hàm Bool gắn với một chuyển trạng thái → “một tiếp nhận”

+ A = {a1, a2, a3, ... ai} là tập các cung định hướng nối giữa 1 trạng thái với 1

chuyển trạng thái hoặc 1 chuyển trạng thái với một trạng thái.

+ M = {m1, m2, m3, ... mi} là tập các giá trị (0,1). Nếu mi = 1 thì trạng thái i là

hoạt động, ngược lại trạng thái i không hoạt động.

I.3.2 Một số kí hiệu dùng trong Grafcet

Hình vuông có đánh số như hình 1.8 a), b) biểu thị trạng thái; hình chữ nhật bên

phải dùng để mô tả hoạt động của trạng thái đó. Hai hình chữ nhật lồng vào nhau có

đánh số, biểu thị trạng thái khởi đầu. Hình vuông đánh số có kèm theo dấu chấm “.”

biểu thị trạng thái hoạt động.

10

Page 11: Giao Trinh PLC In

Hình 1.8 Kí hiệu cơ bản Grafcet

Dấu gạch ngang biểu thị cho việc chuyển trạng thái. Trạng thái được chuyển

khi điều kiện chuyển được thoả mãn. Hình 1.9

Hình 1.9 Kí hiệu trong chuyển trạng thái

Các kí hiệu phân nhánh ở hình 1.10. Hình 1.10 a) khi TT1 đang hoạt động nếu

t12 thoả mãn thì TT2 hoạt động; nếu t13 thoả mãn thì TT3 hoạt động; nếu t12 và t13

cùng thoả mãn thì TT2 và TT3 cùng hoạt động gọi là TT OR. Tương tự cho hình 1.10

b). Hình 1.10 c) TT1 đang hoạt động nếu t123 thoả mãn thì cả hai TT2 và TT3 hoạt

động gọi là trạng thái AND. Hình 1.10 d) TT7 và TT8 đang hoạt động nếu t789 thoả

mãn thì TT9 hoạt động trạng thái này gọi là TT AND.

11

Page 12: Giao Trinh PLC In

Hình 1.10 Kí hiệu phân nhánh

Hình 1.11 a) cho phép thực hiện bước nhảy, nếu đang hoạt động ở TT2, điều

kiện a thoả mãn thì hệ thống sẽ chuyển hoạt động từ TT2 sang TT5 bỏ qua TT3 và

TT4; ngược lại nếu a không thoả mãn thì các trạng thái 3, 4, 5 lần lượt sẽ được thực

hiện. Hình 1.11 b) nếu điều kiện f chưa thoả mãn thì TT8 sẽ quay về lại TT7, nếu f

thoả mãn thì TT8 mới chuyển sang TT9

Hình 1.11 Kí hiệu bước nhảy

I.3.3 Ứng dụng của Grafcet

12

Page 13: Giao Trinh PLC In

Ta xét một ví dụ cụ thể để mô tả hoạt động của hệ thống tự động điều khiển quá

trình. Hệ thống trộn có sơ đồ công nghệ ở hình 1.12. Thùng X dùng để chứa nước

chuẩn bị cho hệ thống trộn. Trước khi động cơ M kéo cánh khuấy để trộn yêu cầu

thùng Y phải có đủ nước; cân 1 và 2 đã cân đủ vật liệu; lúc động cơ M khởi động cánh

khuấy cũng là lúc hai băng tải C1, C2 được khởi động để đưa hai vật liệu A, B vào

thùng trộng Y.

Hình 1.12 Sơ đồ công nghệ trộn

Trình tự khuấy trộn như sau:

- Nếu mức vật liệu ở thùng trộn là min (Nmin) thì hệ thống làm việc ở chế độ tự động

(AUT) → Cấp tín hiệu cho mở các van V1, V2, V3.

- Bơm P được khởi động để bơm nước từ thùng X vào thùng Y.

- Khi khối lượng cân trên các cân 1, 2 đã đủ thì van V2, V3 đóng lại.

- Nước trong thùng Y tăng dần cho đến khi đạt mức max (Nmax) thì bơm P dừng và

van V1 đóng lại.

- Khi việc chuẩn bị nguyên vật liệu trên đã xong, động cơ khuấy M bắt đầu hoạt động

đồng thời các van V4, V5 mở, băng tải C1, C2 hoạt động để đưa liệu vào thùng Y.

- Quá trình trộn được tính bằng thời gian t2, sau thời gian t2 thì có tín hiệu Ft2 xuất

hiện và cắt động cơ khuấy M để kết thúc quá trình trộn.

- Nlim là tín hiệu cực hạn trên để cấm hoạt động khi thùng trộn Y đã quá đầy.

- Trước khi động cơ M hoạt động thì van Ev mở để tháo hết vật liệu trong thùng Y ra

ngoài đến mức min (Nmin đóng), đồng thời vật liệu trên cân 1, 2 đã hết thì van V4, V5

tự động đóng lại nhưng băng tải C1, C2 còn phải quay thêm một đoạn nữa để đưa hết

vật liệu trên băng tải xuống thùng Y.

13

Page 14: Giao Trinh PLC In

- Vì lý do an toàn, hệ thống còn có nút dừng khẩn cấp (AU) khi hệ thống có sự cố bất

thường, đồng thời trước khi hệ thống hoạt động lại cần có tín hiệu đặt lại cho hệ thống

(REP).

Hình 1.13 Sơ đồ cấu trúc

Ở đây: M, P, C1, C2, V1, V2, V3, V4, V5, Ev là biến điều khiển quá trình: AUT, AU,

REP. A, B, Nmin, Nmax, Nlim là tín hiệu quá trình đưa về điều khiển trạng thái.

Có 2 điều kiện về điều khiển cần lưu ý:

Phương thức làm việc tự động theo chu kỳ. Chu kỳ ở đây là chu kỳ trộn, nghĩa

là hệ thống đã thực hiện xong mỗi mẽ trộn. Một mẽ trộn được bắt đầu bằng tín hiệu

điều khiển AUT (điều kiện bắt đầu là P, M, V1, V2... trạng thái chưa làm việc).

Phương thức khoá khi có sự cố, khi có sự cố ngẫu nhiên thì hệ thống phải được

dừng khẩn cấp bằng lệnh AU. Lúc này phải chốt lại ngay kết quả đang xử lý, đến khi

nào sự cố được khắc phục xong thì được hoạt động theo trình tự đặt lại bằng lệnh REP

với việc tính đến hoặc không tính đến điều kiện khởi động ban đầu.

Ban đầu chúng ta bắt đầu đi vào thiết kế hệ thống chưa có lệnh AU và REP

tham gia, đó là Grafcet ở hình 1.14. Trạng thái khởi đầu trong trường hợp này là TT1.

Giả sử các điều kiện đầu là thùng ở mức min, cơ cấu chấp, hành ở trạng thái tốt (sẵn

sàng làm việc) thì trạng thái 2, 3, 4 được thực hiện (van V1 mở, bơm P quay, van V2,

V3 mở để đưa vật liệu xuống cân 1, 2). Khi nước trong thùng dâng lên đến mức max

(Nmax) thì hệ thống chuyển sang trạng thái 5. Khi khối lượng trên cân 1 (tín hiệu báo

14

Page 15: Giao Trinh PLC In

đủ A), khối lượng rên cân 2 (tín hiệu báo đủ B) thì hệ thống chuển sang trạng thái 6, 7.

Trạng thái 5, 6, 7 biểu hiện cho nguyên liệu trong một mẽ trộn đã chuẩn bị xong. Khi

các điều kiện Nmax, A, B đã thỏa mãn thì hệ thống sẽ chuyển sang trạng thái 8, tương

ứng động cơ trộn M hoạt động, thời gian t2 được tính, van V4, V5 mở, băng tải C1, C2

hoạt động. Khi xả hết liệu trên hai cân 1, 2 thì van V1, V2 dừng và thời gian t1 được

tính để hai băng tải chạy thêm 1 thời gian nữa (t1). Sau thời gian này băng tải dừng và

tín hiệu Ft1 xuất hiện và hệ thống chuyển sang trạng thái 9, tại đây M vẫn còn hoạt

động đến khi thời gian t2 kết thúc hệ thống sẽ chuyển về trạng thái nghỉ để chuẩn bị

cho chu kỳ tiếp theo.

Hình 1.14

Ngoài các chế độ làm việc bình thường, ta có thể xây dựng với các chế độ bị lỗi

và khắc phục sự cố cho hệ thống trên.

15

Page 16: Giao Trinh PLC In

Chương 2 Bộ điều khiển lập trình PLC

II.1 Đặc điểm bộ điều khiển logic khả trình (PLC)

II.1.1 Sự ra đời của bộ điều khiển PLC

Năm 1642, Pascal đã phát minh ra máy tính cơ khí dùng bánh răng. Đến năm 1834

Babbage đã hoàn thiện máy tính cơ khí "vi sai" có khả năng tính toán với độ chính xác

tới 6 con số thập phân.

Năm 1808, Joseph M.Jaquard đã dùng các lỗ trên tấm bìa thẻ kim loại mỏng, sắp

xếp chúng trên máy dệt theo nhiều chiều khác nhau để điều khiển máy dệt tự động

thực hiện các mẫu hàng phức tap.

Trước năm 1904, Hoa Kỳ và Đức đã sử dụng mạch rơle để triển khai chiếc máy

tính điện tử đầu tiên trên thế giới.

Năm 1943, Mauhly và Ackert chế tạo "cái máy tính" đầu tiên gọi là "máy tính và

tích phân số điện tử" viết tắt là ENIAC. Máy có: 18.000 đèn điiện tử chân không,

500.000 mối hàn thủ công, chiếm diện tích 1613 ft2, công suất tiêu thụ điện 174 kW,

6000 nút bấm, khoảng vài trăm phích cắm.

Chỉ tới khi áp dụng kỹ thuật bán dẫn vào năm 1948, đưa vào sản xuất công nghiệp

vào những năm 60 thế kỷ trước thì những máy tính điện tử lập trình lại mới được sản

xuất và thương mại hoá.

Sự phát triển của máy tính cũng kèm theo kỹ thuật điều khiển tự động.

- Mạch tích hợp điện tử - IC - năm 1959.

- Mạch tích hợp gam rộng - LSI - năm 1965.

- Bộ vi xử lý - năm 1974.

- Dữ liệu chương trình - điều khiển.

- Kỹ thuật lưu giữ...

Những phát minh này đã đánh dấu một bước rất quan trọng và quyết định trong

việc phát triển ồ ạt kỹ thuật máy tính và các ứng dụng của nó như PLC, CNC,... lúc

này khái niệm điều khiển bằng cơ khí và bằng điện tử mới được phân biệt. Sự phát

triển của PLC đã đem lại nhiều thuận lợi và làm cho nó các thao tác máy trở nên

nhanh, nhạy, dễ dàng và tin cậy hơn. Nó có khả năng thay thế hoàn toàn cho các

phương pháp điều khiển truyền thống dùng rơle (loại thiết bị phức tạp và cồng kềnh);

16

Page 17: Giao Trinh PLC In

khả năng điều khiển thiết bị dễ dàng và linh hoạt dựa trên việc lập trình trên các lệnh

logic cơ bản; khả năng định thời, đếm; giải quyết các vấn đề toán học và công nghệ;

khả năng tạo lập, gửi đi, tiếp nhận những tín hiệu nhằm mục đích kiểm soát sự kích

hoạt hoặc đình chỉ những chức năng của máy hoặc một dây chuyền công nghệ.

Như vậy những đặc điểm làm cho PLC có tính năng ưu việt và thích hợp trong môi

trường công nghiệp: Khả năng kháng nhiễu rất tốt; Cấu trức dạng modul rất thuận tiện

cho việc thiết kế, mở rộng, cải tạo nâng cấp; Có những modul chuyên dụng để thực

hiện những chức năng đặc biệt hay những modul truyền thông để kết nối PLC với

mạng công nghiệp hoặc mạng Internet; Khả năng lập trình được, lập trình đễ dàng

cũng là đặec điểm quan trọng để xếp hạng một hệ thống điều khiển tự động; Yêu cầu

của người lập trình không cần giỏi về kiến thức điện tử mà chỉ cần nắm vững công

nghệ sản xuất và biết chọn thiết bị thích hợp là có thể lập trình được; Thuộc vào hệ sản

xuất linh hoạt do tính thay đổi được chương trình hoặc thay đổi trực tiếp các thông số

mà không cần thay đổi lại chương trình.

II.1.2 Các khái niệm cơ bản về PLC

Các thành phần của một PLC thường có các modul phần cứng sau:

(1) Modul nguồn PS.

(2) Modul đơn vị xử lý trung tâm CPU.

(3) Modul bộ nhớ chương trình và dữ liệu ROM-RAM.

(4) Modul đầu vào/ra SM.

(5) Modul phối ghép IM (để hỗ trợ cho vấn đề truyền thông nội bộ).

(6) Modul truyền thông CP (để hỗ trợ cho vấn đề truyền thông mạng).

(7) Modul chức năng FM (điều khiển chức năng riêng biệt).

Cấu trúc phần cứng của PLC

17

Page 18: Giao Trinh PLC In

Hình 2.1 Cấu trúc cơ bản của PLC S7-200

- Đơn vị xử lý trung tâm (CPU Central Procesing Unit):

Thường trong mỗi PLC có một CPU, ngoài ra còn có một số loại lớn có tới hai

CPU dùng để thực hiện những chức năng điều khiển phức tạp và quan trọng gọi là hot

standbuy hay redundant. Tuy nhiên, đối với các ứng dụng nhỏ thì chỉ có một CPU

thực hiện.Do đó, bộ vi xử lý quyết định khả năng và chức năng của PLC.

- Bộ nhớ: Bao gồm cả RAM, ROM, EEPROM.

Một nguồn điện dự phòng là cần thiết cho RAM để duy trì dữ liệu ngay cả khi mất

nguồn điện chính. Bộ nhớ được thiết kế thành dạng modul để cho phép dễ dàng thích

nghi với các chức năng điều khiển với các kích cỡ khác nhau. Muốn rộng bộ nhứo chỉ

cần cắm thẻ nhớ vào rãnh cắm chờ sẵn trên modul CPU.

- Khối vào/ ra:

Hoạt động xử lý tín hiệu bên trong PLC: 5VDC, 15VDC (điện áp cho họ TTL &

CMOS). Trong khi đó tín hiệu điều khiển bên ngoài có thể lớn hơn. khoảng 24VDV

đến 240VDC hay 110VAC đến 220VAC với dòng lớn. Khối giao tiếp vào ra có vai trò

giao tiếp giữa mạch vi điên tử của PLC với mạch công suất bên ngoài. Thực hiện

chuyển mức điện áp tín hiệu và cách ly bằng mạch cách ly quang (Opto-isolator) trên

các khối vào ra. Cho phép tín hiệu nhỏ đi qua và ghim các tín hiệu có mức cao xuống

mức tín hiệu chuẩn.

Ngõ vào: nhận trực tiếp tín hiệu từ cảm biến.

Ngõ ra: là các transistor, rơle hay triac vật lý.

- Thiết bị lập trình: Có 2 loại thiết bị có thể lập trình được đó là:Các thiết bị

chuyên dụng đối với từng nhóm PLC của hãng tương ứng. Máy tính có cài đặt

phần mềm.

- Modul quản lý việc phối ghép: Dùng để phốii ghép bộ PLC với các thiết bị bên

ngoài như máy tính, thiết bị lập trình, bảng vận hành và mạng truyền thông

công nghiệp.

- Thanh ghi (Register): là bộ nhớ 16 bit hay 32 bit để lưu trữ tạm thời khi PLC

thực hiện quá trình tính toán. Thanh ghi chốt (Latch register) duy trì nội dung

cho đến khi nó được chồng lên bằng nội dung mới. Thanh ghi chuyên dùng

(Special register). Thanh ghi tập tin hay thanh ghi bộ nhớ chương trình

18

Page 19: Giao Trinh PLC In

(Program memory registers). Thanh ghi điều chỉnh giá trị được từ biến trở bên

ngoài (External adjusting register). Thanh ghi chỉ mục (Index register).

- Bộ đếm (Counter): kí hiệu là C.

+ Phân loại: tín hiệu đầu vào: Bộ đếm tiến. Bộ đếm lùi. Bộ đếm tiến lùi (bộ đếm

này có cờ chuyên dụng chọn chiều đếm). Bộ đếm pha phụ thuộc vào sự lệch pha giữa

hai tín hiệu xung kích. Bộ đếm tốc độ cao (high speed counter), xung kích có tần số

cao khoảng vài kZ đến vài chục kZ.

+ Theo kích thước của thanh ghi và chức năng của bộ đếm: Bộ đếm 16 bit. Bộ

đếm 32 bit. Bộ đếm chốt: duy trì nội dung đếm ngay cả khi PLC bị mất điện.

- Bộ định thời (times): kí hiệu là T, được dùng để định các sự kiện có quan tâm

đến vấn đề thời gian, bộ định thơi trên PLC được gọi là bộ định thời logic. Việc

tổ chức định thời thực chất là một bộ đếm xung với chu ký có thể thay đổi

được.

II.1.3 Giới thiệu một số nhóm PLC phổ biến hiện nay trên thế giới

. Siemens: có ba nhóm

CPU S7 200:

CPU 21x: 210; 212; 214; 215-2DP; 216.

CPU 22x: 221; 222; 224; 224XP; 226; 226XM.

CPU S7300:

CPU S7400:

. Mitsubishi:

. Omron:

. Allen Bredly:

. Controtechnique:

. ABB:

AC 100M

AC 400M

AC 800M, là loại có 2 module CPU làm việc song song, chế độ dự phòng nóng.

19

Page 20: Giao Trinh PLC In

II.2 Tổng quan về họ PLC S7-200 của hãng Siemens

Có hai series: 21x (loại cũ không còn sản xuất nữa) và 22x (loại mới). Về mặt tính

năng thì loại mới có ưu điểm hơn nhiều.Bao gồm các loại CPU sau: 221, 222, 224,

224XP, 226, 226XM trong đó CPU 224XP có hỗ trợ analog I/O onboard và 2 port

truyền thông.

Bảng 2.1: Các loại CPU S7-200

II.2.1 Cấu trúc phần cứng của S7-200

II.2.1.1 Hình dáng bên ngoài:

- Các đèn trạng thái:

20

Page 21: Giao Trinh PLC In

Hình 2.2 Cấu trúc phần cứng của PLC S7-200

Đèn RUN-màu xanh: Chỉ định PLC ở chế độ làm việc và thực hiện chương

trình đã được nạp vào bộ nhớ chương trình.

Đèn STOP-màu vàng: Chỉ định PLC ở chế độ STOP, dừng chương trình đang

thực hiện lại (các đầu ra đều ở chế độ off).

Đèn SF-màu đỏ, đèn báo hiệu hệ thống bị hỏng có nghĩa là lỗi phần cứng hoặc

hệ điều hành. Ở đây cần phân biệt lỗi hệ thống và lỗi chương trình người dùng, lỗi

chương trình người dùng thì CPU không thể nhận biết được vì trước khi download

xuống CPU, phần mềm đã làm nhiệm vụ kiểm tra trước khi dịch sang mã máy.

Đèn Ix.x-màu xanh: Chỉ định trạng thái On/Off của đầu vào số.

Đèn Qx.x-màu xanh: Chỉ định trạng thái On/Off của đầu vào số.

Port truyền thông nối tiếp: RS 485 protocol, 9 chân sử dụng cho việc phối ghép

với PC, PG, TD200, TD200C, OP, mạng biến tần, mạng công nghiệp. Tốc độ truyền -

nhận dữ liệu theo kiểu PPI là 9600 baud. Tốc độ truyền - nhận dữ liệu theo kiểu

Freeport là 300- 38400 baud

- Công tắc chọn chế độ:

Công tắc chọn chế độ RUN: Cho phép PLC thực hiện chương trình, khi chương

trình gặp lỗi hoặc gặp lệnh STOP thì PLC sẽ tự động chuyển sang chế độ STOP mặc

dù công tắc vẫn ở chế độ RUN (nên quan sát đèn trạng thái).

Công tắc chọn chế độ STOP: Khi chuyển sang chế độ STOP, dừng cưỡng bức

chương trình đang chạy, các tín hiệu ra lúc này đều về off.

Công tắc chọn chế độ TERM: cho phép người vận hành chọn một trong hai chế

độ RUN/STOP từ xa, ngoài ra ở chế độ này được dùng để download chương trình

người dùng.

- Vít chỉnh định tương tự: Mỗi CPU có từ 1 đến 2 vít chỉnh định tương tự, có thể

xoay được một góc 270 độ, dùng để thay đổi giá trị của biến sử dụng trong

chương trình.

- Pin và nguồn nuôi bộ nhớ: Sử dụng tụ vạn năng và pin. Khi năng lượng của tụ

bị cạn kiệt PLC sẽ tự động chuyển sang sử dụng năng lượng từ pin.

II.2.1.2 Giao tiếp với thiết bị ngoại vi

- Thiết bị lập trình loại PGxx được trang bị sẵn phần mềm lập trình, chỉ lập trình

21

Page 22: Giao Trinh PLC In

được với ngôn ngữ STL.

- Máy tính PC trên đó có cài đặt phần mềm Step7 Mcro/Win 32 và Step7

Mcro/Dos. Hiện nay hầu hết sử dụng Step7 Mcro/Win 32 version 3.0,3.2,4.0.

V4.0 cho phép người lập trình có thể xem được giá trị, trạng thái cũng như đồ

thị của các biến. Nhưng chỉ sử dụng được trên máy tính có cài đặt hệ điều hành

Window 2000/ WinNT và PLC loại version mới nhất hiện nay.

II.2.1.3 Giao tiếp giữa sensor và cơ cấu chấp hành:

S7-200 có hai loại cơ bản: AC/DC/RLY, loại này điện áp nguồn cung cấp từ 85-

264 VAC, tần số 47-63 Hz;

Điện áp vào: có nguồn cung cấp điện áp chuẩn cho sensor là 24VDC.

Điện áp ra: loại này sử dụng nguồn điện ngoài, có thể là DC hoặc AC nhưng không

vượt quá 220V. Nếu sử dụng đối với những thiết bị tiêu thụ có công suất bé khoảng

chừng vài W thì có thể lấy trực tiếp nguồn của cảm biến.

II.2.2 Cấu trúc bộ nhớ S7-200

II.2.2.1. Phân chia bộ nhớ

Bộ nhớ được chia làm 4 vùng cơ bản, hầu hết các vùng nhớ đều có khả năng đọc

ghi chỉ trừ vùng nhớ đặc biệt SM (special memory) là vùng nhớ chỉ đọc.

- Vùng nhớ chương trình là miền bộ nhớ được dùng để lưu giữ các lệnh chương

trình. Vùng này thuộc kiểu non-valatie đọc/ghi được.

- Vùng nhớ tham số: là miền lưu giữ các tham số như từ khoá, địa chỉ trạm...

cũng giống như vùng chương trình, Vùng này thuộc kiểu non-valatie đọ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 kết

quả của các phép tính, hằng số được định nghĩa trong chương trình, bộ đệm

truyền thông...

- 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-valatile

nhưng đọc/ghi được.

II.2.2.2. Vùng nhớ dữ liệu và đối tượng:

Vùng nhớ dữ liệu là vùng nhớ động, nó có thể truy cập theo từng bit, byte,từ đơn

(worrd), từ kép (double worrd) và cũng có thể truy nhập được với mảng dữ liệu. Được

22

Page 23: Giao Trinh PLC In

sử dụng làm miền lưu trữ dữ liệu cho các thuật toán, các hàm truyền thông, lập bảng,

các hàm dịch chuyển, xoay vòng thanh ghi, con trỏ địa chỉ...

Vùng đối tượng được sử dụng để lưu giữ dữ liệu cho các đối tượng lập rtình như

các giá trị tức thời, giá trị đặt trước của bộ đếm hay Timer. Dữ liệu kiểu đối tượng bao

gồm các thanh ghi của counter, bộ đếm, các bộ đếm tốc độ cao, bộ đệm vào/ra tương

tự và các thanh ghi AC (Accumulator). Vùng nhớ dữ liệu và đối tượng được chia ra

nhiều miền nhớ nhỏ với những ứng dụng khác nhau. Chúng được ký hiệu bằng chữ cái

đầu của tên tiếng Anh. Thông số, chức năng, giới hạn của các vùng nhớ tương ứng với

từng CPU được mô tả qua các bảng sau:

Bảng 2.2 Thông số, chức năng và giới hạn vùng nhớ các họ PLC S7-200

Địa chỉ truy nhập được quy ước với công thức:

Truy nhập theo bit:

- Viết: tên miền (+) địa chỉ byte (+). (+) chỉ số bit (từ 07).

- Đọc: ngược lại, ví dụ: V12.7_bit 7 của byte 12 trong vùng nhớ V.

Truy nhập theo byte:

- Viết: tên miền (+) B (+) địa chỉ của byte trong miền.

- Đọc: ngược lại, ví dụ: VB32_byte 32 trong vùng nhớ V.

Truy nhập theo Word (từ):

- Viết: tên miền (+) W (+) địa chỉ byte cao của từ trong miền.

- Đọc: ngược lại, ví dụ: VW180_Word 180 trong vùng nhớ V, từ này

gồm có 2 byte 180 và 181

23

Page 24: Giao Trinh PLC In

Truy nhập theo double Word (từ kép):

- Viết: tên miền (+) D (+) địa chỉ byte cao của từ cao trong miền.

- Đọc: ngược lại, ví dụ: VD8_double Word 8 trong vùng nhớ V, từ kép

này bao gồm 4 byte 8, 9, 10, 11

Tất cả các byte thuộc vùng dữ liệu đề có thể truy nhập bằng con trỏ. Con trỏ quy

định trong vùng nhớ V, L hoặc các thanh ghi AC1, AC2, AC3. Mỗi con trỏ gồm 4

byte, dùng lệnh MOVD. Quy ướ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 mà con trỏ đang chỉ vào. Ví dụ:

AC1=&VB10, thanh ghi AC1 chứa đại chỉ của byte 10 thuộc vùng nhớ V.

VD100=&VW110, từ kép VD100 chứa địa chỉ byte cao (VB110) của từ đơn VW110.

AC2=&VD150, thanh ghi AC2 chứa địa chỉ của byte cao (VB150) của tứ kép VD150.

*con trỏ là toán hạng lấy nội dung của byte, từ hoặc từ kép mà con trỏ đang chỉ

vào. Ví dụ như đối phép gán địa chỉ trên thì:

*AC1=VB10, lấy nội dung của byte VB10.

*VD100=VW110, lấy nội dung của từ đơn VW110.

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 hay các vùng nhớ I, Q, V, M, AI, AQ, SM

II.2.2.3 Mở rộng cổng vào ra

Số module mở rộng tuỳ thuộc vào từng loại CPU, số module tương ứng với từng

loại CPU được trình bày theo bảng 2.3. Cách mắc nối các module mở rộng được mắc

nối tiếp (theo một móc xích) về phía bên phải của module CPU. Các module số hoặc

tương tự đều chiếm chỗ trên bộ đệm 100 vào/ra tương ứng với đầu vào/ra của module

24

Page 25: Giao Trinh PLC In

Bảng 2.3 Quy tắc đánh địa chỉ cho các module mở rộng PLC S7-200

Chương 3. Ngôn ngữ lập trình cho PLC S7-200

III.1 Phương pháp lập trình

S7-200 biểu diễn một mạch logic cứng bằng một dãy các lệnh lập trình. Chương

trình bao gồm một dãy các tập lệnh. S7-200 thực hiện chương trình bắt đầu từ lệnh lập

trình đầu tiên và kết thúc ở lập trình cuối trong một vòng quét (scan).

Một vòng quét được bắt đầu bằng một việc đọc trạng thái của đầu vào, và sau đó

thực hiện chương trình. Vòng quét kết thúc bằng việc thay đổi trạng thái đầu ra. Trước

khi bắt đầu một vòng quét tiếp theo S7-200 thực thi các nhiệm vụ bên trong và nhiệm

vụ truyền thông. Chu trình thực hiện chương trình là chu trình lặp.

Cách lập trình cho S7-200 nói riêng và cho các PLC nói chung dựa trên hai

phương pháp cơ bản. Phương pháp hình thang (Ladder, viết tắt là LAD) và phương

pháp liệt kê lệnh (Statement list, viết tắt là STL).

Nếu có một chương trình viết dưới dạng LAD, thiết bị lập trình sẽ tự động tạo ra

một chương trình theo dạng STL tương ứng. Ngược lại không phải mọi chương trình

viết dưới dạng STL đều có thể chuyển sang được dạng LAD.

Phương pháp hình thang (LAD): LAD là một ngôn ngữ lập trình bằng đồ họa,

những thành phần cơ bản dùng trong LAD tương ứng với các thành phần của bảng

điều khiển bằng rơ le. Trong chương trình LAD, các phần tử cơ bản dùng để biểu

diễn lệnh logic như sau:

Tiếp điểm: Tiếp điểm thường mở Tiếp điểm thương đóng

Cuộn dây (coil): Là biểu tượng mô tả rơ le được mắc theo chiều dòng

điện cung cấp cho rơ le.

Hộp (Box): Là biểu tượng mô tả các hàm khác nhau, nó làm việc khi có dòng

điện chạy đến hộp. Những dạng hàm thường được biểu diễn bằng hộp là các bộ

thời gian (Timer), bộ đếm (counter) và các hàm toán học. Cuộn dây và các hộp

phải mắc đúng chiều dòng điện.

Mạng LAD: Là đường nối các phần tử thành một mạch hoàn thiện, đi từ đường

nguồn bên trái sang đường nguồn bên phải.. Dòng điện chạy từ trái qua tiếp điểm đến

đóng các cuộn dây hoặc các hộp trở về bên phải nguồn.

25

Page 26: Giao Trinh PLC In

Phương pháp liệt kê lệnh (STL): Là phương pháp thể hiện chương trình dưới dạng

tập hợp các câu lệnh. Mỗi câu lệnh trong chương trình, kể cả những lệnh hình thức

biểu diễn một chức năng của PLC.

Các toán hạng và giới hạn cho phép của CPU 2xx:

Phương pháp truy nhập Giới hạn cho phép của các toán hạngTruy nhập bit (địa chỉ byte, chỉ số bit)

V (0.0 4095.7)I (0.0 7.7)

Q (0.0 7.7)M (0.0 31.7)SM (0.0 85.7)T (0 127)C (0 127)

Truy nhập bit VB (0 4.095) IB (0 7) MB (0 31). SMB (0 85) AC (0 3) Hằng số

Truy nhập từ đơn VW (0 4094)T (0 127)C (0 127)IW (0 6)QW (0 6)MW (0 30)SMW (0 84)AC (0 3)AIW (0 30)AQW (0 30)Hằng số

Truy nhập từ kép VD (0 4092)ID (0 4)QD (0 4)MD (0 28)SMD (0 82)AC (0 3)HC (0 2)Hằng số.

III.1.1 Một số lệnh cơ bản dùng trong lập trình

III.1.1.1 Các lệnh vào ra

26

Page 27: Giao Trinh PLC In

Load (LD): Lệnh LD nạp giá trị logic của một tiếp điểm vào trong bít đầu tiên

của ngăn xếp (xem hình a), các giá trị cũ còn lại trong ngăn xếp bị đẩy lùi xuống

một bít.

Load Not (LDN): Lệnh LDN nạp giá trị logic nghịch đảo của một tiếp điểm vào

trong bít đầu tiên của ngăn xếp (xem hình b), các giá trị còn lại trong ngằn xếp

bị đẩy lùi xuống một bít.

Các dạng khác nhau của lệnh LD, LDN cho LAD như sau:

LAD Mô tả Toán hạng

LD n Tiếp điểm thường mở

sẽ được đóng nếu n = 1.

n: I, Q, M, SM, T, C, V

(bit)

LDN n Tiếp điểm thường đóng

sẽ mở khi n = 1.

LDI n Tiếp điểm thường mở

sẽ đóng tức thời khi n = 1

n: I

LDNI n Tiếp điểm thường đóng

sẽ mở tức thời khi n = 1

Các dạng khác nhau của lệnh LD, LDN cho STL như sau:

Lệnh Mô tả Toán hạngLD n Lệnh nạp giá trị logic

của điểm n vào bít đầu tiên trong ngăn xếp.

n (bít): I, Q, M, SM, T, C, V

LDN n Lệnh nạp giá trị logic nghịch đảo của điểm n vào bít đầu tiên trong ngăn xếp.

LDI n Lệnh nạp tức thời giá trị logic của điểm n vào bít đầu tiên trong ngăn xếp.

n: I

LDNI n

Lệnh nạp tức thời giá trị logic nghịch đảo của điểm n vào bít đầu tiên trong ngăn xếp.

OUTPUT (=)

27

Page 28: Giao Trinh PLC In

Lệnh sao chép nội dung của bít đầu tiên trong ngăn xếp vào bít được chỉ định trong

lệnh. Nội dung cua ngăn xếp không bị thay đổi.

Mô tả lệnh bằng LAD như sau:

LAD Mô tả Toán hạng

Cuộn dây đầu ra ở trạng thái

kích thích khi có dòng điều

khiển đi qua.

n: I, Q, M, SM, T, C, V (bít)

Cuộn dây đầu ra được kích

thích tức thời khi có dòng

điều khiển đi qua.

n: Q (bít)

Mô tả bằng lệnh STL như sau:

STL Mô tả Toán hạng

= n

Lệnh = sao chép giá trị

của đỉnh ngăn xếp tới tiếp

điểm n được chỉ dẫn trong

lệnh.

n: I, Q, M, SM, T, C, V (bít)

= I n

Lệnh = I (immediate) sao

chép tức thời giá trị của đỉnh

stack tới tiếp điểm n được

chỉ dẫn trong lệnh.

n: Q (bít)

III.1.1.2 Các lệnh ghi/ xóa giá trị cho tiếp điểm

SET (S) và RESET (R):

Lệnh dùng để đóng (SET) và ngắt (RESET) các điểm gián đoạn đã được thiết kế.

Trong LAD, logic điều khiển dòng điện đóng hoặc ngắt các cuộc dây đầu ra. Khi dòng

điều khiển đến các cuộc dây thì các cuộn dây đóng hoặc mở các tiếp điểm (hoặc một

dãy các tiếp điểm).

Trong STL, lệnh truyền trạng thái bít đầu của ngăn xếp đến các điểm thiết kế. Nếu

bít này có giá trị =1, các lệnh S và R sẽ đóng ngắt tiếp điểm hoặc một dãy các tiếp

điểm (giới hạn từ 1 đến 255). Nội dung của ngăn xếp không bị thay đổi bởi lệnh này.

Mô tả bằng lệnh LAD

28

Page 29: Giao Trinh PLC In

LAD Mô tả Toán hạng

Đóng một mảng gồm n các

tiếp điểm kể từ S_BIT

S BIT: I, Q, M, SM,

T, C, V

n(byte): IB, QB, MB,

SMB, VB,AC, Hằng số,

*VD, *AC

Đóng một mảng gồm n các

tiếp điểm kể từ S BIT. Nếu S

BIT lại chỉ vào Timer hoặc

Counter thì lệnh sẽ xóa bít đầu

ra của Timer/ Counter đó.

Đóng tức thời một mảng

gồm n các tiếp điểm kể từ S

BIT

S BIT: Q

N(byte): IB, QB, MB,

SMB, VB,AC, Hằng số,

*VD, *AC

Ngắt tức thời một mảng

gồm n các tiếp điểm kể từ địa

chỉ S BIT

STL Mô tả Toán hạng

S S_bit, n Ghi giá trị logic vào một

mảng gồm n bít kể từ địa chỉ S

BIT

S BIT: I, Q, M, SM,

T, C, V

(bit)

n: IB, QB, MB,

SMB, VB

(byte) AC, Hằng số,

*VD, *AC

R S_bit, n Xóa một mảng gồm n bít kể

từ địa chỉ S BIT. Nếu S BIT

lại chỉ vào Timer hoặc

Counter thì lệnh sẽ xóa bít đầu

ra của Timer / Counter.

SI S_bit, n Ghi tức thời giá trị logic 1

vào một mảng gồm n bít kể từ

địa chỉ S BIT

S BIT: Q

(bit)

n: IB, QB, MB,

SMB, VB (byte)

(byte) AC, Hằng số,

*VD, *AC

RI S_bit, n Xóa tức thời một mảng

gồm n bít kể từ địa chỉ S

BIT

29

Page 30: Giao Trinh PLC In

Hình 3.1 Ví dụ về các lệnh cơ bản Out, Set và Reset

III.1.1.3 Các lệnh logic đại số (BOOLEAN)

AND (A) và OR (O)

Các lệnh tiếp điểm đại số Boolean cho phép tạo lập được các mạch logic (không có

nhớ). Trong LAD các lệnh này được biểu diễn thông qua cấu trúc mạch, mắc nối tiếp

hay song song các tiếp điểm thường đóng và các tiếp điểm thường mở. STL có thể sử

dụng các lệnh A (And) và O (Or) cho các hàm hở hoặc các lệnh AN (And Not), ON

(Or Not) cho các hàm kín.

Giá trị của ngăn xếp thay đổi phụ thuộc vào từng lệnh.

Lệnh Mô tả Toán hạng

A n

O n

Lệnh thực hiện toán tử (A) và (O)

giữa giá trị logic của tiếp điểm n và

giá trị bít đầu tiên trong ngằn xếp.

Kết quả được ghi lại bít đầu trong

ngăn xếp.

n: I, Q, M, SM, T, C,

V

(bit)

30

Page 31: Giao Trinh PLC In

Lệnh Mô tả Toán hạng

AN n

ON n

Lệnh thực hiện toán tử ^ (A) và V

(O) giữa giá trị logic nghịch đảo của

tiếp điểm n và giá trị bít đầu tiên

trong ngằn xếp. Kết quả được ghi lại

bít đầu trong ngăn xếp.

AI n

OI n

Lệnh thực hiện tức thời toán tử ^

(A) và V (O) giữa giá trị logic của

tiếp điểm n và giá trị bít đầu tiên

trong ngằn xếp. Kết quả được ghi lại

bít đầu trong ngăn xếp.

n: 1

(bit)

ANI n

ONI n

Lệnh thực hiện tức thời toán tử ^

(A) và V (O) giữa giá trị logic

nghịch đảo của tiếp điểm n và giá trị

bít đầu tiên trong ngằn xếp. Kết quả

được ghi lại bít đầu trong ngăn xếp.

Lệnh A và O phối hợp giá trị logic của một tiếp điểm n với giá trị bít đầu tiên của

ngăn xếp. Kết quả phép tính được đặt lại vào bít đầu tiên trong ngăn xếp. Giá trị của

các bít còn lại trong ngăn xếp không bị thay đổi.

Luật tính toán của các phép tính logic And và Or như sau:

x y And Or

0 0 0 0

0 1 0 1

1 0 0 1

1 1 1 1

ALD, OLD, LPS, LRD, LPP

Ngoài những lệnh làm việc trực tiếp với tiếp điểm, S7-200 còn có 5 lệnh đặc biệt

biểu diễn các phép tính của đại số Boolean cho các bit trong ngăn xếp, được gọi là các

lệnh stack logic. Đó là các lệnh ALD (And load), OLD (Or load), LPS (Logic push),

LRD (Logic read) và LPP (Logic pop). Lệnh stack logic được dùng để tổ hợp, sao

chụp hoặc xóa các mệnh đề logic. LAD không có bộ đếm dành cho lệnh stack logic.

31

Page 32: Giao Trinh PLC In

STL sử dụng các lệnh stack logic để thực hiện phương trình tổng thể có nhiều biểu

thức con.

Bảng sao tóm tắt cú pháp gọi các lệnh stack logic trong STL.

Lệnh Mô tả Toán hạng

ALD Lệnh tổ hợp giá trị của bít đầu tiên và thứ hai của

ngăn xếp bằng phép tính logic. Kết quả ghi lại vào

bít đầu tiên. Giá trị còn lại của ngăn xếp được kéo

lên một bít.

Không có

OLD Lệnh tổ hợp giá trị của bít đầu tiên và thứ hai của

ngăn xếp bằng phép tính logic V. Kết quả ghi lại

vào bít đầu. Giá trị còn lại của ngăn xếp được kéo

lên một bít.

Không có

LPS Lệnh logic Push (LPS) sao chụp giá trị của bít đầu

tiên vào bít thứ hai trong ngăn xếp. Giá trị còn lại bị

đẩy xuống một bít. Bít cuối cùng bị đẩy ra khỏi

ngăn xếp.

Không có

LRD Lệnh sao chép giá trị của bít thứ hai vào bít đầu tiên

trong ngăn xếp. Các giá trị còn lại của ngăn xếp giữ

nguyên vị trí.

Không có

LPP Lệnh kéo ngăn xếp lên một bít. Giá trị của bít sau

được chuyển cho bít trước.

Không có

Lệnh ALD và lệnh OLD thực hiện phép tính logic And và Or giữa hai bít đầu tiên

của ngăn xếp. Kết quả của phép logic này sẽ được ghi lại vào bít đầu trong ngăn xếp.

Nội dung còn lại của ngăn xếp được kéo lên một bít.

LOGIC PUSH (LPS)

LOGIC READ (LRD)

LOGIC POP (LPP)

Lệnh LPS, LRD va LPP là những lệnh thay đổi nội dung bít đầu tiên của ngăn xếp.

Lệnh LPS sao chép nội dung của bít đầu tiên và bít thứ hai trong ngăn xếp, nội dung

ngăn xếp sau đo bị đẩy xuống một bít. Lệnh LRD lấy giá trị của bít thứ hai ghi vào bít

32

Page 33: Giao Trinh PLC In

đầu tiên của ngăn xếp, nội dung ngăn xếp đó được kéo lên một bít. Lệnh LPP kéo ngăn

xếp lên một bít.

ORW, ORD, ANDW, ANDD, XORW, XORD

Lệnh thực hiện các thuật toán logic And, Or và Exclusive Or của đại số Boolean

trên 2 bit hoặc 4 byte. S7-200 cung cấp thêm những lệnh logic có khả năng thực hiện

các thuật toán logic trên một mảng nhiều tiếp điểm (hay nhiều bít) như trên 2 byte

hoặc 4 byte. Luật tính toán của chúng như sau:

x y x And y x Or y x XOR y

0 0 0 0 0

0 1 0 1 1

1 0 0 1 1

1 1 1 1 0

Cách biểu diễn các lệnh logic này trong LAD và STL được tóm tắt trong bảng sau.

Chúng sử dụng bít nhớ đặc biệt SM 1.0 để thông báo về trạng thái kết quả phép tính

được thực hiện (kết quả bằng 0).

Biểu diễn trong STL

STL Mô tả Toán hạng

ANDW IN1

IN2

Lệnh thực hiện phép logic

AND giữa các bít tương ứng của

hai từ IN1 và IN2. Kết quả được

ghi lại vào IN2

IN1: VW, T, C,

IW, QW.

(word) SMW,

AC, AIW, *VD

*AC, Hằng số.

IN2: VW, T, C,

IW, QW

(word) W, CA,

AIW, *VD, *AC

ORW IN1 IN2

Lệnh thực hiện phép logic OR

giữa các bít tương ứng của hai từ

IN1 và IN2. Kết quả được ghi lại

vào IN2

XORW IN1 IN2

Lệnh thực hiện phép logic

XOR giữa các bít tương ứng của

hai từ IN1 và IN2. Kết quả được

ghi lại vào IN2

33

Page 34: Giao Trinh PLC In

STL Mô tả Toán hạng

ANDD IN1 IN2

Lệnh thực hiện phép logic

AND giữa các bít tương ứng của

hai từ kép IN1 và IN2. Kết quả

được ghi lại vào IN2

IN1: VD, ID,

QD, MD, SMQ.

(Dword) AC,

HC, *CD,*AC

Hằng số.

IN2: VD, ID,

QD, MD, SMD

(Dword)AC,

*VD, *AC

ORD IN1 IN2

Lệnh thực hiện phép logic OR

giữa các bít tương ứng của hai từ

kép IN1 và IN2. Kết quả được

ghi lại vào IN2

XORD IN1 IN2

Lệnh thực hiện phép logic

XOR giữa các bít tương ứng của

hai từ kép IN1 và IN2. Kết quả

được ghi lại vào IN2

Biểu diễn trong LAD với các kiểu dữ liệu

LAD Mô tả Toán hạng

Lệnh thực hiện phép

tính logic AND theo

từng bít của IN1 và IN2.

Kết quả được ghi vào

OUT.

IN1: VW, T, C,

IW, QW (word)

SMW, AC, AIW, VD

*AC, Hằng số.

IN2: VW, T, C,

IW, QW, (word)

SMW, AC, AIW,

*VD, *AC, Hằng số.

OUT: VW, T, C,

IW, QW, MW, (word)

SMW, AC, *VD,

*AC

Lệnh thực hiện phép

tính logic OR giữa các

bít tương ứng của hai từ

IN1 và IN2. Kết quả

được ghi vào từ OUT.

Lệnh thực hiện phép

tính logic XOR giữa các

bít của IN1 và IN2. Kết

quả được ghi vào OUT.

34

Page 35: Giao Trinh PLC In

III.1.1.4 Các lệnh tiếp điểm đặc biệt

Có thể dùng các lệnh tiếp điểm đặc biệt để phát hiện sự chuyển tiếp trạng thái của

xung (sườn xung) và đảo lại trạng thái của dòng cung cấp (giá trị của đỉnh ngăn xếp).

LAD sử dụng các tiếp điểm đặc biệt để tác động vào dòng cung cấp. Các tiếp điểm đặc

biệt không có toán hạng riêng của chính chúng và vì thế phải đặt chúng vào vị trí phía

trước của cuộn dây hoặc hộp đầu ra. Tiếp điểm chuyển tiếp dương/âm (các lệnh sườn

trước và sườn sau) có nhu cầu về bộ nhớ, nên đối với CPU 214 là 256 lệnh.

Biểu diễn trong ngôn ngữ LAD

LAD Mô tả Toán hạng

Tiếp điểm đảo trạng thái của dòng cung cấp.

Nếu dòng cung cấp có tiếp điểm đảo thì nó bị

ngắt mạch, nếu không có tiếp điểm đảo thì nó

thông mạch.

Không có

Tiếp điểm chuyển đổi dương cho phép dòng

cung cấp thông mạch trong một vòng quét khi

sườn xung điều khiển chuyển từ 0 lên 1

Không có

Tiếp điểm chuyển đổi âm cho phép dòng cung

cấp thông mạch trong một vòng quét khi sườn

xung điều khiển chuyển từ 1 xuống 0.

Không có

Biểu diễn trong ngôn ngữ STL

STL Mô tả Toán hạng

NOT Lệnh đảo giá trị của bít đầu tiên trong ngăn

xếp.

Không có

EU Lệnh nhận biết sự chuyển tiếp trạng thái từ 0

lên 1 trong một vòng quét của đỉnh ngăn xếp.

Khi nhận được sự chuyển tiếp như vậy đỉnh

ngăn xếp sẽ có giá trị bằng 1 trong một vòng

quét.

Không có

ED Lệnh nhận biết sự chuyển tiếp trạng thái từ 1 Không có

35

Page 36: Giao Trinh PLC In

STL Mô tả Toán hạng

xuống 0 trong một vòng quét của đỉnh ngăn

xếp. Khi nhận được sự chuyển tiếp như vậy

đỉnh ngăn xếp sẽ có giá trị bằng 1 trong một

vòng quét.

NOT (NOT)

EDGE UP (EU)

EDGE DOWN (ED)

Lệnh NOT, EU va ED thực hiện các thuật toán đặc biệt trên bít đầu tiên của ngăn

xếp. Lệnh NOT đảo giá trị của bít đầu tiên trong ngăn xếp. Lệnh EU khi phát hiện thấy

sườn lên từ 0 đến 1 trong bít đầu tiên của ngăn xêp thì đặt giá trị 1 vào bít đầu tiên của

ngăn xếp trong khoảng thời gian bằng một vòng quét.

Bảng 3.2 Ví dụ về các lệnh And, Not và Edge Down

III.1.1.5 Các lệnh so sánh

36

Page 37: Giao Trinh PLC In

Khi lập trình, nếu có các quyết định về điều khiển được thực hiện dựa trên kết

quả của việc so sánh thì có thể sử dụng lệnh so sánh cho byte, từ hay từ kép cua S7-

200.

Khi so sánh giá trị của byte thì không cần phaii để y đến dấu cua toán hạng. Ngược

lại khi so sánh các từ hoặc từ kép với nhau thì phải để ý đến dấu của toán hạng, ngược

lại khi so sánh các từ hoặc từ kép với nhau thì phải để ý đến dấu của toán hạng là bít

cao nhất trong từ hoặc từ kép.

Biểu diễn các lệnh so sánh trong LAD (ví dụ với các kiểu dữ liệu khác nhau):

LAD Mô tả Toán hạng

Tiếp điểm đóng khi

n1 = n2

n1, n2: VB, IB,

QB, MB, SMB, AC,

Const, *VD*, AC

n1, n2 (từ): VW, T,

C, IW, QW, MW,

SMW,AC, AIW,

Hằng số, *VD, *AC

n1, n2(từ kép):VD,

ID, QD, MD, SMD,

AC, HC, Hằng số,

*VD, *AC

Tiếp điểm đóng khi

n1 > n2

Tiếp điểm đóng khi

n1 < n2

Trong STL, những lệnh so sánh thực hiện phép so sánh byte, từ và từ kép. Căn cứ

vào kiểu so sánh (<=, =, >=), kết quả của phép so sánh có giá trị bằng 0 (nếu đúng)

hoặc 1 (nếu sai) nên có thề sử dụng kết hợp cùng với các lệnh logic A, O, NOT để tạo

ra được các phép so sánh mà S7-200 không có lệnh so sánh tương ứng như: so sánh

không bằng nhau (< >), so sánh nhỏ hơn (>), có thể tạo ra được nhờ dùng kết hợp lệnh

NOT với các lệnh đã có (=, >=, <=). Ví dụ sau mô tả việc thực hiện pháp so sánh

không bằng nhau (< >) giữa nội dung của từ V>W100 và hằng số 50 bằng cách sử

dụng kết hợp phép so sánh bằng nhau LDW = và lệnh đảo NOT.

LDB =, LDW =

LDD =, LDR =

37

Page 38: Giao Trinh PLC In

LDB < =, LDW < =

LDD < =, LDR < =

LDB > =, LDW > =

LDD > =, LDR > =

AB =, AW =

AD =, AR =

AB < =, AW < =

AD < =, AR < =

Biểu diển lệnh so sánh trong STL:

STL Mô tả Toán hạng

LDB = n1 n2

AB = n1 n2

OB = n1 n2

Lệnh thực hiện phép tính logic Load,

And hoặc Or giữa giá trị logic 1 với

nội dung đỉnh ngăn xếp khi nội dung

2 byte n1 và n2 thỏa mãn n1 = n2

n1, n2 (byte):VB,

IB, QB, MB,

SMB, AC, hằng

số, *VD, *ACLDB > = n1 n2

AB > = n1 n2

OB > = n1 n2

Lệnh thực hiện phép tính logic Load,

And hoặc Or giữa giá trị logic 1 với

nội dung đỉnh ngăn xếp khi nội dung

2 byte n1 và n2 thỏa mãn n1 > = n2

LDB < = n1 n2

AB < = n1 n2

OB < = n1 n2

Lệnh thực hiện phép tính logic Load,

And hoặc Or giữa giá trị logic 1 với

nội dung đỉnh ngăn xếp khi nội dung

2 byte n1 và n2 thỏa mãn n1 < = n2

LDW = n1 n2

AW = n1 n2

OW = n1 n2

Lệnh thực hiện phép tính logic

Load, And hoặc Or giữa giá trị logic

1 với nội dung đỉnh ngăn xếp khi nội

dung 2 từ n1 và n2 thỏa mãn n1 = n2

n1, n2

(từ):VW, T, C,

QW, MW,

SMW, AC,

AIW, hằng số,

*VD, *AC

LDW > = n1 n2

AW > = n1 n2

OW > = n1 n2

Lệnh thực hiện phép tính logic Load,

And hoặc Or giữa giá trị logic 1 với

nội dung đỉnh ngăn xếp khi nội dung

2 từ n1 và n2 thỏa mãn n1 > = n2

LDW < = n1 n2 Lệnh thực hiện phép tính logic Load,

38

Page 39: Giao Trinh PLC In

STL Mô tả Toán hạng

AW < = n1 n2

OW < = n1 n2

And hoặc Or giữa giá trị logic 1 với

nội dung đỉnh ngăn xếp khi nội dung

2 từ n1 và n2 thỏa mãn n1 < = n2

LDD = n1 n2

AD = n1 n2

OD = n1 n2

Lệnh thực hiện phép tính logic Load,

And hoặc Or giữa giá trị logic 1 với

nội dung đỉnh ngăn xếp khi nội dung

2 từ kép n1 và n2 thỏa mãn n1 = n2

n1, n2 (từ kép)

:VD, ID, QD,

MD, SMD, AC,

HC, hằng số,

*VD, *AC

LDD > = n1 n2

AD > = n1 n2

OD > = n1 n2

Lệnh thực hiện phép tính logic Load,

And hoặc Or giữa giá trị logic 1 với

nội dung đỉnh ngăn xếp khi nội dung

2 từ kép n1 và n2 thỏa mãn n1 > = n2

LDD < = n1 n2

AD < = n1 n2

OD < = n1 n2

Lệnh thực hiện phép tính logic Load,

And hoặc Or giữa giá trị logic 1 với

nội dung đỉnh ngăn xếp khi nội dung

2 từ kép n1 và n2 thỏa mãn n1 < = n2

LDR = n1 n2

AR = n1 n2

OR = n1 n2

Lệnh thực hiện phép tính logic Load,

And, Or giữa giá trị logic 1 với nội

dung đỉnh ngăn xếp nếu hai số thực

n1 và n2 (4 byte) thỏa mãn n1 = n2

n1, n2 (từ

kép):VD, ID,

QD, MD, SMD,

AC, HC, hằng

số, *VD, *AC

LDR > = n1 n2

AR > = n1 n2

OR > = n1 n2

Lệnh thực hiện phép tính logic Load,

And, Or giữa giá trị logic 1 với nội

dung đỉnh ngăn xếp nếu hai số thực

n1 và n2 (4 byte ) thỏa mãn n1 > = n2

LDR < = n1 n2

AR < = n1 n2

OR < = n1 n2

Lệnh thực hiện phép tính logic Load,

And, Or giữa giá trị logic 1 với nội

dung đỉnh ngăn xếp nếu hai số thực

n1 và n2 (4 byte) thỏa mãn n1 < = n2

39

Page 40: Giao Trinh PLC In

Hình 3.3 Ví dụ về sử dụng lệnh so sánh

III.1.2 Lệnh nhảy chương trình con và can thiệp vòng quét

III.1.2.1 Lệnh nhảy chương trình con

Các lệnh của chương trình, nếu không có những lệnh điều khiển riêng, sẽ được thực

hiện theo thứ tự từ trên xuống dưới trong một vòng quét. Lệnh điều khiển chương trình

cho phép thay đổi thứ tự thực hiện lệnh. Chúng cho phép chuyển thứ tự thực hiện,

đáng lẽ ra là lệnh tiếp theo, tới một lệnh bất cứ nào khác của chương trình, trong đó

nơi điều khiển chuyển đến phải được đánh dấu trước bằng một nhãn, chỉ, đích. Thuộc

nhóm lệnh điều khiển chương trình gồm: lệnh nhảy, lệnh gọi chương trình con, nhãn

chỉ đích, hay gọi đơn giản là nhãn, phải được đánh dấu trước khi thực hiện lệnh nhảy

hay lệnh gọi chương trình con.

Việc đặt nhãn cho lệnh nhảy phải nằm trong chương trình. Nhãn của chương trình

con, hoặc của chương trình xử lý ngắt được khai báo ở đầu chương trình. Không thể

dùng lệnh nhảy JMP để chuyển điều khiển từ chương trình chính vào một nhãn bất kỳ

trong chương trình con hoặc trong chương trình xử lý ngắt. Tương tự như vậy cũng

không thể từ một chương trình con hay chương trình xử lý ngắt nhảy vào bất cứ một

nhãn nào nằm ngoài các chương trình đó.

Lệnh gọi chương trình con là lệnh chuyển điều khiển đến chương trình con. Khi

chương trình con thực hiện xong các phép tính của mình thì việc điều khiển lại được

chuyển trở về lệnh tiếp theo trong chương trình chính nằm ngay sau lệnh gọi chương

trình con. Từ một chương trình con có thể gọi được một chương trình con khác trong

40

Page 41: Giao Trinh PLC In

nó, có thể gọi như vậy nhiều nhất là 8 lần trong S7-200. Nói chung (trong một chương

trình con có lệnh gọi đến chính nó) về nguyên tắc không bị cấm song phải để ý đến

giới hạn trên.

Nếu lệnh nhảy hay lệnh gọi chương trình con được thực hiện thì đỉnh ngăn xếp luôn

có giá trị logic 1. Bởi vậy trong chương trình con các lệnh có điều kiện được thực hiện

như các lệnh không điều kiện. Sau các lệnh LBL (đặt nhãn) và SBR, lệnh LD trong

STL sẽ bị vô hiệu hóa.

Khi một chương trình con được gọi, toàn bộ nội dung của ngăn xếp sẽ được cất đi,

đỉnh của ngăn xếp nhận giá trị logic mới là 1, các bít khác của ngăn xếp nhận giá trị

logic 0 và điều khiển được chuyển đến chương trình con đã được gọi. Khi thực hiện

xong chương trình con và trước khi điều khiển được chuyển trở lại chương trình ðã gọi

nó, nội dung ngăn xếp đã được cất giữ trước đó sẽ được chuyển trở lại ngăn xếp.

Nội dung của thanh ghi AC không được cất giữ khi gọi chương trình con, nhưng khi

một chương trình xử lý ngắt được gọi, nội dung của thanh ghi AC sẽ được cất giữ

trước khi thực hiện chương trình xử lý ngắt và nạp lại khi chương trình xử lý ngắt đã

được thực hiện xong. Bởi vậy chương trình xử lý ngắt có thể tự do sử dụng bốn thanh

ghi AC của S7-200.

JMP, LBL, SBR, RET

Lệnh nhảy JMP và lệnh gọi chương trình con SBR cho phép chuyển điều khiển từ

vị trí này đến vị trí khác trong chương trình. Cú pháp của lệnh nhảy và lệnh gọi

chương trình con trong LAD và STL đều có toán hạng là nhãn chỉ đích (nơi nhảy đến,

nơi chứa chương trình con).

Lệnh nhảy, lệnh gọi chương trình con, lệnh khai báo nhãn và lệnh thoát khỏi

chương trình con được biểu diễn trong LAD và trong STL như sau:

LAD STL Mô tả Toán hạng

JMP n

Lệnh nhảy thực hiện

việc chuyển điều khiển

đến nhãn n trong một

chương trình.

n: 0 255

LBL n Lệnh khai báo nhãn n

trong một chương trình.

41

Page 42: Giao Trinh PLC In

LAD STL Mô tả Toán hạng

SBR n Lệnh gán nhãn n cho

một chương trình con.

RET Lệnh trở về chương trình

đã gọi chương trình con

không điều kiện.

Không có

III.1.2.2 Các lệnh can thiệp vào thời gian vòng quét

Các lệnh này được dùng để kết thúc chương trình đang thực hiện, và kéo dài trong

khoảng thời của một vòng quét.

Trong LAD và STL chương trình chính phải được kết bằng lệnh kết thúc không

điều kiện MEND. Có thể sử dụng lệnh kết thúc có điều kiện END trước lệnh kết thúc

không điều kiện.

Lệnh STOP kết thúc chương trình, nó chuyển điều khiển chương trình đến chế độ

STOP. Nếu gặp lệnh STOP trong chương trình chính hoặc trong chương trình con thì

chương trình đang thực hiện sẽ được kết thúc ngay lập tức.

Lệnh WDR sẽ khởi động lại đồng hồ quan sát (watchdog Timer) và chương trình

tiếp tục được thực hiện trong vòng quét ở chế độ quan sát.

Sử dụng lệnh END, STOP và WDR trong LAD và STL như sau:

LAD STL Mô tả

END Lệnh kết thúc chương trình chính hiện hành có điều

kiện.

STOP Lệnh STOP kết thúc chương trình hiện hành và

chuyển sang chế độ STOP.

WDR Lệnh WDR khởi tạo lại đồng hồ quan sát.

42

Page 43: Giao Trinh PLC In

III.2 Các lệnh điều khiển Timer

III.2.1 Định nghĩa

Timer là bộ tạo thời gian trễ giữa tín hiệu vào và tín hiệu ra nên trong điều khiển

vẫn thường gọi là khâu trễ. Nếu ký hiệu tín hiệu vào là x(t) và thời gian trễ được tạo ra

bằng Timer là r thì tín hiệu đầu ra của Timer đó sẽ là x (t-r).

S7-200 tùy thuộc vào từng loại CPU mà có số lượng Timer khác nhau. Thông

thường, có 3 loại Timer:

* Timer tạo thời gian trễ không có nhớ theo sườn, ký hiệu là TON.

* Timer tạo thời gian trễ theo sườn xuống, ký hiệu là TOF.

* Timer tạo thời gian trễ có nhớ, ký hiệu là TONR.

Ba kiểu Timer của S7-200 (TON, TOF và TONR) phân biệt với nhau ở phản ứng

của nó đối với trạng thái tín hiệu đầu vào, tức là khi tín hiệu đầu vào chuyển trạng thái

logic từ 0 lên 1, được gọi là thời điểm Timer được kích, và không tính khoảng thời

gian khi đầu vào có giá trị logic 0 vào thời gian trễ tín hiệu được đặt trước.

Timer TON, TOF và TONR bao gồm 3 loại với 3 độ phân giải khác nhau, độ phân

giải 1ms, 10 ms, 100 ms. Thời gian trễ r được tạo ra chính là tích của độ phân giải của

bộ Timer được chọn và giá trị đặt trước cho Timer.

Thời gian trễ = PT x độ phân giải

VD: Cần thời gian trễ là 10s

Dùng T37 – độ phân giải 100ms

10s/100ms=100 -> PT

Dùng T33 – độ phân giải 10ms -> PT=1000

Timer của S7-200 có những tính chất cơ bản sau:

Các bộ Timer được điều khiển bởi một cổng vào và giá trị đếm tức thời. Giá trị đếm

tức thời của Timer được nhớ trong thanh ghi 2 byte (gọi là T-word) của Timer, xác

định khoảng thời gian trễ kể từ khi Timer được kích. Giá trị đặt trước của các bộ Timer

được ký hiệu trong LAD và STL là PT. Giá trị đếm tức thời của thanh ghi T-word

thường xuyên được so sánh với giá trị đặt trước của Timer.

43

Page 44: Giao Trinh PLC In

Mỗi bộ Timer, ngoài thanh ghi 02 byte T-word lưu giá trị đếm tức thời, còn có 1 bít,

ký hiệu bằng T-bít, chỉ trạnh thái logic đầu ra. Giá trị logic của bít này phụ thuộc vào

kết quả so sánh giữa giá trị đếm tức thời với giá trị đặt trước.

Đối với Timer kiểu TON và TONR, trong khoảng thời gian tín hiệu x (t) có giá trị

logic 1, giá trị đếm tức thời trong T-word luôn được cập nhật và thay đổi tăng dần cho

đến khi nó đạt giá trị cực đại. Khi giá trị đếm tức thời lớn hơn hoặc bằng giá trị đặt

trước, T-bít có giá trị logic 1.

Đối với Timer kiểu TOF, khi đầu vào chuyển mức logic lên 1, giá trị đặt sẽ được đặt

về 0, khi đầu vào chuyển mức logic 0, giá trị của T-word sẽ đếm đến PT. Khi đầu vào

chuyển tử mức logic 0 lên mức logic 1 thì T-bit sẽ được set lên 1, khi đầu vào chuyển

từ 1 xuống 0, giá trị T-bit =1 và nó sẽ trở về 0 khi giá trị T-word=PT. Lưu ý, không

được sử dụng cùng một lúc hai loại Timer kiểu TON và TOF cho một địa chỉ.

Các loại Timer của S7-200 (ví dụ đối với CPU 214) chia theo TON, TOF, TONR và

độ phân giải bao gồm:

Lệnh Độ phân giải Giá trị cực đại CPU 214

TON

TOF

1 ms 32,767s T32T96

10 ms 327,67s T33T36; T97 T100

100 ms 3276,7s T37T63; T101

T127

TON

R

1 ms 32,767s T0 T64

10 ms 327,67s T1T4; T65T68

100 ms 3276,7s T5T31; T69T95

III.2.2 Khai báo và sử dụng

Cú pháp khai báo sử dụng Timer trong LAD như sau:

LAD Mô tả Toán hạng

Khai báo Timer số hiệu xx

kiểu TON để tạo thời gian trễ

tính từ khi đầu vào IN được kích.

Nếu T-word lớn hơn hoặc bằng

PT thì T-bít có giá trị logic bằng

PT: VW, T, C, IW,

QW, AIW, SMW,

AC, AIW, VD

44

Page 45: Giao Trinh PLC In

1. Có thể reset Timer kiểu TON

bằng lệnh R hoặc bằng giá trị

logic 0 tại đầu vào IN

*AC, Hằng số.

Khai báo Timer số hiệu zz

kiểu TONR để tạo thời gian trễ

tính từ khi đầu vào IN được kích.

Nếu T-word lớn hơn hoặc bằng

PT thì T-bít có giá trị logic bằng

1. Chỉ có thể reset kiểu TONR

bằng lệnh R cho T-bít

Khai báo Timer số hiệu yy

kiểu TOF để tạo trễ tính từ khi

đầu vào IN chuyển từ 1 xuống 0.

Reset kiểu TOF bằng lệnh R.

Cú pháp khai báo sử dụng Timer trong STL như sau:

TON, TONR khai báo sử dụng Timer của S7-200, lệnh khai báo sử dụng Timer là

lệnh có điều kiện. Tại thời điểm khai báo tín hiệu đầu vào có giá trị logic bằng giá trị

logic của bít đầu tiên trong ngăn xếp.

STL Mô tả Toán hạng

TON Txx n

Khai báo Timer số hiệu xx kiểu

TON để tạo thời gian trễ tính từ khi

bít đầu tiên trong ngăn xếp có giá trị

logic 1. Nếu như giá trị đếm tức thời

lớn hơn hoặc bằng giá trị đặt trước n

thì T-bít có giá trị logic bằng 1. Có

thể reset Timer kiểu TON bằng lệnh

R hoặc bằng giá trị logic 0 tại đầu

vào.

n (word) :VW, T,

C, IW,QW, AIW,

SMW,

AC, AIW, VD

*AC, Hằng số

TONR Tzz

n

Khai báo Timer số hiệu zz kiểu

TONR để tạo thời gian trễ tính từ

khi bít đầu tiên trong ngăn xếp có

45

Page 46: Giao Trinh PLC In

giá trị logic 1. Nếu như giá trị đếm

tức thời lớn hơn hoặc bằng giá trị

đặt trước n thì T-bít có giá trị logic

bằng 1. Chỉ có thể reset Timer kiểu

TONR bằng lệnh R cho T-bít

TOF Tyy n Khai báo Timer số hiệu yy kiểu

TOF để tạo thời gian trễ tính từ khi

bít đầu tiên trong ngăn xếp có giá trị

logic từ 1 xuống 0

Chú ý: Khi sử dụng Timer kiểu TONR, giá trị đếm tức thời được lưu lại và không bị

thay đổi trong khoảng thời gian khi tín hiệu đầu vào có logic 0. Giá trị của T-bít không

được nhớ mà hoàn toàn phụ thuộc vào kết quả so sánh giữa giá trị đếm tức thời và giá

trị đặt trước.

Các Timer được đánh số từ 0 đến 127 (đối với CPU 21x) hoặc 255 (CPU 22x). Một

Timer được đặt tên là Txx, trong đó xx là số hiệu của Timer. Txx đồng thời cũng là địa

chỉ hình thức của T-word và T-bít vẫn được phân biệt với nhau nhờ kiểu lệnh sử dụng

với Txx. Khi dùng lệnh làm việc với từ, Txx được hiểu là địa chỉ của T-word, ngược

lại khi sử dụng lệnh làm việc với tiếp điểm, Txx được hiểu là địa chỉ của T-bít.

Một Timer đang làm việc có thể được đưa lại về trạng thái khởi động ban đầu. Công

việc đưa một Timer về trạng thái ban đầu được gọi là reset Timer đó.

Khi reset một bộ Timer, T-word và T-bít của nó đồng thời được xóa và có giá trị

bằng 0, như vậy giá trị đếm tức thời được đặt về 0 và tín hiệu đầu ra cũng có trạng thái

logic bằng 0. Có thể reset bất cứ bộ Timer của S7-200 bằng lệnh R (reset). Điều đó nói

rằng khi dùng lệnh R cho T-bít của một Timer, Timer đó sẽ được đưa về trạng thái ban

đầu và lệnh R cho một Txx vừa xóa T-word vừa xóa T-bít của Timer đó.

Lưu ý về cách sử dụng các độ phân giải của Timer (xét chương trình sau):

. Đầu tiên bộ định thời với độ phân giải 1 ms được sử dụng (T32, giá trị đặt trước

300). Q0.0 sẽ có giá trị bằng 1 (ON) trong thời gian một vòng quét khi và chỉ khi nào

thời điểm cập nhật của bộ định thời mà giá trị đếm vượt qua giá trị đặt trước rơi vào

46

Page 47: Giao Trinh PLC In

đúng giữa lúc thực hiện hai lệnh này. Nghĩa là sau khi lệnh trước được thực hiện

nhưng phải trước khi thực hiện lệnh sau

. Nếu sử dụng bộ định thời với độ phân giải 10 ms (T33, giá trị đặt trước 30), Q0.0

không bao giờ có giá trị 1 (luôn luôn OFF)

. Trường hợp cuối cùng sử dụng bộ định thời với độ phân giải 100 ms (T37, giá trị

đặt trước bằng 3). Q0.0 luôn luôn có giá trị bằng 1 (ON) trong đúng thời gian một

vòng quét

Để đảm bảo chắc chắn Q0.0 sẽ có giá trị 1 (ON) trong thời gian một vòng quét, ta

phải dùng công tắc thường đóng Q0.0 để kích hoạt các bộ định thời thay vì dùng công

tắc thường đóng với bit trạng thái của nó.

Hình 3.4 Ví dụ về sử dụng độ phân giải của Timer

47

Page 48: Giao Trinh PLC In

Ví dụ về sử dụng Timer

TON:

Hình 3.5 Ví dụ về sử dụng Timer kiểu TON

Khi ngõ vào I0.0 =1 Timer T37 được kích , Nếu sau 10x100ms =1s I0.0 vẫn giữ

trạng thái thì Bit T37 sẽ lên 1 ( Khi đó Q0.0 lên 1). Nếu I0.0 =1 không đủ thời gian 1S

thì bit T37 sẽ không lên 1

TOF:

Hình 3.6 Ví dụ về sử dụng Timer kiểu TOF

Khi Ngõ vào I0.0 = 1 thì bit T33 lên 1 (Ngõ ra Q0.0 lên 1). Khi I0.0 xuống 0,thời

gian Timer bắt đầu tính ,đủ thời gian 1s = 100x10ms thì bit T33 sẽ tắt (Q0.0 tắt). Nếu

I0.0 xuống 0 trong khoảng thời gian chưa đủ 1s đã lên 1 lại thì bit T33 vẫn giữ nguyên

trạng thái

48

Page 49: Giao Trinh PLC In

TONR:

Ngõ vào I0.0 có tác dụng kích thời gian cho Timer, khi ngõ I0.0 =1 thời gian Timer

được tính,khi I0.0=0 thời gian không bị Reset về 0.Khi đủ thời gian thì Bit T1 sẽ lên 1.

Thời gian Timer chỉ bị Reset khi có tín hiệu Reset Timer ( tín hiệu từ ngõ I0.1)

Hình 3.7 Ví dụ về sử dụng Timer kiểu TONR

49

Page 50: Giao Trinh PLC In

III.3 Các lệnh điều khiển Counter

III.3.1 Định nghĩa

Counter là bộ đếm hiện chức năng đếm sườn xung lên trong S7-200. Các bộ đếm

của S7-200 được chia ra làm 3 loại: bộ đếm tiến (CTU), đếm lùi (CTD) và bộ đếm

tiến/lùi (CTUD).

- Bộ đếm tiến CTU đếm số sườn lên của tín hiệu logic đầu vào, tức là đếm số lần

thay đổi trạng thái logic từ 0 lên 1 của tín hiệu. Số sườn xung đếm được, được

ghi vào thanh ghi 2 byte của bộ đếm, gọi là thanh ghi C-word. Nội dung của C-

word, gọi là giá trị đếm tức thời của bộ đếm, luôn được so sánh với giá trị đặt

trước của bộ đếm được ký hiệu là PV. Khi giá trị đếm tức thời bằng hoặc lớn

hơn giá trị đặt trước này thì bộ đếm báo ra ngoài bằng cách đặt giá trị logic 1

vào một bít đặc biệt của nó, được gọi là C-bít. Trường hợp giá trị đếm tức thời

nhỏ hơn giá trị đặt trước thì C-bít có giá trị logic là 0. Khác với các bộ Counter,

các bộ đếm CTU đều có chân nối với tín hiệu điều khiển xóa để thực hiện việc

đặt lại chế độ khởi phát ban đầu (reset) cho bộ đếm, được ký hiệu bằng chữ cái

R trong LAD hay được qui định là trạng thái logic của bít đầu tiên của ngăn xếp

trong STL. Bộ đếm được reset khi tín hiệu xóa này có mức logic là 1 hoặc khi

lệnh R (reset) được thực hiện với C-bít. Khi bộ đếm được reset, cả C-word và

C-bít đều nhận giá trị 0.

- Bộ đếm lùi CTD đếm số sườn lên của tín hiệu logic đầu vào, tuy nhiên khác với

đếm lùi, để bộ đếm có thể thực hiện được thì phải có tín hiệu đầu vào gọi là tín

hiệu kích hoạt (LD). Khi chưa có tín hiệu kích, nếu có sườn lên logic đầu vào,

tại thời điểm đó C-word = 0 thì bộ đếm sẽ không hoạt động. Nếu tín hiệu kích

hoạt = 1 thì C-word sẽ được nạp bởi giá trị đặt, và ứng với mỗi sườn lên đầu

vào, giá trị C-word sẽ bị giảm đi một đơn vị, khi đếm tới 0, nó sẽ dừng đếm.

Trong quá trình C-word >0, C-bit = 1. Bộ đếm lùi không có chân Reset.

- Bộ đếm tiến/ lùi CTUD đếm tiến khi gặp sườn lên của xung vào cổng đếm, ký

hiệu là CU trong LAD hoặc bít thứ 3 của ngăn xếp trong STL, và đếm lùi khi

gặp sườn của xung vào cổng đếm lùi, được ký hiệu là CD trong LAD hoặc bít

thứ 2 của ngăn xếp trong STL. Giống như bộ đếm CTU, bộ đếm CTUD cũng

50

Page 51: Giao Trinh PLC In

được đưa về trạng thái khởi phát ban đầu bằng 2 cách. Khi đầu vào logic của

chân xóa, ký hiệu bằng R trong LAD hoặc bít thứ nhất của ngăn xếp trong STL,

có giá trị logic là 1 hoặc bằng lệnh R (reset) với C-bít của bộ đếm. CTUD có

giá trị đếm tức thời đúng bằng giá trị đang đếm và được lưu trong thanh ghi 2

byte C-word của bộ đếm. Giá trị đếm tức thời luôn được so sánh với giá trị đặt

trước PV của bộ đếm. Nếu giá trị đếm tức thời lớn hơn bằng bằng giá trị đặt

trước thì C-bít có giá trị logic bằng 1. Còn các trường hợp khác C-bít có giá trị

logic bằng 0.

III.3.2 Khai báo và sử dụng

Các bộ đếm được đánh số từ 0 đến 127/(256) CPU 214/(224) và ký hiệu bằng Cxx,

trong đó xx là số thứ tự của bộ đếm. Ký hiệu Cxx đồng thời cũng là địa chỉ hình thức

của C-word và của C-bít. Mặc dù dùng địa chỉ hình thức, song C-word và C-bít vẫn

được phân biệt với nhau nhờ kiểu lệnh sử dụng làm việc với từ hay với tiếp điểm (bít).

Lệnh khai báo sử dụng bộ đếm trong LAD như sau:

LAD Mô tả Toán hạng

Khai báo bộ đếm tiến theo sườn

lên của CU. Khi giá trị đếm tức

thời C-word>= PV, C-bit có giá

trị 1. Bộ đếm được reset khi đầu

vào R có giá trị logic bằng 1. Bộ

đếm ngừng đếm khi C-word đạt

giá trị cực đại 32.767.

PV (word) :

VW, T, C, IW,

QW, MW, SMW,

AC,

AIW, Hằng số,

*VD, *AC

Khai báo bộ đếm theo sườn lên

của CD. Khi đầu vào CD chuyển

mức logic từ 0 lên 1, giá trị C-

word sẽ giảm đi 1 đơn vị (với

điều kiện C-word >0). Nếu đầu

vào LD chuyển từ 0 lên 1, giá trị

PV sẽ nạp vào C-word. Đếm tới

0 sẽ dừng, trong khoảng C-

word>0, C-bit =1

51

Page 52: Giao Trinh PLC In

Khi báo bộ đếm tiến/lùi, đếm

tiến theo sườn lên của CU và

đếm lùi theo sườn lên của CD.

Khi giá trị đếm tức thời C-word

Cxx >= PV, C-bít (cxx) có giá trị

logic bằng 1. Bộ đếm ngừng

đếm tiến khi C-word đạt giá trị

cực đại 32.767, ngừng đếm lùi

khi C-word đạt cực tiểu -32.767

CTUD reset khi đầu vào R có

giá trị logic bằng 1.

PV

(word):VW,T, C,

IW, QW, MW,

SMW, AC,A IW,

Hằng số, *VD,

*AC

Lệnh khai báo sử dụng bộ đếm trong STL như sau:

STL Mô tả Toán hạng

CTU Cxx n

Khai báo bộ đếm tiến theo sườn lên

cùa CU. Khi giá trị đếm tức thời C-

word lớn hơn hoặc bằng giá trị đặt

trước n, C-bít có giá trị logic bằng 1.

Bộ đếm được reset khi đầu ngăn xếp

có giá trị logic bằng 1. Bộ đếm ngừng

đếm khi C-word đạt giá trị cực đại

32.767.

n (word):VW,

T, C, IW, QW,

MW, SMW, AC,

AIW, Hằng số.

*VD, *AC

CTD Cxx n Khai báo bộ đếm lùi theo sườn xuống

CTUD Cxx

n

Khai báo bộ đếm tiến/lùi, đếm tiến

theo sườn lên của CU và đếm lùi theo

sườn lên của CD. Khi giá trị đếm tức

thời C-word, Cxx lớn hơn hoặc bằng

giá trị đặt trước n, C-bít có giá trị

logic bằng 1, bộ đếm ngừng đếm tiến

khi C-word đạt giá trị cực đại 32.767

và ngừng đếm lùi khi C-word đạt

được giá trị cực tiểu 32.767 CTUD

Cxx: C48

C79

n (word) : VW,

T, C, IW, QW,

MW, SMW, AC,

AIW, Hằng số,

*VD, *AC

52

Page 53: Giao Trinh PLC In

reset khi bít đầu của ngăn xếp có giá

trị logic bằng 1.

Ví dụ về sử dụng các bộ đếm lùi, đếm tiến lùi:

Đếm tiến CTU:

Hình 3.8 Ví dụ về sử dụng bộ đếm tiến

Mô tả: Mỗi lần có một sườn cạnh lên ở chân CU, giá trị bộ đếm (1 Word) được tăng

lên 1.Khi giá trị hiện tại lớn hơn hoặc bằng giá trị đặt PV(Preset value), ngõ ra sẽ được

bật lên ON. Khi chân Reset được kích (sườn lên) giá trị hiện tại bộ đếm và ngõ ra được

trả về 0. Bộ đếm ngưng đếm khi giá trị bộ đếm đạt giá trị tối đa là 32767

Đếm lùi CTD:

Hình 3.9 Ví dụ về sử dụng bộ đếm lùi

53

Page 54: Giao Trinh PLC In

Mô tả: Khi chân LD được kích (sườn lên) giá trị PV được nạp cho bộ đếm. Mỗi lần có

một sườn cạnh lên ở chân CD, giá trị bộ đếm (1 Word) được giảm xuống 1.Khi giá trị

hiện tại của bộ đếm bằng 0, ngõ ra sẽ được bật lên ON và bộ đếm sẽ ngưng đếm.

Đếm tiến lùi CTUD:

Hình 3.10 Ví dụ về sử dụng bộ đếm tiến lùi

Mô tả: Mỗi lần có một sườn cạnh lên ở chân CU, giá trị bộ đếm (1 Word) được tăng

lên 1. Mỗi lần có một sườn cạnh lên ở chân CD, giá trị bộ đếm được giảm xuống 1.Khi

giá trị hiện tại lớn hơn hoặc bằng giá trị đặt PV(Preset value), ngõ ra sẽ được bật lên

ON. Khi chân R được kích (sườn lên) giá trị bộ đếm và ngõ Out được trả về 0. Giá trị

cao nhất của bộ đếm là 32767 và thấp nhất là –32768. Khi giá trị bộ đếm đạt ngưỡng.

54

Page 55: Giao Trinh PLC In

III.4 Các lệnh dữ liệu

III.4.1 Các lệnh số học

a. Lệnh cộng (ADD)

Lệnh ADD_I

Là lệnh thực hiện phép cộng các số nguyên 16-bít IN1 và IN2.

Trong LAD kết quả là một số nguyên 16-bít được ghi vào OUT, tức là:

IN1 + IN2 = OUT.

Còn trong STL, kết quả cũng là một giá trị 16-bít nhưng được ghi vào IN2, tức là

IN1 + IN2 = IN2.

Lệnh ADD_DI:

Là lệnh thực hiện phép cộng các số nguyên 32-bít IN1 và IN2

Trong LAD, kết quả là một số nguyên 32-bít được ghi vào OUT, tức là:

IN1 + IN2 = OUT.

Còn trong STL, kết quả cũng là một giá trị 32-bít nhưng được ghi vào IN2, tức là

IN1 + IN2 = IN2.

Lệnh ADD_R:

Là lệnh thực hiện phép cộng các số thực 32-bít IN1 và IN2.

Trong LAD, kết quả là một số thực 32-bít được ghi vào OUT, tức là:

IN1 + IN2 = OUT.

Còn trong STL, kết quả cũng là một giá trị thực 32-bít nhưng được ghi vào IN2, tức

là IN1 + IN2 = IN2.

b. Lệnh trừ (SUB)

Lệnh SUB_I:

Là lệnh thực hiện phép trừ các số nguyên 16-bít IN1 và IN2

Trong LAD kết quả là một số nguyên 16-bít và được ghi vào OUT, tức là:

IN1 - IN2 = OUT.

Còn trong STL, kết quả là một giá trị 16-bít nhưng được ghi lại vào IN2, tức là IN1-

IN2 = IN2.

Lệnh SUB-DI:

Là lệnh thực hiện phép trừ các số nguyên 32-bít IN1 và IN2

55

Page 56: Giao Trinh PLC In

Trong LAD kết quả là một số nguyên 32-bít được ghi vào IN2, tức là:

IN1 - IN2 = IN2.

Còn trong STL, kết quả là một giá trị 32-bít nhưng được ghi lại vào IN2, tức là IN1-

IN2 = IN2.

Lệnh SUB_R:

Là lệnh thực hiện phép trừ các số thực 32-bít IN1 và IN2

Trong LAD kết quả là một số thực 32-bít được ghi vào OUT, tức là:

IN1 - IN2 = OUT.

Trong STL, kết quả là một giá trị 32-bít nhưng được ghi lại vào IN2, tức là IN1-

IN2 = IN2.

Cú pháp dùng lệnh cộng và trừ trong LAD và STL như sau:

LAD STL

+ I IN1 IN2

- I IN1 IN2

Đối với các dạng dữ liệu khác, chỉ thay thế kiểu dữ liệu sử dụng. Ví dụ: dùng phép

cộng trừ kiểu W, thay kiểu dữ liệu I bằng kiểu dữ liệu W.

c. Lệnh nhân (MUL)

Lệnh MUL:

Trong LAD: Lệnh thực hiện phép nhân 2 số nguyên 16-bít IN1 và IN2 và cho ra kết

quả 32-bít chứa trong từ kép OUT (4 byte).

Trong STL: Lệnh thực hiện phép nhân giữa 2 số nguyên 16-bít n1 và số nguyên

chứa trong từ thấp (từ 0 đến bít 15) của toán hạng 32-bít n2 (4 byte). Kết quả 32-bít

được ghi vào n2.

Lệnh MUL_R:

Trong LAD: lệnh thực hiện phép nhân hai số thực 32-bít IN1 và IN2 và cho ra kết

quả 32-bít chứa trong từ kép OUT (4 byte).

56

Page 57: Giao Trinh PLC In

Trong STL: Lệnh thực hiện phép nhân giữa số thực 32-bít được ghi vào IN2.

d. Lệnh chia (DIV)

Trong LAD: Lệnh thực hiện phép chia số nguyên 16-bít IN1 cho số nguyên 16-bít

IN2. Kết quả 32-bít chứa trong từ kép OUT gồm thương số ghi trong mảng 16-bít từ

bít 0 đến bít15 (từ thấp) và phần dư cũng 16-bít ghi trong mảng từ bít-16 đến bít-31 (từ

cao).

Trong STL: Lệnh thực hiện phép chia số nguyên 16-bít n1 cho số nguyên, số

nguyên 16-bít nằm trong từ thấp từ bít 0 đến bít 15 của toán hạng 32-bít n2. Kết quả

32-bít được ghi lại vào n2 bao gồm thương số ghi trong mảng 16-bít từ bít 0 đến bít 15

(từ thấp) và phần dư ghi trong mảng 16-bít từ bít-16 đến bít-31 (từ cao).

Lệnh DIV_R:

Trong LAD: lệnh thực hiện phép chia số thực 32-bít IN1 cho số thực 32-bít IN2 và

cho ra kết quả 32-bít chứa trong từ kép OUT.

Trong STL, lệnh thực hiện phép chia số thực 32-bít IN1 cho số thực 32-bít IN2, kết

quả 32-bít được ghi lại vào IN2.

e. Lệnh lấy căn bậc 2 (SQRT)

Là lệnh thực hiện lấy căn bậc hai của số thực 32-bít IN. Kết quả là một số 32-bít

được ghi vào từ kép OUT.

III.4.2 Các lệnh dịch chuyển nội dung ô nhớ

Các lệnh dịch chuyển nội dung ô nhớ thực hiện việc di chuyển hoặc sao chép số liệu

từ vùng này sang vùng khác trong bộ nhớ.

Trong LAD hay trong STL lệnh dịch chuyển thực hiện việc di chuyển hay sao chép

nội dung của một byte, một từ đơn, một từ kép hoặc một giá trị thực từ vùng này sang

vùng khác trong bộ nhớ.

Lệnh MOV_B, MOV_R, MOV_W, MOV_DW

Là lệnh sao chép nội dung của byte IN sang byte OUT.

Cú pháp dùng lệnh MOV_B trong LAD hay MOVB trong STL như sau:

LAD STL

57

Page 58: Giao Trinh PLC In

MOVB IN OUT

Tương tự như vậy đối với các kiểu dữ liệu khác.

Các lệnh dịch chuyển thanh ghi

Các lệnh dịch chuyển thanh ghi được chia làm hai nhóm:

Nhóm các lệnh làm việc với thanh ghi có độ dài bằng một từ đơn (16-bít) hay

một từ kép (32-bít).

Nhóm các lệnh làm việc với thanh ghi có độ dài tùy ý mà được định nghĩa trong

lệnh.

Nhóm lệnh với thanh ghi có độ dài 16 hoặc 32 bít.

Lệnh dịch chuyển thuộc nhóm này cho phép dịch chuyển và quay các bít trong các

từ đơn và trong các từ kép.

Số lần dịch chuyển các bít của từ đơn hay từ kép được chỉ thị bằng một toán hạng

trong được gọi là số lần đếm đẩy.

Số lần quay các bít của từ đơn hay từ kép cũng được chỉ thị bằng một toán hạng

trong lệnh, được gọi là số lần đếm quay.

Khi sử dụng các lệnh dịch chuyển các bít của từ đơn hay từ kép cần chú ý:

Sẽ không thực hiện việc dịch chuyển nếu như số đếm lần đẩy bằng 0.

Nếu số lần đẩy có giá trị lớn hơn 0, bít nhớ tràn SM1.1 có giá trị logic của bít cuối

cùng được đẩy ra.

Nếu số đếm lần đẩy lớn hơn hoặc bằng 16 (từ đơn), lớn hơn hoặc bằng 32 (từ kép)

khi dịch chuyển thì lệnh sẽ chỉ thực hiện với số đếm lần đẩy lớn nhất là 16 hoặc 32.

Lệnh SRW (đẩy các bít từ đơn sang phải) và SDR (đẩy các bít từ kép sang phải) sẽ

chuyển giá trị 0 vào bít cao nhất của từ hoặc từ kép tại mỗi lần đẩy. Sau khi thực hiện

lệnh, bít SM1.1 sẽ có giá trị của bít thứ N-1 của từ đơn hoặc từ kép với N là số lần đẩy.

Lệnh SLW (đẩy các bít từ đơn sang trái) và SRD (đẩy các bít từ kép sang trái) sẽ

chuyển giá trị logic 0 vào bít thấp nhất của từ hoặc từ kép tại mỗi lần đẩy. Sau khi thực

hiện lệnh, bít SM1.1 sẽ có giá trị của bít thứ 16-N đối với từ đơn hoặc 32-N đối với từ

kép, trong đó N là số lần đẩy.

58

Page 59: Giao Trinh PLC In

Bít báo kết quả 0 (bít SM1.0) sẽ có giá trị logic bằng 1 nếu như sau khi thực hiện

lệnh đẩy nội dung của từ đơn hay từ kép bằng 0.

Khi sử dụng lệnh quay các bít của từ đơn hay từ kép cần chú ý:

Lệnh quay thực hiện phép đẩy vòng tròn sang trái hay phải các bít của một từ đơn

hoặc của một từ kép. Tại mỗi lần quay, giá trị logic của bít bị đẩy ra khỏi đầu này cũng

là giá trị logic được đưa vào đầu kia của từ hay của từ kép.

Lệnh quay sẽ không thực hiện nếu như số đếm lần quay có giá trị là 0 hay bằng bội

số của 16 (với từ đơn) hoặc 32 (với từ kép).

Đối với các giá trị khác của số đếm lần quay lớn hơn 16 (đối với từ đơn) hoặc 32

(đối với từ kép), lệnh sẽ thực hiện với số đếm lần quay mới bằng phần dư của số đếm

lần quay cũ chia cho 16 hoặc chia cho 32.

Khi thực hiện lệnh quay sang phải RRW (với từ đơn) hay RRD (với từ kép), tại mỗi

lần quay giá trị thấp nhất trong từ hoặc từ kép được ghi vào bít báo tràn SM1.1. Sau

khi lệnh được thực hiện xong bít SM1.1 sẽ có giá trị logic bít 16-N của từ đơn hoặc

32-N của từ kép, trong đó N là số đếm lần quay.

Khi thực hiện lệnh quay sang trái RLW (với từ đơn) hay RLD (với từ kép) tại mỗi

lần quay, giá trị logic của bít cao nhất trong từ hoặc từ kép được ghi vào bít báo tràn

SM1.1. Sau khi lệnh được thực hiện xon bít SM1.1 sẽ có giá trị logic bít thứ N-1 trong

từ đơn hoặc từ kép, trong đó N là số đếm lần quay (mới).

Bít báo kết quả 0 (bít SM1.0) sẽ có giá trị logic 1 nếu từ hay từ kép được quay có

giá trị bằng 0.

Lệnh SHR_B (W, R, D):

Là lệnh dịch chuyển các bít của từ đơn IN sang phải N vị trí, trong đó N được gọi là

số đếm lần dịch chuyển. Tại mỗi lần dịch chuyển, giá trị logic 0 được đưa vào bít cao

(bít thứ 15) và giá trị logic của bít thấp (bít 0) được chuyển vào bít báo tràn SM1.1.

Trong LAD kết quả được ghi vào OUT, còn trong STL kết quả vẫn nằm trong IN.

Cú pháp của lệnh như sau:

LAD STL

59

Page 60: Giao Trinh PLC In

SRW IN N

Tương tự như vậy đối với các kiểu dữ liệu khác.

III.4.3 Hàm đổi dữ liệu tương ứng thanh ghi 7 nét

Hàm SEG chuyển đổi số nguyên hệ cơ số Hexa trong khoảng 0 F sang thành giá

trị bit tương ứng của thanh ghi 7 nét.

Hàm SEG lập giá trị các bit của thanh ghi 7 nét tương ứng với nội dung của 4 bit

thấp của byte đấu vào IN. Kết quả được ghi cào byte đầu ra OUT

Sơ đồ các bit của thanh ghi 7 nét

Số

nguyên

Thanh ghi 7 nét

- g f e d c b a

0 0 0 1 1 1 1 1 1

1 0 0 0 0 0 1 1 0

2 0 1 0 1 1 0 1 1

3 0 1 0 0 1 1 1 1

4 0 1 1 0 0 1 1 0

5 0 1 1 0 1 1 0 1

6 0 1 1 1 1 1 1

7 0 0 0 0 0 1 1 1

8 0 1 1 1 1 1 1 1

9 0 1 1 0 0 1 1 1

A 0 1 1 1 0 1 1 1

B 0 1 1 1 1 1 0 0

C 0 0 1 1 1 0 0 1

D 0 1 0 1 1 1 1 0

E 0 1 1 1 1 0 0 1

F 0 1 1 1 0 0 0 1

LAD STL Toán hạng

60

a

b

c

d

e

fg

Page 61: Giao Trinh PLC In

SEG IN OUT

IN (Byte) :VB, IB,

QB, MB, SMB, AC,

*VD, *AC, hằng số

OUT(byte): VB, IB,

QB, MB, SMB, AC,

*VD, *AC

III.4.4 Đồng hồ thời gian thực

Đồng hồ tời gian thực chỉ có ở CPU 214. Để có thể làm việc với đồng hồ thời gian

thực CPU 214 cung cấp hai lệnh đọc và ghi giá trị cho đồng hồ. Những giá trị đọc

được hoặc ghi được với đồng hồ thời gian thực là các giá trị về ngày, thánh, năm, và

các giá trị giờ, phút, giây. Các dữ liệu đọc, ghi với đồng hồ thời gian thực trong LAD

và trong STL có độ dài một byte và phải được mã hóa theo kiểu số nhị phân BCD.

Byte 0 Năm ( 0 99)

Byte 1 Tháng(0 12)

Byte 2 Ngày (0 31)

Byte 3 Giờ (0 23)

Byte 4 Phúc (0 59)

Byte 5 Giây (0 59)

Byte 6 0

Byte 7 0 ngày trong tuần

Các dữ liệu hợp lệ là:

Năm (yy) Tháng (mm) Ngày (dd) Giờ (hh) Phút (mm) Giây (ss)

0 99 1 12 1 31 0 23 0 59 0 59

Riêng giá trị về ngày trong tuần là một số tương ứng với nội dung của nibble(4 bit)

thấp trong byte theo kiểu:

Chủ nhật Thứ hai Thứ ba Thứ tư Thứ năm Thứ sáu Thứ bảy

1 2 3 4 5 6 7

61

Page 62: Giao Trinh PLC In

READ_RTC (LAD)

TODR (STL)

Lệnh đọc nội dung của đồng hồ thời gian thực với bộ đệm 8 byte được chỉ thị trong

lệnh bằng toán hạng T.

SET_RTC (LAD)

TODW (STL)

Lệnh ghi nội của bộ đệm 8 byte được chỉ thị trong lệnh bằng toán hạng T vào đồng

hồ thời gian thực.

Cú pháp sử dụng lệnh đọc, ghi dữ liệu với đồng hồ thời gian thực trong LAD, STL:

LAD STL Toán hạng

TODR T

T(byte) : VB, IB,

QB, MB, SMB,

*VD, *ACTODW T

Tuyệt đối không sử dụng lệnh TODR và lệnh TODW đồng thời vừa trong chương

trình chính, vừa trong chương trình xử lý ngắt. Khi một lệnh TODR hay TODW đã

được thực hiện, thì khi gọi chương trình xử lý ngắt, các lệnh làn việc với đồng hồ thời

gian thực trong chương trình xử lý ngắt sẽ không được thục hiện nữa. Bit SM4.5 sẽ có

logic 1 trong những trường hợp như vậy.

III.4.5 Lệnh truyền thông

III.4.5.1 Lệnh truyền (XMT), nhận (RCV)

Được sử dụng trong chế độ truyền thông freeport để truyền dữ liệu qua cổng truyền

thông. Việc nhận dữ liệu qua Port giao tiếp được thực hiện bằng 2 cách:

- Có thể thực hiện việc nhận dữ liệu bằng lệnh RCV ( hoàn toàn tương tự việc

truyền dữ liệu)

62

Page 63: Giao Trinh PLC In

- Nhận dữ liệu bằng cách dùng ngắt thông qua Port giao tiếp,phương pháp này

thường được dùng nhiều hơn,do phương pháp này có thể quản lí được số lượng

Byte truyền nhận dễ dàng hơn.

LAD STL

XMT Table, Port

RCV Table, Port

Bit EN: tín hiệu cho phép truyền dữ liệu qua cổng Com

TBL : VB,MB,IB,QB.SMB,*LD,*AC,*VD

Port : 0 cho CPU 221,222,224

0,1 cho CPU 224XP,CPU226

Ví dụ về sử dụng lệnh truyền thông: Muốn truyền các ký từ: “T” “R” “I” qua port 0.

Ta thực hiện như sau, với 3 là số chuỗi truyền đi, sử dụng VB làm biến truyền.

63

Page 64: Giao Trinh PLC In

III.4.5.2 Xuất, nhận dữ liệu qua cổng giao tiếp

S7_200 thông thường cho phép ta sử dụng các Port giao tiếp để giao tiếp với

các thiết bị bên ngoài,Trường hợp CPU sử dụng có 2 Port giao tiếp thì ta cũng có thể

sử dụng cả 2 Port giao tiếp để có thể giao tiếp với các thiết bị bên ngoài ( Như : Giao

tiếp 485 với đầu cân,giao tiếp với các đầu đo điện…….).

a, Xuất dữ liệu

Để thực hiện việc xuất dữ liệu ra Port giao tiếp ta thực hiện như sau:

Bước 1: Định dạng cho việc giao tiếp qua Port (Tốc độ Baud,số Bit dữ liệu…) thông

qua 2 byte SMB30 (cho Port 0),SMB130 (cho Port 1)

Bước 2: Thực hiện việc xuất dữ liệu

64

Page 65: Giao Trinh PLC In

Bảng 4.1 Định dạng giao tiếp qua Port

Ví dụ:

Định dạng giao tiếp Port 0 (No Parity, 8

data bits per character, tốc độ baud 9600,

chế độ Freeport protocol)

Xuất dữ liệu qua Port 0.

TBL = VB200

b, Nhận dữ liệu

Để thực hiện việc nhận dữ liệu qua Port giao tiếp ,trước hết ta cũng phải định

dạng giao thức cho việc giao tiếp giống như phần xuất dữ liệu ra Port giao tiếp. Để

thực hiện việc nhận dữ liệu,ta thực hiện việc liên kết sự kiện nhận dữ liệu qua Port

giao tiếp ( Sự kiện số 8 cho Port 0,sự kiện số 25 cho Port 1).

Ví dụ:

65

Page 66: Giao Trinh PLC In

Liên kết sự kiện ngắt số 8 với

chương trình ngắt INT_0 ( sự

kiện nhận dữ liệu qua Port giao

tiếp)

Cho phép ngắt (ENI)

Con trỏ trỏ tới ô nhớ VB300

Dữ liệu sau khi nhận được đưa

vào con trỏ AC1 (tức là đưa

vào VB300),sau đó tăng con trỏ

lên 1. Con trỏ đang ở VB301

Tăng con trỏ lên 1

Sau đó sẽ gọi chương trình con để xử lí chuỗi dữ liệu vừa mới nhận đó.

Ngoài ra, còn có các lệnh về đọc (NETR), ghi (NETW) trên mạng. Lệnh thiết lập cổng

giao tiếp (GET_ADDR và SET_ADDR).

66

Page 67: Giao Trinh PLC In

Chương 4 PLC S7-300 Siemens và ngôn ngữ lập trình

IV.1 Giới thiệu về PLC S7-300

IV.1.1 Tổng quan chung

Đây là dòng sản phẩm cao cấp, được dùng cho những ứng dụng lớn với những yêu

cầu I/O nhiều và thời gian đáp ứng nhanh,yêu cầu kết nối mạng,và có khả năng mở

rộng cho sau này. Ngôn ngữ lập trình đa dạng cho phép người sử dụng có quyền chọn

lựa. Đặc điểm nổi bật của S7_300 đó là ngôn ngữ lập trình cung cấp những hàm toán

đa dạng cho những yêu cầu chuyên biệt như : Hàm SCALE….. hoặc ta có thể sử dụng

ngôn ngữ chuyên biệt để xây dựng hàm riêng cho ứng dụng mà ta cần. Ngoài ra S7-

300 còn xây dựng phần cứng theo cấu trúc Modul, nghĩa là đối với S7-300 sẽ có

những Modul tích hợp cho những ứng dụng đặc biệt như Modul PID, Modul Đọc xung

tốc độ cao….

Các loại tín hiệu kết nối với PLC bao gồm:

a, Tín hiệu số: Là các tín hiệu thuộc dạng hàm Boolean, dạng tín hiệu chỉ có 2 trị 0

hoặc 1.

Đối với PLC Siemens :

Mức 0: tương ứng với 0V hoặc hở mạch

Mức 1: Tương ứng với 24V

Vd: Các tín hiệu từ nút nhấn, từ các công tắc hành trình….. đều là những tín

hiệu số

b, Tín hiệu tương tự: Là tín hiệu liên tục, từ 0-10V hay từ 4-20mA….

Vd: Tín hiệu đọc từ Loadcell,từ cảm biến lưu lượng…

c, Tín hiệu khác: Bao gồm các tín hiệu giao tiếp với máy tính, với các thiết bị ngoại

vi khác bằng các giao thức khác nhau như giao thức RS232,RS485,Modbus….

67

Page 68: Giao Trinh PLC In

Hình 4.1 Cấu trúc chung của PLC S7-300

(1: Nguồn; 2:Khe cắm; 3: Nguồn ra 24V; 4: công tắc; 5: đèn báo; 6: khe cắm thẻ

nhớ; 7: cổng truyền thong MPI-Profibus DP; 8: giắc cắm SM; 9: sơ đồ đấu dây)

IV.1.2 Cấu trúc phần cứng

PLC S7-300 bao gồm các module sau:

- Modul CPU: Modul CPU là loại Modul chứa vi xử lí, hệ điều hành, bộ nhớ,

các bộ thời gian, bộ đếm,cổng truyền thông (RS485)…. Và có thể còn có một

vài cổng vào ra số.Các cổng vào ra số trên CPU được gọi là cổng vào ra

Onboard. Trong họ PLC S7_300 có nhiều loại CPU khác nhau: CPU 312,CPU

314, CPU 315…. Những Modul cùng sử dụng một loại bộ vi xử lí, nhưng khác

nhau về cổng vào ra onboard cũng như các khối hàm đặc biệt tích hợp sẵn trong

thư viện của hệ điều hành phục vụ việc sử dụng các cổng vào ra onboard này

sẽ được phân biệt với nhau tong tên gọi bằng tên cụm chữ cái IFM (viết tắt của

Intergrated Function Module).Ví dụ Module CPU 312IFM, Modul314 IFM….

Ngoài ra còn có các loại module hai cổng truyền thông, trong đó cổng truyền

thông thứ 2 có chức năng chính là phục vụ việc nối mạng phân tán. Các loại

module CPU được phân biệt với những loại CPU khác bằng thêm cụm từ DP

(Distrubited port) trong tên gọi. Ví dụ module CPU 315-DP

- Các Modul mở rộng thường được chia thành 5 loại chính: PS (Power Supply):;

SM ( Signal Module) gồm: DI, DO, DI/O, AI. AO, AI/O; IM (Interface

Module); FM (Function Module); CP (Communication Module). Lưu ý: Trên

mỗi một Rack chỉ có thể gá được nhiều nhất 8 module mở rộng (không kể

68

Page 69: Giao Trinh PLC In

module CPU, module nguồn nuôi). Một module CPU có thể làm việc trực tiếp

với nhiều nhất 4 Rack, các Rack này phải được nối với nhau bằng Module IM.

Hình 4.2 Tủ đấu nối PLC S7-300

1 2 3 4 5 6 7 8 9 10 11

P

S

CPU IM SM SM SM SM SM CP FM FM

Đối với module SM, các loại tín hiệu thường xử lý là tín hiệu số và tín hiệu tương

tự. Tùy từng loại module sử dụng và cách cài đặt trong cấu hình phần cứng mà module

đó có thể làm việc với nhiều loại tín hiệu khác nhau.

Một trạm PLC được hiểu là một module CPU ghép nối cùng với các module mở rông

khác (module DI, DO, AI, AO, CP, FM) trên những thanh rack (giá đỡ), trong đó việc

truy nhập của CPU vào các module mở rộng được thực hiện thông qua địa chỉ của

chúng. Một module CPU có khả năng quản lý được 4 thanh rack với tối đa 8 module

mở rrộng trên mỗi thanh. Tuỳ vào vị trí lắp đặt của module mở rộng trên những thanh

rack mà các module có những địa chỉ khác nhau.

PLC S7-300 có nhiều chùng loại CPU, có thể giới thiệu một số chủng loại sau:

CPU 312: Bộ nhớ làm việc 16KB, chu kì lệnh 0.1us

69

Page 70: Giao Trinh PLC In

CPU 312C: Bộ nhớ làm việc 16KB, chu kì lệnh 0.1us, tích hợp sẵn 10DI/6DO,2

Xung tốc độ cao 2.5KHz,2 kênh đọc xung tốc độ cao 10Khz.

CPU 312IFM: Bộ nhớ làm việc 6KB,chu kì lệnh 0.6us,tích hợp sẵn 10DI/6DO

CPU 313: Bộ nhớ làm việc 12KB,chu kì lệnh 0,6us

CPU 313C: Bộ nhớ làm việc 32KB, chu kì lệnh 0,1us, tích hợp sẵn 24DI, 16DO,

5AI, 2AO, 3 Kênh xuất xung tốc độ cao (2.5Khz), 3 kênh đọc xung tốc độ cao

(30Khz)

CPU 313C-2DP: Bộ nhớ làm việc 32KB, chu kì lệnh 0.1us, tích hợp sẵn

24DI,16DO,5AI, 2AO, 3 Kênh xuất xung tốc độ cao (2.5Khz), 3 kênh đọc xung tốc độ

cao (30Khz),có 2 cổng giao tiếp.

CPU 313C-2PtP : Bộ nhớ làm việc 32KB,chu kì lệnh 0.1us, tích hợp sẵn

24DI,16DO,5AI, 2AO, 3 Kênh xuất xung tốc độ cao (2.5Khz), 3 kênh đọc xung tốc độ

cao (30Khz),có 2 cổng giao tiếp MPI+ PtP connector (RS-422/485 (ASCII,. .)

CPU 314: Bộ nhớ làm việc 24KB, chu kì lệnh 0.3us

CPU 314IFM : Bộ nhớ làm việc 24KB, chu kì lệnh 0.3us, tích hợp sẵn 20DI/16DO,

4AI/ 1AO

CPU 314C-2DP:Bộ nhớ làm việc 48KB,chu kì lệnh 0.1us,tích hợp sẵn 24DI/

16DO, 5AI/ 2AO, 4 kênh xuất xung tốc độ cao,4 kênh đọc xung tốc độ cao.2 cổng

giao tiếp.

CPU 314C-2PtP:Bộ nhớ làm việc 48KB,chu kì lệnh 0.1us,tích hợp sẵn 24DI/

16DO, 5AI/ 2AO, 4 kênh xuất xung tốc độ cao,4 kênh đọc xung tốc độ cao.2 cổng

giao tiếp.

CPU 315 : Bộ nhớ làm việc 48KB, chu kì lệnh 0.3us

CPU 315-2DP: Bộ nhớ làm việc 48KB, chu kì lệnh 0.3us, MPI + DP

CPU 315F-2DP : Bộ nhớ làm việc 128KB,chu kì lệnh 0.3us, 2 cổng giao tiếp.

CPU 316 : Bộ nhớ làm việc 128KB, chu kì lệnh 0.3us

CPU 316-2DP: Bộ nhớ làm việc 128KB,chu kì lệnh 0.3us, 2 cổng MPI + DP

CPU 317-2: Bộ nhớ làm việc 512KB, chu kì lệnh 0.3us,2 cổng giao tiếp MPI + DP

CPU 317F-2: Bộ nhớ làm việc 512KB,chu kì lệnh 0.3us, 2 cổng giao tiếp MPI +

DP ( DP master hoặc Slave)

70

Page 71: Giao Trinh PLC In

CPU 318-2: Bộ nhớ làm việc 256KB, chu kì lệnh 0.3us, 2 cổng giao tiếp MPI + DP

( DP Master hoặc Slave).

CPU 614: Bộ nhớ làm việc 192KB,chu kì lệnh 0.3us, tích hợp sẵn 512DI/DO

CPU M7: RS232,MPI 64KB SRAM

IV.1.3 Kiểu dữ liệu và phân chia bộ nhớ trong S7-300

a, Các kiểu dữ liệu sử dụng

- Kiểu Bool: True hoặc False (0 hoặc 1)

- Kiểu Byte: gồm 8 bit

- Kiểu Word: 16 bit

- Kiểu Int: số nguyên 16 bit

- Kiểu Dint: số nguyên 32 bit

- Kiểu Real: số thực

- Kiểu S5T: kiểu dữ liệu Timer

- Kiểu Char: kiểu dữ liệu kí tự

- Kiểu Date: kiểu dữ liệu ngày tháng

- Kiểu Tod: kiểu dữ liệu ngày tháng

b, Phân chia bộ nhớ trong S7-300

Bộ nhớ trong PLC S7-300 gồm 3 vùng nhớ chính:

- Vùng chứa chương trình ứng dụng : Vùng chứa chương trình được chia thành 3

miền: OB ( Organisation block) : miền chứa chương trình tổ chức; FC

(Function): Miền chứa chương trình con, được tổ chức thành hàm và có biến

hình thức để trao đổi dữ liệu; FB (Function block): Miền chứa chương trình

con, được tổ chức thành hàmvà có khả năng trao đổi dữ liệu với bất cứ 1 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 ( Data Block khối DB)

- Vùng chứa tham số của hệ điều hành: Chia thành 7 miền khác nhau:

I (Process image input): Miền dữ liệu các 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 số mà chỉ lấy dữ liệu của cổng vào từ bộ đệm I.

71

Page 72: Giao Trinh PLC In

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 tận cổng ra mà chỉ

chuyển chúng tới bộ đệm Q.

M (Miền các biến cờ): Chương trình ứng dụng sử dụng những biến này để lưu

giữ các tham số cần thiết và có thể truy nhập nó theo Bit (M), byte (MB), từ (MW) hay

từ kép (MD).

T (Timer): Miền nhớ phục vụ bộ thời gian (Timer) bao gồm việc lưu trữ giá trị

thời gian đặt trước ( PV-Preset Value ), giá trị đếm thời gian tức thời (CV –Current

Value) cũng như giá trị Logic đầu ra của bộ thời gian.

C (Counter): Miền nhớ phục vụ bộ đếm bao gồm việc lưu trữ giá trị đặt trước

( PV- Preset Value), giá trị đếm tức thời (CV _ Current Value) và giá trị logic đầu ra

của bộ đệm.

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 module đọc và chuyển tự động

theo những địa chỉ cấu hình trong phần cứng. 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 từng từ kép PID.

PQ: Miền địa chỉ cổng ra cho các module tương tự (I/O External Output). Các

giá trị theo những địa chỉ này sẽ được module tương tự chuyển tới các cổng ra tượng

tự. Chương trình ứng dụng có thể truy nhập miền nhớ PQ theo từng Byte (PQB),từng

từ (PQW) hoặc theo từng từ kép (PQD)

- Vùng chứa các khối dữ liệu: được chia làm 2 loại:

DB (Data Block):Miền chứa 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ều

khiển.Chương trình có thể truy nhập miền này theo từng bit (DBX), byte (DBB), từ

(DBW) hoặc từ kép (DBD).

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ới những khối chương trình gọi nó. Nội dung của một khối dữ liệu trong miền

nhớ này sẽ bị xoá khi kết thúc chương trình tương ứng trong OB, FC, FB. Miền này có

thể được truy nhập từ chương trình theo bit (L), byte(LB) từ (LW) hoặc từ kép (LD).

72

Page 73: Giao Trinh PLC In

Tên gọi Kích thước

truy nhập

Kích thước tối đa

(phụ thuộc CPU)

Ý nghĩa

Process-

image

Input (I)

Bộ đệm vào

số.

I

IB

IW

ID

0.0127.7

0127

0126

0124

Đầu mỗi vòng quét, hệ điều

hành sẽ ghi vào phần nhớ này

các giá trị được lấy từ cổng vào

số (digitale inputs) vật lý của

module mở rộng.

Process-

image

Output (Q)

Bộ đệm ra

số.

Q

QB

QW

QD

0.0127.7

0127

0126

0124

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ố (digitale outputs) của các

module mở rộng.

Bit memory

(M)

Vùng nhớ

cờ.

M

MB

MW

MD

0.0255.7

0255

0254

0252

Được sử dụng như một biến cờ

cho chương trình ứng dụng.

Timer (T) T0T255 Miền nhớ lưu giữ các giá trị

PV, CV, T-bit của Timer.

Được truy nhập và sửa đổi bởi

hệ điều hành và chương trình

ứng dụng.

Counter (C) C0C255 Miền nhớ lưu giữ các giá trị

PV, CV, C-bit của Counter.

Được truy nhập để sửa đổi bởi

hệ điều hành và chương trình

ứng dụng.

Data block

(DB)

Khối dữ liệu

share.

DBX

DBB

DBW

DBD

0.065535.7

0 65535

065534

065532

Được mở bằng lệnh “OPN

DB”

Data block DIX 0.065535.7 Là khối DB nhưng được mở

73

Page 74: Giao Trinh PLC In

Tên gọi Kích thước

truy nhập

Kích thước tối đa

(phụ thuộc CPU)

Ý nghĩa

(DI)

Khối dữ liệu

Instance.

DIB

DIW

DID

0 65535

065534

065532

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.065535.7

0 65535

065534

065532

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 chương trình đó.

Peripheral

input (PI)

PIB

PIW

PID

0 65535

0 65534

0 65532

Chỉ có địa chỉ truy cập để đọc.

Không có phần bộ nhớ thực sự.

Peripheral

output (PQ)

PQB

PQW

PQD

0 65535

0 65534

0 65532

Chỉ có địa chỉ truy cập để ghi.

Không có phần bộ nhớ thực sự.

Bảng 4.1 Phân chia vùng nhớ trong S7-300

c, Vòng quét của chương trình

PLC thực hiện chương trình theo chu kì lặp. Mỗi vòng lặp được gọi là vòng quét

(Scan). Mỗi vòng quét được bắt đầu bằng giai đoạn chuyển dữ liệu từ các cổng vào số

tới vùng bộ đệm ảo I, tiếp theo là giai đoạn thực hiện chương trình. Trong từng vòng

quét chương trình thực hiện từ lệnh đầu tiên đến lệnh kết thúc của khối OB (Block

End). Sau giai đoạn thực hiện chương trình là giai đoạn chuyển các nội dung của bộ

đệm ảo Q tới các cổng ra số. Vòng quét được kết thúc bằng giai đoạn truyền thông nội

bộvà kiểm tra lỗi. Chú ý rằng bộ đệm I và Q không liên quan tới các cổng vào ra tương

tự nên các lệng truy nhập cổng tương tự được thực hiện trực tiếp với cổng vật lí chứ

không thông qua bộ đệm. Thời gian cần thiết để PLC thực hiện 1 vòng quét gọi là thời

gian vòng quét (Scan Time). Thời gian vòng quét không cố định, tức là không phải

vòng quét nào cũng được thực hiện trong một khoảng thời gian như nhau. Có vòng

quét được thực hiện lâu, có vòng quét được thực hiện nhanh tuỳ thuộc vào số lệnh

74

Page 75: Giao Trinh PLC In

trong chương trình được thực hiện và khối dữ liệu truyền thông trong vòng quét đó.

Như vậy giữa việc đọc dữ liệu từ đối tượng để xử lí, tính toán và việc gởi tín hiệu điều

khiển đến đối tượng có một khoảng thời gian trễ đúng bằng thời gian vòng quét. Nói

cách khác, thời gian vòng quét quyết định tính thời gian thực của chương trình điều

khiển trong PLC. Thời gian vòng quét càng ngắn, tính thời gian thực của chương trình

càng cao. Nếu sử dụng các khối chương trình đặc biệt có chế độ ngắt, ví dụ như khối

OB40, OB80…, chương trình của các khối đó sẽ được thực hiện trong vòng quét khi

xuất hiện tín hiệu báo ngắt cùng chủng loại. Các khối chương trình này có thể được

thực hiện tại mọi điểm trong vòng quét chứ không bị gò ép là phải ở trong giai đoạn

thực hiện chương trình. Chẳng hạn nếu 1 tín hiệu báo ngắt xuất hiện khi PLC đang ở

giai đoạn truyền thông và kiểm tra nội bộ, PLC sẽ ngừng công việc truyền thông, kiểm

tra để thực hiện khối chương trình tương ứng với tín hiệu báo ngắt đó. Với hình thức

xử lí tín hiệu ngắt như vậy, thời gian vòng quét sẽ càng lớn khi càng có nhiều tín hiệu

ngắt xuất hiện trong vòng quét. Do đó để nâng cao tính thời gian thực cho chương

trình điều khiển, tuyệt đối không nên viết chương trình xử lí ngắt quá dài hoặc quá lạm

dụng việc sử dụng chế độ ngắt trong chương trình điều khiển. Tại thời điểm thực hiện

lệnh vào ra, thông thường lệnh không làm việc trực tiếp với cổng vào ra mà chỉ thông

qua bộ đệm ảo của cổng trong vùng nhớ tham số.Việc truyền thông giữa bộ đệm ảo

với ngoại vi trong các giai đoạn 1 và 3 do hệ điều hành CPU quản lí. Ở 1 số modul

CPU, khi gặp lệnh vào ra ngay lập tức,hệ thống sẽ cho dừng mọi công việc khác, ngay

cả chương trình xử lí ngắt,để thực hiện lệnh trực tiếp với cổng vào ra.

d, Cấu trúc chương trình

Chương trình trong S7_300 được lưu trong bộ nhớ của PLC ở vùng giành riêng cho

chương trình và có thể được lập với 2 dạng cấu trúc khác nhau.

- Lập trình tuyến tính: toàn bộ chương trình nằm trong một khối trong bộ nhớ.

Loại hình cấu trúc tuyến tính này phù hợp với những bài toán tự động

nhỏ,không phức tạp. Khối được chọn phải là khối OB1, là khối mà PLC luôn

quét và thực hiện các lệnh trong đó thường xuyên,từ lệnh đầu tiên đến lệnh cuối

cùng và quay lại lệnh đầu tiên.

- Lập trình có cấu trúc: Chương trình được chia thành những phần nhỏ và mỗi

phần thực thi những nhiệm vụ chuyên biệt riêng của no,từng phần này nằm

75

Page 76: Giao Trinh PLC In

trong những khối chương trình khác nhau. Loại hình cấu trúc này phù hợp với

những bài toán điều khiển nhiều nhiệm vụ và phức tạp. PLC S7_300 có 4 loại

khối cơ bản sau:

Loại khối OB (Organization Block) : Khối tổ chức và quản lí chương trình điều

khiển. Có nhiều loại khối OB với những chức năng khác nhau, chúng được phân biệt

với nhau bằng một số nguyên đi sau nhóm kí tự OB.

Ví dụ: OB1, OB35, OB40, OB80,…..

Loại khối FC (Program block): Khối chương trình với những chức năng riêng

giống như 1 chương trình con hoặc một hàm (chương trình con có biến hình thức).

Một chương trình ứng dụng có thể có nhiều khối FC và các khối FC này được phân

biệt với nhau bằng một số nguyên sau nhóm kí tự FC.

Ví dụ: FC1, FC2….

Loại khối FB (Function Block): Là loại khối FC đặc biệt có khả năng trao đổi 1

lượng dữ liệu lớn với các khối chương trình khác. Các dữ liệu này phhải được tổ chức

thành khối dữ liệu riêng có tên gọi là Data block. Một chương trình ứng dụng có thể có

nhiều khối FB và các khối Fb này được phân biệt với nhau bằng một số nguyên sau

nhóm kí tự FB. Chẳng hạn như FB1,FB2…

Loại khối DB (Data Block): Khối chứa các dữ liệu cần thiết để thực hiện chương

trình. Các tham số của khối do người dùng tự đặt. Một chương trình ứng dụng có thể

có nhiều khối DB và các khối DB này được phân biệt với nhau bằng một số nguyên

sau nhóm kí tự DB

Ví dụ: DB1, DB2….

Chương trình trong các khối được liên kết với nhau bằng các lệng gọi khối, chuyển

khối. Xem những phần chương trình trong các khối như là các chương trình con thì

S7_300 cho phép gọi chương trình con lồng nhau, tức là chương trình con này gọi một

chương trình con khác và từ một chương trình con được gọi lại gọi tới một chương

trình con thứ 3 … Số các lệnh gọi lồng nhau phụ thuộc vào từng chủng loại module

CPU mà ta đang sử dụng. Ví dụ đối với module CPU 314 thì số lệnh gọi lồng nhau

nhiều nhất có thể cho phép là 8. Nếu số lần gọi khối lồng nhau mà vượt quá con số

giới hạn cho phép, PLC sẽ tự chuyển qua chế độ Stop và đặt cờ báo lỗi.

76

Page 77: Giao Trinh PLC In

Các khối OB đặc biệt khi sử dụng cần lưu ý: Trong khi khối OB được thực hiện

đều đặn ở từng vòng quét trong giai đoạn thực hiện chương trình thì các khối OB khác

chỉ được thực hiện khi xuất hiện tín hiệu báo ngắt tương ứng, nói cách khác chương

trình viết cho các khối OB này chính là chương trình xử lí tín hiệu ngắt (event). Chúng

bao gồm:

OB10 ( Time of Day Interrupt):Chương trình trong khối sẽ được thực hiện khi giá

trị của đồng hồ thời gian thực nằm trong một khoảng thời gian đã được quy định.OB10

có thể gọi một lần, nhiều lần cách đều nhau từng phút, từng giơ,từng ngày ….Việc quy

định khoảng thời gian hay số lần gọi OB10 được thực hiện nhờ chương trình hệ thống

SFC28 hoặc trong bảng tham số của module CPU nhờ phần mềm Step 7.

OB20 ( Time Day Interrupt): Chương trình trong khối sẽ được thực hiện sau một

khoảng thời gian trễ đặt trước kể từ khi gọi chương trình hệ thống SFC32 để đặt thời

gian trễ.

OB35 (Cyclic Interrupt): Chương trình trong OB35 sẽ được thực hiện cách đều

nhau 1 khoảng thời gian cố định.Mặc định khoảng thời gian này sẽ là 100ms,xong ta

có thể thay đổi nó trong bảng tham số của module CPU, nhờ phần mềm Step7.

OB40 (Hardware Interrupt): Chương trình trong OB sẽ được thực hiện khi xuất

hiện 1 tín hiệu báo ngắt từ ngoại vi đưa vào module CPU thông qua các cổng vào ra số

onboard đặc biệt,hoặc thông qua các module SM,CP,FM

OB80 (Cycle Time Fault): Chương trình trong khối OB80 sẽ được thực hiện khi

thời gian vòng quét(Scan time) vượt quá khoảng thời gian cực đại đã được quy định

hoặc khi có một tín hiệu ngắt gọi một khối OB nào đó mà khối OB này chưa kết thúc ở

lần gọi trước.Mặc định thời gian Scan time cực đại là 150ms, nhưng có thể thay đổi nó

thông qua bảng tham số của module CPU nhờ phần mềm Step 7.

OB81 (Power Supply fault): CPU sẽ gọi chương trình trong khối OB81 khi phát

hiện thấy có lỗi về nguồn nuôi.

OB82( Diagnostic Interrupt):Chương trình trong OB82 được gọi khi CPU phát hiện

sự cố từ các Modul vào ra

OB85( Not Load fault):Chương trình trong OB82 được gọi khi CPU phát hiện thấy

chương trình ứng dụng có sử dụng chế độ ngắt nhưng chương trình sử lí tín hiệu ngắt

lại không có trong khối OB tương ứng.

77

Page 78: Giao Trinh PLC In

OB87 ( Communication fault):Khối OB87 sẽ được gọi khi CPU phát hiện thấy lỗi

trong truyền thông ví dụ như không có tín hiệu trả lời từ các đối tác.

OB100 ( Start Up Information):Khối OB100 sẽ được thực hiện 1 lần khi CPU

chuyển trạng thái Stop sang Run.

OB121 ( Synchronous error):Khối OB121 sẽ được gọi khi CPU phát hiện thấy lỗi

logic trong chương trình như đổi sai kiểu dữ liệu hoặc lỗi truy nhập khối DB, FC,FB

không có trong bộ nhớ CPU.

OB122 ( Synchronous error):Khối OB122 sẽ được gọi khi CPU phát hiện thấy lỗi

truy cập module trong chương trình,ví dụ chương trình có lệnh truy nhập module vào

ra mở rộng nhưng lại không tìm thấy module này.

Ngoài ra, còn một số khối OB đặc biết khác, tùy thuộc vào chủng loại CPU mà nó

có chức năng và phương pháp sử dụng khác nhau.

e, Các vùng nhớ và truy cập dữ liệu

Trong S7_300 có các vùng nhớ sau:

I: Input, các ngõ vào số.

Q:Output, các ngõ ra số.

M: Internal Memory, vùng nhớ nội.

DB: Data Block, dữ liệu. Sử dụng vùng nhớ này phải khai báo trong phần mềm.

PIW: Analog Input, ngõ vào analog.

PQW: Analog Output, ngõ ra analog.

T: Timer.

C: Counter.

Định dạng dữ liệu:

Kiểu Bool: VD: Q0.0, I0.0, DB1.DBX2.3

Kiểu Byte: 1 Byte = 8 Bit. Suy ra, giá trị 1 Byte trong khoảng: 0 -(28 -1) hay 0-

255. VD: QB0, MB3, VB10, SMB2

Kiểu Word: 1 Word = 2 Byte = 16 Bit.

Kiểu DWord: 1 DWord = 2 Word = 4 Byte = 32 Bit.

Kiểu Int: Số nguyên 16 bit

Kiểu DInt: Số nguyên 32 bit

Kiểu Real: Số thực 32 bit

78

Page 79: Giao Trinh PLC In

IV.2 Tập lệnh trong S7-300

IV.2.1 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 16 Bits, được gọi là thanh ghi trạng thái

(Status Word). Mặc dù thanh ghi trạng thái này có độ dài 16 Bits nhưng chỉ sử dụng 9

Bits với cấu trúc như sau:

BR CC1 CC0 OV OS OR STA RLO FC

Bit logic thường làm việc với RLO

Word logic làm việc với thanh ghi ACCU

Ý nghĩa của các bit trạng thái:

- FC ( First check) : Khi phải thực hiện một dãy các lệnh logic liên tiếp nhau gồm

các phép tính giao, hợp và nghịch đảo, bit FC có giá trị bằng 1, hay nói cách

khác, FC=0 khi dãy lệnh Logic tiếp điểm vừa được kết thúc.

- RLO (Result of logic operation): Kết quả tức thời của phép tính logicvừa được

thực hiện

- STA (Status bit): Bit trạng thái này 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 giao cuối cùng được thực hiện để phụ

giúp cho việc thực hiện phép toán hợp sau đó. Điều này là cần thiết vì trong một

biểu thức hàm 2 trị ,phép tính giao bao giờ cũng phải được thực hiện trước các

phép tính hợp.

- OS (Stored overflow bit): Ghi lại giá trị Bit bị tràn ra ngoài mảng ô nhớ.

- OV(Overflow Bit): Bit báo cáo kết quả phép tính bị tràn ra ngoài mảng ô nhớ.

- CC0 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 ACCU

- BR (Binary result bit) : Bit trạng thái cho phép liên kết hai loại ngôn ngữ lập

trình STL và LAD .Chẳng hạn cho phép người sử dụng có thể viết một khối

chương trình FB hoặc FC trên ngôn ngữ STL nhưng gọi và sử dụng chúng trong

một chương trình khác viết trên LAD. Để tạo ra được mối liên kết đó,ta cần

phải kết thúc chương trình trong FB, FC bằng lệnh ghi: BR = 1 nếu chương

79

Page 80: Giao Trinh PLC In

trình chạy không có lỗi; BR = 0 nếu chương trình chạy có lỗi Khi sử dụng các

khối hàm đặc biệt của hệ thống (SFC hoặc SFB), trạng thái làm việc của

chương trình cũng được thông báo ra ngoài qua bit trạng thái BR như sau:

BR=1 nếu SFC hay SFB thực hiện không có lỗi; BR=0 nếu có lỗi khi thực hiện

SFC hay SFB

IV.2.2 Các lệnh về bit

Về cơ bản, cú pháp hệ lệnh trong S7-300 khá giống so với S7-200 về một số câu

lệnh. Tuy nhiên vẫn có một số khác biệt trong cách sử dụng, đồng thời số lượng câu

lệnh trong S7-300 nhiều hơn cả về số lượng và chức năng.

Trong mục này, sẽ trình bày chủ yếu bằng ngôn ngữ STL vì trong lập trình, ngôn

ngữ STL có độ linh hoạt và mềm dẻo hơn ngôn ngữ LAD và FBD. Tuy nhiên sẽ cố

gắng trình bày kết hợp song song giữa hai loại ngôn ngữ được sử dụng chủ yếu là

LAD và STL để đọc giả so sánh về cú pháp hệ lệnh.

a. Nhóm lệnh logic tiếp điểm

Lệnh AND (và)

Cú pháp A (toán hạng)

- FC = 0 thì nó sẽ gán nội dung của toán hạng vào RLO .Sau đó sẽ dựng FC = 1

- FC = 1 thì RLO = RLO I0.0 và duy trì FC = 1

Khi vào đầu một chương trình thì FC = 0 hoặc chỉ cần tạo một Network mới

RLO : Result of logic oplogic operation

Lệnh AN

Cú pháp AN (toán hạng)

- FC = 0 sẽ gán giá trị logic nghịch đảo của toán hạng vào RLO

- FC = 1 nó sẽ thực hiện phép tính giữa RLO với giá trị nghịch đảo của toán hạng

và ghi lại kết quả vào RLO

Lệnh O

Cú pháp O (toán hạng)

- FC = 0 thì nó sẽ gán giá trị logic của toán hạng vào RLO

- FC = 1 nó sẽ thực hiện phép giữa RLO với toán hạng và ghi lại kết quả vào RLO

Lệnh ON

Cú pháp ON (toán hạng)

80

Page 81: Giao Trinh PLC In

- FC = 0 thì nó sẽ gán giá trị logic của toán hạng vào RLO

- FC = 1 nó sẽ thực hiện phép giữa RLO với giá trị nghịch đảo của toán hạng và

ghi lại kết quả vào RLO

Lệnh gán

Cú pháp = ( toán hạng )

Lệnh thực hiện phép tính với giá trị 1 biểu thức(Lệnh này không có toán hạng)

Cú pháp A(

- FC = 0 lệnh sẽ gán giá trị logic của biểu thức trong dấu ngoặc sau nó vào RLO

- FC = 1 lệnh sẽ thực hiện phép tính và giữa RLO với giá trị logic của biểu thức

trong dấu ngoặc sau nó và ghi lại kết quả vào RLO

Lệnh thực hiện phép tính với giá trị nghịch đảo của 1 biểu thức (Lệnh này

không có toán hạng)

Cú pháp AN(

- FC = 0 lệnh sẽ gán giá trị logic của biểu thức trong dấu ngoặc sau nó vào RLO

- FC = 1 lệnh sẽ thực hiện phép tính và giữa RLO với giá trị nghịch đảo logic của

biểu thức trong dấu ngoặc sau nó và ghi lại kết quả vào RLO

Lệnh thực hiện phép tính với giá trị 1 biểu thức(Lệnh này không có toán hạng)

Cú pháp O(

- FC = 0 lệnh sẽ gán giá trị logic của biểu thức trong dấu ngoặc sau nó vào RLO

- FC = 1 lệnh sẽ thực hiện phép tính giữa RLO với giá trị logic của biểu thức

trong dấu ngoặc sau nó và ghi lại kết quả vào RLO

Lệnh thực hiện phép tính với giá trị nghịch đảo của 1 biểu thức

(Lệnh này không có toán hạng)

Cú pháp ON(

- FC = 0 lệnh sẽ gán giá trị logic nghịch đảo của biểu thức trong dấu ngoặc sau nó

vào RLO

- FC = 1 lệnh sẽ thực hiện phép tính giữa RLO với giá trị nghịch đảo của biểu

thức trong dấu ngoặc sau nó và ghi lại kết quả vào RLO

Lệnh thực hiện phép tính exclusive or

Cú pháp X (toán hạng)

- FC = 0 lệnh ghi giá trị logic của toán hạng vào RLO

81

Page 82: Giao Trinh PLC In

- FC = 1 lệnh sẽ kiểm tra xem nội dung của RLO và giá trị logic của toán hạng có

khác nhau không nếu khác thì ghi 1 vào RLO nếu không khác thì ghi 0 vào RLO

Lệnh thực hiện phép tính exclusive or not

Cú pháp XN (toán hạng)

- FC = 0 lệnh sẽ ghi giá trị nghịch đảo của toán hạng vào RLO

- FC = 1 lệnh sẽ kiểm tra xem nội dung của RLO và giá trị logic của toán hạng có

giống nhau không nếu giống thì ghi 1 vào RLO nếu không giống thì ghi 0 vào RLO

Lệnh thực hiện phép tính exclusive or với giá trị của một biểu thức (Lệnh này

không có toán hạng)

Cú pháp X(

- FC = 0 lệnh sẽ ghi giá trị logic của biểu thức trong dấu ngoặc sau nó vào RLO

- FC = 1 lệnh đảo nội dung RLO khi biểu thức trong dấu ngoặc sau nó có giá trị 1

Lệnh thực hiện phép tính exclusive or với giá trị của một biểu thức (Lệnh này

không có toán hạng)

Cú pháp XN(

- FC = 0 lệnh sẽ ghi giá trị logic nghịch đảo của biểu thức trong dấu ngoặc sau nó

vào RLO

- FC = 1 lệnh sẽ đảo nội dung của RLO khi biểu thức trong dấu ngoặc sau nó có giá

trị 0

Lệnh ghi giá trị logic 1 vào RLO (Lệnh này không có toán hạng)

Cú pháp SET

Lệnh ghi giá trị logic 0 vào RLO(Lệnh này không có toán hạng)

Cú pháp CLR

Lệnh đảo giá trị của RLO(Lệnh này không có toán hạng)

Cú pháp NOT

Lệnh gán có điều kiện giá trị logic 1 vào ô nhớ

Cú pháp S (toán hạng )

Nếu RLO = 1 ,lệnh sẽ ghi giá trị 1 vào ô nhớ có địa chỉ cho trong toán hạng

Lệnh gán có điều kiện giá trị logic 0 vào ô nhớ

Cú pháp R (toán hạng )

Nếu RLO = 1 ,lệnh sẽ ghi giá trị 0 vào ô nhớ có địa chỉ cho trong toán hạng

82

Page 83: Giao Trinh PLC In

Lệnh phát hiện sườn lên

cú pháp FP (toán hạng)

Lệnh được sử dụng như một biến cờ để ghi nhận lại giá trị của RLO tại vị trí này

trong chương trình của vòng quét trước .Tại mỗi vòng quét lệnh kiểm tra cờ có giá trị

1 thì sẽ ghi 1 vào RLO .Trong trường hợp khác thì ghi 0 đồng thời chuyển nội dung

RLO vào lại cờ biến.

Vậy RLO có giá trị 1 trong 1 vòng quét khi có sườn lên trong RLO

Lệnh phát hiện sườn xuống

cú pháp FN (toán hạng)

Lệnh được sử dụng như một cờ biến để ghi nhận lại giá trị của RLO tại vị trí này

trong chương trình nhưng của vòng quét trước. Tại mỗi vòng quét lệnh sẽ kiểm tra

nếu biến cờ có giá trị 1 thì sẽ ghi 1 vào RLO. Trường hợp khác thì ghi 0 đồng thời

chuyển nội dung RLO vào lại cờ biến .Vậy RLO có giá trị 1 trong 1 vòng quét khi có

sườn xuống trong RLO.

b. Các lệnh có toán hạng

Lệnh đọc vào ACCU

Cú pháp L (toán hạng)

Nội dung cũ của ACCU1được chuyển vào ACCU2 .Nếu giá trị chuyển vào có kích

thước < từ kép thì được ghi theo thứ tự từ byte thấp đến byte cao của từ thấp . Nếu giá

trị chuyển vào có kích thước = từ kép thì ta chuyển về Byte

Lệnh chuyển nội dung của ACCU tới ô nhớ

Cú pháp T (toán hạng )

Lệnh không thay đổi nội dung ACCU2

c. Lệnh không có toán hạng

Lệnh đọc nội dung của thanh ghi trạng thái vào ACCU1

Cú pháp L STW

Lệnh ghi nội dung của ACCU1 vào thanh ghi trạng thái

Cú pháp T STW

Lệnh chuyển 9 bit của từ thấp của ACCU1 vào thanh ghi trạng thái

Lệnh chuyển nội dung của ACCU2 vào ACCU1

Cú pháp POP

83

Page 84: Giao Trinh PLC In

Lệnh không làm thay đổi nội dung của ACCU2

Lệnh chuyển nội dung của ACCU1 vào ACCU2

Cú pháp PUSH

Lệnh không làm thay đổi nội dung của ACCU1

Lệnh đảo nội dung của hai thanh ghi ACCU1 và ACCU2

Cú pháp TAK

Lệnh không làm thay đổi nội dung của thanh ghi trạng thái

Lệnh đảo nội dung của hai byte của từ thấp trong ACCU1

Cú pháp CAW

Lệnh đảo nội dung các byte trong ACCU1

Cú pháp CAD

Lệnh đảo giá trị các bit trong từ thấp của ACCU1

Cú pháp INVI

Nội dung của ACCU2 không bị thay đổi

Lệnh đảo giá trị các bit của ACCU1

Cú pháp INVD

Nội dung của ACCU2 không bị thay đổi

d. Lệnh logic thực hiện trên thanh ghi ACCU

Lệnh thực hiện phép tính giữa các bit trong từ thấp của ACCU1, ACCU2

Cú pháp AW [<dữ liệu hằng >]

- Nếu lệnh không có toán hạng.Kết quả phép tính được ghi lại vào ACCU1

- Nếu lệnh có toán hạng thì toán hạng phải là một dữ liệu hằng có kích thước 16bit .

Kết quả phép tính được ghi lại vào ACCU1.

Lệnh thực hiện phép tính giữa các bit của hai thanh ghi ACCU1, ACCU2

Cú pháp AD [<dữ liệu hằng >]

- Nếu lệnh không có toán hạng Kết quả phép tính được ghi lại vào ACCU1.

- Nếu lệnh có toán hạng thì toán hạng phải là một dữ liệu hằng có kích thước 32bit.

Kết quả phép tính được ghi lại vào ACCU1.

Lệnh thực hiện phép tính giữa các bit trong từ thấp của ACCU1, ACCU2

Cú pháp OW [<dữ liệu hằng >]

- Nếu lệnh không có toán hạng .Kết quả được ghi lại vào ACCU1.

84

Page 85: Giao Trinh PLC In

- Nếu lệnh có toán hạng thì toán hạng phải là một dữ liệu hằng có kích thước 16bit .

Kết quả phép tính được ghi lại vào ACCU1.

Lệnh thực hiện phép tính giữa các bit của hai thanh ghi ACCU1, ACCU2

Cú pháp OD [<dữ liệu hằng >]

- Nếu lệnh không có toán hạng.Kết quả phép tính được ghi lại vào ACCU1.

- Nếu lệnh có toán hạng thì toán hạng phải là một dữ liệu hằng có kích thước 32bit.

Kết quả được ghi lại vào ACCU1.

Lệnh thực hiện phép tính exclusive or 16bit

Cú pháp XOW [<dữ liệu hằng >]

- Nếu lệnh không có toán hạng :mà hai bit không cùng giá trị thì kết quả sẽ là 1 .

Toàn bộ bit kết quả được ghi lại vào ACCU1 .

- Nếu lệnh có toán hạng thì toán hạng phải là một dữ liệu hằng có kích thước 32bit .

Nếu hai bit không cùng giá trị thì kết quả sẽ là 1.Toàn bộ 16 bit kết quả được ghi lại

vào ACCU1.

Lệnh thực hiện phép tính exclusive or 32bit

Cú pháp XOD [<dữ liệu hằng >]

- Nếu lệnh không có toán hạng :mà hai bit không cùng giá trị thì bit kết quả sẽ là 1.

Toàn bộ 32bit kết quả được ghi lại vào ACCU1

- Nếu lệnh có toán hạng thì toán hạng phải là một dữ liệu hằng có kích thước

32bit .Nếu hai bit không cùng giá trị thì kết quả sẽ là 1. Toàn bộ 32bit kết quả được

ghi lại vào ACCU1.

e. Lệnh tăng giảm nội dung của thang ghi ACCU

Lệnh tăng nội dung của thanh ghi ACCU1

Cú pháp INC (toán hạng )

Toán hạng là số nguyên 8 bit. Lệnh thực hiện phép cộng giữa byte thấp của từ thấp

trong ACCU1 với toán hạng .Kết quả được ghi lại vào từ thấp của ACCU1.

Lệnh giảm nội dung của thanh ghi ACCU1

Cú pháp DEC (toán hạng )

Toán hạng là số nguyên 8 bit .Lệnh thực hiện phép trừ của từ thấp trong ACCU1

cho toán hạng. Kết quả được ghi lại vào byte thấp của từ thấp trong ACCU1

IV.2.3 Nhóm lệnh so sánh

85

Page 86: Giao Trinh PLC In

Thuộc nhóm lệnh không toán hạng là các lệnh thực hiện không điều kiện. Cơ chế

thực hiện :lệnh so sánh được thực hiện trong hai thanh ghi ACCU1và ACCU2 kết quả

của phép so sánh được ghi trong bit RLO của từ trạng thái STW

ACCU2 Toán tử so sánh

= = < > ,> ,<, >=, <=

ACCU1

Nếu RLO = 1 phép so sánh đúng. RLO = 0 phép so sánh sai

Các toán hạng trong ACCU1 và ACCU2 phải có cùng kiểu biểu diễn

Cú pháp hệ lệnh so sánh trong ngôn ngữ STL:

Lệnh so sánh bằng nhau

Cú pháp Số nguyên INT Số nguyên DINT Số thực R

= = I D R

Lệnh so sánh không bằng nhau

Cú pháp Số nguyên INT Số nguyên DINT Số thực R

< > I D R

Lệnh so sánh lớn hơn

Cú pháp Số nguyên INT Số nguyên DINT Số thực R

> I D R

Lệnh so sánh nhỏ hơn

Cú pháp Số nguyên INT Số nguyên DINT Số thực R

< I D R

Lệnh so sánh lớn hơn hoặc bằng

Cú pháp Số nguyên INT Số nguyên DINT Số thực R

>= I D R

Lệnh so sánh nhỏ hơn hoặc bằng

Cú pháp Số nguyên INT Số nguyên DINT Số thực R

=< I D R

Hai bit trạng thái CC1và CC0

CC1 CC0 ý nghĩa

0 0 ACCU1=ACCU2

0 1 ACCU2>ACCU1

1 0 ACCU2<ACCU1

86

Page 87: Giao Trinh PLC In

Cú pháp hệ lệnh so sánh trong ngôn ngữ LAD:

Tên lệnh STL LAD Tên lệnh STL LAD

== <

<> >=

> <=

Lưu ý: đối với các kiểu dữ liệu khác nhau, muốn so sánh thì phải chọn đúng kiểu dữ

liệu so sánh, không được chọn khác kiểu vì chương trình sẽ báo lỗi hoặc thực hiện

không chính xác với bài toán đặt ra.

IV.2.4 Lệnh chuyển đổi kiểu dữ liệu

Cú pháp hệ lệnh sử dụng trong ngôn ngữ STL:

Lệnh chuyển đổi BCD thành số nguyên

số nguyên 16 bit số nguyên 32 bit

Cú pháp BTI BTD

Lệnh không có toán hạng.Kết quả được cất vào ACCU1 .Nội dung của ACCU2

không bị thay đổi .Thanh ghi trạng thái không bị thay đổi nội dung

Lệnh chuyển đổi số nguyên thành BCD

số nguyên 16 bit số nguyên 32 bit

Cú pháp IBT DBT

Lệnh không có toán hạng chữ số. Kết quả được cất vào ACCU1 Nội dung của

ACCU2 không bị thay đổi .

87

Page 88: Giao Trinh PLC In

Lệnh chuyển đổi số nguyên 16 bit thành số nguyên 32 bit

Cú pháp ITD

Lệnh không có toán hạng.Kết quả được cất vào ACCU1 .Nội dung của ACCU2

không bị thay đổi .Thanh ghi trạng thái không bị thay đổi nội dung

Lệnh chuyển đổi số nguyên 32 bit thành số thực

Cú pháp DTR

Lệnh không có toán hạng. Kết quả được cất vào ACCU1 .Nội dung của ACCU2

không bị thay đổi .Thanh ghi trạng thái không bị thay đổi nội dung

Lệnh chuyển đổi số thực thành số nguyên

Các lệnh này chuyển kiểu biểu diễn của một số thực dấu phẩy động trong ACCU1

thành một số nguyên biểu diễn kiểu từ kép

gần nhất nhỏ nhất lớn nhất

Cú pháp RND RND+ RND -

RND:Lệnh chuyển đổi số thực thành số nguyên gần nhất.Nếu số thực đã cho nằm

giữa hai số nguyên thì lấy số chẵn

RND+ : Lệnh chuyển đổi số thực thành số nguyên nhưng không nhỏ hơn số thực

đã cho

RND - : Lệnh chuyển đổi số thực thành số nguyên nhưng không lớn hơn số thực

đã cho. Kết quả của phép tính được cất vào ACCU1 . Nội dung của ACCU2 không bị

thay đổi

Lệnh lấy phần nguyên

Cú pháp TRUNC

Lệnh không có toán hạng và thực hiện việc lấy phần nguyên của số thực dấu phẩy

động trong ACCU1 Kết quả được cất vào ACCU1 Nội dung của ACCU2 không bị thay

đổi.

Cú pháp hệ lệnh sử dụng trong ngôn ngữ LAD:

Tên lệnh STL LAD Tên lệnh STL LAD

BTI DIR

88

Page 89: Giao Trinh PLC In

IBT ITD

TRUNC DTR

IV.2.5 Các lệnh điều khiển chương trình

a. Lệnh kết thúc chương trình

- Lệnh kết thúc chương trình vô điều kiện

Cú pháp BEU

Lệnh không có toán hạng

- Lệnh kết thúc chương trình có điều kiện

Cú pháp BEC

Lệnh không có toán hạng và thực hiện việc kết thúc chương trình khi RLO có giá trị 1

b. Lệnh rẽ nhánh theo bit trạng thái

- Rẽ nhánh khi BR =1

Cú pháp JBI <nhãn>

- Rẽ nhánh khi BR =0

Cú pháp JNBI <nhãn>

- Rẽ nhánh khi RLO = 1

Cú pháp JC <nhãn>

- Rẽ nhánh khi RLO = 0

Cú pháp JCN <nhãn>

- Rẽ nhánh khi CC1 = 0 và CC0 =1

Cú pháp JM <nhãn>

Được sử dụng để rẽ nhánh nếu phép tính trước nó có kết quả âm

- Rẽ nhánh khi CC1 = 1 và CC0 =0

Cú pháp JP <nhãn>

Được sử dụng để rẽ nhánh nếu phép tính trước nó có kết quả dương

- Rẽ nhánh khi CC1 = CC0 =0

89

Page 90: Giao Trinh PLC In

Cú pháp JZ <nhãn>

Được sử dụng để rẽ nhánh nếu phép tính trước nó có kết quả là 0

- Rẽ nhánh khi CC1 CC0

Cú pháp JN<nhãn>

Được sử dụng để rẽ nhánh nếu phép tính trước nó có kết quả khác 0

- Rẽ nhánh khi CC1 = CC0 =0 hoặc CC1 = 0 và CC0 =1

Cú pháp JMZ <nhãn>

Được sử dụng để rẽ nhánh nếu phép tính trước nó có kết quả là một số không dương

- Rẽ nhánh khi CC1 = CC0 =0 hoặc CC1 = 1 và CC0 =0

Cú pháp JPZ <nhãn>

Được sử dụng để rẽ nhánh nếu phép tính trước nó có kết quả là một số không âm

- Rẽ nhánh vô điều kiện

Cú pháp JU <nhãn>

- Lệnh rẽ nhánh theo danh mục

Cú pháp JL <nhãn>

Lệnh rẽ nhánh tuỳ theo nội dung của ACCU1 , số nhánh rẽ nhiều nhất là 255

c. Lệnh xoay vòng (LOOP)

cú pháp LOOP <nhãn>

Khi gặp lệnh này CPU sẽ tự giảm nội dung của từ thấp trong thanh ghi ACCU1 đi 1

đơn vị để kiểm tra xem nó có bằng 0hay không, nếu khác 0 thì CPU sẽ nhảy đến

chương trình được đánh dấu bởi nhãn.

90

Page 91: Giao Trinh PLC In

IV.3 Bộ định thời – Timer

IV.3.1 Định nghĩa

Bộ thời gian Timer là bộ tạo thời gian trễ T mong muốn giữa tín hiệu logic ngõ vào và tín

hiệu logic ngõ ra. S7 300 có 5 loại timer khác nhau. Tất cả 5 loại Timer này cùng bắt đầu tạo thời

gian trễ tín hiệu kể từ thời điểm kích của tín hiệu đầu vào, tức là khi tín hiệu đầu vào chuyển trạng

thái, được gọi là thời điểm timer được kích. Thời gian trễ T mong muốn được khai báo với timer

bằng một word 16 bit bao gồm 2 thành phần:

- Độ phân giải: timer của S7 300 có 4 chế độ phân giải: 10ms, 100ms, 1s và 10s.

- Một số nguyên BCD trong khoảng 0 ÷ 999 được gọi là PV (giá trị đặt trước)

Thời gian trễ mong muốn = PV * Độ phân giải

Độ phân giải của Timer S7-300 định nghĩa như sau:

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

Thanh ghi 16bit dùng cho việc đặt thời gian trễ cho Timer.

Trong đó: bit 14 và 15 không sử dụng

bit 13 và 12 mô tả độ phân giải: 13 12 độ phân giải

0 0 10 ms

0 1 100 ms

1 0 1 s

1 1 10 s

từ bit 11 trở xuống được mô tả dạng mã BCD, do đó, giá trị đặt của Timer nằm

trong khoảng từ 0-999.

Ngay tại thời điểm kích timer, giá trị PV được chuyển vào thanh ghi 16 bit của T_word (gọi

là thanh ghi CV, viết tắt current value, giá trị tức thời). Timer sẽ ghi nhớ khoảng thời gian trôi qua

kể từ khi được kích bằng cách giảm dần một cách tương ứng nội dung thanh ghi CV. Nếu nội

dung thanh ghi trở về bằng 0 thì timer đã đạt được thời gian trễ mong muốn T và điều này sẽ

được báo ra ngoài bằng cách đổi trạng thái tín hiệu ngõ ra.

Một timer được đặt tên là Tx, trong đó x là số hiệu của timer (0 ≤ x ≤ 127). Ký hiệu Tx cũng

đồng thời là địa chỉ hình thức của thanh ghi CV (T- word) và của đầu ra T-bit của timer đó. Tuy

chúng có cùng địa chỉ hình thức, song T-word và T-bit vẫn được phân biệt với nhau nhờ kiểu

lệnh sử dụng với toán hạng Tx .Khi dùng lệnh làm việc với từ, Tx được hiểu là địa chỉ của

Tword, ngược lại khi sử dụng lệnh làm việc với tiếp điểm Tx sẽ được hiểu là địa chỉ của T-bit.

91

Page 92: Giao Trinh PLC In

Một timer đang trong chế độ làm việc (sau khi được kích) có thể được đưa về chế độ chờ khởi

động ban đầu, tức là chờ sườn lên của tín hiệu đầu vào. Công việc này gọi là reset timer. Tín hiệu

reset timer được gọi là tín hiệu xoá và khi tín hiệu xoá có giá trị bằng 1 timer sẽ không làm việc.

Tại thời điểm xuất hiện sườn lên của tín hiệu xoá, T_word và T-bit được xoá về 0, tức là thanh

ghi CV được đặt về 0 và tín hiệu đầu ra có trạng thái 0.

IV.3.2 Khai báo sử dụng

Việc khai báo sử dụng Timer trong STL bao gồm các bước:

- Bước 1: Khai báo tín hiệu enable nếu muốn sử dụng tín hiệu chủ động kích.

- Bước 2: Khai báo tín hiệu đầu vào

- Bước 3: Khai báo thời gian trễ mong muốn

- Bước 4: Khai báo loại Timer được sử dụng ( SD,SS,SP,SE,SF).

- Bước 5: Khai báo tín hiệu xoá Timer nếu muốn sử dụng chế độ reset chủ động.

Trong tất cả 5 bước trên,các bước 2,3,4 là bắt buộc.

- Khai báo tín hiệu enable(chủ động kích)

Cú pháp A <địa chỉ bit>

FR <tên timer>

- Khai báo thời gian trễ mong muốn

Cú pháp L <hằng số >

Thời gian ở đây được khai báo dưới dạng hằng số dưới 2 dạng. Dạng số và dạng

thời gian. Dạng thời gian trực tiếp: ví dụ S5T#6M5S; Dạng số: ví dụ W#16#2111

- Khai báo loại Timer

Trễ theo sườn lên không có nhớ

Cú pháp SD <tên Timer >

Trễ theo sườn lên có nhớ

Cú pháp SS <tên Timer >

Timer tạo xung không có nhớ (Pulse timer)

Cú pháp SP <tên Timer >

Timer tạo xung có nhớ (Pulse timer)

Cú pháp SE <tên Timer >

Timer trễ theo sườn xuống (off ondelay timer)

Cú pháp SF <tên Timer >

92

Page 93: Giao Trinh PLC In

- Khai báo tín hiệu xoá (reset)

Cú pháp A <địa chỉ bit>

R <tên timer>

- Đọc nội dung thanh ghi T-WORD

+ Đọc số đếm tức thời

Cú pháp L <tên timer>

+ Đọc thời gian trễ tức thời

Cú pháp LC <tên timer>

Khai báo trong LAD sẽ có các dạng khác nhau đối với từng loại Timer.

STT STL LAD LAD

1 SD

2 SS

3 SP

4 SE

5 SF

93

Page 94: Giao Trinh PLC In

Ví dụ về sử dụng Timer

LAD:

STL:

Tóm tắt các giá trị về thời gian của các loại Timer:

ST

T

Loại Timer Đáp ứng đầu ra

1 S_ODT

94

Page 95: Giao Trinh PLC In

ST

T

Loại Timer Đáp ứng đầu ra

2 S_ODTS

3 S_OFFDT

4 S_PULSE

5 S_PEXT

95

Page 96: Giao Trinh PLC In

IV.4 Bộ đếm – Counter

IV.4.1 Định nghĩa

- Counter là bộ đếm thực hiện chức năng đếm sườn xung của các tín hiệu đầu vào.

S7-300 có tối đa 256 counter (tuỳ loại CPU), ký hiệu Cx, trong đó x là số nguyên trong

khoảng từ 0 đến 255. Những bộ đếm của S7-300 đều có thể đồng thời đếm tiến theo sườn lên

của một tín hiệu vào thứ nhất, được ký hiệu là CU (count up) và đếm tiến theo sườn lên của tín

hiệu vào thứ hai, ký hiệu CD (count down).

Thông thường bộ đếm chỉ các sườn lên của tín hiệu CU và CD, song cũng có thể được mở

rộng để đếm cả mức tín hiệu của chúng bằng cách sử dụng thêm tín hiệu enable. Nếu có tín hiệu

enable, bộ đếm sẽ đếm tiến khi xuất hiện sườn lên của tín hiệu enable đống thời tại thời điểm CU

có mức tín hiệu 1. Tương tự bộ đếm sẽ đếm lùi khi có sườn lên của tín hiệu enable và tại thời

điểm CD có mức tín hiệu 1. Số sườn xung đếm được ghi vào thanh ghi 2 byte của bộ đếm, gọi là

thanh ghi C word. Nội dung của C-Word được gọi là giá trị đếm tức thời của bộ đếm và ký hiệu

bằng CV (current value). Bộ đếm báo trạng thái của C-Word ra ngoài thông qua chân C-bit của

nó. Nếu CV ≠ 0, C-Bit có giá trị 1. Ngược lại khi CV = 0 C-bit nhận giá trị 0. CV luôn là 1 giá trị

không âm. Bộ đếm sẽ không đếm lùi khi CV = 0. Khác với timer, giá trị đặt trước PV của bộ

đếm chỉ được chuyển vào C-Word tại thời điểm xuất hiện sườn lên của tín hiệu đặt (set S). Bộ

đếm có thể được xoá chủ động bằng tín hiệu xóa (reset). Khi bộ đếm được xóa, cả C-Word và

C-bit đều nhận giá trị 0.

IV.4.2 Khai báo và sử dụng

Việc khai báo Counter gồm 5 bước:

- Bước 1: Khai báo tín hiệu enable nếu muốn sử dụng tín hiệu chủ động kích đếm.

- Bước 2: Khai báo tín hiệu đầu vào CU được đếm lên.

- Bước 3: Khai báo tín hiệu đầu vào CD được đếm xuông.

- Bước 4: Khai báo tín hiệu đặt set và giá trị đặt trước PV.

- Bước 5: Khai báo tín hiệu xóa reset

Khai báo trong ngôn ngữ STL:

- Khai báo tín hiệu kích đếm

Cú pháp A <địa chỉ bit>

FR <tên counter>

96

Page 97: Giao Trinh PLC In

- Khai báo tín hiệu đếm tiến theo sườn lên

Cú pháp A <địa chỉ bit>

CU <tên counter >

- Khai báo tín hiệu đếm lùi theo sườn lên

Cú pháp A <địa chỉ bit>

CD <tên counter >

- Khai báo tín hiệu đặt trước

Cú pháp A <địa chỉ bit>

L C# <hằng số >

S <tên counter >

- Khai báo tín hiệu xoá (reset)

Cú pháp A <địa chỉ bit>

R <tên counter >

- Đọc nội dung thanh ghi T-WORD

Đọc số đếm tức thời dạng binary

Cú pháp L <tên counter >

Đọc thời gian trễ tức thời dạng BCD

Cú pháp LC <tên counter >

Khai báo trong ngôn ngữ LAD

STT STL LAD LAD

Đếm tiến CU

Đếm lùi CD

97

Page 98: Giao Trinh PLC In

STT STL LAD LAD

Đếm tiến lùi

Ví dụ về sử dụng bộ đếm:

LAD: STL :

98

Page 99: Giao Trinh PLC In

IV.5 Phương pháp lập trình

IV.5.1 Lập trình tuyến tính

Kỹ thuật lập trình tuyến tính là phương pháp lập trình mà toàn bộ chương trình ứng

dụng sẽ chỉ nằm trong một khối OB1. Kỹ thuật này có ưu điểm là gọn, rất phù hợp với

những bài toán điều khiển đơn giản, ít nhiệm vụ.

Do toàn bộ khối chương trình điều khiển chỉ nằm trong khối OB1 nên khối OB1 sẽ

gần như là được thường trực trong vùng nhớ Word memory, trừ trường hợp khi hệ

thống phải xử lý các tín hiệu báo ngắt. Ngoài khối OB1, trong vùng Word memory còn

có miền nhớ địa phương (local block) cấp phát cho OB1 và những khối DB được OB1

sử dụng. Hình dưới mô tả quy trình thực hiện chương trình điều khiển tuyến tính.

Hình 4.3 Sơ đồ khối mô tả quy trình điều khiển tuyến tính

Local block của OB1

Khi thực hiện khối OB1, hệ điều hành của luôn cấp của một Local block có kích

thước mặc định là 20 bytes trong Work memory để OB1 có thể lấy những dữ liệu từ hệ

điều hành. Những dữ liệu này gồm:

Tên hình thức Kiểu Giá trị và ý nghĩa

OB1_EV_CLASS Byte Bits 0-3=1(Coming event). Bits 4-

7=1(Event class 1)

OB1_SCAN_1 Byte 1=vòng quét đầu, 3=từ vòng quét thứ 2

OB1_PRIORITY Byte Mức ưu tiên 1(Mức ưu tiên thứ nhất)

OB1_OB_NUMBR Byte 1=Chỉ số của khối OB

99

Hệ điều hành

Chuyển OB1 từ Load memory vào Word memory và cấp phát local block cho nó.

Xoá OB1 và giải phóng local block

trong Word memory.

Thực hiện OB1 trong Word memory

System memory

Share DB

Instance DB

Page 100: Giao Trinh PLC In

OB1_RESERVED_1 Byte Dự trữ (của hệ điều hành)

OB1_RESERVED_2 Byte Dự trữ (của hệ điều hành)

OB1_PREV_CYCLE Int Thời gian vòng quét trước (miliseconds)

OB1_MIN_ CYCLE Int Thời gian vòng quét ngắn nhất đã có

(miliseconds)

OB1_MAX_ CYCLE Int Thời gian vòng quét lớn nhất đã có

(miliseconds)

OB1_DATE_TIME Date_And

_Time

Thời điểm OB1 bắt đầu được thực hiện

Mặc dù kích thước chỉ là 20 bytes mặc định nhưng người sử dụng có thể mở rộng

Local block để sử dụng thêm các biến nhớ cho chương trình (hình dưới). Tuy nhiên

phải để ý rằng do Local block được giải phóng ở cuối mỗi vòng quét và được cấp lại ở

vòng quét sau nên các giá trị có trong Local block của vòng quét trước cũng bị mất khi

bắt đầu vòng quét mới. Do đó tốt nhất chỉ nên sử dụng Local block cho việc lưu giữ

biến nháp tạm thời trong tính toán của một vòng quét.

IV.5.2 Lập trình có cấu trúc

a, Cơ sở lý thuyết

Lập trình có cấu trúc (structure programming) là kỹ thuật cài đặt thuật toán điều

khiển bằng cách chia nhỏ thành các khối chương trình con FC hay FB với mỗi khối

thực hiện một nhiệm vụ cụ thể của bài toán điều khiển chung và toàn bộ các khối

chương trình này lại được quản lý một cách thống nhất bởi khối OB1. Trong OB1 có

các lệnh gọi những khối chương trình con theo thứ tự phù hợp với bài toán điều khiển

đặt ra .

Hoàn toàn tương tự, một nhiệm vụ điều khiển con có thể còn được chia nhỏ thành

nhiều nhiệm vụ nhỏ và cụ thể hơn nữa, do đó một khối chương trình con cũng có thể

được gọi từ một khối chương trình con khác. Duy có điều cấm kỵ ta cần phải tránh là

không bao giờ một khối chương trình con lại gọi đến chính nó. Ngoài ra do có sự hạn

chế về ngăn xếp của các module CPU nên không được tổ chức chương trình con gọi

lồng nhau quá số lần mà module CPU được sử dụng cho phép.

Để đơn giản trong trình bày, khi một khối chương trình con này gọi một khối

chương trình con khác, ta sẽ ký hiệu khối chứa lệnh gọi là khối mẹ và khối được gọi là

100

Page 101: Giao Trinh PLC In

khối con. Hình dưới đây mô tả quy trình thực hiện việc gọi một khối con FC10 từ khối

mẹ OB1.

Hình 4.4 Sơ đồ khối mô tả lập trình điều khiển có cấu trúc

Giữa khối mẹ và khối con có sự liên kết thể hiện qua việc trao đổi các giá trị. Khi

gọi khối con , khối mẹ cần cho những sơ kiện thông qua các tham trị đầu vào để khối

con thực hiện nhiệm vụ. Sau khi thực hiện xong nhiệm vụ, khối con phải trả lại cho

khối mẹ kết quả bằng những tham trị đầu ra. Hệ điều hành của CPU tổ chức việc

truyền tham trị thông qua local block của từng khối con.

Như vậy, khi thực hiện lệnh gọi khối con, hệ điều hành sẽ :

- Chuyển khối con được gọi từ vùng Load memory vào vùng Work memory.

- Cấp phát cho khối con một phần bộ nhớ trong Work memory để làm local block.

Cấu trúc local block được qui định khi soạn thảo các khối.

- Truyền các tham trị từ khối mẹ cho biến hình thức IN, IN-OUT của local block.

- Sau khi khối con thực hiện xong nhiệm vụ và ghi kết quả dưới dạng tham trị đầu ra

cho biến OUT,IN-OUT của local block , hệ điều hành sẽ chuyển các tham trị này

cho khối mẹ và giải phóng khối con cùng local block ra khỏi vùng Work memory

b, Khai báo Local Block

Local block của khối con được cchia thành hai phần:

- Phần các biến hình thức để khối con nhận và truyền tham trị với khối mẹ. Biến

hình thức trong local block của FC có ba loại cho trong bảng 4.1:

Loại biến hình thức ý nghĩa

IN Biến hình thức nhận tham trị từ khối mẹ làm sơ kiện cho

101

Chuyển FC10 vào Work memory, cấp phát local block và gán tham trị từ OB1

FC10

BE

OB1

callFC10

Trả tham trị về OB1. Xoá FC10 và local block trong Work memory

Page 102: Giao Trinh PLC In

chương trình trong khối con

OUT Biến hình thức truyền tham trị từ khối con về khối mẹ

IN- OUT Biến hình thức vừa có khả năng nhận vừa có khả năng

truyền tham trị giữa khối con với khối mẹ.

Bảng 4.1Các loại biến hình thức trong Local Block

- Phần chứa các biến tạm thời được ký hiệu là TEMP (chữ viết tắt của temporary)

chứa các giá trị tính toán tức thời. Do local block sẽ được giải phóng khi kết thúc

chương trình, giá trị các biến tạm thời này cũng sẽ bị mất theo ngay sau khi chương

trình trong khối con được thực hiện xong.

Việc khai báo local block đồng nghĩa với việc đặt tên biến, định nghĩa loại biến

(biến hình thức hay biến tạm thời) và kiểu dữ liệu (nguyên, thực,ký tự…)cho từng

biến,trong đó tên biến là những dãy ký tự hoặc số và không thuộc nhóm ký tự khoá (đã

được dùng bởi hệ điều hành).

Chương trình truy nhập local block thông qua các tên biến dưới dạng toán hạng của

lệnh theo cấu trúc:

#< tên biến >

Ví dụ:

L # receive // Đọc nội dung của ô nhớ có tên là receive trong local block vào ACCU1

T # transit // Chuyển ACCU1 tới ô nhớ có tên là transit trong local block

Chú ý: Một điều cần phải được đặc biệt chú ý là bắt đầu từ miền các biến tạm thời

TEMP,địa chỉ được đánh lại từ đầu. Miền biến hình thức không được cấp ô nhớ mà chỉ

có con trỏ địa chỉ.Do đó nếu trong trương trình,toán hạng của những lệnh truy nhập ô

nhớ của local block có cấu trúc:

L#<địa chỉ>

Thì đó sẽ là ô nhớ thuộc miền các biến TEMP. Những kiểu dữ liệu hợp lệ cho tất cả

các loại biến (kế cả biến hình thức và biến tạm thời) được tổng kết trong bảng 4.2:

Kiểu dữ liệu Kích thước

(bit)

Tham trị thích hợp

BOOL 1 Kiểu biến logic vơí hai giá trị 0 hoặc 1.Tham trị có

thể là một giá trị logic (TRUE/FALSE) hoặc là nội

dung một bit

102

Page 103: Giao Trinh PLC In

Kiểu dữ liệu Kích thước

(bit)

Tham trị thích hợp

BYTE 8 Tham trị phải là nội dung của một byte

WORD 16 Tham trị phải là nội dung của một từ (2 byte)

DWORD 32 Tham trị phải là nội dung của một từ kép (4 byte )

CHAR 8 Tham trị được truyền có thể là một mã ASCII

hoặc nội dung của một byte

INT 16 Tham trị được truyền vào có thể là nội dung của

một từ(2 byte) hoặc là một số nguyên trong

khoảng -32768 32767

DINT 32 Tham trị được truyền vào có thể là nội dung của

một từ kép (4 byte) hoặc là một số nguyên trong

khoảng -231231 –1

REAL 32 Tham trị được truyền vào có thể là nội dung của

một từ kép (4 byte) hoặc là một số thực dấu phảy

động.Ví dụ:3.1416.

TIME 32 Tham trị được truyền vào có thể là nội dung của

một từ kép hoặc là một số đo khoảng thời gian

dạng T# ngày D_giờH_phútM_giâyS_mili

giâyMS

DATE 32 Tham trị được truyền vào có thể là nội dung của

một từ kép (4 byte) hoặclà một giá trị ngày tháng

dạng D#năm-tháng-ngày

TOD 32 Tham trị được truyền vào có thể là nội dung của

một từ kép (4 byte) hoặc là một giá trị thời gian

dạng TOD# ngày D_giờH_phútM_giâyS_mili

giâyMS

S5TIME 32 Tham trị được truyền vào có thể là nội dung của

một từ kép (4 byte) hoặc là một giá trị thời gian

dạng S5T# ngày D_giờH_phútM_giâyS_mili

giâyMS

103

Page 104: Giao Trinh PLC In

Kiểu dữ liệu Kích thước

(bit)

Tham trị thích hợp

DT

Date_And_Time

64 Tham trị được truyền vào có thể là nội dung của ô

nhớ có kiểu Date_And_Time(DT) hoặc là một giá

trị dạng DT # năm-tháng-ngày-giờ:phút:giây:mili

giây

ANY 80 Đây là kiểu biến tổng quát, thay thế được cho các

kiểu ở trên.Ngoài ra tham trị của kiểu biến này

còn có thể là thanh ghi CV,T_Bit,C_Bit,tên của

Timer, tên của Counter; tên các logic block như

FB10, FC2… tên biến hình thức

Bảng 4.2 Các kiểu dữ liệu hợp lệ cho biến

c, Gọi khối FC và thủ tục truyền tham trị

Lệnh gọi một khối con và truyền tham trị cho nó từ khối mẹ có dạng

Cú pháp CALL FCx

Trong đó FCx là tên khối con được gọi.

Ngay khi gặp lệnh gọi một khối con,chương trình soạn thảo Step7 sẽ căn cứ vào cấu

trúc của local block,cụ thể là những biến hình thức của khối con(biến

IN,OUT,IN_OUT), mà cho hiện tại những biến này chờ người sử dụng khai báo tham

trị.

Kiểu tham trị truyền từ khối con thông qua biến hình thức IN hay IN_OUT phụ

thuộc vào kiểu đã gán.Cụ thể là :

- Nếu biến được khai báo một trong các kiểu BOOL, CHAR, INT, DINT,

TIME, BOOL, DATE, TOD, S5TIME thì tham trị truyền có thể là một giá trị cụ thể

hoặc là nội dung của một ô nhớ có kích thước tương ứng.

- Nếu biến được khai báo theo kiểu BYTE, WORD, DWORD, DINT thì phải là

nội dung của ô nhớ có kích thước phù hợp.

Riêng đối với tham trị được khối con trả về cho khối mẹ qua biến hình thức OUT

hay IN-OUT thì luôn phải là một ô nhớ có kích thước cùng với biến.

d, FB và thủ tục truyền tham trị

104

Page 105: Giao Trinh PLC In

Nhược điểm của của kiểu khối FC là nội dung các biến tạm thời theo TEMP không

được lưu giữ lại cho những vòng quét sau. Điều này bắt buộc những khối FC sử dụng

biến kiểu TEMP trong local block phảI được thực hiện xong trong một vòng quét và

do đó hạn chế miền sử dụng của chúng.

Khắc phục nhược điểm trên, S7-300/400 cung cấp một loại khối có tính năng tương

tự như khối FC nhưng lại có khả năng lưu giữ lại được nội dung các biến tạm thời cho

các vòng quét kế tiếp, được gọi là khối hàm FB. Loại biến tạm thời có nội dung được

lưu giữ này có tên là STAT (viết tắt của static).

Phương thức lưu giữ lại nội dung các biến loại STAT được hệ điều hành thực hiện

nhờ một khối dữ liệu như sau:

Hình 4.5 Mô tả phương thức lưu trữ nội dung

- Khi thực hiện lệnh gọi, hệ điều hành chuyển khối FB được gọi vào Work

memory cấp phát cho nó trong Work memory một local block như yêu cầu. Ghi các

tham trị từ khối mẹ vào các biến hình thức loại IN, IN-OUT, và nội dung các ô nhớ

tương ứng trong DB kèm theo biến loại STAT trong local block .

- Khi chương trình trong khối FB kết thúc, hệ điều hành chuyển nội dung của

biến hình thức loại OUT, IN-OUT về cho khối mẹ và ghi lại các giá trị biến thộc loại

105

DB2

OB1

call FB1,DB2

Chuyển FB1 vào Work memory, cấp phát local block

gắn tham trị cho biến hình thức từ OB1 và cho biến loại

STAT từ DB2

DB22

Trả tham trị về OB1 ghi lại biến loại STAT vào DB2.

Xoá FB1 và local block của nó khỏi Work memory

FB1

EMBED

Equation

.3

BE

Page 106: Giao Trinh PLC In

STAT trong local block vào khối dữ liệukèm theo. Sau đó giảit phóng local block cùng

khối FB ra khỏi Work memory.

Về cơ bản local block của khối FB cũng giống như của khối FC, nhưng có thêm

biến loại STAT. Các loại biến của khối FB cho trong bảng 4.3:

Loại biến ý nghĩa

IN Biến hình thức sử dụng để nhận tham trị từ khối mẹ làm sơ kiện cho

chương trình trong khối con

OUT Biến hình thức dùng để trả tham trị từ khối con về khối mẹ

IN-OUT Biến hình thức, loại biến này vừa có khả năng nhận vừa có khả năng

trả tham trị cho khối mẹ.

STAT Nội dung của biến loại này có khả năng lưu giữ lại khi kết thúc

chương trình trong FB

TEMP Biến tạm thời.Nội dung sẽ bị mất khi chương trình trong FB kết thúc

Bảng 4.3Các loại biến của khối FB

Việc khai báo local block cho FB cũng hoàn toàn tương tự như cho FC gồm đặt tên

biến, xác định, xác định loại biến (biến hình thức hay,STAT hay TEMP) và kiểu dữ

liệu (nguyên, thực, ký tự…) cho từng biến.

Tên biến phải là những dãy ký tự hoặc số và không thuộc nhóm ký tự khoá(đã được

dùng bởi hệ điều hành).

Thủ tục gọi khối FB và truyền tham trị:

Khác với khối FC, khối hàm FB bao giờ cũng làm việc với một khối dữ liệu DB dùng

để lưu giữ nội dung các biến kiểu STAT local block. Khối DB này có tên khối dữ liệu

là Instance . Lý do là khi ta thực hiện lệnh gọi khối hàm FB, hệ điều hành cũng mở

luôn khối dữ liệu này bằng lệnh “OPN DI”.

Như vậy kèm với lệnh gọi khối FB ta phải chỉ thị luôn cả luôn cả tên khối dữ

liệu DB tương ứng. Lệnh gọi khối hàm FB có cấu trúc như sau:

Cú pháp CALL FBx , DBy

Trong đó FBx là tên khối hàm được gọi, và DBy là tên khối dữ liệu kèm theo. Khối dữ

liệu DBy phải có cấu trúc phù hợp với local block của FBx đã được soạn thảo.

Phần mềm Step7 hỗ trợ người soạn thảo việc tạo lập khối dữ liệu DB có cấu

trúc phù hợp với local block của khối hàm Fb được gọi.Ngay sau khi viết lệnh gọi một

106

Page 107: Giao Trinh PLC In

khối hàm FB và nếu khối DB kèm theo chưa được soạn thảo trước , Step7 sẽ sẽ tạo lập

một DB mới có cấu trúc phù hợp với local block của khối hàm FB đó.

Sử dụng các khối OB

Các khối OB có thể được xếp theo loại công dụng thành 3 nhóm:

- Nhóm các khối OB chứa chương trình ứng dụng xử lý ngắt,

- Nhóm các khối OB chứa chương trình khởi động,

- Nhóm các khối OB xử lý lỗi trong hệ thống.

Cũng như FC, FB, khối OB là khối chứa chương trình, do đó cũng là một logic

block. Điểm khác biệt cơ bản giữa OB và các khối khác thuộc logic block là OB không

được gọi chủ động để thực hiện (ví dụ bằng lệnh CALL) mà bị động bởi các tín hiệu

ngắt. Khái niệm “bọi bị động” được hiểu là vị trí cũng như thời điểm phát lệnh gọi

không được lập trình từ trước mà hoàn toàn mang tính ngẫu nhiên. Chương trình trong

các khối OB này cũng có thể có các lệnh gọi khối FC hoặc khối FB nhưng tất nhiên

không thể gọi một khối OB khác.

Mỗi khối OB được gọi bằng một loại tín hiệu ngắt. Vậy nếu xảy ra hiện tượng

xuất hiện cùng một lúc nhiều tín hiệu ngắt thì sao? Trong trường hợp như vậy, khối

OB nào có thứ tự ưu tiên cao hơn sẽ được xử lý trước và chương trình trong khối OB

có thứ tự ưu tiên thấp hơn phải chờ cho tới khi tất cả các khối có ưu tiên cao hơn được

xử lý xong mới đến lượt được thực hiện. Khối OB1 là khối có mức ưu tiên thấp nhất

và do đó mọi tín hiệu ngắt đều ngắt được quá trình thực hiện chương trình của khối

OB1.

107

Page 108: Giao Trinh PLC In

IV.6 Sử dụng ngắt trong lập trình

IV.6.1 Ngăn xếp

Ngăn xếp I (I - Stack)Do cũng được gọi (bị động bằng tín hiệu ngắt) nên giống như

việc xử lý lệnh CALL, hệ điều hành cần phải cất giữ vị trí quay về, các dữ liệu càn

thiết để tiếp tục công việc trong khối mẹ. Ngăn xếp cất những dữ liệu này có tên là I-

Stack (hình 4.6). Độ sâu của ngăn xếp I quyết định số các khối chương trình xử lý ngắt

(OB) được lồng nhau và độ sâu này phụ thuộc vào chủng loại của từng module CPU.

Tín hiệu ngắt gọi

khối OB35

Hình 4.4 Ngăn xếp

IV.6.2 Chương trình ứng dụng xử lý ngắt

Chương trình ứng dụng xử lý ngắt được hiểu là loại chương trình viết cho các

khối OB và được gọi bởi các tín hiệu báo ngắt thuộc loại: được phát ra đều đặn cách

đều nhau một khoảng thời gian định trước; được phát ra tại một điểm thời gian định

trước; được phát ra từ các modul (ngắt cứng).

Ngắt tuần tự theo thời gian (OB30 OB38)

Ngay khi nhận thấy trong chương trình có một trong các khối OB30 OB38,

hệ thống sẽ tự động tích cực chế độ phát tín hiệu báo ngắt gọi các khối này với khoảng

108

Nội dung thanh ghi ACCU1,ACCU2

Nội dung thanh ghi AR1,AR2

Nội dung thanh ghi DI,DB

Con trỏ chỉ vào L-Stack chứa nội dung local block của khối mẹ

Nội dung thanh ghi trạng thái

Tên khối mẹOB35

OB1

I- Stack

Page 109: Giao Trinh PLC In

thời gian cách đều nhau. Giá trị mặc định cho chu kỳ phát tín hiệu báo ngắt này là

100ms. Nói cách khác,cứ 100ms thì các khối OB này được gọi và thực hiện một lần.

Tổng hợp thì tất cả các khối trong khoảng OB30 OB38 đều thuộc nhóm khối

chương trình xử lý ngắt theo chu kỳ thời gian.Song không phải module nào cũng cho

phép sử dụng tất cả các khối OB đó,chẳng hạn CPU 314 chỉ cho phép sử dụng OB35.

Trường hợp có nhiều khối OB cùng xử lý một tín hiệu báo ngắt thì ta có thể

phân biệt chúng với nhau theo thứ tự ưu tiên. Chỉ số thứ tự ưu tiên được gắn cho từng

khối nhờ phanà mềm Step7. Ta cũng có thể sử dụng Step7 để thay đổi chu kỳ phát tín

hiệu báo ngắt.

Local block của các khối OB30 OB38 có dạng chung giống như của OB35

cho trong bảng sau:

Tên hình thức Kiểu Giá trị và ý nghĩa

OB35_EV_CLASS Byte Bits 0-3=1(Coming event), Bits 4-7=1(Event

class 1)

OB35_SCAN_1 Byte Báo OB5 đã được thực hiện bằng giá trị

16#36

OB35_PRIORITY Byte Có giá trị là 11(thứ tự ưu tiên)

OB35_OB_NUMBR Byte 35.Là chỉ số của khối OB35

OB35_RESERVED_1 Byte Dự trữ (của hệ điều hành)

OB35_

RESERVED_2

Byte Dự trữ (của hệ điều hành)

OB35_PHASE_OFFS

ET

Word Thời gian trễ (miliseconds)

OB35_

RESERVED_3

Int Dự trữ (của hệ điều hành)

OB35_ EXC_FREQ Int Chu kỳ thời gian thực hiện (miliseconds)

OB35_DATE_TIME Date_An

d_Time

Thời điểm OB35 bắt đầu được thực hiện

109

Page 110: Giao Trinh PLC In

So với các biến trong local block của OB1 thì biến OB35_EXC_FREQ và

OB35_PHASE_OFFSET là hơi khác về mặt ý nghĩa sử dụng và cần được giải thích rõ

thêm:

OB35_EXC_FREQ chứa chu kỳ phát tín hiệu ngắt (mặc định là 100ms hoặc đã

được qui định lại thành Ta nhờ Step7).

OB35_PHASE_OFFSET chứa khoảng thời gian trễ kể từ khi xuất hiện tín hiệu

báo ngắt cho tới khi OB35 được gọi. Thông thường ô nhớ này có nội dung bằng 0,

song trong một số trường hợp ứng dụng người ta vẫn phải gán cho nó một giá trị

dương khác 0 nhằm tránh nguy cơ nhiều khối OB30 OB38 cùng được thực hiện một

lúc dễ gây ra lỗi về thời gian cho hệ thống.

Như đã nói, ngay khi phát hện thấy một trong các khối OB30 OB38 có trong

Load memory hệ thông sẽ tự động tích cực chế độ phát tín hiệu báo ngắt theo chu kỳ

100ms. Chu kỳ Ta =100ms mặc định có thể sửa lại được nhờ công cụ phần mềm

Simatic Manager nhưng giá trị sửa lại đó là cố định trong suốt quá trình thực hiện

chương trình ứng dụng sau này, tức là ta chỉ có thể sửa lại chu kỳ Ta phát tín hiệu ngắt

khi CPU ở chế độ STOP và phải sử dụng Simatic Manager để nạp tham số mới cho

module CPU.

Linh hoạt hơn so với việc sửa đổi lại Ta , ta có thể tích cực hoặc huỷ bỏ chế độ

ngắt theo chu kỳ bằng những hàm có sẵn trong hệ điều hành và do đó không cần phảI

chuyển về trạng thái STOP. Cụ thể là:

Hàm SFC39 (tên hình thức DIS_IRT) có tác dụng che ngắt.

Hàm SFC40 (tên hình thức EN_IRT) có tác dụng bỏ mặt nạ che ngắt.

Hàm SFC41 (tên hình thức DIS_AIRT) có tác dụng che tất cả các ngắt có mức

ưu tiên cao hơn tín hiệu ngắt đang được sử lý.

Hàm SFC42 (tên hình thức EN_AIRT) có tác dụng bỏ mặt nạ che tất cả các

ngắt có mức ưu tiên cao hơn tín hiệu ngắt đang được sử lý.

Ngắt tại một thời điểm định trước (OB10 OB17)

Khối OB10 nói riêng (ví dụ cho module CPU 314) và các khối OB10 OB17

nói chung (phụ thuộc chủng loại của module CPU) sẽ được hệ điều hành gọi một lần

tại một thời điểm định trước hoăc nhiều lần kể từ thời điểm đã cho. Khi được gọi

nhiều lần kể từ thời điểm đã được xác định ta có thể qui định:

110

Page 111: Giao Trinh PLC In

Mỗi phút một lần,

Mỗi tiếng một lần,

Mỗi ngày một lần,

Mỗi tuần một lần,

Mỗi tháng một lần,

Mỗi năm một lần.

Khối OB10 có local block ( tương tự cho cả các khối OB11 OB17 ) :

Tên hình thức Kiểu Giá trị và ý nghĩa

OB10_EV_CLASS Byte B#16#11=ngắt đang được tích cực

OB10_STRT_INFO Byte B#16#11=OB10 đã được gọi và thực hiện

OB10_ PRIORITY Byte Có giá trị là 2(thứ tự ưu tiên)

OB10_OB_NUMBR Byte 10 là chỉ số của khối OB10

OB10_RESERVED_1 Byte Dự trữ (của hệ điều hành)

OB10_RESERVED_2 Byte Dự trữ (của hệ điều hành)

OB10_PERIOD_EXE Word Mã qui định về chế độ thực hiện sử lý

ngắt

W#16#0000 : một lần

W#16#0201: mỗi phút một lần

W#16#0401: mỗi giờ một lần

W#16#1001: mỗi ngày một lần

W#16#1201: mỗi tuần một lần

W#16#1401: mỗi tháng một lần

W#16#1801: mỗi năm một lần

OB10_RESERVED_3 Int Dự trữ (của hệ điều hành)

OB10_RESERVED_4 Int Dự trữ (của hệ điều hành)

OB10_DATE_TIME Date_And_T

ime

Thời điểm OB10 bắt đầu được thực hiện.

Có hai cách để định nghĩa thời điểm phát tín hiệu ngắt và quy định chế độ làm

việc (một lần hay nhiều lần) cho OB10 OB17. Cách thứ nhất là sử dụng công cụ

111

Page 112: Giao Trinh PLC In

phần mềm Simatic Manager và cách thứ hai là sử dụng hàm SFC28 có tên hình thức

SET_ TINT của hệ thống.

Sau khi định nghĩa thời điểm gọi OB10, bản thân khối OB10 cũng cần phải

được tích cực. Ta cũng có hai cách để tích cực khối OB10 hoặc bằng công cụ phần

mềm Simatic Manager hoặc nhờ hàm SFC30 (có tên hình thức CAN_TINT) của hệ

thống.

Để huỷ bỏ trạng thái tích cực của khối OB10 ta sử dụng hoặc công cụ phần

mềm Simatic Manager hoặc nhờ hàm SFC29 (có tên hình thức CAN_TINT).

Tín hiệu báo ngắt tại thời điểm định trước này có thể được che nhờ hàm SFC39

(có tên hình thức DIS_IRT) hay bóc mặt nạ che nhờ hàm SFC40 (có tên hình thức

EN_IRT). Ngoài ra ta cũng có thể sử dụng hàm SFC41 (có tên hình thức DIS_AIRT)

để che tất cả các ngắt có mức ưu tiên cao hơn tín hiệu ngắt đang được xử lý hoặc hàm

SFC42 (có tên hình thức EN_AIRT) để bỏ mặt nạ che tất cả các ngắt có mức ưu tiên

cao hơn tín hiệu ngắt đang được xử lý.

IV.6.3 Xử lý lỗi hệ thống

Lỗi hệ thống có hai loại:

Lỗi asynchronous (lỗi không đồng bộ), bao gồm:

+ lỗi vượt quá thời gian xoay vòng cho phép – OB80,

+ lỗi sự cố nguồn nuôI (ví dụ không có pin) – OB81,

+ lỗi sự cố module (ví dụ chập mạch trên module vào) – OB82,

+ lỗi thiếu khối OB chứa chương trình xử lý ngắt – OB85,

+ lỗi truyền thông – OB87.

Lỗi synchronous (lỗi đồng bộ), bao gồm:

+ lỗi lập trình (ví dụ thiếu khối DB, FC hoặc FB) –OB121,

+ lỗi truy nhập module (ví dụ có lệnh truy nhập module mở rộng nhưng lại

không tìm thấy module đó) – OB122.

Khi gặp lỗi không đồng bộ, hệ thống sẽ chuyển CPU về trạng thái STOP. Tất cả

các tín hiệu báo ngắt lỗi không đồng bộ đều có thể được che hoặc bỏ mặt nạ che nhờ

sử dụng:

Hàm SFC39 (tên hình thức DIS_IRT) có tác dụng che ngắt.

Hàm SFC40 (tên hình thức EN_IRT) có tác dụng bỏ mặt nạ che ngắt.

112

Page 113: Giao Trinh PLC In

Hàm SFC41 (tên hình thức DIS_AIRT) có tác dụng che tất cả các ngắt có mức

ưu tiên cao hơn tín hiệu ngắt đang được xử lý.

Hàm SFC42 (tên hình thức EN_AIRT) có tác dụng bỏ mặt nạ che tất cả các

ngắt có mức ưu tiên cao hơn tín hiệu ngắt đang được xử lý.

Xử lý lỗi về thời gian thực hiện chương trình (OB80)

Khối OB80 sẽ được hệ thống gọi khi:

Thời gian thực hiện chương trình vượt quá thời gian vòng quét cực đại cho

phép. Mặc định mỗi vòng quét được quy định là phảI thực hiện không quá 150ms. Sự

quy định này là cầc thiết để có thể đảm bảo tính thời gian thực của chương trình điều

khiển. Mặc dù ta có thể sử dụng phần mềm Simatic Manager để tăng khoảng thời gian

vòng quét cực đại cho phép, song điều này là hoàn toàn không nên, nhất là khhi phảI

điều khiển đối tượng biến đổi nhanh.

Theo thiết kế, một trong số OB10 OB17 đáng ra phải được gọi tại một thời

điểm định trước, song vì một lý do nào đó, ví dụ như do đồng hồ thời gian thực hiện

của CPU đã bị chỉnh lại, mà điều đó không được thực hiện.

Hệ thống đang phải xử lý một tín hiẹu ngắt chưa xong mà đã gặp phải tín hiẹu

báo ngắt cùng loại. Ví dụ nếu thời gian cần thiết để thực hiện OB35 lại lâu hơn chu kỳ

phát tín hiệu báo ngắt Ta đã khai báo thì sẽ xảy ra trường hợp OB35 chưa được xử lý

xong hệ thống đã lại phải gọi OB35 để xử lý cho lần tiếp theo.

Gặp phải lỗi trong chương trình của một khối OB, chẳng hạn như lỗi logic, lỗi

thuật toán…

Ngay cả trong trường hợp gặp một tín hiệu ngắt cứng hoặc ngắt theo chu

kỳ thời gian nhưng lại không có khối OB tương ứng (OB40 hay OB35) của tín hiệu

ngắt đó, hệ thống cũng chuyển sang gọi khối OB80 đồng thời đưa CPU về trạng thái

STOP.

Như vậy, sẽ có nhiều loại tín hiệu báo ngắt lỗi khác nhau cùng gọi đến OB80.

Chúng sẽ được OB80 phân biệt với nhau trong quá trình xử lý bằng mã nhận biết kiểu

lỗi. Tương ứng với những mã nhận biết kiểu lỗi khác nhau, khối OB sẽ tự tổ chức cho

mình các local block khác nhau.

Local block của khối OB80 cho trong trường hợp a) có cấu trúc như sau:

113

Page 114: Giao Trinh PLC In

Tên hình thức Kiểu Giá trị và ý nghĩa

OB80_EV_CLASS Byte B#16#35.Mã nhận biết thứ nhất

OB80_FLT_ID Byte B#16#01. Mã nhận biết thứ hai

OB80_PRIORITY Byte 26 (thứ tự ưu tiên).

OB80_OB_NUMB

R

Byte 80. Là chỉ số của khối OB80

OB80_RESERVED

_1

Byte Dự trữ (của hệ điều hành).

OB80_RESERVED

_2

Byte Dự trữ (của hệ điều hành).

OB80_LAST_CYL Word Thời gian vòng quét vừa thực hiện.

OB80_MIN_CYL Word Thời gian vòng quét ngắn nhất đã thực

hiện.

OB80_MAX_CYL Word Thời gian vòng quét lâu nhất đã thực

hiện.

OB80_DATE_TIM

E

Date_And_Time Thời điểm OB80 bắt đầu thực hiện.

Local block của khối OB80 cho các trường hợp b), c), d) như sau:

Tên hình thức Kiểu Giá trị và ý nghĩa

OB80_EV_CLASS Byte B#16#35. Mã nhận biết thứ nhất

OB80_FLT_ID Byte Mã nhận biết thứ hai

B#16#02. B#16#03. B#16#07.

OB80_PRIORITY Byte 26 (thứ tự ưu tiên).

OB80_OB_NUMR Byte 80. Là chỉ số của khối OB80.

OB80_RESERVED_1 Byte Dự trữ (của hệ điều hành).

OB80_RESERVED_2 Byte Dự trữ (của hệ điều hành).

OB80_ERR_INFO Word Kiểu lỗi phát hiện được.

OB80_ERR_EV_CL

A

Byte Kiểu tín hiệu ngắt.

114

Page 115: Giao Trinh PLC In

Tên hình thức Kiểu Giá trị và ý nghĩa

OB80_ERR_EV_NU

M

Byte Số hiệu tín hiệu ngắt.

OB80_OB_PRIORIT Byte Thứ tự ưu tiên của khối OB đang được

thực hiện thì xuất hiện tín hiệu báo ngắt.

OB80_OB_NUM Byte Tên khối OB đang được thực hiện thì

xuất hiện tín hiệu báo ngắt.

OB80_DATE_TIME Date_And_Ti

me

Thời điểm OB80 bắt đầu được thực hiện.

IV.6.4 Xử lý lỗi thiếu khối OB (OB85)

Hệ thống sẽ gọi khối OB85 khi gặp lỗi đồng bộ cũng như tín hiệu báo ngắt tại

thời điểm định trước nhưng lại không tìm thấy các khối OB tương ứng để xử lý những

tín hiệu ngắt này (ví dụ thiếu khối OB10, OB82).Khối OB85 cũng được hệ thống gọi

nếu trong chương trình ứng dụng có sử dụng các hàm chuẩn của hệ thống (SFC) mà

những hàm này lại truy nhập đến khối OB không có trong bộ nhớ, ví dụ chương trình

sử dụng hàm SFC30 để tích cực OB10 nhưng không tìm thấy OB10 trong bộ nhớ. Nếu

không tìm thấy OB85, hệ thống sẽ chuyển CPU về trạng thái STOP.

Tín hiệu ngắt báo lỗi thiếu khối OB này có thể được che nhờ hàm SFC39 (tên

hình thức DIS_IRT) hoặc bỏ mặt nạ che nhờ hàm SFC40 (tên hình thức EN_IRT). Ta

cũng có thể sử dụng hàm SFC41 (tên hình thức DIS_AIRT) để che tất cả các ngắt có

mức ưu tiên cao hơn tín hiệu ngắt đang được xử lý hoặc hàm SFC42 (tên hình thức

EN_AIRT) để bỏ mặt nạ che tất cả các ngắt có mức ưu tiên cao hơn tín hiệu ngắt đang

được xử lý.

Local block của khối OB85 có dạng:

Tên hình thức Kiểu Giá trị và ý nghĩa

OB85_EV_CLASS Byte B#16#35.

OB85_FLT_ID Byte Mã báo kiểu lỗi

B#16#A1: Chương trình SFC không

tìm thấy khối OB.

B#16#A1: Hệ điều hành không tìm

thấy khối OB

115

Page 116: Giao Trinh PLC In

Tên hình thức Kiểu Giá trị và ý nghĩa

OB85_PRIORITY Byte 26 (thứ tự ưu tiên).

OB85_OB_NUMR Byte 85. Là chỉ số của khối OB85.

OB85_RESERVED_1 Byte Dự trữ (của hệ điều hành).

OB85_RESERVED_2 Byte Dự trữ (của hệ điều hành).

OB85_RESERVED_3 Word Dự trữ (của hệ điều hành).

OB85_ERR_EV_CL

A

Byte Dạng tín hiệu báo lỗi.

OB85_ERREV_NUM Byte Chỉ số tín hiệu báo lỗi.

OB85_OB_PRIORIT Byte Thứ tự ưu tiên của OB đang được thực

hiện khi có lỗi

OB85_OB_NUM Byte Tên khối OB đang thực hiện khi có lỗi.

OB85_DATE_TIME Date_And_Time Thời điểm OB85 bắt đầu được thực

hiện.

IV.6.5 Xử lý lỗi truyền thông (OB87)

Hệ thống sẽ gọi khối OB87 khi có lỗi truyền thông, ví dụ như lỗi time out

không tìm thấy thấy OB87 để xử lý lỗi, hệ thống sẽ chuyển CPU về trạng thái STOP.

Tín hiệu ngắt báo lỗi truyền thông có thể được che hoặc bỏ mặt nạ che nhờ:

Hàm SFC39 (tên hình thức DIS_IRT) có tác dụng che ngắt.

Hàm SFC40 (tên hình thức EN_IRT) có tác dụng bỏ mặt nạ che ngắt.

Hàm SFC41 (tên hình thức DIS_AIRT) có tác dụng che tất cả các ngắt có mức

ưu tiên cao hơn tín hiệu ngắt đang được xử lý.

Hàm SFC42 (tên hình thức EN_AIRT) có tác dụng bỏ mặt nạ che tất cả các

ngắt có mức ưu tiên cao hơn tín hiệu ngắt đang được xử lý.

Local block của khối OB87 có dạng:

Tên hình thức Kiểu Giá trị và ý nghĩa

OB87_EV_CLASS Byte B#16#35.

OB87_FLT_ID Byte Mã báo kiểu lỗi:

B#16#D2: không phát được tín hiệu yêu

116

Page 117: Giao Trinh PLC In

Tên hình thức Kiểu Giá trị và ý nghĩa

CPU kiểm tra (diagnostic).

B#16#E1: Sai cấu trrúc ID khi truyền

thông với global data (GD).

B#16#E2: Không đưa được thông tin

trạng thái của GD vào DB.

B#16#E6: Nhóm thông tin trạng tháI của

GD không chuyển được vào DB.

OB87_PRIORITY Byte 26 (thứ tự ưu tiên).

OB87_OB_NUMR Byte 87. Là chỉ số của khối OB87.

OB87-

_RESERVED_1

Byte Dự trữ (của hệ điều hành).

OB87-

_RESERVED_2

Byte Dự trữ (của hệ điều hành).

OB87-

_RESERVED_3

Word Dự trữ (của hệ điều hành).

OB87-

_RESERVED_4

Dword Dự trữ (của hệ điều hành).

OB87-

_DATE_TIME

Date_And_Tim

e

Thời điểm OB87 bắt đầu được thực hiện.

IV.6.6 Những hàm chuẩn quản lý ngắt

Che và bỏ mặt nạ che các tín hiệu ngắt, tín hiệu báo lỗi không đồng bộ

Hàm SFC39 (tên hình thức DIS_IRT) có tác dụng che ngắt.

Hàm SFC40 (tên hình thức EN_IRT) có tác dụng bỏ mặt nạ che ngắt.

Hàm SFC41 (tên hình thức DIS_AIRT) có tác dụng che tất cả các ngắt có mức

ưu tiên cao hơn tín hiệu ngắt đang được xử lý.

Hàm SFC42 (tên hình thức EN_AIRT) có tác dụng bỏ mặt nạ che tất cả các

ngắt có mức ưu tiên cao hơn tín hiệu ngắt đang được xử lý.

Tín hiệu báo lỗi đồng bộ

117

Bị che?

Ghi nhớ mã tín hiệu lỗi

Có khố

i OB?

Gọi khối OB

Chuyển CPU về STOPYes

Yes

No

No

Page 118: Giao Trinh PLC In

Hình 4.6 Các bước hệ điều hành xử lý tín hiệu báo lỗi đồng bộ.

Các bước xử lý tín hiệu báo lỗi đồng bộ của hệ điều hành

Lỗi đồng bộ có hai loại:

Loại lỗi lập trình (xử lý bởi OB121) và

Loại lỗi truy nhập module (xử lý bởi OB122),

Trong đó mỗi loại có nhiều kiểu lỗi. Nếu ta có một cách nhìn tổng quát về các kiểu lỗi

đó sẽ rất cần thiết cho việc sử dụng các hàm SFC36, SFC37.

Các kiểu lỗi lập trình (OB121)

a. Lỗi biến đổi BCD: Tín hiệu báo lỗi này sẽ được phát khhi hệ thống gặp phải

lệnh đổi kiểu dữ liệu có cấu trúc BCD với một chữ số ngoài khoảng 09. Ví

dụ hệ thống sẽ phát tín hiệu báo lỗi kiểu này nếu gặp lệnh:

L W#16#2E

BTI //Lỗi, vì chữ E nằm ngoài khoảng 09

b. Lỗi đọc ô nhớ ngoài miền cho phép: Tín hiệu báo lỗi kiểu này sẽ được phát

khi hệ thống gặp phải lệnh đọc nội dung một ô nhớ có địa chỉ nằm ngoài miền

cho phép. Ví dụ hệ thống sẽ phát tín hiệu báo lỗi kiểu này nếu gặp lệnh:

L MW300 //Lỗi, vì miền biến cờ (M) chỉ có 256 byte

c. Lỗi ghi vào ô nhớ ngoài miền cho phép: Tín hiệu báo lỗi kiểu này sẽ được

phát khi hệ thống gặp phải lệnh ghi vào ô nhớ có địa chỉ nằm ngoài miền cho

phép. Ví dụ hệ thống sẽ phát tín hiệu báo lỗi kiểu này nếu gặp lệnh:

T MW320 // Lỗi, vì miền biến cờ (M) chỉ có 256 byte

d. Lỗi đọc ô nhớ có địa chỉ sai cấu trúc: Tín hiệu báo lỗi kiểu này sẽ được phát

khi hệ thống gặp phải lệnh đọc một ô nhớ nhưng địa chỉ lại sai cấu trúc.

118

Page 119: Giao Trinh PLC In

Thông thường việc truy nhập ô nhớ có cấu trúc địa chỉ sai mà không bị phát

hiện sai cú pháp khi soạn thảo là những lệnh truy nhập thông qua con trỏ. Ví

dụ hệ thống sẽ phát tín hiệu báo lỗi kiểu này nếu gặp lệnh:

LAR1 P#0.0

L W[AR1,P#0.0] //Lỗi, vì địa chỉ đúng phải là IW[AR1, P#0.0]

e. Lỗi ghi vào ô nhớ có địa chỉ sai cấu trúc: Tín hiệu báo lỗi khiểu này sẽ được

phát hiện khi hệ thống gặp phải lệnh ghi vào một ô nhớ có địa chỉ sai cấu trúc.

Thông thường việc truy nhập ô nhớ có cấu trúc sai địa chỉ mà không bị phát

hiện sai cú pháp khi soạn thảo là những lệnh truy nhập thông qua con trỏ. Ví

dụ hệ thống sẽ phát tín hiệu báo lỗi kiểu này nếu gặp lệnh:

LAR1 P#4.0

T W[AR1,P#0.0] //Lỗi, địa chỉ đúng phải là QW[AR1, P#0.0]

f. Lỗi sai tên Timer: Tín hiệu báo lỗi kiểu này sẽ xuất hiện khi gặp phải lệnh

làm việc với Timer có tên nằm ngoài khoảng mà CPU cho phép. Ví dụ CPU

312 chỉ có 128 Timer nên hệ thống sẽ phát tín hiệu báo lỗi kiểu này

nếuMW0=129 và gặp lệnh :

SP T[MW0] //Lỗi , nếu MW0 có giá trị là 129

g. Lỗi sai tên Counter : Tín hiệu báo lỗi này sẽ được phát khi hệ thống gặp phải

lệnh làm việc với Counter có tên nằm ngoài khoảng CPU cho phép. Ví dụ

CPU312 chỉ có 64 Counter nên hệ thống sẽ phát tín hiệu báo lỗi kiểu này nếu

MW0 = 100 gặp lệnh :

CU C[MW0] //Lỗi ,nếu MW0 có giá trị là 100

h. Lỗi đọc ô nhớ qua con trỏ có địa chỉ sai: Tín hiệu báo lỗi kiểu này sẽ được

phát khi hệ thống gặp phải lệnh đọc nội dung ô nhớ có kích thước bytes,word

hay dword nhưng con trỏ lại có phần địa chỉ bit 0. Ví dụ hệ thống sẽ phát

tín hiệu báo lỗi kiểu này nếu gặp lệnh:

LAR1 P#M0 .2

L B[AR1, P# 0.0] // Lỗi vì một bytes được tính từ bit thứ 0

i. Lỗi đọc ô nhớ qua con trỏ có địa chỉ sai: Tín hiệu báo lỗi kiểu này sẽ được

phát khi hệ thống gặp phải lệnh đọc nội dung ô nhớ có kích thước bytes,word

119

Page 120: Giao Trinh PLC In

hay dword nhưng con trỏ lại có phần địa chỉ bit 0. Ví dụ hệ thống sẽ phát

tín hiệu báo lỗi kiểu này nếu gặp lệnh:

LAR1 P#M0 .2

T B[AR1, P# 0.0] // Lỗi vì một bytes được tính từ bit thứ 0

j. Lỗi làm việc với DB: Tín hiệu báo lỗi kiểu này sẽ được phát khi hệ thống gặp

phải lệnh ghi dữ liệu vào một DB (share) chỉ cho phép đọc

k. Lỗi làm việc với DI: Tín hiệu báo lỗi kiểu này sẽ được phát khi hệ thống gặp

phải lệnh ghi dữ liệu vào một DI (Instance) chỉ cho phép đọc.

l. Lỗi mở một DB có tên quá lớn: Tín hiệu báo lỗi kiểu này sẽ được phát khi hệ

thống gặp phải lệnh mở một DB (share) có tên nằm ngoài miền mà CPU cho

phép.

m. Lỗi mở một DI có tên quá lớn: Tín hiệu báo lỗi kiểu này sẽ được phát khi hệ

thống gặp phải lệnh mở một DI (Instance) có tên nằm ngoài miền mà CPU

cho phép.

n. Lỗi gọi một khối FC có tên qua lớn: Tín hiệu báo lỗi kiểu này sẽ được phát

khi hệ thống gặp phải lệnh gọi một khối FC có tên nằm ngoài miền mà CPU

cho phép.

o. Lỗi gọi một khối FB có tên qua lớn: Tín hiệu báo lỗi kiểu này sẽ được phát

khi hệ thống gặp phải lệnh gọi một khối FB có tên nằm ngoài miền mà CPU

cho phép.

p. Lỗi mở một khối DB không có trong bộ nhớ: Tín hiệu báo lỗi kiểu này sẽ

được phát khi hệ thống gặp phải lệnh mở một khối DB nhưng khối này lại

chưa được nạp vào bộ nhớ (Load memory) của CPU

q. Lỗi mở một khối FC không có trong bộ nhớ: Tín hiệu báo lỗi kiểu này sẽ

được phát khi hệ thống gặp phải lệnh mở một khối FC nhưng khối này lại

chưa được nạp vào bộ nhớ (Load memory) của CPU.

r. Lỗi mở một khối FB không có trong bộ nhớ: Tín hiệu báo lỗi kiểu này sẽ được

phát khi hệ thống gặp phải lệnh mở một khối FB nhưng khối này lại chưa

được nạp vào bộ nhớ (Load memory) của CPU

Các kiểu lỗi truy nhập module (OB122)

120

Page 121: Giao Trinh PLC In

s.Lỗi đọc từ module tín hiệu: Tín hiệu báo lỗi kiểu này sẽ được phát khi hệ thống

thực hiện lệnh đọc cổng một module tín hiệu (SM) nhưng lại không tìm thấy

module này hoặc CPU không thực hiện được sự kết nối với module (time

out).

t. Lỗi ghi ra module tín hiệu: Tín hiệu báo lỗi kiểu này sẽ được phát khi hệ thống

thực hiện lệnh ghi ra cổng một module tín hiệu (SM) nhưng lại không tìm

thấy module này hoặc CPU không thực hiện được sự kết nối với module (time

out).

Tích cực và huỷ bỏ ngắt thời điểm

Khi tín hiệu báo ngắt theo thời điểm được phát ra, hệ thống sẽ gọi khối chương

trình tương ứng OB10OB17 để xử lý. Số các khối OB xử lý tín hiệu ngắt tại thời

điểm định trước phụ thuộc vào từng chủng loại module CPU mà ta sử dụng. Ví dụ với

CPU314 ta chỉ sử dụng được OB10 có thứ tự ưu tiên là 2.

Để khai báo sử dụng OB10OB17, có các công cụ:

1) Xác định thời điểm phát tín hiệu báo ngắt bằng phần mềm Simatic Manager.

2) Tích cực ngắt nhờ phần mềm Simatic Manager hoặc nhờ hàm hệ thống SFC30

có tên hình thức ACT_TINT.

3) Huỷ bỏ tín hiệu ngắt đang tích cực nhờ hàm SFC29 có tên hình thức QRY

_TINT.

4) Xem trạng thái tín hiệu ngắt nhờ hàm SFC31có tên hình thức QRY_TINT

Trước khi sử dụng các hàm hệ thống trên, khối OB10OB17 đã phải có trong

Load memory của CPU. Trong quá trình thực hiện, nếu không tìm thấy các khối OB

này hệ điều hành sẽ gọi OB85 để xử lý lỗi thiếu khối OB và nếu cũng không tìm thấy

OB85, nó sẽ chuyển CPU về trạng thái STOP.

Khi đã tích cực tín hiệu ngắt tại thời điểm cho trước mà vì một lý do nào đó ta

lại chỉnh lại đồng hồ thời gian của CPU thì có thể sẽ gây ra nguy cơ đồng hồ được

chỉnh (tiến hoặc lùi) qua thời điểm phát tín hiệu ngắt. Trong trường hợp như vậy hệ

điều hành sẽ gọi khối OB80 để thực hiện chương trình xử lý lỗi không đồng bộ về thời

gian và nếu cũng không tìm thấykhối OB80, nó sẽ chuyển CPU về trạng thái STOP.

Thay đổi chế độ làm việc của module mở rộng

121

Page 122: Giao Trinh PLC In

Khi nói về tín hiệu ngắt cứng với các khối chương trình xử lý ngắt

OB40OB47 cũng như về việc tích cực chế độ tự chuẩn đoán lỗi của những module

tín hiệu đặc chủng (module tín hiệu có ngắt cứng, tự chuẩn đoán). module CP, module

FM,… ta có đề cập đến khả năng đặt tham số chế độ làm việc từ chương trình ứng

dụng thông qua một số hàm trao đổi tham số giữa CPU và module mở rộng, tức là

ngay cả khi CPU đang ở trạng thái RUN

Với những hàm này chương trình ứng dụng có thể mềm dẻo sử dụng nhiều chế độ làm

việc khác nhau của module mở rộng.

Ví dụ: Ta có thể lấy việc đọc cổng tương tự làm ví dụ. Chẳng hạn theo yêu cầu

bài toán thì có lúc tín hiệu tương tự đầu vào có dạng là dòng, có lúc là áp. Ngay cả khi

cố định dạng tín hiệu vào là áp thì có lúc nó là tín hiệu thuộc dải 10V, có lúc lại nằm

trong dải 2.5V. Điều này chương trình ứng dụng sẽ nhận biết được thông qua tín

hiệu số tại cổng I0.0. Nếu I0.0=1 thì dạng tín hiệu tương tự có tại địa chỉ PIW256 là áp

trong dải 10V, ngược lại khi I0.0=0 thì nó sẽ là điện áp thuộc khoảng 2.5V. Một

số module tương tự của S7-300 cho phép tuỳ chọn chế độ làm việc với tín hiệu tương

tự dạng điện áp hay dòng cũng như dải giá trị tín hiệu, 10mA, 5mA, 3.2mA….

Tuy nhiên nếu chỉ sử dụng Simatic Manager để quy định chế độ làm việc cho module

tương tự đó thì trong suốt quá trình thực hiện chương trình hoặc ta chỉ có thể làm việc

hoặc với tín hiệu thuộc dải 10V, hoặc 2.5V mà không thay đổi theo I0.0 như yêu

cầu bài toán đặt ra. ở đây để giải quyết được yêu cầu bài toán, bắt buộc phải thay đổi

chế độ làm việc mới từ chương trình ứng dụng tới module tương tự.

Các hàm cho phép ta từ chương trình ứng dụng truy nhập vào thanh ghi xác

định chế độ làm việc của module mở rộng bao gồm:

SFC55 (tên hình thức WR_PARM) để ghi tham số đặt cấu hình cho module.Tham

số cấu hình này được người sử dụng tự xây dựng và tổ chức thành một khối dữ liệu

(DB) có cấu trúc phù hợp với chủng loại module.

SFC56 (tên hình thức WR_DPARM) để sửa đổi một vài tham số cấu hình của

module. Những tham số này phải được lấy từ các khối dữ liệu đã có của hệ thống

(SDB100SDB103).

122

Page 123: Giao Trinh PLC In

SFC57 (tên hình thức PARM_MOD) để sửa đổi toàn bộ tham số cấu hình của

module. Tất cả các tham số này phải được lấy từ các khối dữ liệu đã có của hệ thống

(SDB100SDB103).

Sau đây là một số chế độ làm việc của các module mở rộng có thể thay đổi

được từ chương trình ứng dụng:

a) Phát tín hiệu ngắt cứng (OB40OB47) từ module tín hiệu vào/ra số. Tín hiệu

ngắt cứng được phát khi xuất hiện sườn lên hoặc xuống của tín hiệu logic tại

cổng vào của module.

b) Tự chuẩn đoán lỗi của module vào/ra số, của module vào/ra tương tự (OB82).

c) Quy định lại dạng tín hiệu tương tự (áp hay dòng) có tại cổng vào tương tự của

module.

d) Xác định lại dải tín hiệu cho phép của tín hiệu tương tự.

e) Phát tín hiệu báo ngắt nếu tín hiệu tương tự đầu vào nằm ngoài khoảng đã được

định nghĩa. Khoảng giá trị được định nghĩa này tất nhiên phải nằm trong dải tín

hiệu cho phép, chẳng hạn dải tín hiệu là 10V được chuyển đổi sang toàn bộ

khoảng biến đổi của số nguyên 16 bits là từ -32768 đến 32767 nhưng ta có ther

quy định lại là chúng chỉ được phép nằm trong khoảng -2000 đến 2000.

Bên cạnh những chế độ vừa nêu còn có một vài chế độ làm việc khác của

module mở rộng có thể được thay đổi bởi chương trình ứng dụng.

Hàm FSC55 (WR_PARM)

Hàm FSC55 có tác dụng truyền tham số đặt cấu hình cho module mở rộng.

Tham số phải được tổ chức thành những khối dữ liệu (DB), chẳng hạn như các khối

DB45. Quá trình truyền tham số này là không đồng bộ, nói cách khác trong thời gian

truyền tham số, module không có khả năng giao tiếp với ngoại vi bởi vậy chương trình

ứng dụng cần phải đợi cho tới khi quá trình truyền tham số được hoàn tấtmới có thể sử

dụng được module và để làm được điều này,hàm FSC55 có biến BUSY thông báo lúc

nào hoàn thành quá trình truyền tham số.

Hàm SFC55 có các tham biến hình thức vào-ra như sau:

Loại

biến

Tên biến Kiểu dữ liệu ý nghĩa

IN REQ Bool Tên khối OB chứa chương trình xử lý ngắt

123

Page 124: Giao Trinh PLC In

(ví dụ OB10).

IN IOID Byte Vùng truy nhập:

B#16#54: Vào.

B#16#55: Ra.

IN LADDR Word Địa chỉ của module.

IN RECNUM Byte Chỉ số của data record. ở đây nếu tham số

cấu hình được người sử dụng tự tổ chức thì

RECNUM phải là 1.

IN RECORD Any Tên khối dữ liệu chứa tham số và độ dài

(tính theo bytes).

OUT RET_VA

L

Mã báo lỗi khi thực hiện hàm .

OUT BUSY Bool Báo tham số đang được truyền.

REQ: Yêu cầu gửi.

Hàm chỉ thực sự bắt đầu công việc gửi tham số tới module nếu REQ=1. Tuy

nhiên, hàm cũng vẫn sẽ hoàn thành nốt công việc nếu đang trong quá trình gửi mà tín

hiệu yêu cầu gửi REQ đã trở về 0.

BUSY: Mã hiệu báo đang bận truyền.

Khi hàm chưa hoàn thành xong công việc gửi tham số tới module, BUSY vẫn

có giá trị 1. Việc gửi tham số có thể phải kéo dài vài vòng quét và BUSY=0 chỉ khi

công việc gửi tham số thực sự đã hoàn tất.

RET_VAL: Mã hiệu báo lỗi của hàm:

Mã hiệu ý nghĩa

W#16#8090 Địa chỉ module nằm ngaòi miền định nghĩa.

W#16#8091 Địa chỉ module sai cấu trúc.

W#16#8092 Kiểu dữ liệu của tham số trong khối DB không phù hợp với loại

biến (byte, word, dword).

W#16#8093 Sai giá trị của IOID.

W#16#80A1 Không truyền được tham số (đường truyền không thông).

W#16#80B1 Độ dài của DB chứa tham số không đúng.

124

Page 125: Giao Trinh PLC In

W#16#80B3 Module tìm thấy ở slot đã chỉ thị lại kiểu khác.

W#16#80D2 Tham số không đúng cho module.

125

Page 126: Giao Trinh PLC In

IV.7 Làm việc với tín hiệu tương tự và bộ đếm xung tốc độ cao

IV.7.1 Xử lý tín hiệu analog

a, Địa chỉ vào ra và dải đo các tín hiệu

PI : Miền địa chỉ cổng vào của các Module tương tự (I/O External input). Các giá

trị tương tự tại cổng vào của module tương tự sẽ được đọc và chuyển tự động theo

những địa chỉ được cấu hình ở phần cứng. 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 từng từ kép PID .

PQ: Miền địa chỉ cổng ra cho các module tương tự (I/O External Output). Các giá

trị theo những địa chỉ này sẽ được module tương tự chuyển tới các cổng ra tượng tự.

Chương trình ứng dụng có thể truy nhập miền nhớ PQ theo từng Byte (PQB), từng từ

(PQW) hoặc theo từng từ kép (PQD).

Trên mỗi Slot có khả năng định địa chỉ 16 bytes. PI và PQ lấy địa chỉ bắt đầu như

nhau

Ví dụ: Slot 5 gắn module analog AI 4/ AO 4 thì module có địa chỉ như sau:

Địa chỉ 4 đầu vào: PIW272, PIW274, PIW276, PIW278

Địa chỉ 4 đầu ra: PQW272, PQW274, PQW276, PQW278

- Dạng tín hiệu chuyển đổi: có 2 dạng: tương tự sang số; số sang tương tự

- Thang đo điện áp và dòng điện: Muốn đo điện áp, dòng điện ta chọn module

Analog phù hợp với yêu cầu cần đo. Chọn giá trị thang đo khi thiết lập cấu

hình phần cứng, tuỳ thuộc yêu cầu dãy điện áp cần đo. Giá trị số nguyên của

kêt quả đo đọc được từ PI (thanh ghi đệm chứa giá trị analog ở đầu vào) phụ

thuộc vào độ lớn điện áp cần đo và thang đo được chọn. Giá trị đo phụ thuộc

tuyến tính với điện áp đo trong phạm vi danh định của thang đo. Giá trị số

của thang đo:

Dải đo Dải đo Dải đo Dải đo Dải đo Tín hiệu số

± 80 mV ± 250 mV ± 500 mV ± 1000 mV ± 2500 mV ± 27648

± 5 V ± 10 V ± 10 mA ± 3.2 mA ± 27648

1 - 5V 0 - 20 mA 4 - 20 mA 0 - 27648

- Thang đo điện trở, nhiệt độ: Khi cần đo điện trở, nhiệt độ ta cần chọn

module thích hợp. Chọn đầu vào điện trở, nhiệt độ, loại cảm biến được thực

126

Page 127: Giao Trinh PLC In

hiện trong xây dựng cấu hình phần cứng. Giá trị đo được tuyến tính trong

pham vi danh định.

Thang đo điện trở:

Dải đo Dải đo Dải đo Tín hiệu số

0 – 150 Ohm 0 – 300 Ohm 0 – 600 Ohm 0 - 27648

Thang đo nhiệt độ:

Dải đo (0C) Tín hiệu số

Pt 100 Standard, - 200 -> 850 - 2000 -> 8500

Pt 100 Climate, - 200 -> 850 - 1200 -> 1300

Ni 100 Standard, - 60 -> 250 - 600 -> 2500

Ni 100 Climate, - 60 -> 250 - 600 -> 2500

Cảm biến loại K, - 270 -> 1372 - 2700 -> 13720

Cảm biến loại N, - 270 -> 1300 - 2700 -> 13000

Cảm biến loại J, - 210 -> 1200 - 2100 -> 12000

Cảm biến loại E, - 270 -> 1000 - 2700 -> 10000

Cảm biến loại L, - 200 -> 900 0C - 2000 -> 9000

- Giá trị đầu ra PQ đưa đến các ra tương tự

Dải đo Tín hiệu số

0 -> 10 V 0 -> 27648

1 -> 5 V 0 -> 27648

± 10 V ± 27648

0 -> 20 mA 0 -> 27648

4 -> 20 mA 0 -> 27648

± 20 mA ± 27648

b, Xử lý tín hiệu tương tự

- Để đọc tốt tín hiệu Analog trước hết ta phải xác định tín hiệu đọc Analog là

tín hiệu loại gì ( 0-10V,4-20mA,cách đấu 2 dây,cách đấu 4 dây……)

- Bước kế tiếp là phải chọn đúng loại tín hiệu trên phần cứng ( Chọn loại tín

hiệu trên Modul đọc kênh Analog) và chọn đúng trên cấu hình phần cứng

127

Page 128: Giao Trinh PLC In

cho phù hợp, nếu chọn 2 bước này không tương thích thì đèn System Fault

của Modul Analog sẽ sáng và kênh Analog sẽ đọc sai.

- Xác định đúng tín hiệu sử dụng,đơn cực hay lưỡng cực

- Xác định địa chỉ cho từng kênh Analog ( vd: PIW256…)

Tín hiệu analog đầu vào là các số nguyên INT. Muốn tính toán trên các kiểu dữ

liệu khác phải dùng các hàm biến đổi thích hợp.

Biến đổi số nguyên sang BCD: ITB

Biến đổi số nguyên sang số nguyên dài: ITD

Biến đổi số nguyên dài sang số thực: DTR

Biến đổi số nguyên dài sang BCD: DTB

Biến đổi số thực sang số nguyên dài: TRUNC

c, Các hàm chuyển đổi cơ bản

Trong thư viện Standar, mục TI-S7 Converting Blocks có 2 hàm cơ bản thường

được sử dụng trong việc chuyển đổi đại lượng, là hàm SCALE và UNSCALE.

- Hàm chuyển đổi SCALE FC 105

Đây là hàm chuyển đổi từ dạng tín hiệu đầu vào PIW của của module tương tự

dạng INT sang dạng đại lượng cần đo.

Đồ thị biến đổi của hàm FC105

Hàm tuyến tính:

OUT = [{Hi(lim) – Lo(lim)}{IN – K1} / { K2 - K1}] + Lo(lim)

Trong đó:

OUT: giá trị đại lượng đo, dạng số thực.

128

Page 129: Giao Trinh PLC In

IN: Số từ PIW, dạng số nguyên.

K2: giá trị số nguyên giới hạn trên ở đầu vào PIW.

K1: giá trị số nguyên giới hạn dưới ở đầu vào PIW.

Hi(lim): giới hạn trên đại lượng cần đo

Lo(lim): giới hạn dưới đại lượng cần đo

Đầu vào Bipolar: - 27648

Đầu vào Unipolar: 0

(Ngo vào Bipolar xác định có chuyển đổi giá trị âm hay không. Bipolar = 1 =>ngo

vào 2 cực => có chuyển đổi giá trị âm. Bipolar = 0 => một cực => ko chuyển đổi giá

trị âm)

Ví dụ ứng dụng:

Nếu đầu vào PIW288 của module analog có thang đo ±80 mV, CPU sẽ nhận được

giá trị từ ±27648 nếu có cực. Qua hàm FC105 sẽ chuyển đổi giá trị nhận được thành số

mV mong muốn.

Viết chương trình và kiểm tra chương trình hoạt động.

- Hàm chuyển đổi UNSCALE FC106

129

Page 130: Giao Trinh PLC In

Hàm FC106 chuyển đổi đại lượng cần đưa ra cổng điều khiển của module analog

từ giá trị thực thành giá trị số nguyên.

Đồ thị biến đổi của hàm FC 106

Dạng biến đổi có công thức:

OUT=[(K2-K1)*(IN-Lo(lim)]/[Hi(lim)-Lo(lim)] + K1

OUT: đầu ra hàm, dạng số nguyên.

IN: đầu vào, dạng số thực.

K2: giới hạn trên của số nguyên đầu ra: 27648 (với module có độ phân giải)

K1: Giới hạn dưới của số nguyên đầu ra, Bipolar là – 27648, Unipolar là 0

Ví dụ:

Ta muốn truyền ra module analog đầu ra PQW290, thang đo 0-10V, giá trị điện áp

3.3V chứa trong MD24. Thay đổi giá trị trong MD24, tín hiệu đầu ra analog sẽ thay

đổi theo.

130

Page 131: Giao Trinh PLC In

Ngoài ra, nếu dựa trên dải đo của cảm biến, ta có thể viết hàm riêng cho từng loại

cảm biến đo thay vì sử dụng các hàm đã xây dựng sẵn trong phần mềm.

IV.7.2 Đếm xung tốc độ cao

Xung tốc độ cao được đọc thông qua những Modul đọc xung tốc độ cao hoặc có

thể được đọc thông qua CPU có tích hợp sẵn những I/O có khả năng đọc xung tốc độ

cao như CPU 312C,313C……

Việc đọc xung tốc độ cao là hết sức cần thiết cho những ứng dụng đọc xung

Encoder, hay đọc xung của những Input tốc độ cao. Tuỳ thuộc từng loại CPU cũng

như Modul đọc xung tốc độ cao mà có những cách thức đấu nối dây khác nhau,do vậy

việc đấu nối dây cần phải xem tài liệu trước khi thực hiện. Cần phải xác định chế độ

đọc xung trước khi đấu nối ( vd : chế độ đọc 2 xung,chế độ đọc 1 xung ……).

Hàm đọc xung tốc độ cao: SFB 47 (DB47)

131

Page 132: Giao Trinh PLC In

Chi tiết cụ thể có thể xem trong File Help của SFB47 bằng cách chọn SFB47

rồi bấm F1

Xác định độ rộng xung bằng hàm SFB49 (DB49).

Ngoài việc đọc xung tốc độ cao bằng hàm SFB47,ta còn có thể đọc tần số bằng

hàm SFB48 (DB48). Cách thức định dạng hàm SFB48 cũng hoàn toàn tương tự hàm

SFB47, chỉ khác ngõ ra là tần số. Chi tiết cụ thể có thể chọn hàm SFB48 rồi bấm F1.

132