Học Automation cùng MINATA #61: Thiết kế trạng thái máy: Stop, Run, Fault và điều kiện chuyển trạng thái
Máy không chỉ "chạy" hoặc "dừng" theo một bit. Trước khi viết logic, hãy xây một mô hình trạng thái để người vận hành, PLC và HMI cùng hiểu máy đang làm gì. Mô hình rõ ngay từ đầu giúp giảm hàng loạt rung logic chắp vá về sau.
Vì sao một bit Run là không đủ
Một máy thực tế đi qua nhiều trạng thái: nghỉ, sẵn sàng, đang chạy, dừng có kiểm soát, dừng khẩn và lỗi. Gộp tất cả vào "chạy/dừng" làm mất thông tin người vận hành cần và làm logic khó kiểm tra. Mỗi trạng thái có ý nghĩa riêng về việc máy được phép làm gì và hiển thị gì.
Bảng trạng thái là bản thiết kế
Vẽ bảng trạng thái trước khi lập trình. Với mỗi trạng thái, xác định: lệnh nào hợp lệ, điều kiện cho phép, hành động khi vào trạng thái và điều kiện thoát.
| Trạng thái | Lệnh hợp lệ | Điều kiện cho phép | Thoát khi |
|---|
| Idle | — | Nguồn/an toàn OK | Có lệnh chuẩn bị |
| Ready | Start | An toàn đóng, không lỗi | Nhấn Start hợp lệ |
| Run | Stop | Điều kiện chạy duy trì | Stop, hết chu trình, lỗi |
| Stopping | — | — | Đã dừng an toàn |
| Fault | Reset | Đã xử lý nguyên nhân | Reset + xác nhận |
Chuyển trạng thái phải có lý do
Mỗi chuyển tiếp cần điều kiện vào, điều kiện ra và hành động an toàn. Lệnh Start khi cửa an toàn chưa đóng không được tạo Run; thay vào đó nó để lại một lý do chặn để HMI giải thích cho người vận hành ("chưa chạy được vì cửa mở"), thay vì im lặng không phản ứng.
Tình huống kỹ thuật tham khảo
Với một trạm đóng gói, PLC giữ một biến trạng thái duy nhất và một danh sách permissive. Khi người vận hành nhấn Start lúc cửa an toàn còn mở, máy ở lại Ready và HMI hiển thị lý do chặn; chỉ khi cửa đóng và không lỗi, Start mới đưa máy sang Run. Trạng thái Fault yêu cầu reset có chủ đích rồi mới về Ready.
Danh sách trạng thái, điều kiện và hành động cuối cùng phải theo đánh giá rủi ro và yêu cầu máy thực tế.
Sai lầm thường gặp
- Dùng một bit Run cho mọi việc, mất thông tin trạng thái.
- Chuyển trạng thái không có điều kiện vào/ra rõ ràng.
- Start bị chặn nhưng không để lại lý do cho HMI.
- Trộn dừng vận hành với dừng khẩn trong cùng một nhánh.
- Cho Fault tự về Ready mà không cần reset có chủ đích.
Checklist thiết kế trạng thái máy
- [ ] Có bảng trạng thái với lệnh hợp lệ và điều kiện cho phép.
- [ ] Mỗi chuyển tiếp có điều kiện vào, ra và hành động an toàn.
- [ ] Lệnh bị chặn để lại lý do hiển thị được trên HMI.
- [ ] Dừng vận hành và dừng khẩn tách bạch.
- [ ] Fault cần reset có chủ đích trước khi chạy lại.
Một mô hình trạng thái rõ là nền cho logic dễ kiểm tra và HMI dễ giải thích. Bài #62 chuẩn hóa mô hình này theo PackML để tích hợp dây chuyền dễ hơn.
Đọc thêm kiến thức tự động hóa tại MINATA: https://minatavn.com/vi/blog/tu-dong-hoa
Bài liền trước — #60: Lộ trình dự án tự động hóa: https://minatavn.com/vi/blog/hoc-automation-cung-minata-60-lo-trinh-du-an-tu-dong-hoa
Bài tiếp theo — #62: PackML: chuẩn hóa trạng thái máy: https://minatavn.com/vi/blog/hoc-automation-cung-minata-62-packml-trang-thai-may
Xem tất cả bài viết kỹ thuật MINATA