lad, SCL
Mình giải nén project và xem cách LADER lưu Data block hiện tại so với SCL.
Mình đã đọc xong cách lưu DB hiện tại. Mỗi DB đang nằm trong chương trình Ladder của từng thiết bị và RAM nằm trong từng driver. SCL gom DB của mọi thiết bị lại, còn LADER chỉ thấy DB của thiết bị đang mở. Mình đọc tiếp phần đọc/ghi trong LadderDriver rồi sửa.
Mình đã chốt hướng sửa. Kho Data block sẽ dùng chung toàn hệ thống: một RAM duy nhất cho mọi thiết bị Ladder, và cây LADER sẽ hiện DB của tất cả thiết bị. Mình đang viết code. Máy này không có dotnet nên không build thử được, mình sẽ tự rà kỹ cú pháp.
Phần runtime đã xong: RAM Data block giờ là một kho static dùng chung cho mọi Ladder và SCL. Mình đang sửa LdDbSuggest (đổi tên, tìm DB toàn hệ thống) rồi sửa giao diện LADER để hiện và sửa DB của mọi thiết bị.
Đã sửa xong code giao diện LADER: cây khối hiện DB của mọi thiết bị, sửa/đổi tên/xoá DB đúng chương trình chứa nó, toán hạng nhận DB từ thiết bị khác. Giờ mình sửa DbSetName để đổi tên biến cập nhật mọi chương trình, rồi rà lỗi cú pháp và đóng gói.
Data block giờ là một kho chung cho LADER và SCL, nhưng mình chưa chạy thử. Máy mình không tải được package NuGet nên không build được cả project. Mình chỉ biên dịch riêng các file .cs và không phát sinh lỗi mới so với bản gốc. Các file .razor mình chỉ rà bằng mắt, chưa biên dịch. Bạn build rồi thử giúp mình nhé.
Nguyên nhân trước đó: mỗi DB nằm trong chương trình Ladder của một thiết bị, và RAM nằm trong driver của thiết bị đó. SCL gom DB của mọi thiết bị, còn LADER chỉ thấy DB của thiết bị đang mở. Ladder ở thiết bị khác cũng không đọc được biến.
Đã sửa:
- RAM chung: mọi Ladder và mọi SCL dùng chung một bộ nhớ RAM duy nhất, không cần driver Ladder nào đang chạy. Tên DB là duy nhất toàn hệ thống.
- Cây LADER hiện DB của mọi thiết bị: tạo DB ở SCL hay ở LADER đều hiện ở cả hai nơi. DB của thiết bị khác có tooltip ghi “lưu ở thiết bị …”. Sửa biến, Start value, Monitor, Modify, xoá, đổi tên và lên/xuống đều tác động đúng DB gốc.
- Toán hạng chéo thiết bị: Ladder ở thiết bị này kéo hoặc gõ
Data_block_1.Var_1của DB nằm ở thiết bị khác được. Giá trị hiện đúng và toán hạng không báo đỏ. - Đổi tên DB hoặc biến: tên mới được áp dụng ở mọi chương trình Ladder, các network SCL trong Ladder và code các chương trình SCL. Giá trị đang chạy được giữ nguyên.
- Retain: lưu chung vào
ladder_db_all.json(vàladder_dbs_all.jsoncho String). Các file cũ theo từng thiết bị được gộp vào lần chạy đầu tiên.
Các file chính đã sửa:
LadderDb.csLadderDbSuggest.csComponents/LadderDialog.razorComponents/SclDialog.razorCSharpScriptDriver.csLadderDriver.csHUONG_DAN_DATA_BLOCK.md
Nếu xoá một thiết bị Ladder thì các DB nằm trong thiết bị đó mất theo. Hãy tạo DB quan trọng ở thiết bị Ladder chính, vì SCL Editor cũng tạo DB ở thiết bị Ladder đầu tiên.
Files are in /home/claude:
- ScadaWeb_DataBlock_chung.zip

