Thời gian chu kỳ tác vụ là một trong những giá trị thực tế mà kỹ sư có thể sử dụng để hiểu cách ứng dụng của controller hoạt động trong thời gian chạy. Nếu một tác vụ mất nhiều thời gian hơn dự kiến, nó có thể ảnh hưởng đến thời gian xử lý, tính đồng bộ, quá trình khắc phục sự cố và độ ổn định của hệ thống.

CODESYS là môi trường phát triển để lập trình các ứng dụng controller theo tiêu chuẩn IEC 61131-3. Hệ thống này được sử dụng trong các hệ thống tự động hóa và điều khiển, nơi các tác vụ cần chạy một cách đáng tin cậy dưới các điều kiện thời gian đã định.

Trong các dự án CODESYS, việc giám sát thời gian chu kỳ thực tế của tác vụ có thể giúp kỹ sư tối ưu hóa hiệu suất, xác định điểm nghẽn và phát hiện hành vi thời gian có thể ảnh hưởng đến trình tự vận hành của máy. Điều này đặc biệt quan trọng khi các tác vụ điều khiển, tác vụ truyền thông hoặc các chức năng liên quan đến chuyển động cần phải nằm trong một khoảng thời gian cụ thể.

Hướng dẫn này sẽ trình bày hai cách đo thời gian chu kỳ thực tế của tác vụ trong CODESYS:

  • Sử dụng hàm TIME() tích hợp sẵn
  • Sử dụng thư viện CmpIecTask

Cả hai phương pháp đều hữu ích. Lựa chọn phù hợp sẽ phụ thuộc vào độ chính xác mà bạn cần và mức độ chuyên sâu khi phân tích hành vi của tác vụ mà bạn muốn.

Thời gian chu kỳ nhiệm vụ mô tả thời gian cần thiết để hoàn thành một tác vụ hoặc hoạt động cụ thể bên trong hệ thống điều khiển. Trong ứng dụng controller, giá trị này giúp bạn hiểu liệu mã có đang chạy trong khoảng thời gian dự kiến hay không.

Việc giám sát thời gian chu kỳ tác vụ có thể hỗ trợ một số công việc kỹ thuật:

  • Kiểm tra xem tác vụ có nằm trong thời gian chu kỳ đã cấu hình hay không
  • Xác định các mã làm tăng thời gian chạy
  • Phát hiện các biến động thời gian không mong muốn
  • Hỗ trợ khắc phục sự cố trong quá trình vận hành
  • Cải thiện tính đồng bộ hóa quy trình
  • Giúp ổn định hành vi của controller

Thời gian chu kỳ tác vụ ổn định không giải quyết được mọi vấn đề điều khiển, nhưng nó cung cấp cho kỹ sư một điểm khởi đầu hữu ích. Nếu thời gian chu kỳ thực tế dài hơn dự kiến hoặc biến động mạnh, ứng dụng có thể cần được phân tích kỹ hơn.

Trong CODESYS, một tác vụ quy định thời điểm và cách thức thực thi một chương trình hoặc hàm. Thời gian chu kỳ tác vụ chính là khoảng thời gian cần thiết để hoàn thành việc thực thi đó.

Ví dụ, một tác vụ tuần hoàn có thể được cấu hình để chạy sau mỗi vài mili giây. Nếu mã bên trong tác vụ mất quá nhiều thời gian để chạy, controller có thể không hoàn thành tác vụ đó trong khoảng thời gian dự kiến. Điều này có thể ảnh hưởng đến hiệu suất, tính đồng bộ hóa quy trình hoặc hành vi chuyển động.

Việc đo thời gian chu kỳ tác vụ có thể gặp khó khăn vì giá trị thực tế có thể bị ảnh hưởng bởi nhiều yếu tố:

  • Tải của hệ thống
  • Độ trễ mạng
  • Hiệu suất phần cứng
  • Cấu hình tác vụ
  • Kiến trúc phần mềm
  • Hành vi truyền thông
  • Số lượng và cấu trúc mã bên trong tác vụ

Đó là lý do tại sao phương pháp đo lường lại đóng vai trò quan trọng. Một phương pháp đo thời gian đơn giản có thể đủ cho các bước kiểm tra cơ bản. Tuy nhiên, có thể sẽ cần đến một phương pháp chính xác hơn khi muốn đo thời gian ở mức độ micro giây hoặc khi cần thông tin đặc thù của từng tác vụ.

Một cách đơn giản để đo thời gian đã trôi qua trong CODESYS là sử dụng hàm TIME() tích hợp sẵn.

Nguyên lý cơ bản rất đơn giản:
1. Ghi lại thời gian bắt đầu trước khi đoạn mã được chạy
2. Chạy đoạn mã mà bạn muốn đo
3. Ghi lại thời gian kết thúc sau khi đoạn mã đã chạy xong
4. Lấy thời gian kết thúc trừ đi thời gian bắt đầu
5. Sử dụng kết quả làm thời gian trôi qua đo được

Trong ví dụ, hai vòng lặp FOR được sử dụng để mô phỏng một tác vụ gây tiêu tốn thời gian. Hàm TIME() ghi lại thời gian trước và sau đoạn vòng lặp, và hiệu số giữa các giá trị đó sẽ cho ra thời gian chạy ước tính của tác vụ.

Phương pháp này sẽ hữu ích khi bạn muốn biết nhanh thời gian chạy một đoạn mã.

Ví dụ cho thấy thời gian chu kỳ tác vụ đo được thường dao động từ 6 đến 8 mili giây. Có thể thêm biểu đồ theo dõi để giám sát biến đo được theo thời gian. Trong ví dụ, thời gian chu kỳ đôi khi nhảy vọt lên 10 mili giây.

Sự biến động đó rất quan trọng. Nếu một tác vụ điều khiển chuyển động mềm được cấu hình với thời gian chu kỳ từ 4 mili giây trở xuống, việc vượt quá thời gian chu kỳ đã cấu hình này có thể gây ra lỗi ngoại lệ. Điều này làm cho việc xác định thời gian tác vụ trở nên đặc biệt quan trọng đối với các ứng dụng có yêu cầu khắt khe về chuyển động hoặc đồng bộ hóa.

Hàm TIME() hữu ích vì nó đơn giản. Nó yêu cầu ít mã, dễ hiểu và có thể nhanh chóng thêm vào dự án có sẵn.

Đây là một lựa chọn tốt khi:

  • Bạn cần kiểm tra thời gian một cách nhanh chóng
  • Độ phân giải ở cấp độ mili-giây đã đủ đáp ứng yêu cầu
  • Bạn muốn đo một đoạn mã cụ thể
  • Ứng dụng không đòi hỏi dữ liệu thời gian có độ chính xác cao

Tuy nhiên, hàm TIME() cũng có những hạn chế. Nó cung cấp các giá trị với độ phân giải ở cấp độ mili giây. Mức độ đó có thể không đủ chính xác cho các ứng dụng cần phân tích ở mức micro giây.

Phương pháp này cũng đòi hỏi phải theo dõi thời gian thủ công. Bạn cần xác định điểm bắt đầu đo, điểm kết thúc và cách tính thời gian đã trôi qua. Cách này có thể chấp nhận được đối với các bước kiểm tra đơn giản, nhưng sẽ kém thuận tiện hơn khi bạn cần thông tin thời gian chạy đặc thù của tác vụ trên một chương trình quy mô lớn hơn.

Để đo thời gian chu kỳ tác vụ chính xác hơn, thư viện CmpIecTask thường là lựa chọn tốt hơn.

Thư viện CmpIecTask được tích hợp sẵn trong CODESYS. Thư viện này cung cấp các hàm để truy cập thông tin từ Trình quản lý tác vụ IEC.

Sau khi thêm thư viện vào dự án CODESYS, việc khởi tạo chỉ yêu cầu một lượng mã nhỏ. Sau khi khởi tạo, chương trình có thể truy cập vào một cấu trúc chứa thông tin chi tiết về tác vụ, bao gồm các giá trị như thời gian chu kỳ thực tế của tác vụ và thời gian chu kỳ trung bình.

Phương pháp này mang tính chuyên biệt cho tác vụ hơn so với việc đo thủ công thời gian trước và sau một đoạn mã. Thay vì tự tạo logic đo thời gian, bạn sẽ sử dụng thông tin tác vụ đã được cung cấp qua thư viện.

Trong ví dụ ban đầu, cùng một tải làm việc mô phỏng được sử dụng để so sánh các phương pháp đo. Điểm khác biệt là thư viện CmpIecTask xử lý thông tin thời chu kỳ tác vụ một cách trực tiếp hơn.

Thư viện CmpIecTask có nhiều ưu điểm khi bạn cần đo thời gian tác vụ chính xác hơn.

Đầu tiên, nó có thể được tích hợp linh hoạt vào các phần khác nhau của chương trình. Từ đó giúp dễ dàng truy cập thông tin tác vụ mà không cần đặt điểm đo thời gian bắt đầu và kết thúc thủ công xung quanh mỗi đoạn mã.

Thứ hai, thư viện quản lý việc ghi nhận và tính toán thông tin thời gian chu kỳ của tác vụ. Việc này giúp giảm bớt công sức thủ công và giảm rủi ro sai sót trong logic đo lường.

Thứ ba, thư viện cung cấp giá trị với độ phân giải ở cấp độ micro giây. Mức độ này chính xác hơn nhiều so với các giá trị thu được bằng hàm TIME() và đóng vai trò quan trọng đối với các ứng dụng có yêu cầu khắt khe về thời gian.

Nhược điểm chính là bắt buộc phải thêm thư viện này vào dự án CODESYS. Tuy nhiên, đối với nhiều ứng dụng, đây chỉ là một sự đánh đổi nhỏ so với độ chính xác cao và thông tin đặc thù về từng tác vụ mà nó mang lại.

Cả hai phương pháp đều có thể giúp bạn nắm bắt được thời gian của tác vụ, nhưng mỗi phương pháp sẽ phù hợp với từng tình huống cụ thể.

Hãy sử dụng hàm TIME() khi bạn cần kiểm tra nhanh, đơn giản và chỉ đòi hỏi độ phân giải ở cấp mili giây. Phương pháp này dễ triển khai và hữu ích cho việc so sánh thời gian cơ bản.

Hãy sử dụng thư viện CmpIecTask khi bạn cần thông tin tác vụ chính xác hơn, muốn tránh việc phải viết logic đo thời gian thủ công hoặc cần độ phân giải ở cấp micro giây để phân tích hiệu suất.

Đối với các tác vụ điều khiển chuyển động, tác vụ đồng bộ hóa hoặc ứng dụng controller có yêu cầu nghiêm ngặt về thời gian, thư viện CmpIecTask thường là lựa chọn tối ưu hơn.

Việc đo thời gian thực hiện tác vụ trong CODESYS đặc biệt quan trọng khi cần đánh giá hiệu suất controller, hành vi chuyển động hoặc tính đồng bộ của máy trong quá trình vận hành hoặc khắc phục sự cố.

Trong môi trường phần mềm Festo, CODESYS có thể đóng vai trò là một phần của quy trình thiết kế và điều khiển toàn diện hơn. Festo AX Controls hỗ trợ điều khiển thời gian thực xác định trong lập trình tiêu chuẩn theo IEC 61131-3, bao gồm cả CODESYS, đồng thời hỗ trợ các ngôn ngữ bậc cao như C/C++, C# và Python.

Festo Automation Suite hỗ trợ cho các khâu vận hành, lập trình và chẩn đoán lỗi. Công cụ này có thể chuyển đổi các thiết bị AX Controls như CEPE từ sơ đồ cấu trúc sang môi trường lập trình CODESYS mà không cần thêm bước cấu hình nào, giúp người dùng tiếp tục triển khai ngay trình tự vận hành của máy.

Hãy sử dụng hướng dẫn này như một phương pháp thực tế trên CODESYS để kiểm tra thời gian thực hiện tác vụ. Sau đó, bạn có thể tiếp tục sử dụng phần mềm, thông tin cấp phép hoặc tài liệu học tập của Festo phù hợp với bước kỹ thuật tiếp theo của bạn.

  • Thời gian chu kỳ nhiệm vụ cho biết thời gian cần thiết để hoàn thành một tác vụ hoặc hoạt động cụ thể bên trong hệ thống điều khiển
  • Việc giám sát thời gian chu kỳ tác vụ giúp các kỹ sư tối ưu hóa hiệu suất, phát hiện điểm nghẽn và cải thiện độ ổn định của hệ thống
  • Hàm TIME() dễ sử dụng và triển khai nhanh chóng, nhưng chỉ cung cấp độ phân giải ở mức mili giây
  • Thư viện CmpIecTask cung cấp thông tin đặc thù của tác vụ và độ phân giải ở mức micro giây
  • Hãy sử dụng hàm TIME() cho các bước kiểm tra đơn giản và dùng thư viện CmpIecTask khi cần phân tích thời gian chu kỳ chính xác hơn
  • Các tác vụ điều khiển chuyển động khắt khe hoặc các tác vụ đồng bộ hóa thường đòi hỏi phải xem xét kỹ lưỡng hơn thời gian chạy thực tế của tác vụ
  • Phần mềm và tài liệu hỗ trợ của Festo có thể giúp người dùng chuyển từ bước khắc phục sự cố trên CODESYS sang vận hành thử, cấp phép và triển khai điều khiển biên