Ladder diagram (LD/LAD), structured text (ST/STL), function block (FB/FBD), instruction list (IL), sequential function chart (SFC). Đây là 5 ngôn ngữ lập trình cho bộ điều khiển lập trình PLC được chỉ định sử dụng theo tiêu chuẩn IEC 61131-3. Ngoài ra, hiện nay các hãng PLC cũng dần dần cập nhật các ngôn ngữ lập trình mới cho PLC như: C/C++
Cùng xem chi tiết về từng dòng PLC: https://mesidas.com/dmsp/plc/
#1 Ngôn ngữ lập trình PLC LAD (Ladder Diagram)
Ladder Logic còn được biết đến với nhiều tên gọi khác như: sơ đồ bậc thang (ladder diagram “LD”) hay LAD và là một ngôn ngữ lập trình được sử dụng để lập trình PLC (Programmable Logic Controller). Nó là một ngôn ngữ lập trình PLC đồ họa nhằm thể hiện các hoạt động logic với ký hiệu tượng trưng. Ladder Logic được tạo ra từ các nấc thang logic, tạo thành thứ trông giống như một cái thang, do đó có tên là “Ladder Logic” hay sơ đồ bậc thang.
Ladder Logic “LAD” không chỉ là một ngôn ngữ lập trình cho PLC. Nó là một trong những ngôn ngữ lập trình PLC được tiêu chuẩn hóa. Điều này đơn giản có nghĩa là Ladder Logic đã được mô tả theo một tiêu chuẩn. Tiêu chuẩn đó được gọi là IEC 61131-3.
Ưu điểm:
- LAD với cấu trúc bậc thang dễ sắp xếp, tổ chức và tiện theo dõi
- Cho phép ghi chú thích
- Hỗ trợ chỉnh sửa online
Nhược điểm: một số lập trình chức năng không có sẵn, đặc biệt là khó khăn trong việc lập trình chyển động hoặc phân luồng
Một số hãng sản xuất PLC hỗ trợ ngôn ngữ lập trình LAD (hầu hết các hãng PLC đều hỗ trợ ngôn ngữ này) như: AB, Mitsubishi, B&R, Siemens, Unitronics, Schneider,..
#2 Ngôn ngữ lập trình PLC FBD (Function Block Diagram)
FBD là từ viết tắt của “Function Block Diagram” tạm dịch là “Sơ đồ khối chức năng”; là một trong những ngôn ngữ lập trình PLC được sử dụng rộng rãi. FBD là một ngôn ngữ lập trình rất dễ học, cung cấp rất nhiều khả năng và chúng ta có thể sử dụng ngôn ngữ FBD này để lập trình cho bất kỳ chức năng nào trong một chương trình PLC.
FBD là ngôn ngữ lập trình PLC chính thức được mô tả theo tiêu chuẩn IEC 61131-3 và là ngôn ngữ cơ bản cho tất cả các lập trình viên PLC. FBD là một ngôn ngữ tuyệt vời để triển khai mọi thứ từ logic đến timer, bộ điều khiển PID và thậm chí là hệ thống SCADA,..
Ưu điểm:
- Hoạt động tốt với các chức năng điều khiển chuyển động
- Trực quan và dễ dàng hơn đối với một số người dùng
- Có thể gộp nhiều dòng lập trình thành một khối hoặc một số khối chức năng
Nhược điểm: có thể trở nên vô tổ chức khi sử dụng ngôn ngữ này vì bạn có thể dặt các khối chức năng này ở bất kỳ đâu trên trang. Điều này cũng dẫn đến việc khắc phục sự cố khó khăn hơn.
Một số hãng sản xuất PLC hỗ trợ ngôn ngữ lập trình FBD như: AB, Schneider, B&R, Siemens,..
#3 Ngôn ngữ lập trình PLC ST/STL (Structured Text)
Structured Text “ST/STL” là ngôn ngữ lập trình PLC đạt chuẩn IEC 61131-3. Ngôn ngữ lập trình ST dựa trên nền tảng văn bản, trong khi ngôn ngữ lập trình LAD và FBD dựa trên nền tảng đồ họa. ST là ngôn ngữ cấp cao giống như Basic, Pascal và “C”.
Khi mới tìm hiểu về lập trình PLC, có vẻ tốt hơn nếu sử dụng ngôn ngữ lập trình đồ họa để lập trình PLC. Tuy nhiên, điều đó với tôi chỉ đúng với các chương trình PLC nhỏ và vừa. Bằng cách sử dụng ngôn ngữ lập trình PLC dựa trên nền tảng văn bản, chương trình của bạn sẽ chiếm không gian nhỏ hơn nhiều và phân luồng / logic sẽ dễ đọc và dễ hiểu hơn.
- Ngôn ngữ lập trình ST được sao chép một cách tương đối dễ dàng giữa các loại PLC khác nhau
- Đây được coi là ngôn ngữ lập trình PLC dễ sử dụng nhất cho các chương trình sử dụng các phép tính toán học, công thức, thuật toán và chương trình có lượng lớn dữ liệu
- Cấu trúc lập trình ngôn ngữ ST gần giống với các ngôn ngữ phổ biến khác như: C++, C#, Pascal, VB,..
- Các ngôn ngữ lập trình PLC khác (LAD, SFC và FBD) đều sử dụng ngôn ngữ ST để lập trình nâng cao cho các thành phần của nó.
- Ngôn ngữ ST dựa trên nền tảng văn bản nên chiếm ít dung lượng, dễ mô tả, chú thích và in ra dễ dàng hơn các ngôn ngữ lập trình PLC khác.
Ưu điểm:
- Tính tổ chức cao và có khả năng tính toán các phép toán học lớn
- Cho phép lập trình một số chức năng không có ở ngôn ngữ khác (như LAD)
Nhược điểm:
- Khó thành thạo các cú pháp
- Khó khắc phục lỗi
- Rất khó để chỉnh sửa online
Một số hãng sản xuất PLC hỗ trợ ngôn ngữ lập trình ST như: AB, Schneider, B&R, Siemens,..
#4 Ngôn ngữ lập trình PLC SFC (Sequential Function Chart)
Nếu các bạn đã từng làm việc với các sơ đồ thì ngôn ngữ lập trình PLC SFC sẽ khiển bạn cảm thấy rất quen thuộc. SFC là từ viết tắt của cụm từ tiếng anh “Sequential Function Charts” tạm dịch là “Biểu đồ chức năng tuần tự”, bạn sẽ sử dụng các bước và quá trình chuyển đổi để đạt được kết quả cuối cùng của mình.
“Về mặt kỹ thuật: SFC không phải là một ngôn ngữ, mà là một phương tiện đồ họa nhằm phân vùng mã và hiển thị trạng thái hoặc chế độ hoạt động một cách trực quan.”
Ưu điểm:
- Các quá trình có thể chia thành các bước chính từ đó giúp khắc phục sự cố nhanh hơn và dễ dàng hơn.
- Có thể truy cập trực tiếp vào phần logic để xem vị trí của thiết bị bị lỗi.
- Có thể giúp quá trình thiết kế và viết chương trình nhanh hơn với khả năng sử dụng lặp đi lặp lại các thành phần logic riêng lẻ.
Nhược điểm: ngôn ngữ này không phải lúc nào cũng phù hợp với tất cả ứng dụng.
Một số hãng sản xuất PLC hỗ trợ ngôn ngữ lập trình ST như: AB, Mitsubishi, Schneider, Siemens,..
#5 Ngôn ngữ lập trình PLC IL (Instruction List)
Instruction List được viết tắt là “IL”, là một trong những ngôn ngữ lập trình kiểu văn bản và là ngôn ngữ lập trình PLC đầu tiên, cùng với LD. Instruction List là một trong 5 ngôn ngữ được đưa vào tiêu chuẩn IEC 61131-3 trong những năm đời đầu, từ lần công cố thứ ba trở đi, nó đã không được dùng (hạn chế sử dụng) bởi IEC nữa và như vậy, trong tương lai các nhà sản xuất PLC sẽ ngừng hỗ trợ ngôn ngữ này. Ngôn ngữ IL được thiết kế để dùng để viết chương trình cho bộ điều khiển lập trình PLC. Ngôn ngữ lập trình IL là một ngôn ngữ cấp thấp gần giống như ngôn ngữ Assembly. Khi sử dụng ngôn ngữ này, bạn sẽ làm việc với các mã, thành phần như LD (Load), AND, OR, etc,…
Một lợi ích của các ngôn ngữ cấp thấp, bao gồm cả IL, là chúng rất nhanh và hiệu quả – đặc biệt là khi so sánh với các ngôn ngữ đồ họa – và sử dụng ít bộ nhớ hơn. Vì lý do này, ngôn ngữ IL thường được sử dụng trong các ứng dụng như vòng điều khiển, đòi hỏi tốc độ xử lý rất nhanh.
Tuy nhiên, các chương trình được viết bởi ngôn ngữ IL có thể dễ bị lỗi thời gian chạy và chúng có thể gây ra các vòng lặp vô hạn hoặc các phép toán số học không xác định. Mặc dù vậy, quan trọng nhất, trong môi trường sản xuất ngày nay, nhân viên vận hành không phải là lập trình viên – bao gồm cả kỹ sư bảo trì và thợ điện – phải có thể khắc phục sự cố hoặc lỗi với thiết bị, bao gồm cả điều khiển và viết chương trình. Tuy rằng, ngôn ngữ IL rất thân thiện với lập trình viên, nhưng nếu không được đào tạo đặc biệt về ngôn ngữ này, rất khó để phân tích và khắc phục sự cố mã lệnh. Và để đào tạo đặc biệt cho nhân viên hỗ trợ về ngôn ngữ IL này là không thực tế, trong khi còn có các ngôn ngữ khác (ngôn ngữ đồ họa) có thể giải quyết các ứng dụng và vấn đề tương tự lại thân thiện hơn với người không phải là lập trình viên.
Ưu điểm: phù hợp với các ứng dụng ưu tiên sự đơn giản và cấp tốc
Nhược điểm:
- Bị giới hạn nhiều chức năng
- Nhiều lỗi khó xử lý hơn so với các ngôn ngữ khác
#6 Ngôn ngữ lập trình PLC C/C++
Với thời đại hiện nay, khoa học máy tính ngày càng phát triển, xâm nhập vào mọi lĩnh vực đang hoạt động, trong đó không thể không kể đến các ngành công nghiệp nói chung và ngành tự động hóa nói riêng. Và C/C++ là một ngôn ngữ lập trình cấp cao mà các lập trình viên cần phải biết và ứng dụng.
Vào năm 1972, tại phòng thí nghiệm Bell, Dennis Ritchie đã phát triển ngôn ngữ C. Ngôn ngữ C được sử dụng lần đầu trên một hệ thống cài đặt hệ điều hành UNIX. Và ngôn ngữ này có nguồn gốc từ ngôn ngữ BCPL do Martin Richards phát triển. BCPL sau đó đã được Ken Thompson phát triển thành ngôn ngữ B, đây là người khởi thủy ra C.
C++ là một phiên bản mở rộng của ngôn ngữ lập trình C, được tạo ra bởi Bjarne Stroustrup – một nhà khoa máy tính người Đan Mạch tại phòng thí nghiệm AT&T Bell vào năm 1979, được ISO công nhận vào năm 1998, lần phê chuẩn tiếp theo vào năm 2003 (người ta gọi là C++ 03) và sau đó là các phiên bản cập nhật C++ 11, C++ 14 và C++ 17.
C là ngôn ngữ thủ tục, trong khi C++ là hướng đối tượng, lập trình thủ tục tuân theo các nguyên tắc từng bước của các hàm, trong khi lập trình hướng đối tượng tập trung vào các đối tượng, kế thừa, v.v.
Một số hãng sản xuất PLC hỗ trợ ngôn ngữ lập trình C/C++ như: B&R, Mitsubishi, Unitronics, Beckhoff,..
Kết luận
Với bài viết chia sẻ trên đây, chúng ta biết và hiểu được rằng: mỗi loại đều có điểm mạnh và điểm yếu, mức độ phù hợp theo từng hoàn cảnh khác nhau. Tuy nhiên, hầu hết mọi người khi làm việc với PLC đều biết lập trình bằng ngôn ngữ LAD và có lẽ đây là ngôn ngữ phổ biến và được hỗ trợ rộng rãi nhất. Với các bài toán logic phức tạp hơn thì có thể được thực hiện bởi các ngôn ngữ khác. Một số ngôn ngữ cho phép có thể tự chuyển đổi từ ngôn ngữ đồ họa sang hoặc qua các phần mềm hỗ trợ. Mỗi một ngôn ngữ được lựa chọn còn phụ thuộc vào lượng kiến thức của lập trình viên hoặc theo yêu cầu của tổ chức.
Ngoài 6 ngôn ngữ lập trình được ứng dụng trong lập trình PLC kể trên, thì tùy từng ngành, từng lĩnh vực mà chúng ta còn có các ngôn ngữ lập trình phổ biến đã từng hay đang tồn tại như: ngôn ngữ máy, Assembly “hợp ngữ”, Cobol, Fortran, Pascal, HTML, JavaScript, Python, Java, Smalltalk, PHP, CSS, Swift, C# (C Sharp), Ruby, Perl, Objective-C, SQL, R, Go, Shell, Scala, TypeScript, VB (Visual Basic), TCL, Lisp, ML, Prolog.
Các câu hỏi thường gặp về ngôn ngữ lập trình PLC
Có 5 ngôn ngữ lập trình cho bộ điều khiển lập trình PLC được chỉ định sử dụng theo tiêu chuẩn IEC 61131-3 là LAD, ST, FBD, IL và SFC. Tuy nhiên, hiện nay ngôn ngữ C/C++ đang dần được đưa vào là ngôn ngữ lập trình chính cho PLC và chiếm ưu thế hơn so với các ngôn ngữ còn lại.
Bởi đặc tính dễ học, dễ sử dụng của ngôn ngữ LAD nên nó được trở thành ngôn ngữ lập trình PLC phổ biến nhất. Tuy nhiên, bởi những giới hạn của ngôn ngữ LAD nên khó có thể đáp ứng được nhu cầu thị trường hiện nay, do đó ngôn ngữ C/C++ dần được các lập trình viên ưu tiên sử dụng.
Nếu vào thời đại mà mình bắt đầu học PLC thì mình sẽ khuyên bạn nên bắt đầu với ngôn ngữ LAD. Tuy nhiên, thời đại đã thay đổi nên theo mình bạn nên tập làm quen và bắt đầu với ngôn ngữ C/C++ nhé!