Đối với nhiều công ty cỡ nhỏ và rất nhỏ, doanh thu và lợi nhuận thấp, thì việc bỏ tiền ra đầu tư vào các hệ thống số hóa hiện đại nghe chừng không thực sự quá khả thi, do nguồn lực bị giới hạn. Các bạn kỹ sư làm trong các nhà máy đó cũng vậy, bị trói tay trói chân không thể triển khai được cá dự án số hóa, các giải pháp MES MOM hoặc analytic nghe như ở tận đẩu tận đâu chứ không phải cái mình triển khai được. Với thực tế đấy thì việc triển khai các giải pháp số hóa sẽ bị giới hạn ở 1 vài ứng dụng nhỏ đến rất nhỏ, và phải tự thân làm chứ không thuê ngoài được.
Trong bài viết này, Hùng giới thiệu tới tất cả anh chị em về cách làm báo cáo, thu thập dữ liệu tự động gọn gàng dễ dàng rẻ tiền nhất ít lập trình nhất, sử dụng RSLinx (tất cả các bản trừ Lite), Microsoft Excel và chút 1 lập trình Macro.
Các bạn từng lập trình với RSlogix hoặc Studio 5000 thì chắc chắn không hề lạ gì với RSLinx và việc sử dụng RSLinx để tạo đường kết nối tới PLC tới RSLogix hoặc FTView. Điều này hoàn toàn đúng nếu bạn đang cài bản RSLinx Classic Lite, chỉ phục vụ 1 điểm duy nhất là kết nối các thiết bị PLC như vậy. Tuy nhiên, vẻ đẹp của RSLinx (không có Lite) là hỗ trợ 3rd party software communication, ở đây là qua chuẩn DDE (Dynamic Data Exchange). Nghe thì phức tạp, hiểu đơn giản: DDE cho phép mang dữ liệu từ 1 phần mềm này transfer sang 1 phần mềm khác, ở trong trường hợp cụ thể này là từ RSLinx sang Excel.
Khi sử dụng DDE Connection, đường dẫn cần tạo là
= < Application name>|<Topic>!<Item>
Trong RSLinx, bạn tạo topic dựa trên đường dẫn tới PLC bạn cần. Trong ví dụ ở đây là PLC có tên ExcelDemo. Tên topic mình muốn đặt sẽ là ExcelDemoDDE.
= < Application name>|<Topic>!<Item>
Trong RSLinx, bạn tạo topic dựa trên đường dẫn tới PLC bạn cần. Trong ví dụ ở đây là PLC có tên ExcelDemo. Tên topic mình muốn đặt sẽ là ExcelDemoDDE.
Bạn vào DDE/OPC, chọn Topic Configuration. Sau đó, NEW, đặc tên Topic, và chọn đường dẫn tới PLC bạn cần lấy thông tin. Ở Tab Data collection, và Advance Communication, bạn có thể sử dụng để cấu hình cao cấp hơn. Trong Data Collection, quan trọng nhất với mình là thông số
Polled Messages (mSec). Bạn đặt càng nhanh thì thời gian quét càng nhanh, tuy nhiên sẽ gây ảnh hưởng tới operation của PLC. Mình thấy 1000ms là đủ nhất là nếu chỉ để làm báo cáo cơ bản.
Polled Messages (mSec). Bạn đặt càng nhanh thì thời gian quét càng nhanh, tuy nhiên sẽ gây ảnh hưởng tới operation của PLC. Mình thấy 1000ms là đủ nhất là nếu chỉ để làm báo cáo cơ bản.
Sau khi cấu hình xong, bạn có thể mở Data monitor ra để lấy thông tin
Toàn bộ tag của control và giá trị sẽ được hiện ra trong bảng Datamonitor.
Việc tiếp theo bạn cần làm là copy Data đó ra khỏi table. Chuột phải vào tag bạn cần, chọn Copy to Clipboard, bấm OK.
Việc tiếp theo bạn cần làm là copy Data đó ra khỏi table. Chuột phải vào tag bạn cần, chọn Copy to Clipboard, bấm OK.
Bên excel, khi bạn paste data vào ô nào đó, chọn paste special > Paste Link >OK
Hướng dẫn từng bước bằng video tiếng anh:
https://www.youtube.com/watch?v=pERxjWUaRUI
Data sẽ được cập nhật , dưới dạng tag DDE link
{=RSLINX|”ExcelDemoDDE”!’Batch_Number,L1,C1’}
Bạn để ý, Batch_Number là tag mình mong muốn khi paste vào excel.
Set up bên phía Excel:
{=RSLINX|”ExcelDemoDDE”!’Batchdata[0],L1,C1’}
{=RSLINX|”ExcelDemoDDE”!’Batchdata[2],L1,C1’}
Worksheets(1).Cells(1, 15) = Worksheets(1).Cells(2, 15).Value
Worksheets(1).Cells(2, 15).Copy
Worksheets(1).Cells(3, 15).insert
Với hệ thống như vậy, trong PLC, với mỗi khi 1 batch kết thúc, bạn có thể lưu data lại vào 1 số tag, sau đó kéo các tag đó qua excel là xong.
Để tìm hiểu cao cấp hơn và cách code trực tiếp trên VBA, mình recommend đọc theo hướng dẫn của channel RealPars để code hoàn chình trong VBA. https://realpars.com/vba/
Giải pháp sử dụng Excel và RSlinx chỉ là giaỉ pháp tình thế với lượng data rất nhỏ (cỡ hơn chục nghìn data là hệ thống sẽ chạy rất ì ạch, và cần phải chuyển data sang vị trí khác), tuy nhiên tốt để demo với các sếp trước khi quyết định mua chính thức.
https://www.youtube.com/watch?v=pERxjWUaRUI
Data sẽ được cập nhật , dưới dạng tag DDE link
{=RSLINX|”ExcelDemoDDE”!’Batch_Number,L1,C1’}
Bạn để ý, Batch_Number là tag mình mong muốn khi paste vào excel.
Set up bên phía Excel:
- Copy toàn bộ các data bạn cần qua thành các hàng ngang liên tục:
{=RSLINX|”ExcelDemoDDE”!’Batchdata[0],L1,C1’}
{=RSLINX|”ExcelDemoDDE”!’Batchdata[2],L1,C1’}
- Tạo macro,
- copy toàn bộ data qua 1 dòng dưới để reformat lại thành number
- copy toàn bộ data qua 1 dòng dưới để reformat lại thành number
Worksheets(1).Cells(1, 15) = Worksheets(1).Cells(2, 15).Value
- Khi có thay đổi ở key batch_number (marker của hệ thống), thì insert toàn bộ dòng đã copy xuống dưới.
Worksheets(1).Cells(2, 15).Copy
Worksheets(1).Cells(3, 15).insert
Với hệ thống như vậy, trong PLC, với mỗi khi 1 batch kết thúc, bạn có thể lưu data lại vào 1 số tag, sau đó kéo các tag đó qua excel là xong.
Để tìm hiểu cao cấp hơn và cách code trực tiếp trên VBA, mình recommend đọc theo hướng dẫn của channel RealPars để code hoàn chình trong VBA. https://realpars.com/vba/
Giải pháp sử dụng Excel và RSlinx chỉ là giaỉ pháp tình thế với lượng data rất nhỏ (cỡ hơn chục nghìn data là hệ thống sẽ chạy rất ì ạch, và cần phải chuyển data sang vị trí khác), tuy nhiên tốt để demo với các sếp trước khi quyết định mua chính thức.