Trang chủ KIẾN THỨC Các ngôn ngữ lập trình PLC theo chuẩn IEC

Các ngôn ngữ lập trình PLC theo chuẩn IEC

0
2817
cac ngon ngu lap trinh PLC

Xin chào các bạn, đây là phần tiếp theo của chuỗi bài viết về chuẩn IEC 61131-3 mà các hãng PLC hiện nay đang áp dụng. Các bạn có thể xem lại phần trước của series tại đây nhé.

Tiêu chuẩn IEC61131-3 bao gồm 5 ngôn ngữ lập trình khác nhau. Bài viết này sẽ giới thiệu ngắn gọn cho từng dạng và một số lời khuyên về việc chọn ngôn ngữ nào là tốt nhất.

5 ngôn ngữ lập trình PLC:

  • Ladder Diagram (ở VN có tên gọi là sơ đồ hình thang, viết tắt là LAD): đây là ngôn ngữ phổ biến nhất hiện nay, đặc biệt ở Mỹ. Nó dựa trên sự trình bày đồ họa của Relay Ladder Logic. Đa số các PLC hiện nay dù tuân thủ hay không tuân thủ theo tiêu chuẩn IEC61131-3 đều sẽ có hỗ trợ ngôn ngữ ladder này.

  • Instruction List (ở VN có tên gọi là ngôn ngữ kiểu liệt kê, Siemens biến thể ngôn ngữ này và viết tắt là STL): đây giống như là phiên bản của ngôn ngữ ladder nhưng dưới dạng chữ viết (text). Nó có cấu trúc giống như ngôn ngữ máy assembly.

  • Function Block Diagram (ở VN được gọi dưới tên là ngôn ngữ khối. Viết tắt là FBD): diễn tả kết nối của các chức năng, khối chức năng và chương trình dưới dạng một tập hợp các khối đồ họa được kết nối với nhau. Nó trông giống như trong sơ đồ mạch điện tử mà chúng ta thường thấy.

  • Structured Text (ở VN được gọi với tên là ngôn ngữ kiểu cấu trúc. Siemens viết tắt ngôn ngữ này là SCL): đây là một ngôn ngữ cấp cao rất mạnh mẽ dùng cho PLC, có nguồn gốc từ Pascal và “C”. Nó có thể được sử dụng để định nghĩa các khối chức năng phức tạp, có thể được sử dụng lồng ghép trong các ngôn ngữ khác. Vì là ngôn ngữ cấp cao nên SCL rất trực quan và dễ hiểu.

  • Sequential Function Chart (ở VN gọi là kiểu lập trình lưu đồ tuần tự. Siemens gọi là ngôn ngữ SFC hoặc Graph): đây là một kiểu lập trình dạng đồ họa mạnh mẽ để mô tả các trạng thái tuần tự của một chương trình điều khiển.

Vậy với các ngôn ngữ đó, bạn nên chọn cái nào?

Sự lựa chọn ngôn ngữ lập trình phụ thuộc vào các yếu tố sau:

  • Nền tảng của lập trình viên:
    • Tùy thuộc vào sở trường của mình là gì. Bạn có làm tốt hơn/nhanh hơn trong việc lập trình và gỡ lỗi với ngôn ngữ đang chọn không?
  • Tùy chọn của khách hàng (End-user):
    • Là chuyên gia tư vấn, chúng tôi thường chọn ngôn ngữ dựa trên bộ kỹ năng của khách hàng. Nếu họ thích một ngôn ngữ hơn ngôn ngữ khác, chúng tôi sẽ sử dụng ngôn ngữ đó ngay cả khi đó không phải là lựa chọn đầu tiên của chúng tôi.
    • Code dễ bảo trì có thể tốt hơn nhiều so với chọn code dễ viết ngay từ đầu.
  • Kiểu chúng ta đang lập trình:
    • Ladder, Instruction List, và FBD nó sẽ tốt cho kiểu logic bit.
    • SFC là tuyệt vời nhất cho các kiểu lập trình hoạt động tuần tự.
    • SCL là hoàn hảo cho các hàm toán học phức tạp, hoạt động mảng và hoạt động chuỗi.
    • Instruction List rất phù hợp cho các lệnh của bộ xử lý cấp thấp và truy cập bộ nhớ/thanh ghi của PLC.
  • Tùy thuộc cách xác định logic
    • Nếu sơ đồ giải thuật của bạn được viết dưới dạng biểu đồ khối tuần tự thì SFC là một lựa chọn tốt nhất.
    • Nếu logic của bạn được định nghĩa như bảng logic (kiểu bìa K) trong đó đầu ra và đầu vào được liên kết với các interlock, thì Ladder là một lựa chọn tốt.

Nếu bạn vẫn không chắc chắn nên chọn ngôn ngữ nào, thì đây là một bí mật: BẠN KHÔNG NÊN CHỌN! Đúng vậy, điều tuyệt vời về tiêu chuẩn IEC61131-3 là bạn có thể trộn và kết hợp các ngôn ngữ lập trình khác nhau thành một project hoàn chỉnh của mình. Lúc đó bjan sẽ linh động lập trình phù hợp với yêu cầu mong muốn.

Nếu bạn cấu trúc code đúng cách và tận dụng sức mạnh và tính linh hoạt của các khối chức năng function block (bạn có sử dụng các khối chức năng đó chứ?), Bạn có thể module hóa code của mình thành các khối có thể quản lý được. Mỗi khối có thể được viết bằng một ngôn ngữ khác nhau. Bạn có thể chọn cái nào phù hợp nhất cho từng phần của dự án. Ví dụ: Logic I/O cơ bản có thể được viết bằng Ladder, điều khiển chính và các hoạt động tuần tự trong SFC và xử lý dữ liệu trong ST. Bằng cách này bạn có thể tối đa hóa lợi ích của từng ngôn ngữ mà không phải chọn duy nhất một ngôn ngữ ban đầu.

(itudong.com)

0 BÌNH LUẬN

BÌNH LUẬN

Please enter your comment!
Please enter your name here