Chúng tôi là Zhanjiang Weida Machinery Industrial Co., Ltd., làm thiết bị sơ chế cao su thiên nhiên. Dây chuyền của nhà máy cao su chủ yếu là thu mủ đông tụ, rửa băm, cán nhăn tạo hạt, sấy nóng không khí, cân đóng gói. Khu ướt quanh năm là nước và axit, khâu cán nhăn tạo hạt nhiều động cơ, hơi nước nặng, dây chuyền sấy là khí nóng. Ở những nơi này chúng tôi hay dùng cảm biến RS-485. Không phải chạy theo mốt, mà vì nó chống nhiễu, bền — tín hiệu vi sai trong môi trường nhiễu lớn ổn định hơn, tốc độ baud thấp hơn một chút càng ổn định, dây cũng kéo dài được. Hỏng thì thường chỉ là đổi một cái đồng hồ.
Đổi đồng hồ dễ, đổi số khó
Đồng hồ sẽ hỏng. Nhiệt độ cao, ngưng tụ hơi nước, vào nước, đấu sai dây, sấm sét, đều có thể khiến một cái đồng hồ dùng mấy năm không chạy nữa. Đổi đồng hồ với thợ điện là chuyện thường, ốc vít dễ vặn, rắc rối ở số trạm nô lệ.
Đồng hồ mới xuất xưởng gần như đều là số 1. Nếu trên bus đã có số 1, hai đồng hồ sẽ tranh nhau trả lời, nhẹ thì số liệu nhảy loạn, nặng thì cả đoạn bus không dùng được. Nên phải đổi địa chỉ trước, rồi mới gắn trở lại. Về giao thức không phức tạp, Modbus RTU ghi một thanh ghi là xong. Khó ở chỗ ai đổi, đổi bằng phần mềm gì.
Phần mềm trên thị trường, không phải làm cho thợ điện hiện trường
Phần mềm đổi số trạm nô lệ không ít. Mở ra thấy cổng COM, tốc độ baud, bit kiểm tra, mã chức năng, thanh ghi, cửa sổ hệ thập lục phân xếp thành một hàng. Người viết chương trình máy chủ thấy bình thường, nhưng người thực sự đấu dây trong nhà máy cao su là kỹ sư cơ khí và thợ điện, không phải kỹ sư phần mềm. Họ biết đấu dây A/B, biết đọc ampe kế, biết thay hạt hút ẩm cho hộp đầu dây, nhưng bắt họ chọn cổng COM, cài driver CH340, đối chiếu hướng dẫn nhà sản xuất tìm thanh ghi, không phải họ không làm được, mà là phần mềm này không phải làm cho họ dùng.
Còn có ngôn ngữ. Dây chuyền của chúng tôi lắp trong nhà máy cao su các vùng sản xuất như Ghana, Bờ Biển Ngà, Thái Lan, Lào, Campuchia, Việt Nam, Malaysia, Brazil. Hướng dẫn có thể là tiếng Trung, phần mềm là tiếng Anh, hiện trường nói tiếng Pháp, tiếng Bồ Đào Nha, tiếng Thái, tiếng Việt. Phần mềm đổi địa chỉ trên thị trường đa số chỉ có một ngôn ngữ. Thợ điện nhìn một màn hình tiếng Anh viết tắt, thường đẩy máy tính cho "người biết chơi máy tính", mà người đó chưa chắc có mặt trong nhà máy.
Vậy nên chúng tôi không phải muốn làm thêm một bộ gỡ lỗi Modbus đầy đủ hơn, mà muốn biến việc đổi số trạm nô lệ thành việc thợ điện nghe hiểu được, tự làm xong được.
Nói một câu với máy tính là xong
Chúng tôi làm ra trợ lý sửa trạm nô lệ này (SlaveAddr Agent). Đấu dây A, B của đồng hồ mới vào bộ chuyển đổi 485 sang USB đi kèm hàng theo hướng dẫn, mở một file exe không cần cài đặt, USB cắm vào cổng bất kỳ của máy tính, rồi dùng ngôn ngữ mình quen thuộc nói:
Giúp tôi đổi cái đồng hồ mới này thành số 7. Troca o endereço desse sensor para 12. Mets l'adresse de ce capteur à 5.
Chụp một trang trong hướng dẫn về phần đổi địa chỉ gửi cho nó là được, giống như nói chuyện với AI trên web vậy. Chương trình trước tiên nhận dạng chữ trong ảnh, rồi giao cho mô hình xem: số trạm nô lệ ghi ở thanh ghi nào, tốc độ baud thông dụng là bao nhiêu. Người không cần tự tra bảng, không cần đối chiếu hệ thập lục phân điền số.
Chương trình tự tìm bộ chuyển đổi ở cổng nào, xem driver cài chưa, chưa thì dẫn người cài; rồi theo tốc độ baud thông dụng hỏi cái đồng hồ này, liệt kê các bước cần đổi, đổi xong dùng địa chỉ mới đọc lại một lần, xác nhận đổi thành công. Người cần làm vẫn là đấu dây, cắm USB, gửi hướng dẫn, xem thành công chưa.
Đây không phải chat bọc vỏ, mà là Agent có làm kỹ thuật
Đằng sau một câu nói, là đóng gói cả một chuỗi chuyên môn:
- Tự viết giao thức. Kiểm tra CRC Modbus RTU, đọc thanh ghi giữ, ghi thanh ghi đơn, việc dựng và phân tích khung đều tự nghiên cứu triển khai, không phụ thuộc bất kỳ phần mềm gỡ lỗi nào của nhà sản xuất, mã ngăn xếp giao thức công khai có thể tra cứu.
- Hướng dẫn dựa vào OCR cộng kiểm tra quy tắc. Ảnh hướng dẫn trước tiên nhận dạng chữ, rồi theo quy tắc trích ra các tham số then chốt như "thanh ghi số trạm nô lệ, tốc độ baud, có ghi quảng bá không", và lấy văn bản nhận dạng làm bằng chứng ràng buộc việc ghi sau đó — thanh ghi hướng dẫn không viết, sẽ không đưa vào dùng.
- Cơ chế hồ sơ thiết bị. Đồng hồ các hãng khác nhau, số trạm nô lệ ghi ở thanh ghi nào, có cần ngắt điện khởi động lại không, được duy trì dưới dạng hồ sơ (profile), đồng nghiệp có thể bổ sung theo đồng hồ mình hay dùng, càng bổ sung càng dùng tốt.
- Mô hình chỉ làm điều phối, thao tác ghi luôn nằm trong tay chương trình. Mô hình lớn chịu trách nhiệm nghe hiểu lời người, sắp xếp bước, nhưng thực sự ghi thanh ghi phải đi qua công cụ danh sách trắng tích hợp trong chương trình, còn phải xác nhận trước, đọc lại sau. Mô hình nói sai, không ghi ra được.
- Không mạng vẫn đổi được. Nhà máy không có mạng, chương trình chuyển sang hướng dẫn ngoại tuyến tích hợp, quy tắc đa ngôn ngữ vẫn nghe hiểu "đổi thành số 7", quy trình không đổi, chỉ là không chat được.
Nó không thể làm bậy
Máy tính hiện trường có dữ liệu sản xuất, có khi còn nối mạng nội bộ nhà máy. Chương trình này có thể gọi một số lệnh, nếu không giới hạn phạm vi, còn phiền hơn không dễ dùng.
Nên nó có một bộ ràng buộc cứng:
- Chỉ được làm mấy việc này: liệt kê cổng nối tiếp, tra driver USB, hỏi trạm nô lệ Modbus, đọc ảnh hướng dẫn người dùng gửi tới, đọc/ghi số trạm nô lệ, đối chiếu kết quả. Không được tùy tiện mở chương trình khác, không được sửa file không liên quan, không được truy cập trang web không liên quan, cũng không được dùng để nhận dạng ảnh không liên quan.
- Trước khi thực sự ghi vào đồng hồ, trình các bước cho người xem, chờ người gật đầu. Viết xong phải dùng địa chỉ mới đọc lại một lần, đọc không ra thì dừng, không tiếp tục ghi mò.
- Dòng lệnh không phải muốn chạy là chạy. Chỉ những thao tác định sẵn như tra thiết bị, cài driver mới chạy được, cài driver còn phải qua xác nhận quyền hạn của chính máy tính.
- Nhà máy không có mạng, đi theo hướng dẫn ngoại tuyến đa ngôn ngữ, các bước như nhau, chỉ là không chat được. Mô hình hỏng, đồng hồ vẫn phải đổi được.
Nó chỉ là trợ lý đổi số trạm nô lệ. Không phải trí tuệ nhân tạo tổng quát, cũng không phải công cụ vận hành từ xa.
Vì sao mã nguồn mở
Nhà máy sơ chế cao su thiên nhiên nằm rải rác trong vùng sản xuất. Hiện trường thường trực chủ yếu là công nhân tuyến đầu, đồng hồ hỏng phải đổi ngay, nhưng bước số trạm nô lệ này, thường phải chờ người biết máy tính, hoặc chờ hậu mãi trong nước hỗ trợ từ xa. Dây chuyền dừng lại, chờ chính là khoảnh khắc này.
Loại công cụ này nếu khóa trong một ổ khóa mềm (dongle) của một nhà cung cấp, nhà máy bên cạnh vẫn không qua được. Đồng hồ giữa các nhà máy cao su dùng gần giống nhau, cách đổi số trạm nô lệ cũng gần giống nhau, không cần thiết mỗi nhà lại mua một bộ phần mềm không hiểu. Mã nguồn mở rồi, nhà máy cao su dùng trực tiếp được; đồng nghiệp làm thiết bị dùng trên dây chuyền của mình được; thợ điện hiện trường theo đồng hồ mình hay dùng, bổ sung giải thích thanh ghi vào hồ sơ, người đến sau bớt lật hướng dẫn một lần. Vùng sản xuất càng xa, thứ để lại được như vậy càng hữu ích.
Chúng tôi không phải kiếm tiền từ phần mềm này, cũng không muốn làm thành nền tảng. Weida làm dây chuyền, làm hậu mãi, nhìn thấy cùng một việc lặp lại ở mỗi nhà máy. Biến việc này thành công cụ công khai, đổi đồng hồ bớt dừng một chút, hậu mãi bớt chạy một chuyến, với nhà máy cao su, với đồng nghiệp, với chính chúng tôi đều tốt.
Giấy phép và chi tiết kỹ thuật
Chương trình này do Zhanjiang Weida Machinery Industrial Co., Ltd. phát triển, bản quyền thuộc về công ty chúng tôi, mã nguồn mở theo giấy phép MIT: ghi rõ xuất xứ là có thể dùng, sửa, phân phối lại. Truyền thông dùng giao thức Modbus RTU công khai, khung là tự nghiên cứu triển khai; giao diện, cổng nối tiếp, OCR đều dùng thành phần mã nguồn mở cho phép thương mại hóa và phân phối lại, giấy phép ghi trong NOTICE của kho mã. Không nhúng driver nhà sản xuất chip, không nhúng hướng dẫn của người khác, không trích mã từ phần mềm gỡ lỗi trên thị trường. Khóa mô hình và giao diện chính thức đặt trong cấu hình phát hành, trong mã nguồn không có, ai muốn tự nối mô hình đổi biến môi trường là được.
A nối A, B nối B, cắm USB, mở chương trình này, dùng lời của mình nói cho nó số mới. Phần còn lại để chương trình làm.
Nếu cần mã nguồn, vui lòng liên hệ tư vấn.