Bối cảnh và vấn đề nghiên cứu
Trong kỹ thuật điều khiển 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 và điều khiển các cơ cấu chấp hành. Việc xây dựng một hệ thống tự động hóa ổn định đòi hỏi người kỹ sư phải nắm vững kiến trúc phần cứng, cơ chế quét vòng (Scan Cycle), cũng như cú pháp và quy tắc hoạt động của từng lệnh lập trình trên các ngôn ngữ tiêu chuẩn.
Tài liệu thuộc khuôn khổ "Đồ án học phần 2A" do ThS. Hoàng Đình Khọi hướng dẫn. Nội dung trọng tâm của đề tài được triển khai trong "Chương 5: Tập lệnh lập trình" (từ trang 5-1 đến trang 5-50), đi sâu vào việc phân tích, giải thích cấu trúc và hướng dẫn thực thi hệ thống tập lệnh của dòng PLC Siemens S7-1200 trên hai ngôn ngữ lập trình chính là Ladder Logic (LAD) và Function Block Diagram (FBD).
Mục tiêu và nhiệm vụ kỹ thuật của đồ án bao gồm:
- Phân tích chi tiết cơ chế tương tác giữa bộ vi xử lý (CPU) với bộ đệm ảnh tiến trình (Process Image) và các cổng vào/ra vật lý tức thời thông qua tập lệnh cơ bản.
- Khảo sát nguyên lý hoạt động, cấu trúc tham số ngõ vào/ngõ ra, bảng trạng thái và điều kiện bắt lỗi (ENO, STATUS) của các nhóm lệnh: nhị phân, bộ định thì (Timer), bộ đếm (Counter), bộ đếm xung tốc độ cao (HSC), các lệnh so sánh, tính toán số học, hàm toán học dấu phẩy động và xử lý khối bộ nhớ.
- Làm rõ các ràng buộc kỹ thuật về kiểu dữ liệu, phân bổ khối dữ liệu Data Block (đơn lẻ và Multi-instance), vùng nhớ bit nhớ nội (
M_BIT), cơ chế xếp hàng và xử lý ngắt phần cứng (Hardware Interrupt OB) khi thực thi các lệnh truyền nhận dữ liệu lớn.
Đối tượng nghiên cứu là dòng điều khiển khả trình PLC S7-1200 (bao gồm các mã phần cứng CPU 1211C, CPU 1212C và các bo mạch tín hiệu mở rộng Signal Board). Phạm vi nghiên cứu giới hạn trong việc phân tích các lệnh logic, điều khiển thời gian thực và quản lý bộ nhớ được hỗ trợ trong môi trường cấu hình thiết bị và lập trình của hệ thống.
Cơ sở lý thuyết và phương pháp thiết kế hệ thống
Đồ án xây dựng nội dung dựa trên nền tảng kiến trúc phần cứng và phần mềm của bộ điều khiển Siemens S7-1200, tuân thủ các quy chuẩn lập trình điều khiển công nghiệp:
- Cơ chế quét vòng CPU và quản lý ảnh tiến trình: Phân biệt rõ giữa việc đọc/ghi dữ liệu từ thanh ghi ảnh tiến trình ngõ vào (Process Image Input) / ngõ ra (Process Image Output) với việc truy xuất trực tiếp vào các đầu cực I/O vật lý thông qua định danh tức thời
:P (ví dụ %I3.0:P hoặc %Q3.0:P).
- Chuẩn biểu diễn số thực IEEE 754: Áp dụng cho các phép toán số thực (
Real, LReal), bao gồm cơ chế kiểm tra tính hợp lệ của dữ liệu dấu phẩy động, xử lý các trường hợp ngoại lệ như vô cùng (+INF, -INF), không phải số (NaN) và các giá trị phi chuẩn (denormalized numbers).
- Cấu trúc quản lý dữ liệu Single-instance và Multi-instance DB: Tối ưu hóa dung lượng bộ nhớ và thời gian xử lý của CPU khi cấu hình các bộ định thì (Timer) và bộ đếm (Counter) trong các khối hàm (Function Block - FB).
- Phương pháp phân tích kỹ thuật: Tác giả sử dụng phương pháp phân tích chức năng kết hợp tổng hợp tham số kỹ thuật, lập bảng chân trị logic (Truth Table), phân tích giản đồ định thì thời gian (Timing Diagram) và định lượng mã lỗi điều kiện của hệ thống.
Nguồn dữ liệu của đề tài đượ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, bảng thông số cấu hình phần cứng thiết bị (Device Configuration) và tập lệnh thực tế được biên soạn trong học phần.
Thiết kế và triển khai tập lệnh điều khiển
Hệ thống tập lệnh trong đồ án được thiết kế và phân loại có hệ thống, phản ánh rõ nét kiến trúc điều hành thời gian thực của PLC S7-1200:
1. Cơ chế truy xuất tín hiệu I/O và cập nhật ảnh tiến trình
Trong chế độ vận hành (RUN mode), CPU của PLC quét liên tục các tín hiệu ngõ vào vật lý nối tại đầu cực I và cập nhật định kỳ vào thanh ghi ngõ vào ảnh tiến trình. Chương trình logic xử lý các trạng thái này và ghi kết quả vào thanh ghi ngõ ra ảnh tiến trình trước khi xuất đồng loạt ra các đầu cực vật lý Q vào cuối chu kỳ quét. Khi cần đáp ứng tốc độ cao mà không phải chờ hết chu kỳ quét, lập trình viên sử dụng ký hiệu truy xuất tức thời :P để đọc hoặc ghi trực tiếp tới phần cứng, trong đó việc đọc tức thời sẽ không cập nhật thanh ghi ảnh tiến trình.
2. Cấu hình phần cứng và xử lý ngắt cho bộ đếm tốc độ cao (HSC)
Đối với các sự kiện diễn ra nhanh hơn chu kỳ quét của khối tổ chức chương trình chính (OB1) — chẳng hạn như xung phát ra từ encoder trục động cơ — hệ thống triển khai bộ đếm tốc độ cao HSC kết hợp với khối ngắt phần cứng (Hardware Interrupt OB). Việc cấu hình HSC được thực hiện trước trong phần thuộc tính phần cứng CPU (Device Configuration) để gán chế độ đếm, cấu hình kênh xung, phân vùng ngắt và ánh xạ vùng nhớ mặc định (ID1000 đến ID1020). Lệnh CTRL_HSC được kích hoạt trong OB ngắt để thay đổi tham số tức thời khi có sự kiện so sánh bằng (CV = RV), sự kiện đổi hướng hoặc khi có xung đặt lại (Reset).
3. Tối ưu hóa cấu trúc dữ liệu với Multi-instance DB
Khi khai báo nhiều bộ định thì (Timer) hoặc bộ đếm (Counter) bên trong một khối hàm, việc tạo từng khối dữ liệu riêng biệt sẽ làm tăng số lượng DB và chiếm dụng không gian bộ nhớ. Đồ án chỉ ra phương pháp sử dụng tùy chọn Multi-instance, cho phép gom các cấu trúc dữ liệu định thì/đếm vào một khối dữ liệu chung duy nhất. Cơ chế này không gây xung đột dữ liệu giữa các khối con, đồng thời giảm thiểu đáng kể thời gian xử lý của CPU.
Nội dung chính theo từng chương
Chương 5: Tập lệnh lập trình
Nội dung Chương 5 bao gồm toàn bộ các nhóm lệnh điều khiển, tính toán và xử lý dữ liệu được trình bày tuần tự từ trang 5-1 đến trang 5-50:
1. Nhóm lệnh tiếp điểm LAD, khối logic FBD và cuộn dây ngõ ra (Trang 5-1 đến 5-4)
- Tiếp điểm LAD: Tiếp điểm thường hở NO (đóng khi bit bằng 1), thường đóng NC (đóng khi bit 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.
- Khối logic FBD: Khối AND (
&), OR (>=1), XOR (ngõ ra TRUE khi có số lẻ ngõ vào mang giá trị TRUE). Hỗ trợ mở rộng số lượng ngõ vào bằng lệnh chèn ngõ vào nhị phân.
- Bộ đảo logic NOT: Chuyển đổi trạng thái dòng tín hiệu logic trong LAD và đảo ngõ vào/ngõ ra trong FBD.
- Cuộn dây ngõ ra (LAD) và Hộp gán ngõ ra (FBD): Ghi trạng thái logic vào bit ngõ ra (Q) hoặc bit nhớ nội (M). Hỗ trợ cả cuộn dây gán chuẩn (
=) và cuộn dây gán đảo (/=).
Bảng 1: Thông số nhóm lệnh tiếp điểm và cuộn dây cơ bản
| Tên lệnh / Tham số |
Kiểu dữ liệu |
Mô tả chức năng kỹ thuật |
| IN / IN1, IN2 |
Bool |
Tín hiệu ngõ vào logic từ ảnh tiến trình hoặc tức thời (:P) |
| OUT |
Bool |
Bit ngõ ra được gán trạng thái luồng tín hiệu logic |
| NOT |
Bool |
Đảo ngược trạng thái logic của luồng tín hiệu đi qua |
2. Nhóm lệnh Set/Reset và mạch chốt (Trang 5-5 đến 5-7)
- Lệnh S (Set) và R (Reset): Tác động lên 1 bit đơn lẻ. Khi kích hoạt, S đặt bit lên 1, R đặt bit về 0; khi không kích hoạt, trạng thái bit giữ nguyên.
- Lệnh SET_BF và RESET_BF: Thao tác đồng thời trên một trường gồm
n bit liên tiếp bắt đầu từ phần tử chỉ định tại OUT (ví dụ mảng #MyArray[3]). Các lệnh này bắt buộc nằm ở vị trí tận cùng bên phải của một nhánh mạch.
- Mạch chốt RS và SR: Mạch chốt RS ưu tiên Set (nếu cả
S1 và R đều bằng 1 thì OUT = 1); mạch chốt SR ưu tiên Reset (nếu cả S và R1 đều bằng 1 thì OUT = 0).
Bảng 2: Bảng trạng thái mạch chốt RS và SR
| Mạch chốt |
Ngõ vào Set |
Ngõ vào Reset |
Trạng thái ngõ ra OUT |
| RS (Set trội) |
0 |
0 |
Trạng thái kề trước |
|
0 |
1 |
0 |
|
1 |
0 |
1 |
|
1 |
1 |
1 |
| SR (Reset trội) |
0 |
0 |
Trạng thái kề trước |
|
0 |
1 |
0 |
|
1 |
0 |
1 |
|
1 |
1 |
0 |
3. Nhóm lệnh phát hiện sườn xung quá độ (Trang 5-8 đến 5-10)
Bao gồm tiếp điểm P/N (LAD), hộp P/N (FBD), cuộn dây P/N (LAD), hộp P=/N= (FBD) và các lệnh P_TRIG, N_TRIG. Lệnh phát hiện sườn dương (chuyển trạng thái từ 0 lên 1) hoặc sườn âm (từ 1 về 0).
- Toàn bộ các lệnh ngưỡng bắt buộc phải sử dụng một bit nhớ
M_BIT để lưu trạng thái kề trước của tín hiệu ngõ vào.
- Ràng buộc bộ nhớ: Bit
M_BIT phải là địa chỉ duy nhất, chỉ được khai báo trong vùng nhớ M, DB toàn cục (Global DB) hoặc vùng nhớ tĩnh Static của khối hàm. Tuyệt đối không sử dụng vùng nhớ tạm (Temp) hay vùng nhớ bị ghi đè bởi các hàm hệ thống. Lệnh đánh giá ngay từ chu kỳ quét đầu tiên nên cần khởi tạo trạng thái ban đầu chính xác.
4. Nhóm lệnh định thì - Timer (Trang 5-11 đến 5-15)
Hệ thống cung cấp 5 lệnh định thì:
TP (Pulse Timer): Tạo xung ngõ ra với độ rộng thời gian đặt trước PT.
TON (On-delay Timer): Trì hoãn đóng ngõ ra; ngõ ra Q lên 1 sau khoảng thời gian PT kể từ khi ngõ vào IN chuyển sang 1.
TOF (Off-delay Timer): Trì hoãn ngắt ngõ ra; ngõ ra Q về 0 sau khoảng thời gian PT kể từ khi ngõ vào IN chuyển từ 1 về 0.
TONR (Retentive On-delay Timer): Bộ định thì trễ có nhớ, tích lũy thời gian qua nhiều chu kỳ kích hoạt IN cho đến khi có tín hiệu xóa tại chân R.
RT (Reset Timer): Xóa dữ liệu thời gian của bộ định thì chỉ định.
- Kiểu dữ liệu TIME: Lưu trữ dạng số nguyên kép 32-bit có dấu (
DInt), biểu thị số mili-giây. Cú pháp khai báo sử dụng tiền tố T# (ví dụ T#200ms, T#2s_200ms). Dải giá trị hợp lệ từ T#-24d_20h_31m_23s_648ms đến T#24d_20h_31m_23s_647ms. Giá trị đặt trước PT âm sẽ bị hệ thống tự động gán về 0, và thời gian trôi qua ET luôn là số dương.
Bảng 3: Tác động khi thay đổi tham số ngõ vào trên các bộ định thì
| Loại Timer |
Thay đổi giá trị PT khi đang chạy |
Thay đổi trạng thái ngõ vào IN khi đang chạy |
| TP |
Không ảnh hưởng |
Không ảnh hưởng đến chu kỳ phát xung |
| TON |
Không ảnh hưởng |
Chuyển sang FALSE sẽ dừng và đặt lại Timer về 0 |
| TOF |
Không ảnh hưởng |
Chuyển sang TRUE sẽ đặt lại và dừng quá trình trễ |
| TONR |
Không ảnh hưởng tức thời, có tác dụng khi kích hoạt lại |
Chuyển sang FALSE sẽ tạm dừng đếm nhưng giữ nguyên giá trị thời gian tích lũy |
5. Nhóm lệnh đếm - Counter (Trang 5-16 đến 5-19)
Bao gồm bộ đếm tiến CTU, bộ đếm lùi CTD và bộ đếm lên/xuống kết hợp CTUD.
- Tốc độ đếm của các lệnh này bị giới hạn bởi chu kỳ thực thi của khối OB chứa chúng.
- Hỗ trợ các kiểu dữ liệu đếm nguyên có dấu và không dấu:
SInt, Int, DInt, USInt, UInt, UDInt.
- Khi
CTU đếm đến giá trị CV >= PV, ngõ ra Q chuyển lên 1; chân R tích cực mức 1 sẽ xóa CV về 0. Đối với CTD, chân LOAD kích hoạt sẽ nạp giá trị PV vào CV, và ngõ ra Q lên 1 khi CV <= 0. Đối với CTUD, ngõ ra QU báo trạng thái đếm tiến (CV >= PV) và QD báo trạng thái đếm lùi (CV <= 0).
6. Bộ đếm tốc độ cao HSC và lệnh CTRL_HSC (Trang 5-20 đến 5-28)
PLC S7-1200 hỗ trợ tối đa 6 kênh HSC (HSC1 đến HSC6) với 4 chế độ vận hành:
- Đếm 1 pha với điều khiển chiều đếm bên trong.
- Đếm 1 pha với điều khiển chiều đếm từ ngõ vào bên ngoài.
- Đếm 2 pha với 2 tín hiệu clock đếm tiến/đếm lùi độc lập.
- Đếm trạng thái vuông pha A/B (hỗ trợ đọc lệch pha của encoder 2 kênh A, B và ngõ vào xung reset pha Z).
- Chức năng đo tần số: Đo tần số theo đơn vị Hertz với 3 khoảng thời gian lấy mẫu: 0.01s, 0.1s và 1.0s. Giá trị báo về là tần số trung bình trong chu kỳ đo gần nhất.
- Ánh xạ vùng nhớ giá trị hiện thời: Được lưu mặc định tại các thanh ghi ngõ vào dạng
DInt: HSC1 (ID1000), HSC2 (ID1004), HSC3 (ID1008), HSC4 (ID1012), HSC5 (ID1016), HSC6 (ID1020).
- Lệnh điều khiển
CTRL_HSC: Cung cấp các cờ điều khiển (DIR, CV, RV, PERIOD) để nạp các giá trị mới (NEW_DIR, NEW_CV, NEW_RV, NEW_PERIOD) trong lúc chương trình đang chạy. Trên dòng S7-1200, chân ngõ ra BUSY luôn mang giá trị 0.
Bảng 4: Bảng mã trạng thái lỗi (STATUS) của lệnh CTRL_HSC
| Mã STATUS (Hex) |
Ý nghĩa kỹ thuật |
| W#16#0 |
Thực thi thành công, không xuất hiện lỗi |
| W#16#80A1 |
Định danh phần cứng HSC không trỏ đúng địa chỉ thiết bị |
| W#16#80B1 |
Giá trị nạp vào tham số hướng đếm NEW_DIR không phù hợp |
| W#16#80B2 |
Giá trị nạp vào tham số đếm hiện thời NEW_CV không hợp lệ |
| W#16#80B3 |
Giá trị nạp vào tham số tham chiếu NEW_RV không hợp lệ |
| W#16#80B4 |
Giá trị chu kỳ đo NEW_PERIOD không đúng định dạng quy định |
7. Nhóm lệnh so sánh và kiểm tra tính hợp lệ dữ liệu (Trang 5-29 đến 5-32)
- Các phép so sánh cơ bản: 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 (<), áp dụng cho các kiểu dữ liệu số, chuỗi ký tự, thời gian và cấu trúc ngày giờ (DTL).
- Lệnh kiểm tra miền giá trị:
IN_RANGE (đúng khi MIN <= VAL <= MAX) và OUT_RANGE (đúng khi VAL < MIN hoặc VAL > MAX).
- Lệnh kiểm tra số thực
OK và NOT_OK: Kiểm tra tính hợp lệ của biến kiểu Real/LReal theo chuẩn IEEE 754. Trả về NOT_OK nếu dữ liệu rơi vào trạng thái vô cùng (+INF, -INF), không phải số (NaN) hoặc giá trị phi chuẩn sát điểm 0 (khi đó CPU sẽ tự động gán về 0 trong các phép tính).
8. Nhóm lệnh toán học số học và hàm số thực (Trang 5-33 đến 5-42)
- Toán học cơ bản:
ADD (cộng), SUB (trừ), MUL (nhân), DIV (chia), MOD (chia lấy dư: $IN1 - (IN1/IN2)$), NEG (đổi dấu số học), INC (tăng 1 đơn vị), DEC (giảm 1 đơn vị), ABS (giá trị tuyệt đối), MIN (lấy giá trị nhỏ nhất), MAX (lấy giá trị lớn nhất), LIMIT (giới hạn giá trị nằm trong khoảng MIN và MAX).
- Hàm dấu phẩy động chuyên sâu:
SQR (bình phương), SQRT (căn bậc hai), LN (logarit tự nhiên), EXP (hàm mũ cơ số $e \approx 2.71828182845904523536$), SIN, COS, TAN, ASIN, ACOS, ATAN, FRAC (tách lấy phần thập phân phân số) và EXPT (lũy thừa tổng quát $IN1^{IN2}$).
- Cơ chế xử lý lỗi toán học: Khi xảy ra lỗi (chia cho 0, kết quả tràn dải biến, hoặc ngõ vào là
NaN/INF), ngõ ra ENO tự động hạ về 0 và trả về kết quả quy định (ví dụ phép chia cho 0 trả về 0; căn bậc hai của số âm trả về -NaN).
9. Nhóm lệnh di chuyển, khối dữ liệu và chuyển đổi kiểu (Trang 5-43 đến 5-50)
- Lệnh di chuyển bộ nhớ:
MOVE sao chép một phần tử đơn lẻ; MOVE_BLK sao chép khối dữ liệu có thể bị ngắt bởi chương trình ngắt OB; UMOVE_BLK sao chép khối dữ liệu không thể ngắt (đảm bảo tính toàn vẹn dữ liệu cho OB ngắt).
- Lệnh lấp đầy khối:
FILL_BLK (lấp đầy mảng có thể ngắt) và UFILL_BLK (lấp đầy mảng không thể ngắt) với số lượng phần tử xác định qua tham số COUNT. Lưu ý các lệnh sao chép/lấp đầy mảng không áp dụng cho vùng nhớ I, Q, M làm đích đến.
- Lệnh tráo đổi byte
SWAP: Hoán đổi thứ tự byte có trọng số cao (MSB) và byte có trọng số thấp (LSB) cho dữ liệu 2 byte (Word) và 4 byte (DWord), không làm thay đổi trật tự bit bên trong từng byte.
- Lệnh chuyển đổi kiểu
CONVERT: Chuyển đổi qua lại giữa các định dạng số nguyên, số thực, dữ liệu byte và mã BCD (BCD16, BCD32).
- Lệnh làm tròn:
ROUND chuyển số thực thành số nguyên theo quy tắc làm tròn đến số nguyên gần nhất của chuẩn IEEE (nếu nằm chính giữa hai số nguyên sẽ làm tròn về số nguyên chẵn); TRUNC cắt bỏ hoàn toàn phần thập phân để lấy phần nguyên.
Kết quả và đóng góp kỹ thuật
Đồ án đã hệ thống hóa toàn diện và chi tiết tập lệnh lập trình của PLC Siemens S7-1200 với các kết quả cụ thể:
- Chuẩn hóa cấu trúc tham số và kiểu dữ liệu: Thống kê đầy đủ kiểu dữ liệu, dung lượng bit và miền giá trị hợp lệ cho từng tham số ngõ vào/ngõ ra của hơn 30 nhóm lệnh khác nhau trên cả hai môi trường LAD và FBD.
- Làm rõ cơ chế phần cứng chuyên sâu: Phân định rõ ràng các trường hợp vận hành giữa bộ đếm phần mềm (bị giới hạn bởi chu kỳ quét của OB) và bộ đếm phần cứng tốc độ cao HSC (xử lý độc lập với chu kỳ CPU thông qua ngắt phần cứng và bảng địa chỉ ngõ vào mặc định
ID1000 - ID1020).
- Quy tắc an toàn trong thiết kế phần mềm PLC: Đưa ra các chỉ dẫn quan trọng nhằm ngăn ngừa xung đột bộ nhớ, bao gồm quy định bắt buộc đối với bit nhớ sườn xung
M_BIT, cảnh báo vùng giá trị âm trong kiểu dữ liệu TIME, cơ chế chống mất tính nhất quán dữ liệu bằng lệnh di chuyển không ngắt UMOVE_BLK và UFILL_BLK, cùng bảng tra cứu chi tiết mã trạng thái lỗi STATUS và cờ điều khiển ENO.
Hạn chế và hướng nghiên cứu tiếp
- Hạn chế: Nội dung tài liệu trong Chương 5 tập trung chủ yếu vào việc giải thích cú pháp, cơ chế thực thi của tập lệnh và các thông số cấu hình lý thuyết. Các ví dụ ứng dụng trong chương mang tính chất minh họa từng lệnh đơn lẻ, chưa ghép nối thành một bài toán điều khiển công nghệ hoàn chỉnh cho một dây chuyền sản xuất thực tế. Ngoài ra, một số tính năng mở rộng của bộ đếm tốc độ cao (như kênh HSC3, HSC4, HSC5, HSC6) bị giới hạn bởi số lượng ngõ vào tích hợp trên các dòng CPU cỡ nhỏ như CPU 1211C (chỉ có 6 ngõ vào tích hợp) và đòi hỏi phải trang bị thêm bo mạch Signal Board.
- Hướng phát triển: Kết hợp tập lệnh đã phân tích để xây dựng các thuật toán điều khiển tự động hóa phức tạp, triển khai các chương trình điều khiển vị trí chuyển động (Motion Control với xung PTO), lập trình điều khiển vòng kín PID và kết nối truyền thông công nghiệp (Profinet, Modbus TCP) tới các hệ thống giám sát SCADA và màn hình HMI.
Giá trị tham khảo
Đồ án là tài liệu kỹ thuật có giá trị học thuật và ứng dụng thực tiễn cao:
- Đối với sinh viên ngành Kỹ thuật Điều khiển & Tự động hóa, Điện tử, Cơ điện tử: Cung cấp tài liệu tra cứu chuẩn xác về cú pháp lệnh, cơ chế phân bổ vùng nhớ và phương pháp lập trình trên phần mềm TIA Portal cho các đồ án môn học, đồ án tốt nghiệp liên quan đến PLC S7-1200.
- Đối với kỹ sư tự động hóa: Hỗ trợ nắm bắt nhanh các quy tắc biên của phần cứng Siemens, cách xử lý lỗi ngoại lệ số thực IEEE 754, cấu hình kênh đếm tốc độ cao từ encoder và phương pháp tối ưu hóa bộ nhớ thông qua Multi-instance DB.
Câu hỏi thường gặp
1. Cơ chế truy xuất tức thời với ký hiệu :P khác gì so với việc đọc/ghi tín hiệu thông thường qua thanh ghi ảnh tiến trình?
Khi đọc/ghi thông thường qua các bộ định danh I hoặc Q, CPU chỉ tương tác với thanh ghi ảnh tiến trình (được cập nhật định kỳ theo chu kỳ quét). Khi thêm hậu tố :P (ví dụ %I3.0:P hoặc %Q3.0:P), CPU sẽ đọc hoặc ghi trực tiếp tới các đầu cực vật lý của phần cứng tại thời điểm thực thi lệnh, giúp bỏ qua độ trễ của chu kỳ quét. Lưu ý rằng việc đọc tức thời sẽ không cập nhật lại giá trị trong thanh ghi ngõ vào ảnh tiến trình.
2. Tại sao bit nhớ M_BIT trong các lệnh phát hiện sườn xung (P, N, P_TRIG, N_TRIG) bắt buộc không được dùng bộ nhớ tạm (Temp)?
Các lệnh phát hiện sườn xung cần so sánh trạng thái logic hiện tại của ngõ vào với trạng thái ở chu kỳ quét kề trước. Bộ nhớ tạm (Temp) sẽ bị xóa hoặc ghi đè sau khi kết thúc chu kỳ thực thi của khối, dẫn đến mất dữ liệu quá khứ. Do đó, M_BIT bắt buộc phải là một bit duy nhất được khai báo trong vùng nhớ M, DB toàn cục hoặc vùng nhớ tĩnh Static của khối dữ liệu mẫu.
3. Sự khác biệt cốt lõi giữa hai lệnh di chuyển khối MOVE_BLK và UMOVE_BLK là gì?
Lệnh MOVE_BLK là lệnh di chuyển có thể bị ngắt; nếu có một khối tổ chức ngắt (OB ngắt) kích hoạt khi lệnh đang chạy, CPU sẽ tạm dừng di chuyển để phục vụ ngắt rồi mới quay lại hoàn tất. Lệnh UMOVE_BLK là lệnh di chuyển không thể ngắt; mọi sự kiện ngắt phát sinh sẽ phải xếp hàng chờ cho đến khi toàn bộ khối dữ liệu được sao chép xong, đảm bảo dữ liệu tại vùng nhớ đích luôn hoàn toàn nhất quán trước khi OB ngắt truy cập.
4. Dải giá trị và đơn vị lưu trữ của kiểu dữ liệu TIME trong PLC S7-1200 được quy định như thế nào?
Kiểu dữ liệu TIME được lưu trữ dưới dạng số nguyên kép 32-bit có dấu (DInt), đại diện cho khoảng thời gian tính bằng mili-giây với tiền tố T#. Dải giá trị hợp lệ từ T#-24d_20h_31m_23s_648ms đến T#24d_20h_31m_23s_647ms (tương đương $-2.147.483.648\text{ ms}$ đến $+2.147.483.647\text{ ms}$). Tuy nhiên, hệ thống không chấp nhận giá trị đặt trước PT âm cho các lệnh Timer (sẽ tự động đưa về 0), và giá trị thời gian đã trôi qua ET luôn là số dương.
5. Lệnh làm tròn ROUND xử lý trường hợp số thực nằm chính giữa hai số nguyên theo quy tắc nào?
Lệnh ROUND chuyển đổi số thực thành số nguyên theo chuẩn IEEE (làm tròn đến giá trị gần nhất). Trong trường hợp phần thập phân nằm chính xác ở vị trí giữa hai số nguyên (ví dụ 2.5 hoặc 3.5), thuật toán sẽ làm tròn đến số nguyên chẵn gần nhất (2.5 được làm tròn thành 2, trong khi 3.5 được làm tròn thành 4).
Kết luận
Nội dung Chương 5 trong "Đồ án học phần 2A" dưới sự hướng dẫn của ThS. Hoàng Đình Khọi đã cung cấp một bản phân tích toàn diện, có cấu trúc chặt chẽ về hệ thống tập lệnh lập trình trên PLC Siemens S7-1200. Bằng việc kết hợp song song giữa hai ngôn ngữ LAD và FBD cùng các phân tích chi tiết về cơ chế quét vòng, quản lý ngắt phần cứng và kiểm soát ngoại lệ số học, tài liệu đáp ứng tốt yêu cầu kỹ thuật của đồ án chuyên ngành. Đây là tài liệu tham khảo có giá trị học thuật cao, phục vụ hiệu quả cho công tác nghiên cứu, học tập và triển khai các giải pháp điều khiển tự động hóa trong thực tế.