контроллер из промкомпьютера на ОС NI Linux RT

Делись идеей, получай поддержку и критику!
Ответить
ujin1
beginner
beginner
Сообщения: 28
Зарегистрирован: 06 ноя 2020, 15:37
Версия LabVIEW: 19
Благодарил (а): 1 раз
Поблагодарили: 1 раз

контроллер из промкомпьютера на ОС NI Linux RT

Сообщение ujin1 »

Сегодня завершил первый этап тестирования контроллера на базе промышленого компьютера ICO-300 E3815.
Характеристики: Intel Atom E3815 1.46Ггц, RAM 4GB, Диск 320 GB, 4 x RS-232/422/485, 2 x 10/100/1000 Ethernet
Установлена ОС NI Linu RT, NI RT target cRIO, PostgreSQL сервер 9.4 (из репозиторая NI)
Функции контроллера:
1. Чтение конфигурации из локального PostgreSQL сервера. База данных System. В конфигурации типы модулей, адреса, параметры,
привязка аналоговых, дискретных входов выходов к каналам модулей. Параметры нормализации сигналов. Параметры регуляторов.
Аварийные сигналы, привязка к входам или сигналам, параметры
2. Паралельный опрос 41 модуля ввода вывода серии ICPCON ET-7000. Протокол MODBUS TCP. Цикл опроса всех модулей 100 мс.
3. Нормализация сигналов. Запись в OPC сервер
4. Запись входных и расчтных параметров через локальный PostgreSQL сервер в базу Data
5. Формирование аварий. Запись текущих аварий в OPC сервер. Запись аварий в базу Data в таблицу аварийных сообщений
6. Управление 5 нагревателями. Обмен с виртуальными устройствами через OPC сервер. Вход управляющая JSON строка, выход JSON строка состояния
7. Запись сообщений от программы управления и виртальных устройств в базу Data
8. Выдача управляющих воздействий на модули ввода вывода.
9. Обмен с PostgreSQL сервером через родные библиотеки libpq.so.5

Циклы работы
Опрос 100-1000 мс (разный для разных модулей), запись параметров в OPC сервер 100-500 мс (разный для разных сигналов)
Обработка параметров, регуляторы, управление 100 мс
Запись параметров в базу асинхронная с циклом 10 с. дискретизация по времени 1с. Для сообщений 100 мс
Количество
модули ввода-вывода MODBUS TCP 41
аналоговые входы 81
дискретные входы 52
аналоговые выходы 21
дискретные выходы 33
параметры регуляторов 230
аварий 204
Загрузка процессора 35-45 %
Использование памяти 450 MB из 3,8 GB

Эта программа ранее была развернута на WIN 7 embedded x32. Удалось купить лицензионные копии. Сейчас не продают.
Такая же программа работает больше 2 месяцев. А первая на WIN 7 embedded x32 больше 3х лет. Причем уже почти год без перезагрузки.
Так же программа развернута на centos7 как в консольной версии так и в графической. Работает около 3 лет.
Только вместо OPC сервера обмен по JSON TCP сервер самопальный на основе MODBUS TCP.
Ранее копия на меньшее количество параметров была развернута на EBOX-3330 c 586 процессором 1 ГГц, память 1 ГB диск 8 GB
на Windows POSReady 2009 (так же с Postgresql сервером). Работает уже около 5 лет. Максимальный промежуток без перезагрузки около 8 месяцев.
И наконец все это добро удалось запустить на NI Linux RT. Система отработала неделю. Через месяц можно будет делать выводы о утечках памяти и стабильности.
ICO-300 E3815 стоит около 400 $.
На консольном centos 7 пробовал поднимать http сервер и обмениваться через запросы к локальному JSON серверу. Работает, но пока не используется.
В общем я сделал это. Затрачено достаточно много времени. Изучена куча материала - LabVIEW Core 1-3, AAL, Real-Time 1-2. Особенно помогает курс Real-Time 2.
Контроллер.pdf
Структура
(1.06 МБ) 35 скачиваний
Хотелось бы посмотреть работающие примеры кода по этой теме. Так же примеры реализации http сервера на NI Linu RT (без Silverlight).
Небольшой видеоотчет. Подключение 20 клиентов. Загрузка не поддерживается, поэтому ссылка
Изображение
ujin1
beginner
beginner
Сообщения: 28
Зарегистрирован: 06 ноя 2020, 15:37
Версия LabVIEW: 19
Благодарил (а): 1 раз
Поблагодарили: 1 раз

Обмен через shared переменные

Сообщение ujin1 »

Тест работы имитаторов модулей ввода вывода и ядра с тактом 10 мс.
Вместо реального опроса загружены 40 тестовых vi, которые записывают случайные значения в доступные им регистры.
Далее блок обработки нормализует, выставляет цвет, видимость, аварийные признаки. Все это записывается в shared переменные.
Имитатор скады считывает данные с контроллера по локальной сети. видео работы

Еще один тест на PHARLAP. Запущен MODBUS TCP слейв с тактом 1 мс. К слейву подключены 50 клиентов с другого компьютера. Цикл обмена 10 мс. 20 параметров в одном запросе.

В общем попробовано много чего при разработке данной конфигурации.
Изображение
Artem.spb

Activity Автор
doctor
doctor
Сообщения: 2366
Зарегистрирован: 31 июл 2011, 23:05
Награды: 2
Версия LabVIEW: 12-18
Благодарил (а): 12 раз
Поблагодарили: 54 раза
Контактная информация:

Re: Обмен через shared переменные

Сообщение Artem.spb »

Хотелось бы посмотреть работающие примеры кода по этой теме. Так же примеры реализации http сервера на NI Linu RT (без Silverlight).
Есть вкладка web servises, по крайней мере начиная с LabVIEW2015.
Я с её помощью несколько лет назад вполне успешный корпоративный веб-портал организовал, но без знаний основ фронт-енда (html+JS) не обойтись. Для этого варианта есть пример проекта (в примерах), по нему вполне можно разобраться что к чему.
Недавно проще сделал. Сайт на отдельном сервере живёт сам по себе. А моя программа периодически через ftp подменяет несколько изображений на новые, вот что получилось.
g2lPeuWFFVg
Тут уже зависит от задачи - нужно просто данные видеть, или какое-то взаимодействие с системой требуется?
ujin1
beginner
beginner
Сообщения: 28
Зарегистрирован: 06 ноя 2020, 15:37
Версия LabVIEW: 19
Благодарил (а): 1 раз
Поблагодарили: 1 раз

Re: Обмен через shared переменные

Сообщение ujin1 »

Artem.spb писал(а): 07 ноя 2020, 21:42 И для видео есть коды, кнопки в конце меню редактирования.
Спасибо.
Artem.spb писал(а): 07 ноя 2020, 21:42 Тут уже зависит от задачи - нужно просто данные видеть, или какое-то взаимодействие с системой требуется?
Сейчас реализовано примерно следующее:
Аналоговые параметры передаются двумя таблицами: таблица значений и таблица состояний (AIState)
Из инструкции по обмену:
Аналоговый параметр Labview.pdf
(704.76 КБ) 37 скачиваний
Так же организовать полноценное взаимодействие. Например обмен с аналоговым механизмом производится через JSON строки управление и состояние
Строка управления {"Z_HSw":1,"Z_HSetState":12,"Y_HSw":0,"Y_HSetState":4,"SP":350,"Y_H":56,"Reset_ALR":false}
Строка состояния {"Z":{"Z_Source":3,"Z_SetState":12,"Z_State":1,"Z_State_T":0,"ZM_State":1,"ZM_State_T":0,"ALR L1":true,"ALR L2":false,"HH_run":0},"Y":{"Y_Source":4,"Y_SetState":1,"SP_Set":300,"SP":300,"PV":21.4,"Y":0,"Y_State":{"code":3,"visible":true,"color":16774930},"YB":false},"ALR_Status":[{"status":true,"code":167,"level":1}]}
Из инструкции по обмену про аналоговый механизм:
Аналоговый механизм Labview.pdf
(600.1 КБ) 37 скачиваний
Все это сейчас реализовано через OPC сервер или shared переменные или JSON TCP сервер. Задача сделать то же самое через веб сервер. С полноценными картинками, кнопками.
Кусок из этого пробовал вывести на сайт через HTTP request. Вывел один механизм и один параметр. Пока все тормозит.
Пока нахожусь на стадии изучения методов взаимодействия с веб сервером.
Буду благодарен за примеры кода по обмену данными между веб сервером и приложением labview, используемые на практике.
Изображение
Artem.spb

Activity Автор
doctor
doctor
Сообщения: 2366
Зарегистрирован: 31 июл 2011, 23:05
Награды: 2
Версия LabVIEW: 12-18
Благодарил (а): 12 раз
Поблагодарили: 54 раза
Контактная информация:

Re: Обмен через shared переменные

Сообщение Artem.spb »

ujin1 писал(а): 09 ноя 2020, 05:28 по обмену данными между веб сервером и приложением labview, используемые на практике.
Я пока не понимаю ни задачи ни вопроса. И вообще, есть ли в ваших постах вопросы? :)
Для взаимодействия с сервером нужно знать устройство сервера.
И почему сервер должен быть именно htpp?
Если он самописный, так надо делать как проще.Если нужно сделать что-то многопользовательское, то другой разговор.
Как-то писал программу для отправки запросов в систему sms-уведомлений. Но коммерческий код показывать не могу, да и ничего особо сложного там нет. Опять же повторю: в примерах есть проект, реализующий веб-сервер.
Вот пример запроса этой темы с нашего форума.
post.png
post.png (25.53 КБ) 343 просмотра
ujin1
beginner
beginner
Сообщения: 28
Зарегистрирован: 06 ноя 2020, 15:37
Версия LabVIEW: 19
Благодарил (а): 1 раз
Поблагодарили: 1 раз

Re: Обмен через shared переменные

Сообщение ujin1 »

Artem.spb писал(а): 09 ноя 2020, 23:21 Я пока не понимаю ни задачи ни вопроса. И вообще, есть ли в ваших постах вопросы? :)
Вопрос как получить такую же картинку и взаимодействие как получено у меня при других способах обмена. И чтобы это работало на NI Linux RT. Для начала в многопользовательском режиме (до 10) без пароля, в локальной сети.
Просто масса информации по данному вопросу.
Что пробовал: Включать web server в Labview. Ограничение - нужен Silverlight
Взял некий пример с Http request. Коллега на JS накидал несколько картинок и запрос. Я из примера на PHP запрос к Labview через JSON строку к локальному JSON серверу. Долгий путь получился и это на centos7.
Смотрел пример JS запрос modbus TCP к локальному серверу. Не пробовал.
Еще способ коллега прорабатывал web socket. Пока не закончил проработку
Смотрел как сделано в NXG - сразу закипел мозг.
В приоритете было попробовать готовый пример если есть, второй приоритет реализацию с NXG.
В NXG не поддерживался cRIO. C 5 версии поддержка заявлена. И NXG очень тяжелый. У меня рабочий комп с Intel 5400 3.7 ГГц, 8 Гб еле вывозит.
Про вариант реализации - через ftp подставлять данные локальному сайту через файл на tmpfs знаю. Не пробовал.
Видимо опять придется затратить кучу времени.
Изображение
Artem.spb

Activity Автор
doctor
doctor
Сообщения: 2366
Зарегистрирован: 31 июл 2011, 23:05
Награды: 2
Версия LabVIEW: 12-18
Благодарил (а): 12 раз
Поблагодарили: 54 раза
Контактная информация:

Re: Обмен через shared переменные

Сообщение Artem.spb »

ujin1 писал(а): 10 ноя 2020, 06:40 Вопрос как получить такую же картинку и взаимодействие как получено у меня при других способах обмена.
Или я проглядел, или "как" нам неизвестно. Потому и советы давать сложно.
Видимо опять придется затратить кучу времени.
При обучении такое часто бывает. На готовом научиться мало толку. Надо поднапрячься :)
Ответить
  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Проекты»