Взаимодействие SCADA и системы

Стартовая страница Форумы Понять, как работает ПО Взаимодействие SCADA и системы

Просмотр 11 сообщений - с 1 по 11 (из 11 всего)
  • Автор
    Сообщения
  • #20546
    OlegSol
    Участник

    Подскажите:
    Scada может теоретически по значению канала взаимодействовать с системой на которой она стоит. Запустить скрипт или .exe

    • Эта тема была изменена 2 года, 8 месяцев назад от Mikhail.
    #20547
    manjey73
    Участник

    Теоретически может, поищите поиском, кто-то пытался. По крайней мере можно сделать запись в файл и чтение файла. Не вижу причин чтобы нельзя было запустить файл.

    #20548
    a80808
    Участник

    Я пытался, не может. При попытке использовать метод запуска процесса пишет «Метод не поддерживается». Михаил писал, что пока не реализовано. Да и не видят разработчики надобности в этом…к сожалению. Возможно трудности достаточно большие.
    Вроде бы плагин «Модуль автоматического управления» умеет?

    #20550
    manjey73
    Участник

    Смотря как надо запустить приложение. Если из C# в принципе можно стартануть другое приложение, то все будет зависеть от формулы, которая его вызовет.

    Как вариант можно пойти обходным путем, создавать bat файлы а потом их стартовать через cron или как там система в Windows называется….

    #20553
    a80808
    Участник

    Я пришел к выводу, что возможен только один вариант:
    1. Есть файл (текстовый) в котором есть например цифры «1» и «0»
    2. На каком то языке типа C# пишем программу — диспетчер, которая регулярно этот файл (можно по команде «ат» (аналог хрона в Виндах) или просто по шедулингу Виндов и анализирует файл. Если там «0» ничего не происходит, если «1» — запускаем нужную прогу и пишем «0» в файл. В качестве аргумента диспетчеру передаем имя файла.
    3. SCADA по событию пишет в файл «1» (вроде бы они это умеет).

    Коряво, но должно по идее работать

    #20554
    a80808
    Участник

    Во всяком случае пока 🙂

    #20557
    Mikhail
    Модератор

    В формуле можно попробовать вызвать
    System.Diagnostics.Process.Start("myfile.bat");
    Не знаю, сработает или нет. Исполняемая программа не должна иметь пользовательского интерфейса — служба не может с ним взаимодействовать.
    Но вызов других процессов может иметь непредсказуемые побочные эффекты.

    Поэтому взаимодействие нужно организовывать через сетевые протоколы, например, HTTP или MQTT. То есть когда другая программа ждёт команд или запросов по сети.

    #20558
    a80808
    Участник

    Ага 🙂
    Я так делал, «висела» прога на Python и ждала публикации на определенный тэг MQTT. Потом формировала запрос по WebSock к IoT LoraWAN серверу и обратной публикацией MQTT обнуляла канал. Это было из-за того, что существующий шлюз к LNS не позволял писать в регистры ModBus. В принципе в задержку менее секунды укладывалось, так что считай почти RealTime 🙂

    #20559
    Mikhail
    Модератор

    Ещё добавлю простой, но менее красивый способ — взаимодействие через базу данных.

    #20561
    a80808
    Участник

    Хм…ИМХО через базу долговато…относительно конечно

    #20562
    baur
    Участник

    Если OS Windows:
    DBExport + PowerSell + TaskSeduler

Просмотр 11 сообщений - с 1 по 11 (из 11 всего)
  • Вы должны авторизироваться для ответа в этой теме.