dll tự code
Nhìn chung là không. Dùng thư viện đã được kiểm chứng sẽ tốt hơn code tự viết, trừ khi bạn có lý do cụ thể để tránh DLL.
Code tự viết (như hiện tại)
- Ưu điểm:
- Không phụ thuộc DLL hay NuGet, chỉ cần thả vài file
.csvào plugin. - Không xung đột phiên bản với plugin khác.
- Nhỏ, dễ đọc, dễ sửa.
- Không phụ thuộc DLL hay NuGet, chỉ cần thả vài file
- Nhược điểm:
- Chưa được kiểm chứng. Lỗi vừa rồi (sai thứ tự byte, gói lệnh ghi sai cấu trúc) là ví dụ điển hình.
- Thiếu nhiều tính năng: đọc nhiều item trong một gói, đọc chuỗi, kiểu DATE/TIME, kết nối lại tự động, S7-1500 với “optimized block access”, v.v.
- Mỗi tag đọc một lần riêng, chậm hơn nhiều so với gom nhiều tag vào một gói.
- Mọi lỗi lạ trên PLC thật đều do bạn tự gỡ.
Thư viện có sẵn
- Sharp7 bản gốc: một file
.csduy nhất, thuần C#, miễn phí, đã chạy trên rất nhiều dự án. Nó cũng không cần DLL nếu bạn chép thẳng file vào. Đây là lựa chọn mình khuyên. - S7.Net Plus (NuGet): API tiện (
plc.Read("DB1.DBD0")), xử lý sẵn thứ tự byte và kiểu dữ liệu. Phải thêm một DLL. - Snap7 (DLL native): nhanh và đầy đủ, nhưng phụ thuộc DLL x86/x64 nên khó triển khai hơn.
Gợi ý: giữ nguyên cấu trúc driver, nhưng thay Sharp7.cs tự viết bằng file Sharp7 gốc. Nó vẫn là C# thuần, không cần DLL, mà đáng tin cậy hơn nhiều. Phần S7ClientDriver.cs (parse địa chỉ, cache, dò tag mảng) chỉ cần chỉnh nhẹ vì Sharp7 gốc đã có sẵn S7.GetRealAt, S7.GetIntAt, v.v. để đọc đúng thứ tự byte.
Nếu bạn muốn, mình sẽ chuyển driver sang Sharp7 gốc. Bạn cần gửi mình file Sharp7.cs gốc, vì máy mình không tải được từ GitHub.

