LV на OrangePi

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

LV на OrangePi

Сообщение ujin1 »

LabVIEW устанавливается и работает на Orange Pi c процессором H3.
Установка по инструкции на raspberry.
Работает TCP соединение.
Устанавливается и работает postgresql сервер и клиент из LabVIEW.
Входы выходы из LINX toolkit не работают. Нужно разбираться с использованием WiringOP из Labview
Стоимость Orange Pi Zero около 1500 руб.
Думаю для обучения и всяких игрушек может подойти.
Запуск программы LabVIEW
Изображение
ujin1
adviser
adviser
Сообщения: 231
Зарегистрирован: 06 ноя 2020, 15:37
Версия LabVIEW: 19
Благодарил (а): 18 раз
Поблагодарили: 37 раз
Контактная информация:

Re: LV на OrangePi

Сообщение ujin1 »

Инструкция
1. Загрузить ОС armbian https://www.armbian.com/orange-pi-zero/
2. При первоначальной загрузке создать пользователя admin, задать пароль
3. Введите команды из блока ниже.
Примечание: текст может переноситься из-за размера окна веб-браузера. Я рекомендую скопировать текст в текстовый редактор, чтобы увидеть исходное форматирование.
4. Установка LINX

Код: Выделить всё

1.	# Update Armbian
admin@orangepizero:~$ sudo apt-get update
admin@orangepizero:~$ sudo apt-get dist-upgrade -y
2.	# Add the LINX repository
admin@orangepizero:~$ sudo sh -c 'echo "deb [trusted=yes] http://feeds.labviewmakerhub.com/debian/ binary/" >> /etc/apt/sources.list'
3.	admin@orangepizero:~$ sudo apt-get update
4.	# Install the LINX package. Error messages will be displayed for the
nisysserver.service and labview.service
admin@orangepizero:~$ sudo apt-get install -y lvrt21-schroot
5.	# link liblinxdevice.so to the Raspberry PI device driver file liblinxdevice_rpi2.so
admin@orangepizero:~$ sudo schroot -c labview -d /usr/lib -- ln -s liblinxdevice_rpi2.so liblinxdevice.so
5. Отредактировать /etc/systemd/system/labview.service

Код: Выделить всё

admin@orangepizero:~$ sudo nano /etc/systemd/system/labview.service

[Unit]
Description=LabVIEW 2021 chroot run-time daemon
After=networkg.service

[Service]
Type=forking
PIDFile=/run/lvrt.pid
ExecStartPre=/usr/sbin/schroot-lv-start.sh
ExecStart=/usr/bin/schroot --run-session -c lv -- /etc/init.d/nilvrt start
ExecStop=/usr/bin/schroot --run-session -c lv -- /etc/init.d/nilvrt stop
ExecStopPost=/usr/bin/schroot --end-session -c lv

[Install]
WantedBy=multi-user.target
After=networkg.service => After=networkging.service
6. reboot

Код: Выделить всё

# check status nisysserver.service
admin@orangepizero:~$ sudo systemctl status nisysserver.service
● nisysserver.service - NI System Web Server (emulated)
     Loaded: loaded (/etc/systemd/system/nisysserver.service; enabled; vendor preset: enabled)
     Active: active (running) since Fri 2022-07-01 19:32:50 +07; 3 days ago
   Main PID: 719 (NISysServer.py)
      Tasks: 1 (limit: 905)
     Memory: 6.5M
        CPU: 1min 44.678s
     CGroup: /system.slice/nisysserver.service
             └─719 /usr/bin/python /usr/sbin/NISysServer.py

Jul 01 19:32:50 orangepizero systemd[1]: Started NI System Web Server (emulated).
Jul 01 19:32:57 orangepizero NISysServer.py[719]: 127.0.0.1 - - [01/Jul/2022 19:32:57] "GET publish?Main%20Application%20Instance>
Jul 01 19:48:21 orangepizero NISysServer.py[719]: 127.0.0.1 - - [01/Jul/2022 19:48:21] "GET publish?Main%20Application%20Instance>
lines 1-13/13 (END)
# check status labview.service
admin@orangepizero:~$ sudo systemctl status labview.service
● labview.service - LabVIEW 2021 chroot run-time daemon
     Loaded: loaded (/etc/systemd/system/labview.service; enabled; vendor preset: enabled)
     Active: active (running) since Fri 2022-07-01 19:48:21 +07; 3 days ago
    Process: 1846 ExecStartPre=/usr/sbin/schroot-lv-start.sh (code=exited, status=0/SUCCESS)
    Process: 1994 ExecStart=/usr/bin/schroot --run-session -c lv -- /etc/init.d/nilvrt start (code=exited, status=0/SUCCESS)
   Main PID: 1998 (MainAppThread)
      Tasks: 0 (limit: 905)
     Memory: 60.0K
        CPU: 1.136s
     CGroup: /system.slice/labview.service
             ‣ 1998 ./lvrt

Jul 01 19:48:20 orangepizero systemd[1]: Starting LabVIEW 2021 chroot run-time daemon...
Jul 01 19:48:21 orangepizero schroot-lv-start.sh[1847]: lv
Jul 01 19:48:21 orangepizero schroot[1994]: pam_unix(schroot:session): session opened for user root(uid=0) by (uid=0)
Jul 01 19:48:21 orangepizero schroot[1994]: pam_unix(schroot:session): session closed for user root
Jul 01 19:48:21 orangepizero systemd[1]: Started LabVIEW 2021 chroot run-time daemon.
7. Установка дополнительного программного обеспечения
7.1. MidnightCommander, htop

Код: Выделить всё

admin@orangepizero:~$ sudo apt-get install mc
admin@orangepizero:~$ sudo apt-get install htop
8. postgresql

Код: Выделить всё

admin@orangepizero:~$sudo apt-get install postgresql postgresql-client
   postgresql-contrib
admin@orangepizero:~$ sudo -u postgres psql
postgres=# \password postgres
   Enter new password for user "postgres":
   Enter it again:
postgres=#
8.1. pg_hba.cof добавить

Код: Выделить всё

host	all	all	192.168.0.1/24	md5(trust)
8.2. postgresql.conf раскомментировать и изменить

Код: Выделить всё

listen_address = ‘*’	#
8.3. Autostart postgresql

Код: Выделить всё

# Autostart postgresql
   admin@orangepizero:~$ sudo systemctl enable postgresql
   admin@orangepizero:~$ sudo systemctl restart postgresql
8.4. Install postgresql client to schroot

Код: Выделить всё

# Add feeds.angstrom repository
# run schroot session
  admin@orangepizero:~$ sudo schroot --run-session -c lv
# Add repository
  admin@orangepizero:~$ sudo sh -c 'echo "src/gz uri-armv6-vfp http://feeds.angstrom-distribution.org/feeds/v2014.12/ipk/glibc/armv6-vfp/base" >> /etc/opkg/base-feeds.conf'
  admin@orangepizero:~$ opkg update
  admin@orangepizero:~$ opkg install postgresql-client
   postgresql-contrib
  admin@orangepizero:~$ logout
# leave schroot session
# link libpq.so to the Raspberry PI device driver file libpq.so.5.??
   admin@orangepizero:~$ schroot -c labview -d /usr/lib -- ln -s /usr/lib/arm-linux-gnueabihf/libpq.so.5.11 libpq.so
11. Установка драйверов для работы с GPIO (не проверено)

Код: Выделить всё

# Download
apt-get install -y git
git clone https://github.com/orangepi-xunlong/wiringOP.git
# Installation
# cd wiringOP
# ./build clean
# ./build
admin@orangepizero:~$ gpio readall
 +------+-----+----------+------+---+  OPi H2  +---+------+----------+-----+------+
 | GPIO | wPi |   Name   | Mode | V | Physical | V | Mode | Name     | wPi | GPIO |
 +------+-----+----------+------+---+----++----+---+------+----------+-----+------+
 |      |     |     3.3V |      |   |  1 || 2  |   |      | 5V       |     |      |
 |   12 |   0 |    SDA.0 |  OFF | 0 |  3 || 4  |   |      | 5V       |     |      |
 |   11 |   1 |    SCL.0 |  OFF | 0 |  5 || 6  |   |      | GND      |     |      |
 |    6 |   2 |      PA6 |  OFF | 0 |  7 || 8  | 0 | OFF  | TXD.1    | 3   | 198  |
 |      |     |      GND |      |   |  9 || 10 | 0 | OFF  | RXD.1    | 4   | 199  |
 |    1 |   5 |    RXD.2 |  OFF | 0 | 11 || 12 | 0 | OFF  | PA07     | 6   | 7    |
 |    0 |   7 |    TXD.2 |  OFF | 0 | 13 || 14 |   |      | GND      |     |      |
 |    3 |   8 |    CTS.2 |  OFF | 0 | 15 || 16 | 0 | OFF  | SDA.1    | 9   | 19   |
 |      |     |     3.3V |      |   | 17 || 18 | 0 | OFF  | SCK.1    | 10  | 18   |
 |   15 |  11 |   MOSI.1 |  OFF | 0 | 19 || 20 |   |      | GND      |     |      |
 |   16 |  12 |   MISO.1 |  OFF | 0 | 21 || 22 | 0 | OFF  | RTS.2    | 13  | 2    |
 |   14 |  14 |   SCLK.1 |  OFF | 0 | 23 || 24 | 0 | OFF  | CE.1     | 15  | 13   |
 |      |     |      GND |      |   | 25 || 26 | 0 | OFF  | PA10     | 16  | 10   |
 +------+-----+----------+------+---+----++----+---+------+----------+-----+------+
 | GPIO | wPi |   Name   | Mode | V | Physical | V | Mode | Name     | wPi | GPIO |
 +------+-----+----------+------+---+  OPi H2  +---+------+----------+-----+------+
Ссылки
https://forums.ni.com/t5/NI-Linux-Real- ... anguage=en
https://www.labviewmakerhub.com/doku.ph ... -internals
http://feeds.angstrom-distribution.org/ ... -vfp/base/
Проверял, но с линуксом бывают разные варианты.
Изображение
ujin1
adviser
adviser
Сообщения: 231
Зарегистрирован: 06 ноя 2020, 15:37
Версия LabVIEW: 19
Благодарил (а): 18 раз
Поблагодарили: 37 раз
Контактная информация:

Re: LV на OrangePi

Сообщение ujin1 »

OPC UA сервер на OrangePi (проц AllWinner H3, H2+)
Скачать установить, активировать
NI Linux RT System Image
LabVIEW OPC UA Toolkit
Из архива
C:\Program Files (x86)\National Instruments\RT Images\OPCUA\20.6.0\Linux\armv7-a\niopcua.tar\data.tar.gz\data.tar\usr\local\natinst\lib\libni_opcua.so.20.6.0
Записать в OrangePi /run/schroot/mount/lv/usr/local/natinst/lib под рутом
Сделать 2 символические ссылки

Код: Выделить всё

sudo schroot -c labview -d /usr/local/natinst/lib -- ln -s libni_opcua.so.20.6.0 libni_opcua.so
sudo schroot -c labview -d /usr/local/natinst/lib -- ln -s libni_opcua.so.20.6.0 ni_opcua.so
Запустить сессию schroot

Код: Выделить всё

sudo schroot --run-session -c lv
Далее команды из postinst архива C:\Program Files (x86)\National Instruments\RT Images\OPCUA\20.6.0\Linux\armv7-a\niopcua.tar

Код: Выделить всё

chmod 755 "/usr/local/natinst/lib/libni_opcua.so.20.6.0"
chmod 755 "/usr/local/natinst/lib/libni_opcua.so"
chmod 755 "/usr/local/natinst/lib/ni_opcua.so"
# create certificate store
mkdir -p "/var/local/natinst/certstore/opcua"
# chown lvuser:ni "/var/local/natinst/certstore/opcua" lvuser:ni такого пользователя и группы нет - пропустить либо заменить на root:root если копировали не под root 
chmod 755 "/var/local/natinst/certstore/opcua"
# create xml files folder
mkdir -p "/usr/local/natinst/opcua"
# chown lvuser:ni "/usr/local/natinst/opcua" lvuser:ni такого пользователя и группы нет
chmod 755 "/usr/local/natinst/opcua"
Про schroot можно прочитать
https://www.labviewmakerhub.com/doku.ph ... -internals
Изображение
ujin1
adviser
adviser
Сообщения: 231
Зарегистрирован: 06 ноя 2020, 15:37
Версия LabVIEW: 19
Благодарил (а): 18 раз
Поблагодарили: 37 раз
Контактная информация:

Re: LV на OrangePi

Сообщение ujin1 »

Автоматический перезапуск labview.service при зависании сервиса Labview. Изменить /etc/system/system/labview.service

Код: Выделить всё

[Unit]
Description=LabVIEW 2021 chroot run-time daemon
After=networking.target postgresql.service
StartLimitIntervalSec=500
StartLimitBurst=5

[Service]
Type=forking
PIDFile=/run/lvrt.pid
Restart=on-failure
RestartSec=5s
ExecStartPre=/usr/sbin/schroot-lv-start.sh
ExecStart=/usr/bin/schroot --run-session -c lv -- /etc/init.d/nilvrt start
ExecStop=/usr/bin/schroot --run-session -c lv -- /etc/init.d/nilvrt stop
ExecStopPost=/usr/bin/schroot --end-session -c lv

[Install]
WantedBy=multi-user.target
Systemctl следит за работой сервиса и в случае выполнения недопустимых операций в сервисе, зависания сервиса закрывает, а в нашем случае перезагружает сервис.
Изображение
ujin1
adviser
adviser
Сообщения: 231
Зарегистрирован: 06 ноя 2020, 15:37
Версия LabVIEW: 19
Благодарил (а): 18 раз
Поблагодарили: 37 раз
Контактная информация:

Re: LV на OrangePi

Сообщение ujin1 »

Watchdog

Код: Выделить всё

admin@orangepizero:~$ sudo apt-get install watchdog
Настройка /etc/watchdog.conf. Раскомментировать

Код: Выделить всё

watchdog-device		= /dev/watchdog
watchdog-timeout	= 15
realtime		= yes
priority		= 1
max-load-5		= 18
max-load-15		= 12
Проверка статуса

Код: Выделить всё

admin@orangepizero:~$ systemctl status watchdog
● watchdog.service - watchdog daemon
     Loaded: loaded (/lib/systemd/system/watchdog.service; enabled; vendor preset: enabled)
     Active: active (running) since Thu 2023-06-15 08:37:39 +07; 21min ago
    Process: 1523 ExecStartPre=/bin/sh -c [ -z "${watchdog_module}" ] || [ "${watchdog_module}" = "none" ] || /sbin/mod>
    Process: 1524 ExecStart=/bin/sh -c [ $run_watchdog != 1 ] || exec /usr/sbin/watchdog $watchdog_options (code=exited>
   Main PID: 1526 (watchdog)
      Tasks: 1 (limit: 905)
     Memory: 440.0K
        CPU: 559ms
     CGroup: /system.slice/watchdog.service
             └─1526 /usr/sbin/watchdog

июн 15 08:37:39 dryer watchdog[1526]:  interface: no interface to check
июн 15 08:37:39 dryer watchdog[1526]:  temperature: no sensors to check
июн 15 08:37:39 dryer watchdog[1526]:  no test binary files
июн 15 08:37:39 dryer watchdog[1526]:  no repair binary files
июн 15 08:37:39 dryer watchdog[1526]:  error retry time-out = 60 seconds
июн 15 08:37:39 dryer systemd[1]: Started watchdog daemon.
июн 15 08:37:39 dryer watchdog[1526]:  repair attempts = 1
июн 15 08:37:39 dryer watchdog[1526]:  alive=/dev/watchdog heartbeat=[none] to=root no_act=no force=no
июн 15 08:37:39 dryer watchdog[1526]: watchdog now set to 16 seconds
июн 15 08:37:39 dryer watchdog[1526]: hardware watchdog identity: sunxi-wdt
Проверка срабатыватывания fork bomb. Через 16с компьютер должен перезагрузиться

Код: Выделить всё

admin@orangepizero:~$ :(){ :|:& };:
Изображение
ujin1
adviser
adviser
Сообщения: 231
Зарегистрирован: 06 ноя 2020, 15:37
Версия LabVIEW: 19
Благодарил (а): 18 раз
Поблагодарили: 37 раз
Контактная информация:

Re: LV на OrangePi

Сообщение ujin1 »

Автоматически запускаемое приложение при запуске контроллера:
Создать приложение в проекте для контроллера, скомпилировать, загрузить в контроллер - пункт меню Run as startup
Run as startup RT app.png
Отказаться перезагружать контроллер
Зайти в контроллер по SSH, перезагрузить сервис labview
Restart Labview.png
В итоге получаем приложение стартующее вместе с сервисом labview.
Сервис labview перезагружается при зависании (настройки выше)
Контроллер перезагружается при зависании Линукс.
Изображение
Ответить

Вернуться в «Среды разработки»