Vyacheslav

Ответы в темах

Просмотр 11 сообщений - с 31 по 41 (из 41 всего)
  • Автор
    Записи
  • Vyacheslav
    Участник

    Вопрос закрыт. Помог ваш сервис http://modbus.rapidscada.net/

    Part of Data Package Description Value
    00 Slave address 0x00 (0)
    04 Function code 0x04 (4) — Read Input Registers
    00 08 Starting address 0x0009 (9)
    00 04 Quantity 0x0004 (4)
    71 DA CRC 0x71DA (29146)

    Из парсинга видно что адрес устройства 0. Залез еще раз в таблицу конфигурации и обнаружил что для этого КП адрес не выставлен. Выставил его в 1, залил обновленный kp.dat. Перезапустил коммуникатор. Данные пошли на сервер, все работает.

    • Ответ изменён 10 лет, 1 месяц назад пользователем Vyacheslav.
    в ответ на: Сборка ScadaServer 4.5.7 (Mono) #2457
    Vyacheslav
    Участник

    Информацию по другим серверам с поддержкой ASP .NET не искал. Но думаю XSP4 это самое оптимальное решение для этой технологии проектирования в среде Linux. XSP4 хорошь тем что в нем все по честному по сравнению с IIS на винде. Но сравнивать их не корректно.
    Если разворачивать проект на малине то лучше использовать XSP4 фронтендом, если на более мощном железе то бекендом, фронтендом выставлять Nginx. При такой конфигурации если потребуется отказоустойчивость и балансировка нагрузки для каких либо сервисов то можно поднять множество бекэндовых XSP4, а в Nginx настроить модуль отвечающий за балансировку.

    Сам же я стараюсь использовать технологию ASP .NET как можно ближе к низовым ее возможностям, это разработка хендлеров, роутинг и мапинг необходимых хендров на уровне файла глобал.асакс. При проектировании, архитектуру веб приложения выстраиваю путем жесткого разделения клиентской части и серверной части. То есть на стороне клиента это использование нативных стандартов с помощью библиотек javascript. На стороне сервера это вебсервисы.

    Кстате для распбери можно было бы переписать класс program.cs чтобы это было WCF приложение с поддержкой вебсервисов типа REST. Тогда большинство методов класса manager можно будет обернуть в вызовы вебсервиса тем самым повысив гибкость управления сервером и коммуникатором. Для разработчиков фронтенда это огромный плюс потому что они жестко не привязаны к ASP и разработку admin интерфейсов управления чем либо могут производить в отрыве от сервера зная просто его API. Ну это мое личное видение архитектуры такого типа приложений.

    в ответ на: Связь по Modbus на Raspberry PI #2446
    Vyacheslav
    Участник

    Уточню что тестирование проходило календарный месяц, при этом периодически останавливал распберии, поскольку изучал и производил некоторые изменения в настройках. Но при работе никаких проблем пока замечено не было. Как разберусь с настройками кпмодбас включу на более длительное тестирование с рандомайзом значений для адресов мобаса внутри Ардуины. Если будут какие то проблемы напишу здесь.

    Vyacheslav
    Участник

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

    в ответ на: Связь по Modbus на Raspberry PI #2433
    Vyacheslav
    Участник

    Ну я для raspberry pi и тестирую. Собираю все из ваших исходных кодов. Сервер старой версии и коммуникатор крутился на распбери больше месяца. Использовался только текущий срез. Все архивные срезы были отключены. В коммуникаторе использовал тестовый видоизмененный от вашего по умолчанию КП без опроса ком порта. Сгенерировал 500 тегов наполняемых рандом значениями. У меня распбери версии Б 512 мб. Нагрузка с включенными сервером и коммуникатором составляла от 65 до 80 процентов.
    О сборке сервера и коммуникатора могу выложить информацию в отдельную тему, если нужно, консолидирую в ней некоторые нюансы. Поскольку по умолчанию собранный проект сервера работать не будет.

    На текущий момент я собрал последнюю версию сервера и коммуникатора, запустил все на распбери. В качестве внешнего контроллера использую Ардуину. Схема включения у меня RaspberryPI—USB->RS-485=========Модуль на базе MAX485—Arduino.
    Для тестирования MODBUS использую следующую библиотеку https://github.com/smarmengol/Modbus-Master-Slave-for-Arduino
    Реализацию таблиц там оставили на усмотрение пользователя и представлена в виде единого массива, диапазоны адресов которого можно выбирать произвольно.

    В своем эксперименте я пока дошел до получения данных коммуникатором (аналоги и дискреты). В качестве дискрета прицепил кнопку емкостную.

    Дошел до нюанса описанного в моем предыдущем сообщении. В код КПМодбас пока досконально не лазил, но если вы точно скажите что опционально номер канала задать нельзя, то буду смотреть код на предмет его адаптации.

    Данную ветку выбрал исходя из соответствия появившегося вопроса. Могу в этой ветке создать еще одну тему по Modbus. Или все таки перенести вопрос в глобальную ветку?

    в ответ на: Связь по Modbus на Raspberry PI #2419
    Vyacheslav
    Участник

    Подскажите каким образом назначить произвольные номера каналов при использовании драйвера Modbus? По умолчанию номера каналов не назначаются. Судя по коду этого КП единственное чего можно добиться это последовательное автоматическое назначение каналов при настройке адресов регистров. Так ли это? Нужно ли вносить изменения в код самостоятельно для настройки произвольных номеров каналов или этого возможно указать опционально в пределах темплейта?
    Пример лога опроса КП

    КП 57 «Arduino»
    —————
    DLL : KpModbus
    Состояние : норма
    Сеанс связи : 26.06.2016 22:27:07
    Команда ТУ : время неопределено

    Сеансы связи (всего / ошибок) : 40 / 0
    Команды ТУ (всего / ошибок) : 0 / 0
    Запросы (всего / ошибок) : 80 / 0

    Текущие данные тегов КП
    +———+—————+———-+——-+
    | Сигнал | Наименование | Значение | Канал |
    +———+—————+———-+——-+
    | ******** gr1 *************************** |
    +———+—————+———-+——-+
    | 1 | t1 | 333 | |
    +———+—————+———-+——-+
    | 2 | t2 | 19 | |
    +———+—————+———-+——-+
    | 3 | t3 | 146 | |
    +———+—————+———-+——-+
    | 4 | t4 | 1198 | |
    +———+—————+———-+——-+
    | 5 | t5 | 86 | |
    +———+—————+———-+——-+
    | ******** gr2 *************************** |
    +———+—————+———-+——-+
    | 6 | t10 | 0 | |
    +———+—————+———-+——-+
    | 7 | t11 | 0 | |
    +———+—————+———-+——-+
    | 8 | t12 | 0 | |
    +———+—————+———-+——-+
    | 9 | t13 | 0 | |
    +———+—————+———-+——-+
    | 10 | t14 | 0 | |
    +———+—————+———-+——-+
    | 11 | t15 | 0 | |
    +———+—————+———-+——-+
    | 12 | t16 | 0 | |
    +———+—————+———-+——-+
    | 13 | t17 | 0 | |
    +———+—————+———-+——-+

    Архивные данные отсутствуют

    События отсутствуют

    Пример темплейта

    <?xml version=»1.0″ encoding=»utf-8″?>
    <DevTemplate>
    <ElemGroups>
    <ElemGroup name=»gr1″ tableType=»InputRegisters» address=»8″>
    <Elem name=»t1″ type=»ushort» byteOrder=»» />
    <Elem name=»t2″ type=»ushort» byteOrder=»» />
    <Elem name=»t3″ type=»ushort» byteOrder=»» />
    <Elem name=»t4″ type=»ushort» byteOrder=»» />
    <Elem name=»t5″ type=»ushort» byteOrder=»» />
    </ElemGroup>
    <ElemGroup name=»gr2″ tableType=»DiscreteInputs» address=»0″>
    <Elem name=»t10″ />
    <Elem name=»t11″ />
    <Elem name=»t12″ />
    <Elem name=»t13″ />
    <Elem name=»t14″ />
    <Elem name=»t15″ />
    <Elem name=»t16″ />
    <Elem name=»t17″ />
    </ElemGroup>
    </ElemGroups>
    <Cmds />
    </DevTemplate>

    Vyacheslav
    Участник

    RapidScada написана с использованием платформы .NET.
    В вашей задаче непонятно в какой части системы вам необходимо манипулировать данными. К примеру RSCADA можно разделить на 2 части. 1 часть это коммуникатор и его драйверы. 2 часть сервер и его модули.

    Если вас интересует формат сохранения данных в архив, то используется ниже следующая схема.

    * Data types and data representation:
    * type 0: integer (Int32)
    * type 1: float (Double)
    * type 2: boolean (Byte)
    * 0 — false, otherwise true
    * type 3: date and time (Double)
    * Delphi data format is used
    * type 4: UTF-8 string with maximum data size UInt16.MaxValue — 2
    * String data size (UInt16)
    * String data (Byte[])
    */

    Для хранения значения используется тип Double. То есть вам как минимум не хватает еще 2 байт. Если сериализатор скады сможет привести ваши 6 байт к типу Double то возможно все прокатит.

    Если вам просто необходимо сформировать массив то к типам DateTime скорей всего привязываться не стоит. Формируйте пакет байт в нужном порядке и отправляйте напрямую в прибор через коммуникатор, например в собственном драйвере KP. На мой взгляд наглядной реализацией для этого может быть вот этот пример: https://github.com/RapidScada/scada/blob/master/ScadaComm/OpenKPs/KpSms/KpSmsLogic.cs

    в ответ на: Тестирование работы SCADA системы #1651
    Vyacheslav
    Участник

    Для тестирования OPC обычно использую Graybox Simulator. http://gray-box.net/download_graysim.php?lang=ru

    Есть еще КРУГ до 30 тегов бесплатный с возможностью симуляции: http://www.krug2000.ru/products/ppr/opc/opc-server-modbus.html

    в ответ на: Библиотека рисунков #1593
    Vyacheslav
    Участник

    А вариант с Тип представления Пользовательская веб-страница не подойдет?
    https://github.com/RapidScada/scada/blob/master/ScadaWeb/WebPageSample/custom/WebPageSample.aspx

    Для скачивания на сайте есть ссылки на которых написано source в разделе демонстрация:
    http://svgmnemo.ru/mns/borders/mns.html

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

    Но лучше размещать их на вебстранице и через js скрипты манипулировать их свойствами.

    в ответ на: Библиотека рисунков #1577
    Vyacheslav
    Участник

    Как вариант можно попробовать использовать готовые SVG. Лицензия на сколько понял свободная.

    http://svgmnemo.ru/
    http://jsgadget.ru/jschart.html

    Vyacheslav
    Участник

    Там вроде нет никакой конвертации. Устанавливайте иксаморин импортируйте необходимый проект. В юникс среде у вас используется моно. И практически все отличие будет в путях и способе запуска. В винде по умолчанию разработчики используют сервис и собственную визуальную оснастку для него. В линухе через скрипты.

    Там есть другой нюанс. Из за первоначальной ориентированности на винду в пространстве имен относящихся (опять же мое предположение) к scada.data присутсвует куча кода, которая к работе с данными не относится. То есть это все что связано с UI инструментами для для управления коммуникаторами и сервером. Причем зависимость этого кода жестко завязана на версионности инструментов разработки, хотя основные библиотеки работы с данными формально не изменились. ТО есть в архитектуре образовался некий монолит библиотек, которые по сути должны быть независимы.

    И вот конечно если приводить архитектуру SCADA к универсальности, гибкости и независимости северной (сервер, коммуникатор) части от клиентской (UI оснастки для управления) , то я бы например вывел все взаимодействие в универсальное API например через вебсервисы (WCF). Тогда клиентскую часть можно было бы выстроить например на JavaScript либо другом удобном для пользователя языковом инструменте.

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

Просмотр 11 сообщений - с 31 по 41 (из 41 всего)