ModFBDJP

Помечено: 

Просмотр 15 сообщений - с 16 по 30 (из 34 всего)
  • Автор
    Сообщения
  • #31281
    JurasskPark
    Участник

    Уважаемый @manjey73, ну так все переменные теги (входные и выходные) как и константы считается из статичные переменные из программы, расчетные теги котрые получили все запишутся в скаду.

    1. Прочитали их Скада входные теги
    2. Программа рассчиталась
    3. Выходные теги передались на запись в Скада
    4. Перешли к другой программе

    Я правильно понимаю, что вы боитесь, что будет одна переменная на входе и одна на выходе? ? И вы такой… Ууууу… Сволочь…

    #31282
    manjey73
    Участник

    Скорее 1-ое.
    Если брать по аналогии с любыми ПЛК (не путать с программируемыми реле) где есть участки кода, которые требуется выполнять. В CodeSys это называется POU.
    Которые можно вызывать либо из самой программы Main, либо настроить циклический вызов по времени или событию. Вот кстати модуль и должен это разруливать.

    Соответственно входы и выходы надо связывать с каналами Scada.
    Например устанавливаем Scada на промПК, добавляем модули ввода/вывода ну скажем с Modbus протоколом.
    В модуле пишем программу, как бы мы писали в ПЛК с учетом там архитектуры и т.д.
    Связываем через каналы от модулей входы и выходы программы с входами и выходами модулей ввода/вывода.

    Получаем в итоге SoftPLC вместе со Scada и HMI в одном флаконе.

    Сейчас это можно реализовать установив например openPLC и Scada на одно железо. Но если это будет модуль сервера Scada то это вообще будет круть 🙂
    К тому же я смотрю по списку на скрине там и работа с файлами (FileSystem ветка) есть и еще что-то

    #31283
    manjey73
    Участник

    @JurasskPark правильно поняли — боюсь 🙂 но простые функции на FBD тоже никто не отменял… 🙂
    Более развернуто выше. Даже сейчас можно установить openPLC и через Modbus получить то же. Но модуль сервера для Scada было бы круто, особенно с функционалом самому создавать эти самые FBD. Не в рамках VisualStudio в качестве библиотеки, а непосредственно в модуле. Но тут как говорится как код написан.

    #31285
    JurasskPark
    Участник

    Чего точно не будет, это разработки блоков в модуле. Только Visual Studio. Только хардкор. ?

    #31286
    manjey73
    Участник

    @JurasskPark ну на самом деле не так принципиально, главное, чтобы было можно самостоятельно.

    Тут больше другое волнует. Возьмем банальный TON, мы поставили в программе больше одного TON — Модуль должен понимать что эти TON разные и выделять под их работу свою область памяти. Для флага, для выхода блока и т.д. то есть как это реализовано в рантаймах ПЛК.
    И так со всеми блоками одной программы.

    То есть по сути как реализовано в драйверах, код драйвера один, но мы можем запустить два экземпляра драйвера как на одной линии связи, так и на разных и мешать они друг другу не будут, если мы сами в коде драйвера это не предусмотрели, используя общие данные линии связи или глобальные на разных линиях связи.

    • Этот ответ был изменен 10 месяцев, 3 недели назад от manjey73.
    #31289
    manjey73
    Участник

    Да, про разработку блоков в модуле, возможно только самими же FBD ?
    То есть накидали квадратиков AND, OR, TON, RTrig и так далее, соединили их линиями, для соответствия работы программы, потом обвели и сказали сохрани как макрос или как групповой FBD с заданием своего имени?

    Такое доступно при реализации? я не говорю про язык ST или написание блока на C# непосредственно в модуле.

    #31290
    JurasskPark
    Участник

    Да, про разработку блоков в модуле, возможно только самими же FBD ?
    То есть накидали квадратиков AND, OR, TON, RTrig и так далее, соединили их линиями, для соответствия работы программы, потом обвели и сказали сохрани как макрос или как групповой FBD с заданием своего имени?

    Такое доступно при реализации? я не говорю про язык ST или написание блока на C# непосредственно в модуле.

    Проще ответить кодом. Как это выглядит. Если одним словом, то визуализация рисуется кодом. Никаких UserControl нет.
    И чтобы появился какой-то элемент, например, label — его сначала как компонент разработать, а потом добавлять.

    
    using FBDJP.Base.Components.Base;
    using FBDJP.Base.Components.Switches.Base;
    using FBDJP.Base.Components.UI;
    using FBDJP.Base.Processing;
    
    namespace FBDJP.Base.Components.Switches.Logic
    {
        public class OrSwitch : SwitchBase
        {
            protected override void OnInitialize(Engine renderingEngine)
            {
                ActivateInputAdd(new PinDescription(typeof(bool), UIType.CheckBox), 2);
    
                AddOutput(typeof(bool));
                UniqueName = "FBDJP.Base.Components.Switches.Logic.Or";
                DisplayName = "Or";
                Description = "Or Gate";
            }
    
            public override GroupBase OnSetGroup()
            {
                return Groups.Logic;
            }
    
            protected override void OnProcessData<T>(Processor p, ProcessingNode<T> node)
            {
                bool result = false;
                for (int i = 0; i < TotalInputs; i++)
                {
                    result = result || GetDataValueOrDefault<bool>(i);
                }
    
                SetData(0, new DataContainer(result));
    
                base.OnProcess(p, node);
            }
        }
    }
    

    pYL5fCE0xZ

    #31291
    manjey73
    Участник

    Ну я не говорю, как он будет выглядеть кодом в сохраненном файле MyFBD_1.
    Я о другом. О возможности создать FBD, который потом вставится в другую программу и будет выглядеть как MyFBD_1 а не набором опять всяких AND, OR, XOR и так далее

    #31292
    JurasskPark
    Участник

    Такого функционала нет.
    Посмотрел у Owen Logic — это называется Макрос.

    #31293
    JurasskPark
    Участник

    Кстати, с таким подходом вам можно взять библиотеки Owen Logic и вам начать свой модуль. 😀

    #31294
    JurasskPark
    Участник

    Но! Я посмотрел, Owen Logic тоже использует библиотеку Newtonsoft.Json.dll для блоков, поэтому «подсмотреть» как они создают макрос — думаю можно попытаться.

    #31295
    manjey73
    Участник

    Да, именно. Макрос в Овен Лоджике. В других ПЛК это может называться по другому.
    Как писал выше, в том же CodeSys это тоже программа и отмечается как POU. У нее есть входы, выходы. Ее можно поставить как ОДИН квадратик (для аналога языка FBD) в основной программе, соединить ее входы/выходы с требуемыми переменными и т.д.
    При чем можно в двух экземплярах или больше.

    Ну простой пример. Кран с приводом и концевыми выключателями. Я например брал себе домой у китайцев, подбирал себе по управлению из СЕМИ СХЕМ. То есть они отличаются по принципам управления. Самый простой это пружинный, подал питание открылся, снял питание — закрылся. Но есть и более сложные схемы. То же встречал и на клапанах для вентиляций.
    Соответственно надо накидать программу управления под конкретную схему и лучше оформить это в виде макроса.

    Пример макроса

    Вот как пример. Макрос один, но могу в программе установить таких два.

    #31296
    manjey73
    Участник

    Не, не, не. Не смотрите на Овен Лоджик как способ реализации, я всего лишь пример из него привел. И Newtonsoft.Json.dll там совсем для других вещей. В части именно программы и макросов там полная ЖОПА 🙂 …
    У них графический стол программы в прямом смысле, не координатный.

    • Этот ответ был изменен 10 месяцев, 3 недели назад от manjey73.
    #31298
    manjey73
    Участник

    на картинке слева это макрос в поле программы, а справа потроха самого макроса.
    Вот чтобы потроха не повторять и делается макрос, можно использовать в программе более одного. И не сыпать кучу элементов на поле… макрос выполняет строго определенную функцию, но повторяющуюся.

    Способ реализации как писал может быть разным, главное чтобы в основной программе не было мусора из потрохов.

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

    В современном .NET Newtonsoft.Json заменена на встроенные классы .NET для работы с JSON. Если есть возможность, лучше использовать их, чтобы уменьшить dll hell.

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