Стартовая страница › Форумы › Понять, как работает ПО › Взаимодействие SCADA и системы
- В этой теме 10 ответов, 5 участников, последнее обновление 4 года, 11 месяцев назад сделано
baur.
-
АвторЗаписи
-
06.08.2021 в 09:08 #20546
OlegSol
УчастникПодскажите:
Scada может теоретически по значению канала взаимодействовать с системой на которой она стоит. Запустить скрипт или .exe-
Тема изменена 4 года, 11 месяцев назад пользователем
Mikhail.
06.08.2021 в 09:17 #20547
manjey73УчастникТеоретически может, поищите поиском, кто-то пытался. По крайней мере можно сделать запись в файл и чтение файла. Не вижу причин чтобы нельзя было запустить файл.
06.08.2021 в 09:32 #20548
a80808УчастникЯ пытался, не может. При попытке использовать метод запуска процесса пишет «Метод не поддерживается». Михаил писал, что пока не реализовано. Да и не видят разработчики надобности в этом…к сожалению. Возможно трудности достаточно большие.
Вроде бы плагин «Модуль автоматического управления» умеет?06.08.2021 в 11:00 #20550
manjey73УчастникСмотря как надо запустить приложение. Если из C# в принципе можно стартануть другое приложение, то все будет зависеть от формулы, которая его вызовет.
Как вариант можно пойти обходным путем, создавать bat файлы а потом их стартовать через cron или как там система в Windows называется….
06.08.2021 в 14:56 #20553
a80808УчастникЯ пришел к выводу, что возможен только один вариант:
1. Есть файл (текстовый) в котором есть например цифры «1» и «0»
2. На каком то языке типа C# пишем программу — диспетчер, которая регулярно этот файл (можно по команде «ат» (аналог хрона в Виндах) или просто по шедулингу Виндов и анализирует файл. Если там «0» ничего не происходит, если «1» — запускаем нужную прогу и пишем «0» в файл. В качестве аргумента диспетчеру передаем имя файла.
3. SCADA по событию пишет в файл «1» (вроде бы они это умеет).Коряво, но должно по идее работать
06.08.2021 в 19:43 #20554
a80808УчастникВо всяком случае пока 🙂
06.08.2021 в 20:25 #20557
MikhailМодераторВ формуле можно попробовать вызвать
System.Diagnostics.Process.Start("myfile.bat");
Не знаю, сработает или нет. Исполняемая программа не должна иметь пользовательского интерфейса — служба не может с ним взаимодействовать.
Но вызов других процессов может иметь непредсказуемые побочные эффекты.Поэтому взаимодействие нужно организовывать через сетевые протоколы, например, HTTP или MQTT. То есть когда другая программа ждёт команд или запросов по сети.
06.08.2021 в 23:03 #20558
a80808УчастникАга 🙂
Я так делал, «висела» прога на Python и ждала публикации на определенный тэг MQTT. Потом формировала запрос по WebSock к IoT LoraWAN серверу и обратной публикацией MQTT обнуляла канал. Это было из-за того, что существующий шлюз к LNS не позволял писать в регистры ModBus. В принципе в задержку менее секунды укладывалось, так что считай почти RealTime 🙂07.08.2021 в 12:46 #20559
MikhailМодераторЕщё добавлю простой, но менее красивый способ — взаимодействие через базу данных.
07.08.2021 в 22:27 #20561
a80808УчастникХм…ИМХО через базу долговато…относительно конечно
08.08.2021 в 08:54 #20562
baurУчастникЕсли OS Windows:
DBExport + PowerSell + TaskSeduler -
Тема изменена 4 года, 11 месяцев назад пользователем
-
АвторЗаписи
- Для ответа в этой теме необходимо авторизоваться.