iec104
Biên dịch thành công (cả Razor lẫn driver). Giờ test driver với server IEC 104 giả viết bằng Python.
Driver chạy đúng với server giả (đọc, SQ, quality, ASDU khác, double point, lệnh ghi, GI định kỳ, ACK). Mình cập nhật README, đóng gói zip và lưu ghi chú dự án.
Mình đã thêm driver IEC 104 vào ScadaWeb, nhưng file TagIEC104.cs của bạn không có trong zip nên mình chưa tham khảo được. Mình tự viết driver bằng TCP thuần (không cần thêm thư viện NuGet). Mình đã biên dịch được project (có thay S7netplus bằng bản giả vì sandbox không tải được NuGet) và test driver với một server IEC 104 giả. Mình chưa thử với thiết bị thật nào.
Cách dùng
Thêm thiết bị. Vào tab Thiết bị & Tag, chọn Driver = IEC104. Form hiện các ô:
- IP
- Port (mặc định 2404)
- ASDU (Common Address, mặc định 1)
- GI (s): chu kỳ hỏi toàn bộ giá trị (General Interrogation). Đặt 0 nếu chỉ muốn hỏi một lần lúc kết nối.
Cột Trạng thái hiển thị Online khi kết nối xong.
Thêm tag (IOA). Ô địa chỉ nhập số IOA, ví dụ 1001. Nếu tag thuộc ASDU khác với ASDU đã khai báo cho thiết bị thì viết ASDU:IOA, ví dụ 2:1001.
| Kiểu tag | Đọc từ | Ghi bằng |
|---|---|---|
| Bool | Single point, Double point (2 = ON) | C_SC_NA_1 |
| Int | Scaled, Step, Bitstring, Counter | C_SE_NB_1 |
| Real | Float, Normalized (-1..1) | C_SE_NC_1 |
Nút Button trên màn hình Runtime gửi lệnh xuống thiết bị theo bảng trên.
Cách hoạt động
- Khi kết nối, driver gửi STARTDT, rồi General Interrogation để lấy toàn bộ giá trị hiện tại.
- Giá trị tự phát từ thiết bị được lưu vào bộ nhớ đệm theo (ASDU, IOA). Mỗi 500 ms engine chỉ đọc từ bộ nhớ đệm, không gọi mạng.
- Driver tự gửi xác nhận (S-frame) và TESTFR, và tự nối lại sau 3 giây nếu mất kết nối.
- Tag có Quality = Invalid hoặc chưa nhận được IOA sẽ hiện
---.
Hạn chế
- Lệnh ghi thực thi thẳng, chưa có Select-Before-Operate. Nếu RTU của bạn bắt buộc SBO thì lệnh sẽ bị từ chối.
- Chưa hỗ trợ lệnh double command (type 46).
- Nếu
TagIEC104.cscủa bạn dùng thư viện lib60870.NET và muốn đổi sang dùng nó, gửi file đó lên mình sẽ viết lại driver theo.
Các file đã sửa: Iec104Driver.cs (mới), Models.cs, ScadaEngine.cs, Components/Home.razor, README.md.
Files are in /mnt/user-data/outputs:
- ScadaWeb_IEC104.zip

