Trong lĩnh vực tự động hóa công nghiệp, logic bậc thang vẫn là một trong những ngôn ngữ lập trình được sử dụng phổ biến nhất; tuy nhiên, đối với các đối tượng điều khiển phức tạp hơn, lập trình hướng đối tượng-chắc chắn là một cách tiếp cận hiệu quả cao. Trước tiên hãy thảo luận về lập trình hướng đối tượng-:
Lập trình hướng đối tượng-là một mô hình lập trình nâng cao trong các ngôn ngữ máy tính cấp cao-. Triết lý thiết kế này cũng có thể được áp dụng cho các chương trình PLC trong hệ thống điều khiển công nghiệp. Mặc dù chúng tôi không thể triển khai nhiều tính năng tuyệt vời của lập trình hướng đối tượng-chẳng hạn như "kế thừa"-và ngôn ngữ PLC thậm chí có thể không có các đặc điểm của ngôn ngữ lập trình hướng đối tượng-, các khái niệm cơ bản của lập trình hướng đối tượng-là các lớp và thể hiện của lớp (tức là các đối tượng). Chúng ta chỉ cần sử dụng những khái niệm này. Trong lập trình máy tính, chúng ta cần trừu tượng hóa và khái quát hóa các thực thể nhất định để xác định các lớp. Tuy nhiên, trong các hệ thống điều khiển công nghiệp, các đối tượng điều khiển như động cơ và van là các loại điều khiển được xác định rõ ràng; chúng ta có thể định nghĩa các lớp cho chúng một cách trực tiếp mà không cần phải trừu tượng hóa. Các phần sau sẽ sử dụng ngôn ngữ lập trình Step7 của Siemens và ngôn ngữ lập trình Unity của Schneider để giải thích về lập trình hướng đối tượng cho PLC.
I. Phương pháp thực hiện
Lập trình hướng đối tượng-trong Bước 7 được triển khai bằng cách sử dụng các khối chức năng (FB). Khi nhắc đến chủ đề này người ta thường nghĩ ngay đến phương pháp lập trình module do Siemens đề xuất. Thật vậy, đây là một khái niệm giống nhau, nhưng các thuật ngữ như "mô-đun hóa", "khối dữ liệu nền" và "nhiều nền" do Siemens đưa ra không phải lúc nào cũng cho phép người dùng hiểu rõ ràng và áp dụng triết lý thiết kế tuyệt vời này.
Tuy nhiên, nếu tiếp cận nó từ góc độ lập trình hướng đối tượng, bạn có thể hiểu rõ hơn nhiều về mẫu thiết kế này. Một "khối FB" được coi là một "lớp"; nó có thể được xem như một nhóm mã cho các đối tượng điều khiển tương tự. Ví dụ: đối với ổ tần số biến đổi MM440-, bạn có thể viết khối FB có tên "MtrMM440". Trong lập trình hướng đối tượng{6}}, đây được gọi là "lớp". Khi cần lập trình điều khiển cho một động cơ cụ thể, bạn có thể gán khối DB nền cho nó-trong lập trình hướng đối tượng-, đây được gọi là triển khai lớp (tức là tạo một phiên bản của lớp: một đối tượng). Khi cần điều khiển nhiều động cơ, bạn có thể gán các DB nền khác nhau cho khối FB này, tương đương với việc tạo nhiều phiên bản của lớp.
Step7 có một loại khối chương trình khác: khối FC. Lập trình chủ yếu sử dụng khối FC được gọi là lập trình có cấu trúc trong hệ thống Siemens, có thể tương tự như lập trình thủ tục trong lập trình máy tính-tức là lập trình hoàn toàn dựa trên chức năng-.
Lập trình bằng phần mềm Unity của Schneider giúp hiểu rõ hơn về lập trình hướng đối tượng. Các định nghĩa DFB của nó bao gồm các tham số đầu vào/đầu ra, các biến riêng tư/công khai và triển khai mã-chính xác là các thành phần cơ bản của một "lớp" trong lập trình hướng đối tượng máy tính-. Việc tạo một thể hiện của một lớp (một đối tượng) cũng đơn giản như việc tạo một biến "Boolean" thông thường; bạn chỉ cần xác định một biến của "lớp" này trong "Khối chức năng".
Cả Step7 và Unity đều hỗ trợ cả phương pháp lập trình hướng đối tượng và thủ tục-; sự khác biệt giữa hai cách tiếp cận này tương tự như sự khác biệt giữa lập trình bằng C và C++ trong ngôn ngữ máy tính cấp cao-.
Trong phần giải thích sau đây, các FB trong Bước 7 và DFB trong Unity sẽ được gọi là "các lớp", trong khi các FB kết hợp với cơ sở dữ liệu nền trong Bước 7 và các phiên bản của DFB trong Unity sẽ được gọi là "đối tượng".
II. Đối tượng-Kiến trúc lập trình hướng đối tượng
Cuộc thảo luận ở trên bao gồm các chi tiết triển khai, nhưng triết lý lập trình được xây dựng dựa trên kiến trúc chương trình. Việc chỉ sử dụng các phương thức hướng đối tượng trong một phần cụ thể của mã không có nghĩa là toàn bộ chương trình đều hướng đối tượng. Loại lập trình này yêu cầu một cách tiếp cận dựa trên các khía cạnh sau:
1. Thiết kế mạch có cấu trúc.
Phần này tập trung chủ yếu vào dây chuyền sản xuất tự động; đối với các máy công cụ độc lập, có thể sử dụng cấu trúc đơn giản hóa:
<1>Lớp dây chuyền sản xuất tự động: Đây là cấp độ cao nhất, có PLC chính điều khiển các khu vực khác nhau bên dưới nó.
<2>Lớp dự án: Lớp này có hệ thống phân phối điện độc lập nhưng không có PLC; nó chỉ bao gồm các mô-đun phân tán được điều khiển bởi dây chuyền sản xuất tự động. Đúng như tên gọi, nó có mức độ độc lập cao và có thể được thiết kế và sản xuất như một dự án riêng biệt. Khi dây chuyền sản xuất tự động tương đối nhỏ, lớp này có thể bị bỏ qua.
<3>Cấp độ nhóm chức năng: Dựa trên các yêu cầu của quy trình, các phân đoạn thiết bị thực hiện chức năng quy trình cụ thể được nhóm thành một nhóm chức năng. Nhóm này thuộc Trình độ Kỹ thuật; khi bỏ qua Cấp độ Kỹ thuật thì nó thuộc Cấp độ Dây chuyền Sản xuất Tự động. Lập trình hướng đối tượng-không nhất thiết yêu cầu sử dụng cấu trúc trên, nhưng một cấu trúc điện-được thiết kế tốt sẽ có lợi hơn cho việc lập trình hướng đối tượng-.
2. Tất cả logic đối tượng điều khiển được triển khai trong "các lớp"
Để đạt được điều này cần phải phân tích các thông tin liên quan đến đối tượng điều khiển. Ví dụ, đối với một động cơ, các thông tin liên quan sau đây phải được xem xét:
Thông tin đầu vào:
<1>,Thông tin bảo vệ mạch, chẳng hạn như bộ ngắt mạch và rơle nhiệt của động cơ.
<2>,Thông tin bảo vệ chức năng, chẳng hạn như công tắc giới hạn cho động cơ chuyển động, công tắc áp suất cho quạt và công tắc mức dầu cho bơm dầu.
<3>Điều kiện khởi động và dừng: Mặc dù tính năng bảo vệ mạch và bảo vệ chức năng được đề cập ở trên có thể khiến động cơ ngừng chạy và việc đặt lại có thể kích hoạt khởi động lại, nhưng các điều kiện được đề cập ở đây liên quan đến điều kiện khởi động và dừng trong quá trình hoạt động bình thường-chẳng hạn như các bước trong quy trình điều khiển tuần tự.
<4>Chế độ điều khiển: chẳng hạn như bằng tay và tự động.
<5>Reset lỗi: Khởi động lại hệ thống thông qua các tín hiệu reset.
Thông tin đầu ra:
<1>,Đầu ra điều khiển, chẳng hạn như công tắc tơ chính điều khiển động cơ.
<2>, Đầu ra thông tin trạng thái
<3>, Đầu ra lỗi
Thông tin lưu trữ trạng thái:
Các biến trung gian được sử dụng để triển khai mã, cũng như các biến trạng thái mà HMI có thể đọc được. Tích hợp tất cả thông tin trên vào một lớp duy nhất và chuẩn hóa các tham số của lớp nhiều nhất có thể. Tuy nhiên, vẫn có một số điểm khác biệt so với các ngôn ngữ lập trình cấp cao-. Đối với Bước 7, tiêu chuẩn cần tuân theo là: cấu trúc chương trình được triển khai bằng FC và điều khiển đối tượng được triển khai bằng FB, như được minh họa bằng khung cấu trúc sau (có cấu trúc điện dựa trên phần giới thiệu ở trên): Đây chỉ đơn thuần là kiến trúc chương trình PLC thô; một kiến trúc tốt cần phải toàn diện và khoa học hơn.
3. Lập kế hoạch cấu trúc dữ liệu một cách cẩn thận
Việc xác định cấu trúc dữ liệu là rất quan trọng và bạn nên cố gắng thống nhất các cấu trúc này nhiều nhất có thể mà không phải lo lắng về không gian lưu trữ; bộ nhớ PLC hiện đại đủ để chứa lượng lớn dữ liệu. Điều đáng lưu ý là ở Bước 7, bạn nên tránh xác định các loại-do người dùng xác định (UDT) bên ngoài các lớp bất cứ khi nào có thể; thay vào đó, hãy xác định chúng trong các lớp. Mặc dù điều này có thể dẫn đến các định nghĩa trùng lặp của cùng một cấu trúc giữa các lớp khác nhau, nhưng nó tăng cường tính độc lập của các lớp.
Trong các phần sau, chúng ta sẽ so sánh hai phương pháp lập trình này:
Ưu điểm của lập trình hướng đối tượng-So với logic bậc thang, lập trình hướng đối tượng-có những ưu điểm sau:
• Tính di động của mã và dễ dàng sử dụng lại;
• Dễ sử dụng các hàm toán học, vòng lặp và các cấu trúc khác;
• Lập trình hướng đối tượng-được dạy trong hầu hết mọi khóa học lập trình máy tính;
• Mã có thể chạy trên nhiều nền tảng phần cứng.
Để thành thạo lập trình hướng đối tượng, trước tiên bạn phải hiểu khái niệm về đối tượng và cách sử dụng chúng. Khi một đối tượng hoặc lớp được viết, nó có thể dễ dàng được sử dụng lại thông qua nhiều lệnh gọi. Ví dụ: tạo một đối tượng để điều khiển động cơ, xử lý tất cả các đầu vào, đầu ra và lỗi. Khi cần, nhiều động cơ có thể được điều khiển bằng cách khởi tạo đối tượng điều khiển đơn này nhiều lần. Điều này được gọi là-khởi tạo theo yêu cầu. Khi cần điều khiển nhiều động cơ, đối tượng này có thể được sử dụng nhiều lần. Nó được gọi khi cần thiết và các phiên bản được tạo khi chúng được sử dụng.
Mỗi phiên bản của mỗi động cơ đều có những đặc điểm riêng, chẳng hạn như dừng động cơ, chạy động cơ, tốc độ động cơ và quá tải động cơ. Hầu hết công việc lập trình được hoàn thành khi đối tượng được tạo lần đầu tiên. Đây là một cách suy nghĩ khác với logic bậc thang và nó mạnh mẽ hơn vì một khi một đối tượng được xây dựng, nó rất dễ sử dụng và tái sử dụng. Lập trình hướng đối tượng-giúp thực hiện các hàm toán học phức tạp, tính toán vòng lặp, mảng và chương trình con lồng nhau dễ dàng hơn. Hầu như mọi khóa học lập trình máy tính-dù ở trường trung học, đại học hay hướng dẫn trực tuyến-đều dạy khái niệm này. Mã được tạo có thể di động và có thể chạy trên nhiều nền tảng phần cứng khác nhau.
"Logic bậc thang tuân theo định dạng của sơ đồ bậc thang điện được sử dụng trong hệ thống điều khiển rơle và hầu hết mọi người đều có thể nhanh chóng học và thành thạo nó."
Tuy nhiên, so với logic bậc thang, lập trình hướng đối tượng{0}}có những nhược điểm sau:
• Chi phí cao hơn;
• Đường cong học tập dốc hơn;
• Việc khắc phục sự cố không hề dễ dàng đối với nhân viên bảo trì;
• Việc biên dịch thường được yêu cầu trước khi tải mã nguồn lên bộ xử lý.
So với logic bậc thang, lập trình hướng đối tượng-thường yêu cầu nhiều bộ nhớ hơn và khả năng xử lý lớn hơn, dẫn đến chi phí cao hơn. Việc học một ngôn ngữ lập trình hướng đối tượng có thể mất nhiều thời gian hơn. Có thể cần phải hướng dẫn trên lớp và việc nắm vững các khái niệm cốt lõi đòi hỏi phải có thời gian, thực hành, kiểm tra và ứng dụng đáng kể. Lập trình viên phải thường xuyên nghiên cứu lập trình hướng đối tượng-để sử dụng trình theo dõi nhằm theo dõi mã hoặc trình gỡ lỗi để gỡ lỗi logic. Với loại lập trình cấp cao-này, có thể khó triển khai khả năng giám sát trực tuyến-theo thời gian thực.
Trước khi mã nguồn có thể được tải xuống bộ điều khiển, nó phải được biên dịch. Thông thường, mã nguồn không được lưu trữ trong bộ nhớ của bộ xử lý. Điều này có nghĩa là phải cẩn thận khi sao lưu mã nguồn vì mã được biên dịch thường không thể chỉnh sửa được. Với lập trình hướng đối tượng-, các tệp thư viện phải được liên kết với các tài nguyên khác được sử dụng trong quá trình biên dịch. Nếu không hiểu rõ về liên kết và tài nguyên thì sẽ khó có thể chạy được chương trình.
Ưu điểm của logic bậc thang:
Logic bậc thang là một phương pháp mã hóa đơn giản và tự{0}}ghi lại tài liệu-, thậm chí một số người còn đặt câu hỏi liệu nó có đủ điều kiện để trở thành ngôn ngữ lập trình hay không. Nó tuân theo định dạng sơ đồ thang điện được sử dụng trong hệ thống điều khiển rơle và hầu hết mọi người có thể nhanh chóng học và thành thạo nó. Nó là ngôn ngữ lập trình duy nhất được sử dụng rộng rãi trong lĩnh vực tự động hóa máy trong nhiều thập kỷ và nó sẽ vẫn là một trong những ngôn ngữ lập trình chính trong ngành tự động hóa trong tương lai gần.
Theo thời gian, khi mọi người từ nhiều nền tảng và lĩnh vực khác nhau gia nhập ngành, nhiều ngôn ngữ lập trình khác nhau đã được đưa vào bộ công cụ tự động hóa công nghiệp. Chúng bao gồm lập trình khối chức năng, văn bản có cấu trúc, lập trình trạng thái và biểu đồ chức năng tuần tự. Bốn ngôn ngữ lập trình này, cùng với logic bậc thang, tạo thành các ngôn ngữ lập trình tiêu chuẩn được xác định theo tiêu chuẩn IEC 61131-3 của Ủy ban Kỹ thuật Điện Quốc tế (IEC).
Logic đằng sau IEC 61131 là nếu mọi nhà cung cấp đều tuân thủ tiêu chuẩn này thì-ít nhất ở một mức độ nào đó-một người sẽ chỉ cần học năm ngôn ngữ lập trình này để dễ dàng chuyển đổi giữa các nền tảng do các nhà cung cấp khác nhau cung cấp. Tuy nhiên, đây không phải là trường hợp.
Logic bậc thang cơ bản (chẳng hạn như việc sử dụng các tiếp điểm rơle và cuộn dây) hoạt động theo cách tương tự; tuy nhiên, khi lập trình, người ta phải tìm hiểu cú pháp và trải nghiệm người dùng của từng nhà cung cấp, cũng như các chi tiết cụ thể về cách sử dụng nền tảng lập trình. Mặc dù thiếu tiêu chuẩn hóa, logic bậc thang mang lại những ưu điểm sau so với lập trình hướng đối tượng:{1}}
• Nó rất{0}}phù hợp cho việc điều khiển máy và quy trình;
• Điều này dễ hiểu hơn vì nó vốn có tính chất tự ghi lại;
• Nó tạo điều kiện khắc phục sự cố của hệ thống được kiểm soát;
• Dễ dàng gỡ lỗi;
• Mã nguồn thường có thể được lưu trữ trong bộ xử lý.
Logic bậc thang rất phù hợp-cho việc điều khiển máy và quy trình, đặc biệt đối với các hệ thống tự động hóa có số lượng lớn đầu vào và đầu ra (I/O) riêng biệt. Qua nhiều năm, logic bậc thang cũng liên tục được cải tiến để xử lý I/O tương tự, khiến nó phù hợp hơn với nhiều ứng dụng điều khiển quy trình.
So với các ứng dụng điều khiển máy, các ứng dụng xử lý thường có tỷ lệ I/O analog cao hơn.
Vì logic bậc thang dễ sử dụng hơn lập trình hướng đối tượng nên nhiều kỹ thuật viên và kỹ sư lành nghề có thể nhanh chóng học nó. Logic có tính hệ thống và tổ chức cao, đồng thời tính chất-tự ghi lại tài liệu của nó giúp bạn dễ hiểu và nắm vững hơn. Mỗi dòng mã phải đánh giá là đúng trước khi thiết bị có thể được kích hoạt. Nếu có năm động cơ để điều khiển thì cần ít nhất năm dòng mã, điều này giúp đơn giản hóa đáng kể quy trình.
"Mã nguồn và bộ mô tả logic bậc thang thường được lưu trữ trong bộ điều khiển, loại bỏ nhu cầu truy cập vào mã nguồn-điều này giúp loại bỏ sự thất vọng mà các lập trình viên thường gặp phải khi cố gắng hiểu các chương trình đã biên dịch."
Đối với các kỹ sư điện và nhân viên bảo trì, logic bậc thang rất trực quan. Mặc dù logic bậc thang đòi hỏi cách suy nghĩ khác với lập trình hướng đối tượng,-bạn có thể nắm vững cách này nhanh chóng bằng một số nghiên cứu và mất ít thời gian hơn để hiểu mã do người khác viết. Rất rõ ràng khi nào một phát biểu logic là đúng và khi nào nó sai. Ngay cả những người có kinh nghiệm lập trình hạn chế cũng có thể dễ dàng nắm bắt các khái niệm như bật/tắt, cấp điện cho cuộn dây, các biến so sánh và các hàm toán học thông thường.

Nó đơn giản và dễ sử dụng, đơn giản hóa việc khắc phục sự cố và gỡ lỗi. Khi theo dõi logic, có thể dễ dàng hiểu được các điều kiện hoạt động hiện tại. Không yêu cầu bằng cấp phần mềm hoặc kỹ năng lập trình nâng cao. Với logic bậc thang, nhân viên bảo trì và kỹ thuật có thể dễ dàng theo dõi quy trình và hiểu được điều gì đang xảy ra. Logic bậc thang có thể được coi như một bảng chân lý: nếu logic bên trái là đúng thì logic bên phải sẽ được kích hoạt.
Mã nguồn và bộ mô tả logic bậc thang thường được lưu trữ trong bộ điều khiển. Điều này giúp loại bỏ sự thất vọng mà các lập trình viên thường gặp phải khi cố gắng hiểu mã được biên dịch mà không có quyền truy cập vào mã nguồn-một vấn đề cũng thường gặp trong lập trình hướng đối tượng-.
Tuy nhiên, so với lập trình hướng đối tượng, logic bậc thang cũng có những nhược điểm sau:
• Các lập trình viên máy tính và chuyên gia CNTT chưa quen với logic bậc thang;
• Khó thực hiện các hàm toán học, xử lý văn bản, xử lý dữ liệu;
• Nó phụ thuộc vào thời gian quét;
• Nó đòi hỏi phần cứng chuyên dụng để thực thi, chẳng hạn như bộ điều khiển logic khả trình (PLC).
Logic bậc thang là một ngôn ngữ biểu tượng mà các lập trình viên máy tính và chuyên gia CNTT không quen thuộc vì họ không học nó ở trường. Việc xử lý các hàm toán học, chuỗi văn bản và dữ liệu trong logic bậc thang có thể khó khăn, chủ yếu vì logic bậc thang ban đầu không được thiết kế để xử lý các hàm này.
Logic bậc thang cũng phụ thuộc vào thời gian quét. Các chương trình lớn hơn cần nhiều thời gian hơn để quét và xử lý logic. Khi thực thi logic bậc thang, hệ thống đọc đầu vào, quét logic, cập nhật bảng dữ liệu và đầu ra, thực hiện giao tiếp và sau đó lặp lại chu trình. Các tính năng như ngắt và các kỹ thuật lập trình khác có thể được triển khai để đảm bảo thực hiện logic nhất định nhanh hơn.
Mặc dù PLC-dựa trên phần mềm được định cấu hình bằng logic bậc thang có thể chạy trên PC nhưng phần cứng (chẳng hạn như PLC) thường cần phải tương thích với phần mềm lập trình và tốt nhất bạn nên mua cả hai từ cùng một nhà cung cấp. Điều này đảm bảo khả năng tương thích, nhưng nó không đặc biệt thuận tiện nếu bạn muốn chuyển đổi nhà cung cấp.
Ngoài việc so sánh ưu và nhược điểm của logic bậc thang và lập trình hướng đối tượng,{0}}người dùng cũng nên đánh giá cách sử dụng các ngôn ngữ lập trình này trong môi trường mà chúng sẽ được triển khai. Nếu một nhà máy hoặc cơ sở đã chuẩn hóa logic bậc thang thì việc thay thế nó bằng lập trình hướng đối tượng là không được khuyến khích, ngay cả khi phương pháp sau phù hợp hơn với ứng dụng. Khi việc sử dụng lập trình hướng đối tượng-tiếp tục phát triển, dự kiến nó sẽ cùng tồn tại với logic bậc thang trong nhiều thập kỷ tới. Một chuyên gia tự động hóa có tư duy tiến bộ-sẽ được khuyên-thành thạo cả hai ngôn ngữ.




