Triangle MicroWorks Test Harness
Bạn cần một trạm giả lập (slave) gửi tín hiệu với các cờ chất lượng khác nhau. Master của bạn sẽ hiện đúng giá trị mà slave gửi.
Cách 1: Triangle MicroWorks Test Harness (bạn đang dùng)
- Trong slave mà master đang kết nối, chọn điểm cần thử, ví dụ IOA 2500 (TI13) hoặc 3000 (TI1).
- Sửa cờ chất lượng của điểm đó (cột Quality, nhấp đôi hoặc chuột phải, tùy phiên bản) và tích các cờ Invalid, Non-Topical, Substituted, Blocked, Overflow.
- Gửi điểm đó đi, bằng nút gửi thay đổi/spontaneous, hoặc bấm Tổng gọi ở form của bạn.
- Nhìn cột Chất lượng (QDS). Log Triangle sẽ có dòng
quality=xxxxđể so sánh.
Bạn thử theo bảng sau:
| Cờ đặt trên slave | Log Triangle | Cột trong form | Màu |
|---|---|---|---|
| Không cờ nào | 0000 | 00 - Good | xanh |
| Invalid | 0080 | 80 - IV | đỏ |
| Invalid + Non-Topical | 00C0 | C0 - IV+NT | đỏ |
| Substituted | 0020 | 20 - SB | cam |
| Blocked | 0010 | 10 - BL | cam |
| Invalid + Substituted | 00A0 | A0 - IV+SB | đỏ |
| Overflow (chỉ TI13, analog) | 0001 | 01 - OV | đỏ |
Với TI1 (IOA 3000), đặt giá trị 1 và không cờ nào: form phải hiện 00 - Good. Nếu hiện OV thì phần giải mã đang sai.
Cách 2: viết slave thử bằng lib60870.NET
Đoạn dưới gửi IOA 2500 với cờ Invalid và Non-Topical. Mình chưa chạy thử nên tên hàm có thể lệch nhẹ theo phiên bản thư viện của bạn.
var server = new Server();
server.SetLocalPort(2404); // tắt slave Triangle trước để không trùng cổng
server.Start();
var q = new QualityDescriptor { Invalid = true, NonTopical = true };
var asdu = new ASDU(server.GetApplicationLayerParameters(),
CauseOfTransmission.PERIODIC, false, false, 0, 1, false);
asdu.AddInformationObject(new MeasuredValueShort(2500, 12.5f, q));
server.EnqueueASDU(asdu);Sửa các cờ trong q rồi gửi lại để thử từng trường hợp.
Nếu không đổi được cờ
Bạn tạm thời có thể ép giá trị trong FormatQuality (ví dụ giả lập Invalid = true) để xem màu và chữ hiển thị, nhưng cách này chỉ kiểm tra giao diện chứ không kiểm tra dữ liệu thật từ trạm.
Nếu cột vẫn hiện - với 2500/2501 dù slave đang gửi, bạn báo mình, có thể do bản lib60870 của bạn đặt tên thuộc tính khác.

