Chương 2
Các khái
niệm về PLC
2.1. Sự thực thi chương trình người dùng.
CPU hỗ trợ các kiểu khối mã sau đây, cho phép ta
tạo ra một cấu trúc hiệu quả cho chương trình người dùng:
·
Khối tổ chức (OB) xác định cấu
trúc chương trình. Một vài OB có trạng thái và các sự kiện khởi động được thiết
lập trước, nhưng ta cũng có thể tạo ra các OB với các sự kiện khởi động tùy
chỉnh.
·
Hàm (FC) và khối hàm (FB) chứa mã
chương trình tương ứng với các nhiệm vụ riêng biệt hay với sự kết hợp các thông
số. Mỗi FC và FB cung cấp một tổ hợp các thông số ngõ vào và ngõ ra dành cho
việc chia sẻ dữ liệu với khối đang gọi.
FB cũng sử dụng một khối dữ liệu (đã gọi một DB tức
thời) có liên quan để duy trì trạng thái của các giá trị giữa sự thực thi mà có
thể được sử dụng bởi các khối khác trong chương trình.
·
Khối dữ liệu (DB) lưu trữ dữ liệu
mà có thể được sử dụng bởi các khối chương trình.
Sự thực thi chương trình người
dùng bắt đầu với một hay nhiều hơn các khối tổ chức (OB) khởi động tùy chọn,
được thực thi một lần trong lúc đi vào chế độ RUN, và được theo sau bởi một hay
nhiều hơn các OB chu kỳ chương trình được thực thi một cách tuần hoàn. OB cũng
có thể kết hợp với một sự kiện ngắt, có thể là một sự kiện ngắt tiêu chuẩn hay
một sự kiện lỗi, và thực thi khi nào mà sự kiện tiêu chuẩn hay sự kiện lỗi
tương ứng xuất hiện.
Hàm (FC) hay khối hàm (FB) là một
khối mã chương trình mà có thể được gọi từ một OB hay từ một FC hay FB khác,
xuống đến các cấp độ sau đây:
·
16 từ OB chu kỳ chương trình hay OB khởi động
·
4 từ OB ngắt trì hoãn thời gian,
OB ngắt theo chu trình, OB ngắt phần cứng, OB ngắt lỗi thời gian, hay OB ngắt
lỗi chẩn đoán.
FC không liên kết với bất kỳ phần
nào của khối dữ liệu (DB), trong khi FB được gắn kết một cách trực tiếp đến một
DB và sử dụng DB để chuyển tiếp các thông số và lưu trữ các giá trị và các kết
quả tạm thời.
Kích thước của chương trình người
dùng, của dữ liệu và của sự cấu hình được giới hạn bởi bộ nhớ nạp có sẵn và bộ
nhớ làm việc trong CPU. Không có giới hạn nào đối với số lượng các khối được hỗ
trợ bên trong lượng bộ nhớ làm việc có sẵn.
Mỗi chu kỳ bao gồm việc ghi các
ngõ ra, việc đọc các ngõ vào, việc thực thi các lệnh của chương trình người
dùng, và việc thực hiện bảo trì hệ thống hay tiến trình xử lý nền sau. Chu kỳ
được nói đến như là một chu kỳ quét hay một lần quét.
Bảng tín hiệu, các module tín hiệu và các module truyền thông được nhận biết và
được ghi lại chỉ trong khi nguồn được bật.
Lưu ý
Việc lắp vào và tháo ra một bảng tín hiệu, các module tín hiệu và module truyền thông khi có nguồn (thao tác nóng) thì không được hỗ
trợ. Chỉ một ngoại lệ là thẻ nhớ SIMATIC, có thể được lắp vào hay lấy ra trong
khi CPU đang được cấp nguồn.
Dưới cấu hình mặc định, tất cả
các điểm I/O kiểu số và kiểu tương tự được cập nhật một cách đồng bộ với chu kỳ
quét bằng cách sử dụng một vùng nhớ bên trong được gọi là ảnh tiến trình. Ảnh
tiến trình chứa một sự chụp nhanh các ngõ vào và ngõ ra vật lý (các điểm I/O
trên CPU, trên bảng tín hiệu và trên các module tín hiệu).
CPU thực
hiện các tác vụ sau đây:
·
CPU ghi các ngõ ra từ vùng ngõ ra ảnh tiến trình
đến các ngõ ra vật lý.
·
CPU đọc các ngõ vào chỉ ưu tiên
cho sự thực thi chương trình người dùng và lưu trữ các giá trị ngõ vào trong
vùng ngõ vào ảnh tiến trình. Điều này đảm bảo rằng các giá trị này sẽ vẫn giữ
nguyên tính nhất quán trong suốt sự thực thi của các lệnh người dùng.
·
CPU thực thi logic của các lệnh người dùng và cập nhật các giá trị ngõ ra trong
vùng ngõ ra ảnh tiến trình thay vì
Chu trình này cung cấp logic nhất quán xuyên suốt sự thực thi
của các lệnh người dùng đối với trong một chu kỳ đã cho và ngăn chặn sự chập
chờn của các điểm ngõ ra, điều mà có thể thay đổi trạng thái nhiều lần trong
vùng ngõ ra ảnh tiến trình.
Ta có thể chỉ định khi nào các
điểm I/O kiểu số và kiểu tương tự được lưu trữ trong ảnh tiến trình. Nếu ta
chèn vào một module trong kiểu xem
thiết bị, dữ liệu của nó được đặt trong ảnh tiến trình của CPU S7-1200 (mặc
định). CPU thực thi sự thay đổi dữ liệu giữa module và vùng ảnh tiến trình một cách tự động trong suốt việc cập
nhật của ảnh tiến trình. Để gỡ bỏ các điểm kiểu số hay kiểu tương tự ra khỏi sự
cập nhật tự động ảnh tiến trình, ta lựa chọn thiết bị tương ứng trong Device
configuration, xem thẻ Properties, mở rộng nếu cần để đặt các điểm I/O mong
muốn, và sau đó lựa chọn “IO addresses/HW identifier”. Sau đó thay đổi mục nhập
cho “Process image:” từ “Cyclic PI” sang “---”. Để thêm các điểm trở lại sự cập
nhật tự động ảnh tiến trình, thay đổi mục lựa chọn này trở về “Cyclic PI”.
Ta có thể đọc các giá trị ngõ vào
và ghi các giá trị ngõ ra ngay lập tức khi một lệnh thực thi. Một lần đọc tức
thời sẽ truy xuất đến trạng thái hiện thời của ngõ vào vật lý và không cập nhật
vùng ngõ vào ảnh tiến trình, bất chấp dù cho một điểm được cấu hình để được lưu
trữ trong ảnh tiến trình. Một lần ghi tức thời đến ngõ ra vật lý sẽ cập nhật cả
vùng ngõ ra ảnh tiến trình (nếu một điểm được cấu hình để được lưu trữ trong
ảnh tiến trình) và điểm ngõ ra vật lý. Ta nối thêm hậu tố “:P” vào địa chỉ I/O
nếu muốn chương trình truy xuất ngay lập tức dữ liệu I/O một cách trực tiếp từ
điểm vật lý thay vì sử dụng ảnh tiến trình.
Cấu hình các thông số khởi động
Ta sử dụng các thuộc tính của CPU để cấu hình cách
thức CPU khởi động sau một chu kỳ cấp nguồn.
Lựa chọn khi nào CPU khởi động trong chế độ STOP,
chế độ RUN, hay trong chế độ trước đó (ưu tiên chu kỳ cấp nguồn).
CPU thực hiện một sự khởi động
lại nóng trước khi đi vào chế độ RUN. Sự khởi động lại nóng sẽ đặt lại toàn bộ
các bộ nhớ giữ lại về các giá trị khởi động mặc định, nhưng vẫn giữ nguyên các
giá trị hiện thời được lưu trữ trong bộ nhớ giữ lại.
Lưu ý
CPU luôn luôn thực hiện một sự khởi động lại sau
một việc tải xuống
Khi ta tải xuống một phần tử của
đề án (như một khối chương tình, một khối dữ liệu hay cấu hình phần cứng), CPU
thực hiện một sự khởi động lại trong lần chuyển tiếp kế tiếp sang chế độ RUN.
Ngoài việc xóa đi các ngõ vào, khởi chạy các ngõ ra và khởi chạy bộ nhớ không
có khả năng giữ lại, sự khởi động lại còn khởi kích hoạt các vùng nhớ có khả
năng giữ lại.
Sau một khởi động lại theo sau sự
tải xuống, tất cả các chuyển đổi STOP sang RUN tuần tự cũng sẽ thực hiện một sự
khởi động lại nóng (mà không kích hoạt bộ nhớ có khả năng giữ).
2.1.1. Các
chế độ hoạt động của CPU.
CPU có 3
chế độ hoạt động: chế độ STOP, chế độ STARTUP và chế độ RUN.
Các LED
trạng thái trên mặt trước của CPU biểu thị chế độ hiện thời của sự vận hành.
·
Trong chế độ STOP, CPU không thực
thi chương trình nào, và ta có thể tải xuống một đề án.
·
Trong chế độ STARTUP, các OB khởi
động (nếu có) được thực thi một lần. Các sự kiện ngắt không được xử lý cho đến
pha khởi động của chế độ RUN.
·
Trong chế độ RUN, chu kỳ quét
được thực thi một cách lặp lại. Các sự kiện ngắt có thể xuất hiện và được thực
thi tại bất kỳ điểm nào nằm trong pha chu kỳ chương trình.
Ta không
thể tải xuống một đề án trong khi đang ở chế độ RUN.
CPU hỗ trợ một sự khởi động lại
nóng để đi vào chế độ RUN. Khởi động lại nóng không bao gồm một sự đặt lại bộ
nhớ. Tất cả các hệ thống không có khả năng giữ và dữ
liệu người dùng đều được khởi chạy tại một sự khởi
động lại nóng. Dữ liệu người dùng có khả năng giữ vẫn được giữ nguyên.
Một bộ nhớ đặt lại sẽ xóa tất cả
các bộ nhớ làm việc, xóa các vùng nhớ có khả năng giữ và không có khả năng giữ,
và sao chép bộ nhớ nạp đến bộ nhớ làm việc. Một sự đặt lại bộ nhớ không xóa đi
bộ đệm chẩn đoán hay các giá trị được lưu vĩnh viễn của địa chỉ IP.
Ta có thể chỉ định chế độ bật
nguồn của CPU hoàn thành với phương pháp khởi động lại bằng cách sử dụng phần
mềm lập trình. Biểu tượng cấu hình này xuất hiện trong mục Device Configuration
đối với CPU đang trong khởi động. Khi nguồn được bật, CPU thực hiện một tuần tự
các kiểm tra chẩn đoán bật nguồn và khởi chạy hệ thống. CPU sau đó sẽ đi vào
chế độ bật nguồn tương ứng. Tất nhiên các lỗi được phát hiện sẽ ngăn không cho
CPU đi vào chế độ RUN. CPU hỗ trợ các chế độ bật nguồn sau đây:
·
Chế độ STOP
·
Chuyển sang chế độ RUN sau một sự khởi động lại
nóng
·
Chuyển sang chế độ trước đó sau một sự khởi động
lại nóng
Ta có thể thay đổi chế độ vận
hành hiện thời bằng cách sử dụng các lệnh “STOP” hay “RUN” từ các công cụ trực
tuyến của phần mềm lập trình. Ta cũng có thể bao gồm một lệnh STP trong chương
trình để chuyển CPU về chế độ STOP. Điều này cho phép ta dừng sự thực thi
chương trình dựa trên logic lập
trình.
Trong chế độ STOP, CPU xử lý bất kỳ các yêu cầu truyền thông nào (thích hợp) và thực hiện tự chẩn đoán.
Trong chế độ STOP, CPU không thực thi chương trình
người dùng, và các cập nhật tự động của ảnh tiến trình sẽ không xuất hiện.
Ta có thể
tải xuống đề á chỉ khi CPU ở trong chế độ STOP.
Trong chế độ RUN, CPU thực hiện các tác vụ được thể
hiện như trong hình sau
đây:
STARTUP
A Xóa vùng
nhớ I.
B Khởi chạy
các ngõ ra cả với giá trị cuối cùng hay giá trị thay thế.
C Thực thi
các OB khởi động.
D Sao chép
trạng thái của các ngõ vào vật lý đến vùng nhớ I.
E Lưu trữ
bất kỳ các sự kiện ngắt nào vào trong thứ tự để xử lý trong chế độ RUN.
F Kích hoạt
việc ghi vùng nhớ Q đến các ngõ ra vật lý.
RUN
Ghi bộ
nhớ Q đến các ngõ ra vật lý.
Sao chép
trạng thái các ngõ vào vật lý đến vùng nhớ I.
Thực thi
các OB chu kỳ chương trình.
Thực hiện
các chẩn đoán tự kiểm tra.
Xử lý các
ngắt và truyền thông trong suốt bất kỳ phần nào của chu kỳ quét.
Tiến trình khởi động (STARTUP)
Khi trạng thái hoạt động thay đổi
từ STOP sang RUN, CPU xóa đi các ngõ vào ảnh tiến trình, khởi chạy các ngõ ra
ảnh tiến trình và thực thi các OB khởi động. Bất kỳ việc đọc nào truy xuất đến
các ngõ vào ảnh tiến trình bằng các lệnh trong các OB khởi động sẽ đọc giá trị zero hơn là giá trị ngõ vào vật lý hiện
thời. Do vậy, để đọc trạng thái hiện thời của một ngõ vào vật lý trong suốt chế
độ khởi động, ta phải thực hiện một việc đọc tức thời. Các OB khởi động và bất
kỳ các FC và FB nào có liên quan sẽ được thực thi tiếp theo. Nếu có nhiều hơn 1
OB khởi động tồn tại, mỗi OB đó sẽ được thực thi theo thứ tự số hiệu OB, trong
đó số hiệu OB thấp nhất được thực thi đầu tiên.
Mỗi OB khởi động bao gồm thông
tin khởi động giúp ta xác định tính hợp lệ của các dữ liệu lưu giữ và của đồng
hồ giờ trong ngày. Ta có thể lập trình các lệnh bên trong các OB khởi động để
kiểm tra các giá trị khởi động này và để thực hiện thao tác thích hợp. Các vùng
khởi động sau đây được hỗ trợ bởi các OB khởi động:
Ngõ vào
|
Kiểu dữ liệu
|
Miêu tả
|
|
|
|
|
|
LostRetentive
|
Bool
|
Bit này đúng nếu các vùng lưu trữ dữ
liệu giữ đã bị mất
|
|
|
|
|
|
LostRTC
|
Bool
|
Bit này
đúng nếu đồng hồ giờ trong ngày (Real time
|
|
Clock)
đã bị mất
|
|
|
|
|
|
|
|
|
CPU còn
thực hiện các tác vụ sau đây trong suốt quá trình khởi động:
·
Các ngắt được sắp thứ tự nhưng không được thực thi
trong suốt pha khởi động
·
Không có việc giám sát thời gian
chu trình nào được thực hiện trong suốt pha khởi động
·
Sự cấu hình làm thay đổi các module HSC, PWM và PtP đều có thể được
thực hiện trong lúc khởi động
Sau khi sự thực thi của các OB
khởi động đã hoàn thành, CPU đi vào chế độ RUN và thực thi các tác vụ điều
khiển trong một chu kỳ quét liên tiếp.
Việc thực thi chu kỳ quét trong suốt chế độ RUN
Đối với mỗi chu kỳ quét, CPU ghi
các ngõ ra, đọc các ngõ vào, thực thi chương trình người dùng, cập nhật các module truyền thông, thực hiện các công
việc nội dịch (housekeeping) và đáp ứng đến các sự kiện ngắt của người dùng và
các yêu cầu truyền thông. Các yêu cầu truyền thông được xử lý một cách định kỳ
xuyên suốt quá trình quét.
Các hoạt động này (ngoại trừ các
sự kiện ngắt của người dùng) được thực hiện thường xuyên và theo một trật tự
tuần tự. Các sự kiện ngắt của người dùng được kích hoạt sẽ được phục vụ với mức
ưu tiên theo trật tự mà chúng xuất hiện.
Hệ thống đảm bảo rằng chu kỳ quét
sẽ được hoàn tất trong một chu kỳ thời gian được gọi là thời gian chu trình tối
đa, nếu không một sự kiện lỗi thời gian sẽ được sinh ra.
·
Mỗi chu kỳ quét bắt đầu bằng việc
tìm kiếm các giá trị hiện thời của các ngõ ra kiểu số hay kiểu tương tự từ ảnh
tiến trình và sau đó ghi chúng đến các ngõ ra vật lý của CPU, các module SB và SM được cấu hình cho việc
cập nhật I/O tự động (cấu hình mặc định). Khi một ngõ ra vật lý được truy xuất
bởi một lệnh, cả ảnh tiến trình ngõ ra và bản thân ngõ ra vật lý đều được cập
nhật.
·
Chu kỳ quét tiếp tục bằng việc
đọc các giá trị hiện thời của các ngõ vào kiểu số hay kiểu tương tự từ CPU, các
module SB, SM được cấu hình cho việc
cập nhật I/O tự động (cấu hình mặc định), và sau đó ghi các giá trị này đến ảnh
tiến trình. Khi một ngõ vào vật lý được truy xuất bởi một lệnh, giá trị của ngõ
vào vật lý được truy xuất, nhưng ảnh tiến trình ngõ vào không được cập nhật.
·
Sau khi đọc các ngõ vào, chương
trình người dùng được thực thi từ lệnh đầu tiên cho đến lệnh cuối cùng. Điều
này bao gồm tất cả các OB chu kỳ chương trình cộng với tất cả các FC và FB có
liên quan của chúng. Các OB chu kỳ chương tình được thực thi theo trật tự của
số hiệu OB, trong đó số hiệu OB thấp nhất được thực thi trước tiên.
Việc xử lý các truyền thông xuất
hiện một cách định kỳ trong suốt quá trình quét, có thể ngắt sự thực thi chương
trình người dùng.
Các kiểm tra tự chẩn đoán bao gồm
cả các kiểm tra định kỳ của hệ thống và các kiểm tra trạng thái module I/O.
Các ngắt có thể xuất hiện trong
suốt bất kỳ phần nào của chu kỳ quét, và được điều khiển theo sự kiện. Khi một
sự kiện xuất hiện, CPU ngắt chu kỳ quét và gọi OB đã được cấu hình để thực thi
sự kiện đó. Sau khi OB hoàn thành việc thực thi sự kiện, CPU khôi phục lại sự
thực thi của chương trình người dùng tại điểm ngắt.
Khối tổ chức (OB)
Các OB điều khiển sự thực thi của
chương trình người dùng. Mỗi OB phải có một số hiệu OB duy nhất. Một số số hiệu
OB mặc định được đảo ngược dưới giá trị 200. Các OB khác phải được đánh số từ
200 hay lớn hơn.
Các sự kiện riêng biệt trong CPU
kích hoạt sự thực thi của một khối tổ chức. Các OB không thể gọi lẫn nhau hay
được gọi từ một FC hay FB. Chỉ có một sự kiện khởi động, như là một ngắt chẩn
đoán hay một khoảng cách thời gian, là có thể khởi động sự thực thi của một OB.
CPU xử lý các OB theo các lớp ưu tiên tương ứng của chúng, trong đó các OB có
mức ưu tiên cao hơn được xử lý trước các OB có mức ưu tiên thấp hơn. Lớp ưu
tiên thấp nhất là 1 (đối với chu kỳ chương trình chính), và lớp ưu tiên cao
nhất là 27 (đối với các ngắt lỗi thời gian).
OB điều
khiển các sự vận hành sau đây:
·
Các OB chu kỳ chương trình thực
thi một cách tuần hoàn trong khi CPU đang ở chế độ RUN. Khối chính của chương
trình là một OB chu kỳ chương trình. Đây là nơi mà ta đặt các lệnh điều khiển
chương trình và cũng là nơi ta gọi các khối người dùng bổ sung. Nhiều OB chu kỳ
chương trình được cho phép và được thực thi theo thứ tự bằng số. OB 1 là mặc
định. Các OB chu kỳ chương trình khác phải được nhận dạng là OB 200 hay lớn
hơn.
·
Các OB trì hoãn thời gian thực
thi tại một khoảng thời gian dừng được xác định sau một sự kiện, được cấu hình
hình bởi lệnh ngắt khởi động (SRT_DINT). Thời gian trì hoãn được xác định trong
thông số ngõ vào của lệnh mở rộng
SRT_DINT. Một OB trì hoãn thời gian ngắt sự thực
thi chương trình theo chu trình chuẩn khi một thời gian trì hoãn được định
trước đã trôi qua. Ta có thể cấu hình tối đa 4 sự kiện ngắt trì hoãn thời gian
tại bất kỳ thời gian nào đã cho, với một OB được cho phép cho mỗi sự kiện trì hoãn
thời gian được cấu hình. OB trì hoãn thời gian phải là từ OB 200 trở lên.
·
Các OB ngắt theo chu trình thực thi tại mỗi khoảng
thời gian dừng được xác
định. Chúng sẽ ngắt sự thực thi chương trình theo
chu trình tại khoảng thời gian do người dùng định trước, ví dụ như mỗi 2 giây.
Ta có thể cấu hình tối đa 4 sự kiện ngắt theo chu trình, với một OB được cho
phép cho mỗi sự kiện ngắt theo chu trình được cấu hình. OB này phải là OB 200
trở lên.
·
Các OB ngắt phần cứng thực thi
khi sự kiện phần cứng có liên quan xuất hiện, bao gồm các ngưỡng tăng và giảm
trên các ngõ vào số tích hợp và các sự kiện HSC. Một OB ngắt phần cứng sẽ ngắt
sự thực thi chương trình theo chu trình chuẩn theo phản ứng đến một tín hiệu từ
sự kiện phần cứng. Ta xác định các sự kiện trong các thuộc tính của cấu hinh
phần cứng. Một OB được cho phép cho mỗi sự kiện phần cứng được cấu hình. OB này
phải là OB 200 trở lên.
·
Các OB ngắt lỗi thời gian thực
thi ki một lỗi thời gian được phát hiện. Một OB ngắt lỗi thời gian sẽ ngắt sự
thực thi chương trình theo chu trình chuẩn nếu thời gian chu trình tối đa đã bị
vượt quá. Thời gian chu trình tối đa được xác định trong các thuộc tính của
PLC. Chỉ có OB 80 là OB được hỗ trợ cho các sự kiện lỗi thời gian. Ta có thể
cấu hình thao tác để thực hiện khi không có mặt OB 80: hoặc bỏ qua lỗi hoặc
chuyển về STOP.
·
Các OB ngắt lỗi chẩn đoán thực thi khi một lỗi chẩn
đoán được phát hiện và
được báo cáo lại. Một OB chẩn đoán sẽ ngắt sự thực
thi chương trình theo chu trình chuẩn nếu một module có khả năng chẩn đoán phát hiện ra một lỗi (nếu sự ngắt lỗi
chẩn đoán đã được khởi động cho module).
Chỉ có OB 82 là OB được hỗ trợ cho sự kiện lỗi chẩn đoán. Nếu không có OB chẩn
đoán nào trong chương trình, ta có thể cấu hình CPU để hoặc bỏ qua lỗi hoặc
chuyển về STOP.