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

Делись идеей, получай поддержку и критику!
ujin1
adviser
adviser
Сообщения: 231
Зарегистрирован: 06 ноя 2020, 15:37
Версия LabVIEW: 19
Благодарил (а): 18 раз
Поблагодарили: 37 раз
Контактная информация:

контроллер из промкомпьютера на ОС 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 МБ) 214 скачиваний
Хотелось бы посмотреть работающие примеры кода по этой теме. Так же примеры реализации http сервера на NI Linu RT (без Silverlight).
Небольшой видеоотчет. Подключение 20 клиентов. Загрузка не поддерживается, поэтому ссылка
Изображение
ujin1
adviser
adviser
Сообщения: 231
Зарегистрирован: 06 ноя 2020, 15:37
Версия LabVIEW: 19
Благодарил (а): 18 раз
Поблагодарили: 37 раз
Контактная информация:

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

Сообщение ujin1 »

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

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

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

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

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

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

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

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

Сообщение ujin1 »

Artem.spb писал(а): 07 ноя 2020, 21:42 И для видео есть коды, кнопки в конце меню редактирования.
Спасибо.
Artem.spb писал(а): 07 ноя 2020, 21:42 Тут уже зависит от задачи - нужно просто данные видеть, или какое-то взаимодействие с системой требуется?
Сейчас реализовано примерно следующее:
Аналоговые параметры передаются двумя таблицами: таблица значений и таблица состояний (AIState)
Из инструкции по обмену:
Аналоговый параметр Labview.pdf
(704.76 КБ) 203 скачивания
Так же организовать полноценное взаимодействие. Например обмен с аналоговым механизмом производится через 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 КБ) 188 скачиваний
Все это сейчас реализовано через OPC сервер или shared переменные или JSON TCP сервер. Задача сделать то же самое через веб сервер. С полноценными картинками, кнопками.
Кусок из этого пробовал вывести на сайт через HTTP request. Вывел один механизм и один параметр. Пока все тормозит.
Пока нахожусь на стадии изучения методов взаимодействия с веб сервером.
Буду благодарен за примеры кода по обмену данными между веб сервером и приложением labview, используемые на практике.
Изображение
Artem.spb

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

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

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

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

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 Автор
professor
professor
Сообщения: 3391
Зарегистрирован: 31 июл 2011, 23:05
Награды: 2
Версия LabVIEW: 12-18
Благодарил (а): 49 раз
Поблагодарили: 172 раза
Контактная информация:

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

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

ujin1 писал(а): 10 ноя 2020, 06:40 Вопрос как получить такую же картинку и взаимодействие как получено у меня при других способах обмена.
Или я проглядел, или "как" нам неизвестно. Потому и советы давать сложно.
Видимо опять придется затратить кучу времени.
При обучении такое часто бывает. На готовом научиться мало толку. Надо поднапрячься :)
Аватара пользователя
Select
developer
developer
Сообщения: 281
Зарегистрирован: 12 дек 2017, 23:56
Версия LabVIEW: 18
Откуда: Врата надежды.
Поблагодарили: 2 раза

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

Сообщение Select »

Хоть тема и в дрейфе, но хотелось бы узнать чем эта история закончилась или у нее есть продолжение.
Тема Софт Контроллеров на базе х86 во многих удачных попытках ее реализации всегда находится в серой, буферной зоне на стыке противоборствующих технологий, верней
тех, кто их представляет.
Мой проект по сравнению с Вашим SoftPLC имеет крен в сторону эмбеддинга, т.н. дерзкая попытка переноса логики MCU в CPU и отказа от апартаной проприетарной внешней зависимости.
Кстати, если что, Вы не одинокий волк, очень рядом с Ваашим проектом есть успешный проект на х86 под стандарт IEC 61131-3.

Здесь его детальный обзор:


Увы дальнейшая история проекта не известна, в сети мелькают торговые полки с этим продуктом, но реальная картина не ясна и их инженеры на запросы не отвечают.
Моя история - в массы пока не выстреливает, участие в клиентских заказах присутствует, чем подтверждает наличие
параллельного мира
... :bye:
LabView 14,18
ujin1
adviser
adviser
Сообщения: 231
Зарегистрирован: 06 ноя 2020, 15:37
Версия LabVIEW: 19
Благодарил (а): 18 раз
Поблагодарили: 37 раз
Контактная информация:

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

Сообщение ujin1 »

Select писал(а): 21 авг 2023, 07:55 Кстати, если что, Вы не одинокий волк, очень рядом с Ваашим проектом есть успешный проект на х86 под стандарт IEC 61131-3.
Здесь его детальный обзор:
4 000 у.е без модулей ввода-вывода.
Всего по этому проекту я использовал 4 компьютера по 400у.е. Все нормально отработали до прошлого года. А дальше релоцировались и пока не работают. И скорее всего не заработают, потому что нормативы не позволяют.
WEB интерфейс я приаттачил. Скачал библиотеку WEB Socket. Переработал для непрерывной работы и одновременного подключения нескольких клиентов по типу библиотеки Modbus Slave.
Сама страничка делается на G WEB Development.
Строку управления и контроля, параметры так как и планировал передаю через WEB Socket упаковывая в строку JSON.
Все компоненты проекта выполнены и работают:
Modbus TCP master/slave
Modbus RTU/ASCII master/slave
OPC UA server/client
Web socket server
PostgreSQL server/client
Этот проект пока закрыт. Все эти компоненты я перенес на raspberry pi кроме 485 интерфейса. Пока над ним работаю. А для этого нужно разобраться с тулчейнами для программирования на С/С++.
А 485 интерфейс пока подключил через преобразователь Ethernet - 485.
Изображение
Аватара пользователя
Select
developer
developer
Сообщения: 281
Зарегистрирован: 12 дек 2017, 23:56
Версия LabVIEW: 18
Откуда: Врата надежды.
Поблагодарили: 2 раза

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

Сообщение Select »

О как, один подкаст остался без предмета обсуждения. Что так?
Существует ли у проекта сайт или что либо на GitHub?
Да Адвантек похоже не думали о философии концепта, в результате сделали по цене самолета.
Было бы интересно ознакомится с аппаратной реализацией проекта, Вы строите это фреймворк под конкретный контроллер, или я что-то пропустил, или собираетесь строить библиотеки по производителям?
Предоставляют ли в таком случае такие производители на свое железо SDK? Как Вы собираетесь обходить такие углы?
Как понимаю, по интерфейсу RS485, есть специфические проблемы с драйвером VISA. Или Вам удалось это тулс успешно интегрировать в Linux (64?) сборку?
Буду очень благодарен, если поделитесь опытом установки.
Так же интересно, имеется ли возможность в :labview: по настройкам Ethercat?
LabView 14,18
ujin1
adviser
adviser
Сообщения: 231
Зарегистрирован: 06 ноя 2020, 15:37
Версия LabVIEW: 19
Благодарил (а): 18 раз
Поблагодарили: 37 раз
Контактная информация:

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

Сообщение ujin1 »

Select писал(а): 21 авг 2023, 11:55 О как, один подкаст остался без предмета обсуждения. Что так?
Не понял вопроса
Select писал(а): 21 авг 2023, 11:55 Существует ли у проекта сайт или что либо на GitHub?
Есть инструкция по установке NI Linux RT здесь на форуме. Есть переработанные стандартные библиотеки Modbus, WebSocket на Github.
OPC server от NI стандартный. Он в виде библиотек *.so и в нем ничего не поменять.
PostgreSQL сервер устанавливается стандартно по инструкции от NI из репозитория NI. Интерфейс к серверу через вызовы функций библиотеки libpq. Тоже все существенно доработано. На гитхабе нет, так как бардак в библиотеке.
Select писал(а): 21 авг 2023, 11:55 Было бы интересно ознакомится с аппаратной реализацией проекта, Вы строите это фреймворк под конкретный контроллер, или я что-то пропустил, или собираетесь строить библиотеки по производителям?
Предоставляют ли в таком случае такие производители на свое железо SDK? Как Вы собираетесь обходить такие углы?
Аппаратная реализация: Промышленный компьютер с двумя Ethernet портами. Первый порт для внешней сети к скаде, второй локальный к модулям ввода вывода. Модули ввода вывода в основном Modbus TCP от ICPDAS. У нас в основном температурные измерения а у ICPDAS входы выдерживают 240В. Впрочем как и у модулей NI. Но контроллер CRIO от NI нам купить так и не удалось. Сначала получилось обойтись тем что было под рукой и не требовало согласования с юристами и финансистами, а потом и санкции подоспели.
Даже LabVIEW была использована сначала 6 версии.
На последовательных портах стоят изолирующие преобразователи RS 232/485.
Из протоколов использовал Modbus TCP, Modbus RTU, ELAN, Протокол обмена с шаговыми двигателями SMSD-LAN. И всякие текстовые строки от весов
Select писал(а): 21 авг 2023, 11:55 Как понимаю, по интерфейсу RS485, есть специфические проблемы с драйвером VISA. Или Вам удалось это тулс успешно интегрировать в Linux (64?) сборку?
Это не сборка Linux. Linux не является системой реального времени. Сборку от NI они считают OC реального времени, но с оговоркой что не "жесткого" реального времени.
Хотя если нужен цикл 100 мс и из задач только LabVIEW с Postgress думаю любая консольная сборка Linux подойдет.
В NI Linux RT последовательные порты видны сразу после установки. В основе NI Linux RT OpenEmbedded framework видимо драйвера есть разные для последовательных портов
Select писал(а): 21 авг 2023, 11:55 Так же интересно, имеется ли возможность в :labview: по настройкам Ethercat?
Только с одним сетевым адаптером i210 viewtopic.php?p=87156#p87156
Изображение
Аватара пользователя
Select
developer
developer
Сообщения: 281
Зарегистрирован: 12 дек 2017, 23:56
Версия LabVIEW: 18
Откуда: Врата надежды.
Поблагодарили: 2 раза

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

Сообщение Select »

В NI Linux RT последовательные порты видны сразу после установки. В основе NI Linux RT OpenEmbedded framework видимо драйвера есть разные для последовательных портов
Это как то сразу присутствует по факту установки :labview: или без танцев с бубном не пойдет?
Пороюсь на досуге, вдруг это решаемо и я переброшу свой проект на линух, впрочем и под Win LTSC мягкий реал тайм вполне на 95% автоматики рулит.
В моем случае по температурам, как и прочими датчиками я работаю с аналоговыми комплектами и счет провожу по падениям напряжений, дальше вводится попрочный к-нт для перерасчета в температуру и прочие попугаи (ADC 12 bit, 0.001 - 3.300V, 10 каналов на порт). С NI DAQ не работаю, предпочитаю альтернативу с работой через UART.
LabView 14,18
ujin1
adviser
adviser
Сообщения: 231
Зарегистрирован: 06 ноя 2020, 15:37
Версия LabVIEW: 19
Благодарил (а): 18 раз
Поблагодарили: 37 раз
Контактная информация:

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

Сообщение ujin1 »

Select писал(а): 21 авг 2023, 14:52 Это как то сразу присутствует по факту установки :labview: или без танцев с бубном не пойдет?
Сразу.
Еще раз уточню чипсет на базе процессора AMD64 - Intel, AMD (не ARM и т.д). Порты будут определяться не как как в Windows COM1, COM2 ..., а ASRL1::INSTR, ASRL2::INSTR ...
Компьютер будет видно в NI MAX как контроллер CRIO и так же будут видны порты.
Изображение
ujin1
adviser
adviser
Сообщения: 231
Зарегистрирован: 06 ноя 2020, 15:37
Версия LabVIEW: 19
Благодарил (а): 18 раз
Поблагодарили: 37 раз
Контактная информация:

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

Сообщение ujin1 »

Вся эта конфигурация работает на OrangePi zero за 25 у.е. какие там 4000.
IMG_20230821_202800_509.jpg
Изображение
Аватара пользователя
Select
developer
developer
Сообщения: 281
Зарегистрирован: 12 дек 2017, 23:56
Версия LabVIEW: 18
Откуда: Врата надежды.
Поблагодарили: 2 раза

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

Сообщение Select »

ще раз уточню чипсет на базе процессора AMD64 - Intel, AMD (не ARM и т.д)
Это что-то новое? таких не встречал, там на сколько я помню все идет на Quad-core Cortex-A7 H.265, 600MHz


В моем случае, если говорить о формфакторе SBC, то это была стартовая 0.1 версия LfttePanda
Изображение
CPU Intel Z8350, 1.92GHz
2GB/32GB
c OEM лицензией Win 10 LTSC
$75
пытался с ними договариваться на прямую о постпродажной предустановке на 100 штук, но они не отвечают, там всем у них рулит эксклюзивный дистрибютер
который склонен в сторону ардуино проектов и прочих хоббийных поделок, на борту стоит атмеговский Leonardo 32u4 ARM с GPIU под эксперементы.
Мой скомпилированный инсталянт весит 350 Mb в комплекте с драйвером CH340 и встал там как на обычном ПК.
Так же было множество успешных тестов и на не бюджетных таблетах под тачскрин управлением.
LabView 14,18
Ответить
  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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