PLC thực hiện chương trỡnh theo chu trỡnh 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 OB1 ( 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.
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ệ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 một 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 thực hiện nhanh tựy thuộc vào số lệnh trong chương trỡnh được thực hiện, vào khối lượng dữ liệu được truyền thụng... trong vũng quột đú.
Như vậy giữa việc đọc giữ 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 tới đố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ỏ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ụng và 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 Sinh viờn: Trương Xuõn Hiếu - Đỗ Thị Lệ - Chu Hải Yến Lớp: ĐKTĐ2-47 42
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ý. Một số module 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ả khi 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.
1.19 Cấu trỳc chương trỡnh
Chương trỡnh cho S7-300 được lưu trong bộ nhớ của PLC ở vựng dành riờng cho chương trỡnh và cú thể được lập với hai dạng cấu trỳc khỏc nhau:
1) Lập trỡnh tuyến tớnh: Toàn bộ chương trỡnh điều khiển nằm trong một khối trong mội 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 chương đượ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 nú 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.
Cỏc khối OB khỏc nhau khụng tham gia vào vũng quột mà được gọi bằng những tớn hiệu bỏo ngắt. S7-300 cú nhiều loại tớn hiệu bỏo ngắt như tớn hiệu bỏo ngắt khi cú sự cố chập mạch ở cỏc module mở rộng, tớn hiệu bỏo ngắt theo chu kỳ thời gian,... và mỗi loại tớn hiệu bỏo ngắt như vậy cũng chỉ cú khả năng gọi một loại khối OB nhất định. Vớ dụ tớn hiệu bỏo ngắt sự cố nguồn nuụi chỉ gọi khối OB81, tớn hiệu bỏo ngắt truyền thụng chỉ gọi khối OB87...
Mỗi khi xuất hiện một tớn hiệu bỏo ngắt hệ thống sẽ tạm dừng cụng việc đang thực hiện lại, chẳng hạn như tạm dừng việc thực hiện chương trỡnh trong khối OB1, và chuyển sang thực hiện chương trỡnh xử lý ngắt trong cỏc khối OB tương ứng. Vớ dụ khi đang thực hiện OB1 mà xuất hiện tớn hiệu bỏo ngắt sự cố truyền thụng, hệ thống sẽ tạm dừng việc thực hiện OB1 lại để gọi và thực hiện chương trỡnh trong khối OB87. Chỉ sau khi đó thực hiện xong chương trỡnh OB87, hệ thống mới quay trở về thực hiện tiếp tục phần chương trỡnh cũn lại trong OB1.
Sinh viờn: Trương Xuõn Hiếu - Đỗ Thị Lệ - Chu Hải Yến Lớp: ĐKTĐ2-47 43
lệnh 1 ... lệnh2 ... ... lệnh cuối cùng
Hỡnh 3.3: cấu trỳc chương trỡnh lập trỡnh tuyến tớnh
2) Lập trỡnh cú cấu trỳc: Chương trỡnh được chia thành những phần nhỏ với từng nhiệm vụ riờng và cỏc phần này nằm 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ú bốn loại khối cơ bản:
- Loại khối OB ( Organization block): Khối tổ chức và quản lý chương trỡnh diề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ụ như 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ư một 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 số nguyờn sau nhúm ký tự FC. Chẳng hạn như FC1, FC2...
- Loại khối FB (Function block): Là loại khối FC đặc biệt cú khả năng trao đổi một 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 phải được tổ chức thành khối dữ liệu 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 số nguyờn sau nhúm ký tự. 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 dược liờn kết với nhau bằng cỏc lệnh 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- Sinh viờn: Trương Xuõn Hiếu - Đỗ Thị Lệ - Chu Hải Yến Lớp: ĐKTĐ2-47 44
300 cho phộp gọi chương trỡnh con lồng nhau, tức là từ chương trỡnh con này gọi được một chương trỡnh con khỏc và 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 sử dụng. Vớ dụ CPU314 thỡ số lệnh tối đa lồng nhau 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 sang chế độ STOP và đặt cờ bỏo lỗi.
Để đơ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à khối con. Giữa khối mẹ và khối con cú sự liờn kết thể hiện thụng 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 một khối con, hệ điều hành sẽ:
1) Chuyển khối con được gọi từ vựng Load memory vào vựng Work memory.
2) 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 quy định khi soạn thảo cỏc khối.
3) Truyền cỏc tham trị từ khối mẹ cho biến hỡnh thức IN, IN-OUT của local block.
4) 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.
1.20 Tổ chức bộ nhớ CPU
Load memory: Là vựng nhớ chứa chương trỡnh ứng dụng (do người sử dụng viết) bao
gồm tất cả cỏc khối chương trỡnh ứng dụng ob, fc, fb, cỏc khối chương trỡnh trong thư viện hệ thống được sử dụng (sfc, sfb) và cỏc khối dữ liệu DB. Vựng nhớ này được tạo bởi một phần bộ nhớ RAM của CPU và EFPROM).Khi thực hiện động tỏc xúa bộ nhớ(MRES) toàn bộ cỏc khối chương trỡnh và khối dữ liệu nằm trong RAM sẽ bị xúa. Cũng như vậy, khi chương trỡnh hay khối dữ liệu được đổ (down load), từ thiết bị lập trỡnh (mỏy tớnh) vào module CPU, chỳng sẽ được ghi lờn phần RAM của vựng nhớ Load memory.
Work memory: Là vựng nhớ chứa cỏc khối DB đang được mở, chương trỡnh (OB, FC,
FB, SFC hoặc SFB) đang được CPU thực hiện và một phần bộ nhớ cấp phỏt cho những tham số hỡnh thức để cỏc khối chương trỡnh này trao đổi tham trị với hệ điều hành và với cỏc khối chương trỡnh khỏc (local block). Tại một thời điểm nhất định vựng Work Sinh viờn: Trương Xuõn Hiếu - Đỗ Thị Lệ - Chu Hải Yến Lớp: ĐKTĐ2-47 45
memory chỉ chứa một khối chương trỡnh. Sau khi khối chương trỡnh đú được thực hiện xong thỡ hệ điều hành sẽ xúa nú khỏi vựng Work memory và nạp vào đú khối chương trỡnh kế tiếp đến lượt thực hiện.
System memory: Là vựng nhớ chứa cỏc cỏc bộ đệm vào/ra số (Q, I), cỏc biến cờ (M),
thanh ghi C-Word, PV, T-bit của Timer, thanh ghi C-Word, PV, C-bit của Counter. Việc truy cập, sửa đổi dữ liệu những ụ nhớ thuộc vựng nhớ này được phõn chia hoặc bởi hệ điều hành của CPU hoặc do chương trỡnh ứng dụng.
Cú thể núi rằng trong cỏc vựng nhớ được trỡnh bày ở trờn khụng cú vựng nhớ nào được dựng làm bộ đệm cho cỏc cổng vào/ra tương tự. Núi cỏch khỏc cỏc cổng vào/ra tương tự khụng cú bộ đệm và như vậy mỗi lệnh truy nhập module tương tự (đọc hoặc gửi giỏ trị) đều cú tỏc dụng trực tiếp tới cổng vật lý của module.
1.21 Trao đổi dữ liệu giữa CPU và cỏc module mở rộng
Trong trạm PLC luụn cú sự trao đổi dữ liệu giữa CPU và với cỏc module 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 module 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 dung 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 module 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 program). Điều này, cho thấy nếu trong chương trỡnh ứng dụng cú nhiều lệnh đọcgiỏ trị cổng vào số thỡ cho dự giỏ trị logic thực cú của cổng vào này đó 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ị 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 module 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 module 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 lệnh gửi một giỏ trị (số nguyờn 16 bits) tới địa chỉ của vựng PQ (peripheral output), giỏ trị đú sẽ được gửi ngay tới cổng ra tương tự của module.
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ỉ S7-300. Chỉ cú cỏc module vào/ra số mới cú bộ đệm cũn cỏc module 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).
Ngụn ngữ lập trỡnh STL
Cỏc loại PLC núi chung thường cú nhiều ngụn ngữ lập trỡnh nhằm phục vụ cỏc đối tượng sử dụng khỏc nhau. PLC S7-300 cú ba ngụn ngữ lập trỡnh cơ bản. Đú là:
- Ngụn ngữ "liệt kờ lệnh", ký hiệu là STL (Statement list). Đõy là dạng 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 cõu lệnh theo một thuật toỏn nhất định, mỗi lệnh chiếm một hàng và đều cú cấu trỳc chung:
"tờn lệnh" + "toỏn hạng".
- Ngụn ngữ "hỡnh thang", ký hiệu là LAD (Ladder logic). Đõy là dạng ngụn ngữ đồ họa thớch hợp với những người quen thiết kế mạch điều khiển logic.
- Ngụn ngữ "hỡnh khối", ký hiệu là FBD (Function block diagram). Đõy cũng là kiểu ngụn ngữ đồ họa dành cho người cú thúi quen thiết kế mạch điều khiển số.
Một chương trỡnh viết trờn LAD hoặc FBD cú thể chuyển sang được dạng STL, nhưng ngược lại thỡ khụng. Trong STL cú nhiều lệnh khụng cú trong LAD hay FBD.
1.22 Cấu trỳc lệnh và trạng thỏi kết quả
Như đó núi, cấu trỳc của một lệnh STL cú dạng: "tờn lệnh" + "toỏn hạng". Vớ dụ Nhón: L PIW304 //Đọc nội dung cổng vào của module analog
tờn lệnh toỏn hạng
trong đú toỏn hạng cú thể là một dữ liệu hoặc một địa chỉ ụ nhớ.
Toỏn hạng là dữ liệu
1) Dữ liệu logic TRUE(1) và FALSE(0) cú độ dài 1 bit. 2) Số nhị phõn. Vớ dụ:
L 2#1101111 //Nạp số nhị phõn 1101111 vào thanh ghi ACCU1.
3) Số hexadecimal x cú độ dài 1 byte ( B#16#x), 1 từ (W#16#x) hoặc 1 từ kộp ( DW#16#x). Vớ dụ:
L B#16#1E
4) Số nguyờn cú độ dài 2 bytes cho biến kiểu INT. Vớ dụ: L 962
L -1025
5) Số nguyờn x với độ dài 4 bytes dạng L#x cho biến kiểu DINT. Vớ dụ L L#930
L L#-2047
6) Số thực x cho biến kiểu Real. Vớ dụ L 1.23466e+13
L 930.0
7) Dữ liệu thời gian cho biến kiểu ST5 dạng giờ_phỳt_giõy_miligiõy. Vớ dụ: L S5T#2h_1m_0s_5ms
8) Dữ liệu thời gian cho biến kiểu TOD dạng giờ:phỳt:giõy.Vớ dụ: L TOD#5:45:00
9) DATE : biểu diễn giỏ trị thời gian tớnh theo năm/thỏng/ngày. Vớ dụ: L DATE#1999-12-8
10) C: biểu diễn giỏ trị số đếm đặt trước cho bộ đếm.Vớ dụ: L C#30
11) P: dữ liệu biểu diễn địa chỉ của 1 bit ụ nhớ. Vớ dụ: L P#Q0.0
12) Dữ liệu ký tự. Vớ dụ: L 'ABFC'
Toỏn hạng là địa chỉ
Địa chỉ trong ụ nhớ S7-300 gồm hai phần: phần chữ và phần số . Vớ dụ PIW304
phần chữ phần số Phần chữ chỉ vị trớ kớch thước của ụ nhớ.
Phần số chỉ địa chỉ của byte hoặc bit trong miền nhớ xỏc định.
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ư trạng thỏi kết quả vào một thanh ghi đặc biệt 16 bits, được gọi là thanh ghi trạng thỏi