Thanh ghi trạng thái

Một phần của tài liệu Giáo trình kỹ thuật điều khiển lập trình (Trang 49)

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 bít, đượ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 bít nhưng chỉ sử dụng 9 bít với cấu trúc như sau:

BR CC1 CC0 OV OS OR STA RLO FC * FC( First check):

Khi phải thực hiện một dãy các lệnh liên tiếp nhau gồm các phép tính , V và nghịch đảo, bit FC cĩ giá trị bằng 1. 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.

Ví dụ: A IO.3 // FC = 1

AN IO. 3 // FC = 1

= Q4. O // FC = 0

* RLO(Result of logic operation):

Kết quả tức thời của phép tốn logic vừa được thực hiện … Ví dụ lệnh: A IO.3

- Nếu trước khi thực hiện bit FC = 0 thì cĩ tác dụng chuyển nội dung của cổng vào số IO. 3 vào bit trạng thái RLO.

- Nếu trước khi thực hiện bit FC = 1 thì cĩ tác dụng thực hiện phép tính AND giữa RLO và giá trị logic cổng vào IO. 3. Kết quả của phép tính được ghi lại vào bit trạng thái RLO.

* 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.

Ví dụ: A IO. 3 AN IO. 3

Cả hai lệnh đều gán cho bit STA cùng một giá trị là nội dung của cổng vào số IO. 3.

* OR:

Ghi lại giá trị của phép tính logic AND cuối cùng được thực hiện để phụ giúp cho việc thực hiện phép tốn OR sau đĩ. Điều này là cần thiết vì trong một biểu thức hàm hai trị, phép tính AND bao giờ cũng phải được thực hiện trước các phép tính OR.

* OS (Stored overflow bit):

Ghi lại giá trị bit bị tràn ra ngồi mảng ơ nhớ. * OV (Overflow bit):

Bit báo kết quả phép tính bị tràn ra ngồi mảng ơ nhớ. * CC0 và CC1 (Condiction 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.

Chú ý: Một chương trình viết cĩ thể gồm nhiều network. Mỗi network chứa một đoạn chương trình phục vụ một cơng đoạn cụ thể. ở đầu mỗi network, thanh ghi trạng thái nhận giá trị 0. Chỉ sau lệnh đầu tiên của network, các bit trạng thái mới thay đổi theo kết quả của phép tính.

1.2.2.4. Vịng quét và cấu trúc chương trình a) Vịng quét 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 được thực hiện từ lệnh đầu tiên đến lệnh kết thúc của khối OBI (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 lỗi (hình 1-33).

Chú ý: 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ệnh 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 được 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 trong chương trình được thực hiện, vào khối dữ liệu được 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 tốn và việc gửi tín hiệu điều khiển tới đối tượng cĩ một khoảng thời gian trễ đúng bằng thơì 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.

Hình 1-33: Vịng quét chương trình

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ể 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 một tín hiệu báo ngắt xuất hiện khi PLC đang ở giai đoạn truyền thơngvà kiểm tra nội bộ, PLC sẽ tạm dừ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.

Vịng quét chương trình Truyền thơng và

kiểm tra nội bộ (adsbygoogle = window.adsbygoogle || []).push({});

Chuyển dữ liệu từ cổng vào tới I Thực hiện chương trình Chuyển dữ liệu từ Q tới cổng ra

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 các ngoại vi trong các giai đoạn 1 và 3 do hệ điều hành CPU quản lý. ở một số mơ đun 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.

b) Những khối OB đặc biệt

Trong khi những khối OB1 đượ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. Chúng bao gồm:

* OB10 (Time of day Interrtupt): Chương trình trong khối OB10 sẽ đựoc thực hiện khi giá trị của đồng hồ thời gian thực nằm trong một khoangt thời gian đã được quy định. OB10 cĩ thể được gọi một lần hay 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 Mơ đun CPU nhờ phần mềm Step7.

* OB20 (Time delay Interrtupt): Chương trình trong khối OB20 sẽ đựoc thực hiện sau một khoảng thời gian đặt trước kể từ khi gọi chương trình hệ thống SFC32 để đặt thời gian trễ.

* OB35 (Cycle interrupt) : Chương trình trong khối OB35 sẽ đựoc thực hiện cách đều nhau một khoảng thời gai cố định . Mặc định khoảng thời gian này sẽ là 100ms, song ta cĩ thể thay đổi nĩ thơng bảng tham số của Mơ đun CPU nhờ phần mềm Step7.

* OB40 (Hardware interrupt): Chương trình trong khối OB40 sẽ đựoc thực hiện khi xuát hiện một tín hiệu báo ngắt từ ngoại vi đưa vào Mơ đun CPU thơng qua các cổng vào /ra số Onboard đặc biệt, thơng qua các Mơ đun SM,CP,FM.

* OB80 ( Cycle time Fault): Chương trình trong khối OB80 sẽ đựoc thực hiện khi thời gian vịng quét (Scan time) vượt quá khoảng thời gain cực đại đã quy định hoặc khi cĩ một tins 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, Scan time cực đại là 150 ms, nhưng cĩ thể thay đổi nĩ thơng bảng tham số của Mơ đun CPU nhờ phần mềm Step7. * OB81 (Power supply Fault) : Mơ đun CPU sẽ gọi chương trình trong khối OB 81 khi phát hhiện thấy lỗi về nguồn nuơi.

* OB82 (Diagnostic Interupt): Chương trình trong khối OB82 sẽ đựoc gọi khi CPU phát hiện cĩ sựu cố từ các mơ đun vào ra mở rộng. Các Mơ đun mở rộng này phải là các Mơ đun cĩ khả năng tự kiểm tra mình (Diagnostic Cabilities).

* OB85 (Not Load Fault): CPU sẽ gọi khối này khi phát hiện chưong trình ứng dụng cĩ sử dụng chế độ ngắt nhưng chương trình xử lý tín hiệu ngắt lại khơng cĩ trong khĩi OB tương ứng.

* OB87 (Communication Fault): Khối Ob 87 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ừ đối tác.

* OB 100 (Start up information): Khối OB 100 sẽ được thực hiện 1 lần khi CPU chuyển trạng thái từ STOP sang RUN.

* OB101 (Call Start up information): Chỉ cĩ với S7-400) Khối OB 101 sẽ được thực hiện 1 lần khi cơng tắc nguồn của CPU chuyển trạng thái RUN từ sang STOP.

* OB 121(Synchronous error): Khối OB121 sẽ được thực hiện khi CPU phát hiện thấy lỗi Logic trong chương trình như đổ sai kiểu dữ liệu hoặc lỗi truy nhập khối DB , FC, FB khơng cĩ trong bộ nhớ của CPU.

* OB122 (Synchronous error): Khối OB121 sẽ được thực hiện khi CPU phát hiện thấy lỗi truy nhập Mơ đun trong chương trình, ví dụ chương trình cĩ lệnh truy nhập Mơ đun vào ra mở rộng nhưng lại khơng tìm thấy Mơ đun này.

1.2.2.5. Trao đổi dữ liệu giữa CPU với các Mơ đun mở rộng

Trong trạm PLC luơn cĩ sự trao đổi dữ liệu giữa CPU với các mơ đun mở rộng thơng qua bus nội bộ. Ngay tại đầu vịng quét, các dữ liệu tại cổng vào của các mơ đun số (DI) đã được CPU chuyển tới bộ đệm vào số (process image input table– I). Cuối mỗi vịng quét nội nung của bộ đệm ra số (process image output table – Q) lại được CPU chuyển tới cổng ra của các mơ đun ra số (DO). Việc thay đổi nội dung hai bộ đệm này được thực hiện bởi chương trình ứng dụng (user progam). Điều này cho thấy nếu trong chương trình ứng dụng cĩ nhiều lệnh đọc giá trị cổng vào số thì dù giá trị logic thực cĩ của cổng vào này cĩ thể đã bị thay đổi trong quá trình thực hiện vịng quét, chương trình sẽ vẫn luơn đọc được cùng một giá trị từ I và giá trị đĩ chính là giá trị của cổng vào cĩ tại thời điểm đầu vịng quét. Cũng như vậy nếu chương trình ứng dụng nhiều lần thay đổi giá trị cho một cổng ra số thì do nĩ chỉ thay đổi nội dung bit nhớ tương ứng trong Q nên chỉ cĩ giá trị ở lần thay đổi cuối cùng mới thực sự được đưa tới cổng ra vật lý của mơ đun DO.

Khác hẳn với việc đọc/ ghi cổng số, việc truy nhập cổng vào/ ra tương tự lại được CPU thực hiện trực tiếp với mơ đun mở rộng (AI/AO). Như vậy mỗi lệnh đọc giá trị từ địa chỉ thuộc vùng PI (Peripheral input) sẽ thu được một giá trị đúng bằng giá trị thực cĩ ở cổng tại thời điểm thực hiện lệnh. Tương tự khi thực hiện gửi một giá trị (Số nguyên 16 bít) tới địa chỉ của vùng PQ (Peripheral Output). Giá trị đĩ sẽ gửi ngay tới cổng ra của tương tự của mơ đun.

Sở dĩ cĩ sự khác nhau như vậy là do đặc thù về sự tổ chức bộ nhớ và phân chia địa chỉ của S7-300. Chỉ cĩ các mơ đun vào ra số mới cĩ bộ đêm cịn các mơ đun vào ra tương tự thì khơng, chúng chỉ được cung cấp địa chỉ để truy nhập (Địa chỉ PI và PQ). Tuy nhiên miền địa chỉ PI và PQ lại được cung cấp nhiều hơn là số các cổng vào ra tương tự cĩ thể cĩ của một trạm. Chẳng hạn, thực chất các cổng vào ra tương tự cĩ thể cĩ từ địa chỉ PIB 256 đến địa chỉ PIB 267 nhưng miền địa chỉ của PI và PQ lại là từ -65535. Điều này tạo ra khả năng kết nối các cổng vào ra số với những địa chỉ dơi ra đĩ trong PI/PQ giúp cho chương trình ứng dụng cĩ thể truy nhập trực tiếp các mơ đun DI/DO mở rộng để cĩ được giá trị tức thời tại cổng mà khơng cần thơng qua bộ đệm I, Q.

Ví dụ: Ta cĩ thể thay lệnh đọc đồng thời 8 cổng vào số thơng qua bộ đệm I.

L IB0

Bằng lệnh đọc trực tiếp từ Mơ đun DI

L PIB0

Hoặc cĩ thể ghi ra 16 cổng số thơng qua bộ đệm Q

T QW4

Cĩ thể thay bằng lệnh ghi trực tiếp tới mơ đun DO.

T PQW4

Khả năng kết nối trực tiếp chương trình ứng dụng với mơ đun DI/DO mở rộng được trình bày trong hình 1-37.

Xử lý ảnh đầu ra (Process Image output table (I)) Chương trình ứng dụng (use program) Xử lý ảnh đầu vào (Process Image input table (I)) Module DI Module DI 0 : 127 256 : 767 0 : 127 256 : 767 Module DO Module AO (adsbygoogle = window.adsbygoogle || []).push({});

Đọc trực triếp Ghi trực triếp Đọc/ghi

gián triếp

Đầu vào ngoại vi (Peripheral input)

PI (64K)

Đầu ra ngoại vi (Peripheral out put)

PQ (64K)

Câu hỏi chương 1

Câu1: ưu nhược điểm của hệ thống điều khiển PLC? So sánh hệ thống điều khiển dùng PLC với các hệ thống điều khiển khác?

Câu2: Trình bày cấu trúc phần cứng, cấu trúc bộ nhớ PLC? Câu 3: Trình bày nguyên tắc hoạt động của PLC.

Câu 4: Các kiểu dữ liệu sử dụng trong PLC.

Câu 5: Nguyên lý trao đổi dữ liệu giữa CPU và các mơ đun mở rộng Câu 6: Đặc điểm thanh ghi trạng thái

Chương 2

Ngơn ngữ lập trình PLC

2.1. Các dạng ngơn ngữ lập trình PLC

Đối với PLC S7-300 cĩ thể sử dụng 6 ngơn ngữ để lập trình: 2.1.1. Ngơn ngữ lập trình LAD (Ladder)

Với loại ngơn ngữ này rất thích hợp với người quen thiết kế mạch điều khiển logic. Chương trình được viết dưới dạng liên kết giữa các cơng tắc:

Ví dụ:

Hình 2-1: Ví dụ ngơn ngữ lập trình LAD.

Khi tiếp điểm I0.1 kín thì cuộn dây Q0.0 được thiết lập là 1. Tiếp điểm Q0.0 cĩ tác dung duy trì trạng thái của cuộn dây Q0.0. Khi tiếp điểm I0.0 là 1 thì cuộn dây Q0.0 bị cắt và trở về trạng thái là khơng.

2.1.2. Ngơn ngữ lập trình FBD (Function block Diagram)

Loại ngơn ngữ này thích hợp cho những người quen sử dụng và thiết kế mạch điều khiển số. Chương trình được viết dưới dạng liên kết của Nhĩm lệnh logic kỹ thuật số:

Ví dụ:

Hình 2-2: Ví dụ ngơn ngữ lập trình FBD.

Trạng thái đầu ra Q0.0 là kết quả của phép logic AND của ngõ vào đảo I0.0 và tổ hợp OR giữa I0.1 và Q0.0.

2.1.3. Ngơn ngữ lập trình STL (Statement List)

Đây là ngơn ngữ lập trình thơng thường của máy tính. Một chương trình được ghép bởi nhiều lệnh theo một thuật tốn nhất định, mỗi lệnh chiếm một hàng và đều cĩ cấu trúc chung là : "tên lệnh" + "tốn hạng".

Ví dụ:

Hình 2-3: Ví dụ kiểu lập trình STL.

2.1.4. Ngơn ngữ lập trình SCL (Structured Control Language)

Kiểu viết chương trình này sử dụng ngơn ngữ PASCAL. Rất phù hợp cho những người đã viết các chương trình bằng ngơn ngữ máy tính. (adsbygoogle = window.adsbygoogle || []).push({});

2.1.5. Ngơn ngữ lập trình S7-Graph Ví dụ: Ví dụ:

Hình 2-4: Sơ đồ khối lập trình kiểu S7-Graph. 2.1.6. Ngơn ngữ lập trình S7-HiGraph

Đây là một loại ngơn ngữ viết chương trình rất phù hợp cho các bài tốn làm việc cĩ tính tuần tự. Tại mỗi thời điểm chỉ cĩ một bước được thực hiện. Với kiểu lập trình này người lập trình phải sử dụng phương pháp lập trình cĩ cấu trúc. Ghi chú: Thơng thường với một gĩi phần mềm Simatic cĩ thể chỉ cĩ 3 loại ngơn ngữ điển hình là LAD, STL, FBD cịn các loại ngơn ngữ khác nếu sử dụng thì phải cài đặt thêm.

2.2. Tập lệnh cơ bản của SIMATIC S7-300 và ứng dụng 2.2.1. Nhĩm lệnh bit logic 2.2.1. Nhĩm lệnh bit logic

2.2.1.1. Lệnh AND

Tốn hạng là kiểu dữ liệu BOOL hay địa chỉ bit I,Q, M, T, C, D, L

FBD LAD STL

Hình 2-5: Cách khai báo hàm AND Tín hiệu ra Q4.0 sẽ bằng 1 khi đồng thời tín hiệu I0.0=1 và I0.1=1. Dữ liệu vào và ra :

Vào: I0.0, I0.1: BOOL Ra : Q4.0 : BOOL

2.2.1.2. Lệnh OR

Tốn hạng là kiểu dữ liệu BOOL hay địa chỉ bit I,Q, M, T, C, D, L.

FBD LAD STL

Hình 2-6: Khai báo hàm OR Tín hiệu ra sẽ bằng 1 khi ít nhất cĩ một tín hiệu vào bằng 1.

Một phần của tài liệu Giáo trình kỹ thuật điều khiển lập trình (Trang 49)