OPC Da xóa tag và chỉ thêm được 1 số thứ là ok được
30.09.2026
tiến hành thực hiện được và kết nối được thiết bị
xem được danh sách và ip thiết bị đã kết nối hoàn toàn ok được
Với
Mình sẽ đọc file code trước để tìm chỗ gây ra lỗi này.
Dialog báo đã thêm đúng 2 tag, nên khả năng cao lỗi nằm ở poller hoặc ReloadGrid. Mình xem tiếp phần đó.
Mình đã sửa OpcDaAddTagDialog.AddSelectedToManager() trong file tag_manager_driver.cs, nhưng chưa build hay chạy thử vì môi trường ở đây không có thư viện OPC.
Nguyên nhân mình tìm được
Code thêm tag chỉ lấy đúng các tag bạn tích, và thông báo trong ảnh cũng ghi "2 tag". Danh sách tag Channel1.Device1... rất có thể là tag cũ từ các lần thêm trước. Tag Manager tự lưu vào TagManagerDriver_Tags.csv và nạp lại mỗi lần mở app, nên tag cũ vẫn nằm chung device OPCDA_Device1 với 2 tag mới.
Cách sửa
Khi bạn bấm "Thêm tag đã chọn vào Tag Manager" mà device đó còn tag khác, sẽ hiện hộp thoại hỏi:
- Có: xoá các tag cũ của device, chỉ giữ đúng 2 tag vừa chọn.
- Không: giữ tag cũ và chỉ thêm 2 tag mới.
- Hủy: không làm gì.
Nếu chọn Có, chương trình cũng ngắt poller của device đó, rồi kết nối lại chỉ với các tag còn lại. Thông báo cuối sẽ ghi rõ đã xoá bao nhiêu tag cũ.
Để làm sạch ngay bây giờ, bạn mở lại dialog, tích Ramp1 và Ramp2, bấm thêm rồi chọn Có.
Mình chưa đọc được Tag_read_OPC_DA.cs (chứa OpcDaFieldService). Nếu sau khi làm vậy mà Tag Manager vẫn tự có thêm tag mỗi lần bấm Kết nối, hãy gửi file đó để mình kiểm tra tiếp.
đây nhé
Có đường tự thêm tag ở dòng 1210. Mình xem chi tiết.
Mình đã sửa xong cả hai file, nhưng chưa build hay chạy thử vì môi trường ở đây không có thư viện OPC.
Nguyên nhân
Khi bấm Kết nối trong dialog "Thêm tag OPC DA", OpcDaFieldService.Connect() tự đọc file OpcDaTags_OPCDA_Device1.cfg. File này chứa danh sách tag đã giám sát từ các lần trước, gồm cả kết quả BrowseAll. Với mỗi tag, code gọi AddTagInternal, và vì AutoSyncToTagManager mặc định là true nên tag bị đẩy vào Tag Manager ngay. Vì vậy Tag Manager đầy tag trước cả khi bạn tích Ramp1 và Ramp2.
Đã sửa
Tag_read_OPC_DA.cs:Connect()có thêm tham sốrestoreMonitoredTags(mặc địnhtrue, nên controlTagReadOpcDavà Monitor Form vẫn chạy như cũ).tag_manager_driver.cs: dialog "Thêm tag OPC DA" giờ kết nối vớiAutoSyncToTagManager = falsevàrestoreMonitoredTags = false. Dialog chỉ duyệt cây, và chỉ nút "Thêm tag đã chọn vào Tag Manager" mới thêm tag, đúng các tag đã tích.- Giữ từ lần trước: nếu device còn tag cũ, hộp thoại vẫn hỏi có xoá chúng để chỉ giữ 2 tag vừa chọn không.
Cách làm sạch dữ liệu hiện tại
- Build lại rồi mở dialog, kết nối, tích Ramp1 và Ramp2, bấm thêm.
- Khi hộp thoại hỏi về tag cũ, chọn Có để xoá hơn 300 tag thừa.
Nếu control TagReadOpcDa ngoài form vẫn bật AutoSyncToTagManager và AutoBrowseOnConnect, mỗi lần mở app nó vẫn có thể nạp lại danh sách cũ vào Tag Manager. Khi đó bạn tắt tùy chọn đó, hoặc xoá file OpcDaTags_OPCDA_Device1.cfg trong thư mục chạy .exe.

