Ответы в темах
-
АвторЗаписи
-
IvanovVladimir
Участникконкретно эти строки B17E4E8B1A2A41B7AE884BC5265D37C5 я уже знаю как шифруются, нашел алгоритм в исходниках, это хеши паролей, а вот остальные символы ( яЮ и* ~> ) уже явно не часть паролей
IvanovVladimir
УчастникНу так смысл как раз в том чтобы менять данные можно было после передачи а не каждый раз лазить в администратор и там это делать, поэтому я смотрю файлы dat
IvanovVladimir
УчастникНу вот да, проблема. А сами файлы с информацией о ролях и пользователях хранятся в
C:\Program Files\SCADA\BaseDAT
role.dat и user.dat
их содержимое из блокнота можно открыть, ты даже увидишь имена столбцов и их значения но в перемешку с байтами, которые не определяются
»
UserID и* Enabled яЮName Ґ<Password IкRoleID ЕDescr нК= ScadaWeb B17E4E8B1A2A41B7AE884BC5265D37C5 ~> ScadaComm F9A226BC671CB198C7D83ADEA0B1F2B8 b“: admin 1BE2E31C3FAC53701DC7BE55D1891B52 »Z: guest D353B3161AC1FFC43C79CE23FAE333EF V9
MQTT 5ED0CDB7F51A4C13DB813EA19E9D1FE8 \Ы
«IvanovVladimir
УчастникНадо было писать относительный путь, все понял
~/Abc/MyPage сработало для меняIvanovVladimir
УчастникСпасибо за примеры, пока буду пробовать, завтра или на следующей неделе отпишусь получилось\нет
IvanovVladimir
УчастникТогда почему если значение в канале отличается от полученного по mqtt то значение канала modbus меняется сразу, а не в течение минуты? По сути тогда все команды должны проходить с задержкой до минуты
IvanovVladimir
УчастникЭто было бы здорово, я же могу сделать это непосредственно из модуля логики? Можешь подсказать команду?
В любом случае исходный код я посмотрю, но это немного ускорит процесс)IvanovVladimir
УчастникВ целом мой метод работает идеально, кроме случая когда я получаю по mqtt такое же значение, как в канале к нему привязанном, не в канале который отправляет данные на плк по modbustcp, а в канале который привязан к данному mqtt. Почему то конкретно в этом случае изменение канала modbus идет с задержкой. Вопрос в том как мне искусственно кодом триггернуть сиюминутное изменение канала modbus и отправки команды на ПЛК? Что такого происходит когда значения канала mqtt отличается от полученного сообщения, чего не происходит когда они одинаковые
IvanovVladimir
УчастникЭто будет сильно нагружать систему ведь мне придется каждую итерацию опрашивать все каналы и при различии применять изменения, думаю при 5к+ каналов это начнет люто тормозить. В то время как OnCurrentDataProcessed вызывается по событию, что более правильно.
IvanovVladimir
УчастникДля реализации такого управления я начал писать модуль который будет перебрасывать значения с каналов mqtt на каналы modbustcp, чтобы посредством этого отправлялись команды на ПЛК
IvanovVladimir
УчастникЕсть два канала, 101 и 102
101 канал привязан к регистру плк через ModBusTCP
102 канал привязан к значению получаемого пакета MQTT
Запускаем веб
101 — 1
102 — —
отправляем сообщение по mqtt со значением 0
101 — 0 (изменена моим модулем)
102 — 0
*отправлена команда в ПЛК в связи с изменением значения канала 101
в вебе изменяем значение канала 101 на 1
101 — 1
102 — 0
*отправлена команда в ПЛК в связи с изменением значения канала 101
отправляем сообщение по mqtt со значением 0, чтобы отключить регистр в ПЛК ранее включенный через вебморду скады
101 — 1
102 — 0
*ждем до минуты пока сервер просканирует архив (я предполагаю что он это делает)
101 — 0 (изменена моим модулем)
102 — 0
*отправлена команда в ПЛК в связи с изменением значения канала 101
отправляем сообщение по mqtt со значением 1
101 — 1 (изменена моим модулем)
102 — 1
*отправлена команда в ПЛК в связи с изменением значения канала 101То есть ждать отправки команды на плк приходится только в тех случаях когда значение канала 102 совпадает с тем значением что я вновь передаю на него по mqtt
Алгоритм программы которая мне нужна максимально на самом деле прост:
1) создается таблица привязок в свойствах модуля, где я указываю из какого канала (Х) в какой (У) мне необходимо передать значение (в примере из канала 102 в канал 101)
2) при получении нового значения на Х, проверяется есть ли разница между полученным сообщением и значением У
3) если значения разные то необходимо изменить значение У на значение Х, что должно приводить к немедленной отправки команды на ПЛКЕсли обобщить я хочу иметь возможность управлять ПЛК не только из веб-морды скады, но и используя команды mqtt из внешней системы. Чтобы я мог изменить значение регистров ПЛК как по MQTT, так и непосредственно из интерфейса скады
IvanovVladimir
УчастникДанная ошибка у меня возникает только с условием, если значение посылаемое по mqtt совпадает с тем значением канала к которому она привязана. Если текущее значение привязанного канала не совпадает с тем, что было получено в команде тогда отправка команды на плк происходит сразу.
IvanovVladimir
УчастникУже пробовал, лог получаю аналогичный
IvanovVladimir
Участник06.05.2026 16:08:05 Enterprise HaiWell HaiWell — M1 Определён, Вкл
06.05.2026 16:08:43 Enterprise HaiWell HaiWell — M0 Определён, Вкл
06.05.2026 16:26:52 Enterprise HaiWell HaiWell — M0 Хороший, Откл
06.05.2026 16:26:52 Enterprise HaiWell HaiWell — M1 Хороший, Откл
06.05.2026 16:26:53 Enterprise HaiWell HaiWell — M0 Определён, Откл
06.05.2026 16:26:53 Enterprise HaiWell HaiWell — M1 Определён, Откл
06.05.2026 16:27:04 Enterprise HaiWell HaiWell — M1 Определён, Вкл
06.05.2026 16:27:05 Enterprise HaiWell HaiWell — M0 Определён, Вкл
06.05.2026 16:27:28 Enterprise HaiWell HaiWell — M0 Хороший, Откл
06.05.2026 16:27:28 Enterprise HaiWell HaiWell — M1 Хороший, Откл
06.05.2026 16:27:29 Enterprise HaiWell HaiWell — M0 Определён, Вкл
06.05.2026 16:27:29 Enterprise HaiWell HaiWell — M1 Определён, Вкл
06.05.2026 16:27:30 Enterprise HaiWell HaiWell — M0 Определён, Откл
06.05.2026 16:27:30 Enterprise HaiWell HaiWell — M1 Определён, Откл
06.05.2026 16:27:43 Enterprise HaiWell HaiWell — M1 Определён, Вкл
06.05.2026 16:27:43 Enterprise HaiWell HaiWell — M0 Определён, Вкл
06.05.2026 16:28:28 Enterprise HaiWell HaiWell — M0 Хороший, Откл
06.05.2026 16:28:28 Enterprise HaiWell HaiWell — M1 Хороший, Откл
06.05.2026 16:28:29 Enterprise HaiWell HaiWell — M0 Определён, Вкл
06.05.2026 16:28:29 Enterprise HaiWell HaiWell — M1 Определён, Вкл
06.05.2026 16:28:29 Enterprise HaiWell HaiWell — M0 Определён, Откл
06.05.2026 16:28:29 Enterprise HaiWell HaiWell — M1 Определён, Отклвот прям логи, тут я игрался со статусами, вдруг это триггер на изменение команды сразу будет, но нет
там где статус Хороший это отложенная по какой то причине команда на изменение по mqtt, в них видно период ровно в 1 минуту, хотя отправлял я их сразу после включения каналов вручную без mqtt2026-05-06 16:26:52 Приём myparam2 = {
«test»: {
«i…
Подписанные устройства: 2
Hello from JS. Topic: myparam22026-05-06 16:27:11 Приём myparam2 = {
«test»: {
«i…
Подписанные устройства: 2
Hello from JS. Topic: myparam22026-05-06 16:27:52 Приём myparam2 = {
«test»: {
«i…
Подписанные устройства: 2
Hello from JS. Topic: myparam2IvanovVladimir
УчастникЯ уверен что команда отложенная так как ПЛК рядом со мной физически и я смотрю значения непосредственно как в администраторе так и в веб интерфейсе. Еще если действовать по тому алгоритму то в логах будет четко видно, что:
12:00:00 — получена команда по mqtt
12:00:39 — отправлена команда на плк
12:00:43 — получена команда по mqtt
12:01:39 — отправлена команда на плк
12:01:23 — получена команда по mqtt
12:02:39 — отправлена команда на плкто есть команда на плк отправляется после команды mqtt, но только ровно в конкретное время с интервалом в минуту, это не то чтобы задержка, это изменение применилось, но сервер его обработал только по минутному таймеру
-
АвторЗаписи