Bối cảnh và vấn đề nghiên cứu

Trong hệ thống tự động hóa công nghiệp hiện đại, bộ điều khiển logic khả trình (PLC) đóng vai trò trung tâm trong việc thu thập tín hiệu cảm biến, xử lý thuật toán logic và điều khiển các cơ cấu chấp hành. Đồ án học phần 2A, dưới sự hướng dẫn của ThS. Hoàng Đình Khôi, tập trung giải quyết bài toán tiếp cận, hệ thống hóa và làm chủ kỹ thuật lập trình điều khiển trên dòng PLC Siemens SIMATIC S7-1200 thông qua hai ngôn ngữ lập trình tiêu chuẩn: Ngôn ngữ hình thang (Ladder Diagram - LAD) và Ngôn ngữ sơ đồ khối chức năng (Function Block Diagram - FBD).

Mục tiêu và nhiệm vụ nghiên cứu được văn bản xác định cụ thể như sau:

  1. Hệ thống hóa cấu trúc cú pháp, nguyên lý hoạt động và quy tắc thực thi của các tập lệnh lập trình cơ bản và nâng cao trong môi trường phát triển của dòng PLC S7-1200.
  2. Phân tích cơ chế quản lý bộ nhớ ảnh tiến trình (Process Image), truy xuất tức thời vào/ra vật lý, cấu trúc dữ liệu khối (Data Block - DB), cơ chế chia sẻ bộ nhớ Multi-instance và kỹ thuật phân định ngắt phần cứng (Hardware Interrupt).
  3. Hướng dẫn chi tiết phương thức cấu hình phần cứng, ghép nối ngõ vào/ngõ ra, xử lý tín hiệu xung tốc độ cao thông qua bộ đếm HSC (High-Speed Counter) và kỹ thuật chuyển đổi, tính toán dữ liệu số học/dấu phẩy động.

Đối tượng nghiên cứu của tài liệu là tập lệnh lập trình điều khiển trên thiết bị PLC Siemens S7-1200 (bao gồm các dòng CPU 1211C, CPU 1212C và bo mạch mở rộng Signal Board). Phạm vi nghiên cứu trong phần văn bản này tập trung vào không gian kỹ thuật của Chương 5: "Tập lệnh lập trình", bao quát toàn bộ thông số ngõ vào/ngõ ra, kiểu dữ liệu chấp nhận, điều kiện trạng thái thực thi (cờ ENO) và cấu trúc bộ nhớ tương ứng.

Cơ sở lý thuyết và phương pháp

Cơ sở lý thuyết của đồ án dựa trên nền tảng kỹ thuật điều khiển lập trình công nghiệp và các tiêu chuẩn biểu diễn dữ liệu quốc tế:

  • Kiến trúc chu kỳ quét và quản lý bộ nhớ: Chu kỳ quét (Scan Cycle) của CPU gồm các giai đoạn quét ngõ vào cập nhật vào thanh ghi ảnh tiến trình (Process-Image Input - I), thực thi chương trình người dùng trong các khối tổ chức (Organization Block - OB) và chuyển dữ liệu từ thanh ghi ảnh tiến trình (Process-Image Output - Q) ra các đầu cực vật lý. Cơ chế truy xuất tức thời sử dụng hậu tố :P (như %I3.0:P hoặc %Q3.0:P) cho phép đọc/ghi trực tiếp tới cổng vật lý mà không thông qua bảng ảnh tiến trình.
  • Tiêu chuẩn số học và dữ liệu: Khung chuẩn IEEE 754 được áp dụng để kiểm tra, đánh giá tính hợp lệ của các số thực (Real, LReal), xử lý các trường hợp ngoại lệ như số vô cùng (+/- INF), giá trị không phải là số (NaN), hay các giá trị không được chuẩn hóa (số tiệm cận 0). Định dạng kiểu dữ liệu thời gian (TIME) có dung lượng 32-bit với định danh T#, bao phủ phạm vi từ T#-24d_20h_31m_23s_648ms đến T#24d_20h_31m_23s_647ms.
  • Cấu trúc lưu trữ dữ liệu khối: Khái niệm Data Block (DB) độc lập và khối dữ liệu chia sẻ đa phiên bản (Multi-instance DB) được áp dụng nhằm tối ưu hóa tài nguyên bộ nhớ và giảm thời gian quét của CPU khi khởi tạo nhiều khối định thì hoặc bộ đếm.

Phương pháp nghiên cứu được tác giả triển khai là phương pháp mô tả kỹ thuật kết hợp tổng hợp logic hệ thống. Tác giả thực hiện khảo sát chi tiết từng nhóm lệnh thông qua việc phân rã thông số (Parameters), kiểu dữ liệu (Data types), bảng chân lý logic, điều kiện hoạt động và giản đồ định thì (Timing Diagram). Toàn bộ dữ liệu kỹ thuật được trích xuất trực tiếp từ tài liệu kỹ thuật của dòng PLC Siemens S7-1200.

Thiết kế và triển khai

Hệ thống tập lệnh trong tài liệu được thiết kế và ánh xạ trực tiếp lên cấu trúc phần cứng cùng các khối chức năng điều khiển chuyên dụng của PLC Siemens S7-1200:

Thành phần kỹ thuật Quy cách cấu hình và triển khai Cơ chế xử lý bộ nhớ / Ngắt
Quản lý dữ liệu Timer/Counter Cấu hình DB đơn lẻ hoặc khối DB Multi-instance Lưu trữ dữ liệu thời gian/đếm trong một khối dữ liệu chung, giảm phân mảnh bộ nhớ và tối ưu thời gian thực thi OB.
Bộ đếm tốc độ cao (HSC) Tối đa 6 bộ đếm (HSC1 đến HSC6), cấu hình trong mục Device Configuration của CPU Hoạt động độc lập với chu kỳ quét OB; gọi lệnh CTRL_HSC trong khối ngắt phần cứng (Hardware Interrupt OB) khi xảy ra sự kiện CV = RV.
Sao chép dữ liệu ngắt (MOVE_BLK / FILL_BLK) Sao chép mảng hoặc khối phần tử bộ nhớ liên tiếp Cho phép ngắt (Interrupt) chèn ngang trong quá trình sao chép; dữ liệu được khôi phục và hoàn tất sau khi ngắt thực thi xong.
Sao chép không ngắt (UMOVE_BLK / UFILL_BLK) Sao chép dữ liệu khối yêu cầu tính toàn vẹn cao Xếp hàng các ngắt và chỉ cho phép thực thi sau khi toàn bộ khối dữ liệu đích được ghi nhất quán.

Cấu hình phần cứng cho bộ đếm tốc độ cao HSC phụ thuộc vào phiên bản CPU: các dòng CPU 1211C tích hợp sẵn 6 ngõ vào số nên không hỗ trợ HSC3 khi có ngõ vào đặt lại, không hỗ trợ HSC4, đồng thời HSC5 và HSC6 chỉ sử dụng được khi lắp thêm bảng mạch tín hiệu mở rộng (Signal Board).

Nội dung chính theo từng chương

Chương 5: Tập lệnh lập trình

Chương 5 là nội dung trọng tâm của văn bản, cung cấp chi tiết các nhóm lệnh điều khiển, tính toán và xử lý dữ liệu trên PLC S7-1200. Nội dung được cấu trúc thành các mảng kỹ thuật cụ thể:

1. Nhóm lệnh tiếp điểm, hộp logic và thao tác bit

  • Tiếp điểm LAD: Bao gồm tiếp điểm thường hở NO (đóng lại khi bit gán bằng 1), tiếp điểm thường đóng NC (đóng lại khi bit gán bằng 0). Mạch nối tiếp tạo hàm logic AND, mạch song song tạo hàm logic OR. Tiếp điểm NOT thực hiện đảo trạng thái dòng tín hiệu.
  • Hộp FBD: Sử dụng các khối logic chuẩn gồm AND (&), OR (>=1), và XOR (OR loại trừ, ngõ ra bằng TRUE khi có số lẻ ngõ vào mang giá trị TRUE). Người lập trình có thể bổ sung chân ngõ vào thông qua lệnh "Insert binary input" hoặc đảo ngõ vào/ngõ ra bằng công cụ "Negate binary input".
  • Cuộn dây ngõ ra và hộp gán: Lệnh cuộn dây LAD và hộp gán FBD (= và /=) ghi trạng thái luồng tín hiệu vào bit chỉ định trên thanh ghi ảnh tiến trình ngõ ra (Q) hoặc ghi trực tiếp tới cổng vật lý khi sử dụng cú pháp :P.
  • Lệnh Set, Reset và Mạch chốt: Lệnh S (Set) và R (Reset) tác động lên 1 bit đơn lẻ; lệnh SET_BF và RESET_BF thiết lập hoặc đặt lại cho một trường gồm n bit liên tiếp bắt đầu từ phần tử mảng Boolean chỉ định (ví dụ #MyArray[3]). Mạch chốt RS ưu tiên Set (khi cả S1 và R bằng 1 thì ngõ ra OUT = 1), trong khi mạch chốt SR ưu tiên Reset (khi cả S và R1 bằng 1 thì ngõ ra OUT = 0).
  • Phát hiện ngưỡng (bộ dò quá độ): Các lệnh phát hiện ngưỡng dương (chuyển trạng thái từ OFF sang ON: tiếp điểm P, hộp P, cuộn dây P, hộp P=, lệnh P_TRIG) và ngưỡng âm (chuyển từ ON sang OFF: tiếp điểm N, hộp N, cuộn dây N, hộp N=, lệnh N_TRIG). Các lệnh này sử dụng tham số M_BIT để lưu trạng thái chu kỳ quét trước. Văn bản nhấn mạnh M_BIT phải được gán vào vùng nhớ không bị ghi đè ngẫu nhiên như vùng nhớ M, DB tổng thể hoặc biến Static trong DB mẫu, tuyệt đối tránh dùng vùng nhớ tạm (Temp).

2. Nhóm lệnh định thì (Timer)

Nhóm lệnh tạo trễ thời gian gồm 4 bộ định thì chính và 1 lệnh xóa:

  • TP (Pulse Timer): Bộ định thì xung, phát tín hiệu ngõ ra với bề rộng xung bằng thời gian đặt trước PT. Thay đổi tín hiệu ngõ vào IN hay giá trị PT không ảnh hưởng trong khi TP đang vận hành.
  • TON (ON-delay Timer): Làm trễ quá trình bật; ngõ ra Q chuyển lên ON sau khoảng thời gian trễ PT. Nếu ngõ vào IN chuyển sang FALSE khi đang định thì, bộ định thì bị dừng và đặt lại giá trị.
  • TOF (OFF-delay Timer): Làm trễ quá trình tắt; ngõ ra Q giữ trạng thái ON cho đến khi tín hiệu IN chuyển từ 1 về 0 và duy trì đủ khoảng thời gian PT.
  • TONR (Time Accumulator): Bộ định thì có khả năng tích lũy thời gian; khi IN chuyển sang FALSE, thời gian đã trôi qua (ET) được giữ nguyên và tiếp tục đếm khi IN bật trở lại. Giá trị tích lũy chỉ bị xóa về 0 khi ngõ vào R được kích hoạt.
  • RT (Reset Timer): Lệnh đặt lại dữ liệu thời gian lưu trong khối dữ liệu của bộ định thì được chỉ định.

3. Nhóm lệnh đếm cơ bản và điều khiển bộ đếm tốc độ cao (CTRL_HSC)

  • Bộ đếm phần mềm: Gồm CTU (đếm lên khi ngõ vào CU chuyển từ 0 lên 1), CTD (đếm xuống khi CD chuyển từ 0 lên 1), và CTUD (đếm lên/xuống tích hợp). Tốc độ của bộ đếm này bị giới hạn bởi chu kỳ thực thi của khối OB chứa nó.
  • Bộ đếm tốc độ cao (HSC) và lệnh CTRL_HSC: Dùng để đếm các sự kiện tốc độ cao vượt quá tần số quét của OB (như tín hiệu từ encoder phát xung gắn trên trục động cơ). HSC có 4 chế độ vận hành: bộ đếm một pha điều khiển hướng bên trong, một pha điều khiển hướng bên ngoài, hai pha với hai ngõ vào clock, và bộ đếm vuông pha A/B (hỗ trợ các pha A, B, Z). Lệnh còn hỗ trợ chế độ đo tần số với 3 chu kỳ đo: 0.01s, 0.1s và 1.0s, kết quả trả về theo đơn vị Hertz (Hz).

Địa chỉ vùng nhớ ngõ vào lưu trữ giá trị đếm hiện thời của các bộ đếm HSC được phân bổ mặc định như sau:

Bộ đếm tốc độ cao Kiểu dữ liệu Địa chỉ ngõ vào mặc định
HSC1 DInt (32-bit có dấu) ID1000
HSC2 DInt (32-bit có dấu) ID1004
HSC3 DInt (32-bit có dấu) ID1008
HSC4 DInt (32-bit có dấu) ID1012
HSC5 DInt (32-bit có dấu) ID1016
HSC6 DInt (32-bit có dấu) ID1020

Khi thực thi lệnh CTRL_HSC, ngõ ra STATUS (kiểu Word) trả về các mã trạng thái điều kiện:

  • 16#0000: Thực thi thành công, không có lỗi.
  • 16#80A1: Mã định danh HSC không hợp lệ (không ghi đúng địa chỉ phần cứng HSC).
  • 16#80B1: Giá trị không phù hợp trong thông số NEW_DIR.
  • 16#80B2: Giá trị không phù hợp trong thông số NEW_CV.
  • 16#80B3: Giá trị không phù hợp trong thông số NEW_RV.
  • 16#80B4: Giá trị không phù hợp trong thông số NEW_PERIOD.

4. Nhóm lệnh so sánh và kiểm tra tính hợp lệ số thực

  • Lệnh so sánh quan hệ: So sánh hai giá trị IN1 và IN2 cùng kiểu dữ liệu thông qua các toán tử: == (bằng), <> (khác), >= (lớn hơn hoặc bằng), <= (nhỏ hơn hoặc bằng), > (lớn hơn), < (nhỏ hơn). Hỗ trợ các kiểu dữ liệu từ số nguyên (SInt, Int, DInt, USInt, UInt, UDInt), số thực (Real, LReal), ký tự/chuỗi (Char, String) đến kiểu thời gian (Time, DTL).
  • Lệnh phạm vi: IN_RANGE (kiểm tra MIN <= VAL <= MAX) và OUT_RANGE (kiểm tra VAL < MIN hoặc VAL > MAX).
  • Kiểm tra chuẩn số thực: Lệnh OK và NOT_OK dùng để xác minh một giá trị số thực có tuân thủ tiêu chuẩn IEEE 754 hay không. Ngõ ra của NOT_OK sẽ bằng TRUE nếu dữ liệu là +/- INF, NaN hoặc giá trị không được chuẩn hóa.

5. Nhóm lệnh toán học số nguyên và dấu phẩy động

  • Phép toán cơ bản: ADD (+), SUB (-), MUL (*), DIV (/). Trong phép chia số nguyên, phần phân số bị cắt bỏ để trả về kết quả số nguyên. Khi xảy ra lỗi (chia cho 0, tràn vùng nhớ, hoặc tham số đầu vào là NaN/INF không hợp lệ), cờ trạng thái ENO bị kéo về 0.
  • Phép toán mở rộng: MOD (chia lấy dư), NEG (đảo dấu số học), INC (tăng 1 đơn vị), DEC (giảm 1 đơn vị), ABS (lấy giá trị tuyệt đối), MIN (lấy giá trị nhỏ hơn), MAX (lấy giá trị lớn hơn), và LIMIT (giới hạn giá trị IN trong khoảng [MIN, MAX]).
  • Toán học dấu phẩy động: Hỗ trợ tính toán khoa học trên kiểu dữ liệu Real và LReal, bao gồm SQR (bình phương), SQRT (căn bậc hai), LN (logarit tự nhiên), EXP (lũy thừa cơ số e = 2.71828182845904523536), các hàm lượng giác (SIN, COS, TAN, ASIN, ACOS, ATAN), FRAC (trích xuất phần phân số), và EXPT (lũy thừa tổng quát $IN1^{IN2}$).

6. Nhóm lệnh di chuyển, chuyển đổi dữ liệu và xử lý byte

  • Di chuyển dữ liệu: MOVE (sao chép phần tử đơn lẻ hoặc cấu trúc struct); MOVE_BLK (sao chép mảng có thể ngắt); UMOVE_BLK (sao chép mảng không thể ngắt); FILL_BLK và UFILL_BLK (lấp đầy mảng đích bằng các bản sao của phần tử nguồn).
  • Lệnh tráo đổi byte (SWAP): Đảo ngược trật tự byte cho dữ liệu 2 byte (Word) hoặc 4 byte (DWord) mà không thay đổi trật tự bit bên trong từng byte. Ví dụ: giá trị Word 16#1234 tại MB0-MB1 sau khi qua SWAP chuyển thành 16#3412 tại MB4-MB5; giá trị DWord 16#12345678 chuyển thành 16#78563412.
  • Chuyển đổi kiểu dữ liệu (CONVERT): Chuyển đổi qua lại giữa các kiểu dữ liệu số nguyên, số thực, dữ liệu byte/word, bao gồm chuyển đổi hạn chế với mã BCD16 (áp dụng cho Int) và BCD32 (áp dụng cho DInt).
  • Làm tròn và cắt bỏ: Lệnh ROUND làm tròn số thực về số nguyên gần nhất theo chuẩn IEEE (nếu nằm chính giữa hai số nguyên thì làm tròn về số nguyên chẵn gần nhất); lệnh TRUNC cắt bỏ hoàn toàn phần thập phân về 0 để chuyển số thực thành số nguyên.

Kết quả và đóng góp

Đồ án đã tổng hợp và chuẩn hóa toàn diện tài liệu kỹ thuật về hệ thống lệnh trên dòng PLC Siemens S7-1200:

  • Hệ thống hóa đầy đủ điều kiện logic, kiểu dữ liệu và phản ứng của cờ ngõ ra ENO cho toàn bộ các tập lệnh cơ bản, nâng cao, lệnh xử lý mảng và toán học dấu phẩy động.
  • Xác lập bảng phân định chi tiết về địa chỉ vùng nhớ phần cứng mặc định cho 6 bộ đếm tốc độ cao (ID1000 đến ID1020), đồng thời làm rõ cơ chế quản lý ngắt phần cứng thông qua khối OB ngắt và lệnh CTRL_HSC.
  • Phân biệt rõ ràng ranh giới ứng dụng giữa các lệnh sao chép ngắt được (MOVE_BLK, FILL_BLK) và không ngắt được (UMOVE_BLK, UFILL_BLK), đưa ra chỉ dẫn sử dụng bộ nhớ tối ưu (Data Block đơn lẻ so với Multi-instance DB) nhằm hạn chế phân mảnh tài nguyên CPU.

Hạn chế và hướng nghiên cứu tiếp

  • Hạn chế: Nội dung văn bản được cung cấp giới hạn trong phạm vi Chương 5 ("Tập lệnh lập trình"). Tài liệu tập trung thuần túy vào mặt cú pháp, tham số và nguyên lý lệnh mà chưa bao gồm các sơ đồ đấu nối mạch điện ngoại vi, chương trình điều khiển của các dự án ứng dụng thực tế hoặc các chương nội dung trước đó của đồ án.
  • Hướng phát triển: Mở rộng nghiên cứu sang việc tích hợp các khối hàm truyền thông công nghiệp (như PROFINET, Modbus TCP), thiết kế giải thuật điều khiển vòng kín PID, và xây dựng giao diện giám sát vận hành HMI/SCADA kết nối trực tiếp với PLC S7-1200.

Giá trị tham khảo

Tài liệu là nguồn tra cứu chuyên ngành dành cho:

  • Sinh viên, giảng viên ngành Kỹ thuật Điều khiển và Tự động hóa, Điện - Điện tử, Cơ điện tử khi thực hiện các học phần thực hành PLC, đồ án môn học hoặc đồ án tốt nghiệp liên quan đến hệ thống điều khiển tự động.
  • Kỹ sư lập trình hệ thống điều khiển công nghiệp cần tra cứu nhanh thông số kỹ thuật, bảng mã lỗi STATUS của bộ đếm CTRL_HSC, cơ chế xử lý ngoại lệ số thực IEEE 754 hoặc kỹ thuật hoán vị dữ liệu SWAP/CONVERT.

Câu hỏi thường gặp

1. Lệnh MOVE_BLK và UMOVE_BLK khác nhau như thế nào khi xử lý sự kiện ngắt? Khi thực thi MOVE_BLK, các sự kiện ngắt được xếp hàng và có thể được xử lý chèn ngang trong quá trình sao chép; nếu bị ngắt, phần tử dữ liệu cuối cùng đang di chuyển sẽ được hoàn tất để đảm bảo tính nhất quán cục bộ và hoạt động sao chép sẽ khôi phục sau khi khối OB ngắt chạy xong. Ngược lại, với UMOVE_BLK, các sự kiện ngắt bị hoãn lại hoàn toàn cho đến khi toàn bộ khối dữ liệu đích được sao chép hoàn tất, đảm bảo tính nhất quán tuyệt đối của cả mảng dữ liệu trước khi ngắt được thực thi.

2. Tham số M_BIT trong các lệnh phát hiện ngưỡng (ngắt cạnh) có vai trò gì và cần lưu ý gì khi gán vùng nhớ? M_BIT đóng vai trò lưu trữ trạng thái của tín hiệu ngõ vào ở chu kỳ quét liền trước để làm cơ sở so sánh với trạng thái chu kỳ hiện tại. Do M_BIT phải duy trì giá trị qua các vòng quét, người lập trình chỉ được phép gán M_BIT vào vùng nhớ M, khối dữ liệu DB tổng thể hoặc biến Static trong DB mẫu. Không được dùng vùng nhớ tạm thời (Temp) hoặc vùng nhớ có khả năng bị ghi đè bởi các hàm cập nhật ngõ vào/ra khác.

3. Ký hiệu :P phía sau địa chỉ ngõ vào hoặc ngõ ra (ví dụ %I3.0:P, %Q3.0:P) mang ý nghĩa kỹ thuật gì? Cú pháp :P biểu thị việc truy xuất tức thời vào/ra vật lý. Đối với ngõ vào, dữ liệu được đọc trực tiếp từ đầu cực phần cứng thay vì đọc từ thanh ghi ảnh tiến trình (Process Image) và không cập nhật lại ảnh tiến trình. Đối với ngõ ra, dữ liệu được ghi đồng thời vào thanh ghi ảnh tiến trình và xuất trực tiếp ngay lập tức tới đầu cực ngõ ra vật lý.

4. Khi lệnh CTRL_HSC thực thi không thành công, mã điều kiện lỗi trả về ở ngõ ra STATUS gồm những giá trị nào? Ngõ ra STATUS (kiểu Word) sẽ trả về các mã lỗi cụ thể: 16#80A1 (nhận dạng HSC không hợp lệ / không trỏ đúng địa chỉ HSC), 16#80B1 (giá trị không phù hợp trong thông số hướng đếm NEW_DIR), 16#80B2 (giá trị không phù hợp trong NEW_CV), 16#80B3 (giá trị không phù hợp trong NEW_RV), và 16#80B4 (giá trị không phù hợp trong chu kỳ đo tần số NEW_PERIOD).

Kết luận

Đồ án học phần 2A do ThS. Hoàng Đình Khôi hướng dẫn đã trình bày một cách có hệ thống và chuẩn xác toàn bộ tập lệnh lập trình của PLC Siemens S7-1200 trên hai ngôn ngữ LAD và FBD. Nội dung tài liệu làm sáng tỏ các nguyên lý quản lý bộ nhớ, kỹ thuật điều khiển bộ đếm tốc độ cao, xử lý ngắt và các phép toán số học từ cơ bản đến nâng cao. Đây là tài liệu mang giá trị kỹ thuật thực tiễn cao, đóng vai trò nền tảng vững chắc cho sinh viên và kỹ sư trong quá trình thiết kế, triển khai các giải pháp tự động hóa công nghiệp.