Lập trình PLC là một kỹ năng quan trọng trong lĩnh vực tự động hóa, giúp điều khiển các hệ thống máy móc và thiết bị một cách hiệu quả. Bài viết này SKYTECH sẽ cung cấp cho bạn hướng dẫn toàn diện từ cơ bản đến nâng cao để hiểu hơn về lập trình PLC.

1. Các ngôn ngữ lập trình PLC phổ biến
Hiện nay, có nhiều ngôn ngữ lập trình PLC được sử dụng, mỗi ngôn ngữ có ưu và nhược điểm riêng. Việc lựa chọn ngôn ngữ nào phụ thuộc vào nhiều yếu tố như nhà sản xuất PLC, mô hình PLC và kinh nghiệm của người lập trình. Dưới đây là các ngôn ngữ lập trình PLC phổ biến nhất:
1.2 Ladder Logic (LD)
Ladder Logic (LAD) hay còn gọi là sơ đồ bậc thang, là ngôn ngữ lập trình đồ họa được sử dụng rộng rãi trong lập trình bộ điều khiển logic lập trình (PLC) và các hệ thống điều khiển tự động khác. LAD mô tả các hoạt động logic bằng cách sử dụng các ký hiệu tượng trưng, giúp người lập trình dễ dàng hình dung và hiểu được chương trình điều khiển.

Đặc điểm:
- Dễ học và sử dụng, đặc biệt cho những người có kiến thức về điện.
- Sử dụng các biểu tượng đồ họa trực quan để mô phỏng các mạch điện relay.
- Cho phép lập trình các logic điều khiển phức tạp.
- Tương thích với nhiều hãng PLC khác nhau.
1.3 Structured Text ( ST/STL)
Structured Text là ngôn ngữ lập trình bậc cao được sử dụng để viết các chương trình điều khiển cho các hệ thống tự động hóa, đặc biệt phổ biến trong ngành công nghiệp sản xuất. ST được IEC 61131-3 tiêu chuẩn hóa, giúp đảm bảo tính tương thích giữa các nhà sản xuất PLC khác nhau.

Đặc điểm:
- Cấu trúc rõ ràng: ST sử dụng các khối lệnh để tổ chức mã, giúp dễ đọc, dễ hiểu và bảo trì.
- Hỗ trợ đa dạng kiểu dữ liệu: ST hỗ trợ các kiểu dữ liệu cơ bản như số nguyên, số thực, chuỗi ký tự,… và các kiểu dữ liệu cấu trúc như mảng, cấu trúc.
- Cung cấp các hàm và lệnh điều khiển: ST cung cấp nhiều hàm và lệnh điều khiển để thực hiện các thao tác logic, toán học, so sánh, v.v., giúp xây dựng các chương trình điều khiển phức tạp.
- Khả năng kết nối với các thiết bị ngoại vi: ST có thể kết nối với các thiết bị ngoại vi như PLC, I/O, cảm biến,… thông qua các thư viện và giao thức truyền thông.
1.4 Function Block Diagram (FBD)
FBD là một ngôn ngữ lập trình đồ họa được sử dụng để lập trình các hệ thống điều khiển tự động (ACS) và các hệ thống nhúng. Nó sử dụng các khối chức năng để biểu diễn các hoạt động logic và toán học, được kết nối với nhau bằng các đường dẫn để biểu thị luồng dữ liệu. FBD là một ngôn ngữ trực quan và dễ sử dụng, phù hợp cho các kỹ sư không có chuyên môn về lập trình.

Đặc điểm của FBD:
- Tính trực quan: FBD sử dụng các biểu tượng đồ họa để mô tả các hoạt động của chương trình, giúp cho việc lập trình trở nên dễ dàng hơn cho người mới bắt đầu.
- Dễ sử dụng: FBD có cú pháp đơn giản và dễ hiểu, giúp cho việc viết và sửa lỗi chương trình trở nên dễ dàng hơn.
- Khả năng tái sử dụng: Các khối chức năng trong FBD có thể được tái sử dụng trong nhiều chương trình khác nhau, giúp tiết kiệm thời gian và công sức cho người lập trình.
- Tính linh hoạt: FBD có thể được sử dụng để lập trình nhiều loại PLC khác nhau.
1.5 Sequential Function Chart (SFC)
Sơ đồ chức năng tuần tự (SFC) là một công cụ đồ họa được sử dụng để mô tả hành vi tuần tự của một hệ thống hoặc quy trình. Nó được sử dụng trong nhiều lĩnh vực khác nhau, bao gồm kỹ thuật, sản xuất và tự động hóa.

Đặc điểm chính:
- Đồ họa trực quan: Sử dụng các biểu tượng và đường nối để mô tả các bước và quá trình chuyển đổi trong hệ thống, giúp dễ dàng hiểu và sửa đổi chương trình.
- Tính module: Cho phép chia chương trình thành các bước nhỏ hơn, dễ quản lý hơn.
- Khả năng tái sử dụng: Các bước và chương trình con SFC có thể được tái sử dụng trong các chương trình khác.
- Hỗ trợ cho các hệ thống phức tạp: SFC có thể được sử dụng để lập trình các hệ thống tuần tự phức tạp với nhiều trạng thái và chuyển đổi.
2. Hướng dẫn lập trình PLC cơ bản
2.1 Cài đặt phần mềm
Bước đầu tiên trong lập trình PLC là cài đặt phần mềm phù hợp. Việc lựa chọn phần mềm phụ thuộc vào hãng PLC mà bạn sử dụng. Một số hãng PLC phổ biến và phần mềm lập trình tương ứng của họ bao gồm:
- Siemens: TIA Portal
- Omron: CX-Programmer
- Mitsubishi: GX Works3
- Schneider Electric: EcoStruxure Machine Expert
Sau khi xác định phần mềm phù hợp, bạn cần tải xuống từ trang web chính thức của hãng PLC. Hãy đảm bảo chọn phiên bản phần mềm tương thích với hệ điều hành máy tính của bạn.
Tiếp theo, bạn cần cài đặt phần mềm bằng cách chạy file cài đặt và làm theo hướng dẫn trên màn hình. Một số PLC có thể yêu cầu cài đặt driver riêng để kết nối với máy tính. Hãy kiểm tra tài liệu hướng dẫn sử dụng của PLC để biết thêm thông tin chi tiết.
2.2 Cấu hình phần cứng
Để bắt đầu lập trình PLC, việc đầu tiên cần thực hiện là cấu hình phần cứng. Bước đầu tiên là xác định các thành phần phần cứng của hệ thống PLC, bao gồm:
- CPU: Bộ xử lý trung tâm của PLC, đóng vai trò như bộ não của hệ thống, thực hiện các phép toán và điều khiển hoạt động của PLC.
- I/O: Các module đầu vào và đầu ra, đóng vai trò là cầu nối giữa PLC và các thiết bị bên ngoài. Module đầu vào nhận tín hiệu từ các thiết bị như cảm biến, công tắc,… và module đầu ra gửi tín hiệu đến các thiết bị như động cơ, đèn báo….
- Bộ nhớ: Lưu trữ chương trình và dữ liệu của PLC.
- Nguồn điện: Cung cấp năng lượng cho PLC.
Sau khi xác định các thành phần phần cứng, bạn cần kết nối PLC với máy tính bằng cáp lập trình. Tiếp theo, bạn sẽ sử dụng phần mềm lập trình để cấu hình phần cứng. Trong phần mềm, bạn cần chọn loại CPU, module I/O và các thông số khác phù hợp với hệ thống thực tế.
Cấu hình phần cứng là bước quan trọng để đảm bảo rằng chương trình PLC có thể hoạt động chính xác và hiệu quả. Việc cấu hình sai có thể dẫn đến lỗi hoặc thậm chí hư hỏng thiết bị.
2.3 Viết chương trình
PLC sử dụng các ngôn ngữ lập trình riêng biệt để viết chương trình điều khiển. Các ngôn ngữ lập trình phổ biến bao gồm: Ladder Logic (LD), Structured Text (ST), Function Block Diagram (FBD),…
Cấu trúc chương trình PLC thường bao gồm:
- Mở chương trình mới trong phần mềm.
- Viết các lệnh điều khiển theo ngôn ngữ lập trình đã chọn.
- Sử dụng các biến, bộ nhớ, timer, counter để lưu trữ dữ liệu và thực hiện các chức năng logic.
- Kiểm tra lỗi chương trình.
Sau khi viết chương trình, bạn cần nạp chương trình vào PLC để thực thi. Việc nạp chương trình có thể được thực hiện bằng cáp lập trình hoặc qua mạng Ethernet.
3. Kỹ thuật lập trình PLC nâng cao
Để đáp ứng nhu cầu ngày càng cao của các hệ thống tự động hóa phức tạp, kỹ thuật lập trình PLC đã phát triển nhiều phương pháp tiên tiến hơn so với lập trình cơ bản. Lập trình theo hướng đối tượng và lập trình PID là hai kỹ thuật lập trình PLC nâng cao phổ biến. Sử dụng các kỹ thuật này có thể giúp cải thiện hiệu quả và độ chính xác của hệ thống tự động hóa.
3.1 Lập trình theo hướng đối tượng
Việc sử dụng các đối tượng để biểu diễn các thực thể trong các hệ thống tự động hóa giúp người lập trình tạo ra các chương trình có tính trừu tượng, đóng gói, kế thừa và đa hình, tăng tính tái sử dụng và bảo trì của mã nguồn.
Mỗi đối tượng là một đơn vị lập trình có các thuộc tính (dữ liệu) và phương thức (hành động). Một số ngôn ngữ lập trình hướng đối tượng phổ biến như C++, Java, Python và C#.

Ứng dụng của lập trình PLC theo hướng đối tượng:
- Điều khiển các hệ thống phức tạp: Dễ dàng quản lý và bảo trì các hệ thống phức tạp với nhiều thành phần.
- Tái sử dụng mã lập trình: Giúp tái sử dụng mã lập trình trong nhiều dự án khác nhau, giúp tiết kiệm thời gian và công sức.
- Phát triển phần mềm theo mô đun: giúp dễ dàng quản lý và bảo trì.
3.2 Lập trình PID
PID là viết tắt của Proportional-Integral-Derivative, là một thuật toán điều khiển được sử dụng rộng rãi trong các hệ thống tự động hóa. PID hoạt động bằng cách tính toán lỗi giữa giá trị đo được và giá trị mong muốn, sau đó sử dụng lỗi này để điều chỉnh đầu ra của hệ thống.

Ứng dụng của lập trình PID:
- Điều khiển nhiệt độ: được sử dụng rộng rãi để điều khiển nhiệt độ trong các lò nung, lò sấy,…
- Điều khiển tốc độ: điều khiển tốc độ của động cơ, quạt,…
- Điều khiển vị trí: điều khiển vị trí của robot, máy móc,…
4. Chia sẻ các ví dụ chương trình PLC thực tế
Để giúp bạn đọc hiểu rõ hơn về cách thức hoạt động của chương trình PLC được ứng dụng trong thực tế như thế nào, phần này sẽ chia sẻ một số ví dụ chương trình PLC cho các ứng dụng cụ thể.
4.1 Điều khiển bật tắt đèn đơn giản
Mô tả:
Hệ thống bao gồm một nút nhấn và một bóng đèn. Nút nhấn được sử dụng để điều khiển bật/tắt bóng đèn. Khi nút nhấn được ấn, đèn sẽ bật sáng. Khi nhả nút, đèn sẽ tắt.

Lập trình:
Để lập trình hệ thống này, ta cần sử dụng các lệnh sau:
- XIC: Examine Input Close – Kiểm tra trạng thái đầu vào (nút nhấn)
- SET: Set Output – Bật đầu ra (bóng đèn)
- RST: Reset Output – Tắt đầu ra (bóng đèn)
Ví dụ:
// Lập trình PLC cho điều khiển bật tắt đèn đơn giản
// Khai báo biến
BOOL Button_Pressed; // Biến lưu trạng thái nút nhấn
BOOL Lamp_On; // Biến lưu trạng thái đèn
// Chương trình
WHILE TRUE
// Đọc trạng thái nút nhấn
XIC M00; // M00 là địa chỉ của nút nhấn
MOV Button_Pressed;
// Bật đèn khi nút nhấn được ấn
IF Button_Pressed THEN
SET Q00; // Q00 là địa chỉ của đèn
Lamp_On := TRUE;
ELSE
RST Q00;
Lamp_On := FALSE;
END_IF;
// Hiển thị trạng thái đèn
IF Lamp_On THEN
// Hiển thị đèn sáng
ELSE
// Hiển thị đèn tắt
END_IF;
END_WHILE
Giải thích:
- WHILE TRUE: Lặp vô hạn chương trình
- XIC M00: Kiểm tra trạng thái nút nhấn M00. Nếu nút nhấn được ấn, lệnh XIC sẽ trả về giá trị TRUE.
- MOV Button_Pressed: Gán giá trị TRUE hoặc FALSE cho biến Button_Pressed tùy theo trạng thái nút nhấn.
- IF Button_Pressed THEN: Nếu nút nhấn được ấn (Button_Pressed = TRUE), thực hiện các lệnh trong khối THEN.
- SET Q00: Bật bóng đèn Q00.
- ELSE: Nếu nút nhấn không được ấn (Button_Pressed = FALSE), thực hiện các lệnh trong khối ELSE.
- RST Q00: Tắt bóng đèn Q00.
- IF Lamp_On THEN: Nếu đèn đang bật (Lamp_On = TRUE), thực hiện các lệnh trong khối THEN (ví dụ: hiển thị thông báo “Đèn đang bật”).
- ELSE: Nếu đèn đang tắt (Lamp_On = FALSE), thực hiện các lệnh trong khối ELSE (ví dụ: hiển thị thông báo “Đèn đang tắt”).
4.1 Hệ thống đèn giao thông
Mô tả:
Hệ thống đèn giao thông bao gồm 3 đèn: đỏ, vàng, xanh. Mỗi đèn có một thời gian hiển thị nhất định. Khi đèn đỏ sáng, các phương tiện giao thông phải dừng lại. Khi đèn vàng sáng, các phương tiện giao thông chuẩn bị đi. Khi đèn xanh sáng, các phương tiện giao thông được phép đi.

Lập trình:
Để lập trình hệ thống này, ta cần sử dụng các lệnh sau:
- XIC: Examine Input Close – Kiểm tra trạng thái đầu vào (cảm biến)
- SET: Set Output – Bật đầu ra (đèn)
- RST: Reset Output – Tắt đầu ra (đèn)
- TON: Timer On – Bắt đầu bộ đếm thời gian
- TOF: Timer Off – Tắt bộ đếm thời gian
- TN: Timer Not Equal – So sánh giá trị bộ đếm thời gian với giá trị đặt trước
Ví dụ:
// Lập trình PLC cho hệ thống đèn giao thông
// Khai báo biến
INT Timer_Red; // Biến đếm thời gian cho đèn đỏ
INT Timer_Yellow; // Biến đếm thời gian cho đèn vàng
INT Timer_Green; // Biến đếm thời gian cho đèn xanh
// Chương trình
WHILE TRUE
// Đếm thời gian cho đèn đỏ
TON Timer_Red, T#15s; // T#15s là thời gian đèn đỏ (15 giây)
IF TN Timer_Red THEN
// Bật đèn đỏ
SET Q00; // Q00 là địa chỉ của đèn đỏ
ELSE
RST Q00;
END_IF;
// Đếm thời gian cho đèn vàng
TON Timer_Yellow, T#5s; // T#5s là thời gian đèn vàng (5 giây)
IF TN Timer_Yellow THEN
// Bật đèn vàng
SET Q01; // Q01 là địa chỉ của đèn vàng
ELSE
RST Q01;
END_IF;
// Đếm thời gian cho đèn xanh
TON Timer_Green, T#10s; // T#10s là thời gian đèn xanh (10 giây)
IF TN Timer_Green THEN
// Bật đèn xanh
SET Q02; // Q02 là địa chỉ của đèn xanh
ELSE
RST Q02;
END_IF;
END_WHILE
Giải thích:
- TON Timer_Red, T#15s: Bắt đầu bộ đếm thời gian Timer_Red với giá trị đặt trước là 15 giây (T#15s).
- IF TN Timer_Red THEN: Nếu giá trị của Timer_Red không bằng giá trị đặt trước (T#15s), nghĩa là thời gian đèn đỏ đã hết, thực hiện các lệnh trong khối THEN.
- SET Q00: Bật đèn đỏ Q00.
- ELSE: Nếu thời gian đèn đỏ chưa hết, thực hiện các lệnh trong khối ELSE.
- RST Q00: Tắt đèn đỏ Q00.
- Tương tự cho các lệnh TON Timer_Yellow và TON Timer_Green với thời gian đèn vàng là 5 giây (T#5s) và thời gian đèn xanh là 10 giây (T#10s).
Lập trình PLC là chìa khóa mở ra cánh cửa đến “thế giới tự động hóa” đầy tiềm năng. Nắm vững kỹ năng này, bạn sẽ có khả năng điều khiển từ những thiết bị đơn giản đến những hệ thống phức tạp, góp phần thúc đẩy sự phát triển của khoa học kỹ thuật và nâng cao chất lượng cuộc sống. Đừng quên theo dõi SKYTECH thường xuyên để cập nhật thêm nhiều thông tin bổ ích về PLC nhé.
