Показано с 1 по 3 из 3

Тема: Обновление приложения через Codesys в ПЛК210

  1. #1

    По умолчанию Обновление приложения через Codesys в ПЛК210

    Добрый день!

    Я использую обновление проекта через web-интерфейс -> Управление приложениями CODESYS. Этот механизм работает без нареканий, вопросов к нему нет. Сейчас у меня появилась задача обновлять приложение удалённо. Я организовал удалённый доступ к ПЛК210 через Wireguard, но появилось дополнительное условие: объект движется, связь может пропадать и появляться случайным образом и сидеть дежурить перед ПК в надежде, что связь появится, нет никакого желания.

    Существует ли какой-то стандартный способ OTA-обновления приложения CODESYS?

    Я ничего подобного не нашёл и начал писать свой костыль с примерно таким алгоритмом:
    0 - Создаётся папка с файлом обновления, доступная через интернет (конкретно сейчас использую расшаренную папку GoogleDrive)
    1 - Контроллер периодически проверяет папку из предыдущего шага и скачивает обновление в /home/root/Projects
    2 - ***Запускается скрипт, как на странице загрузки из web-интерфейса***
    Screenshot_3.png
    3 - Контроллер перезагружается
    4 - Конец

    Проблема сейчас с шагом 2. Приложение скачивается и кладётся в папку, аналогично тому, как это происходит при загрузке через web-интерфейс, но очевидно происходит что-то ещё при нажатии на кнопку "Запустить".

    Пожалуйста, подскажите либо какой-то опробованный способ автоматического обновления, либо ткните в сторону скрипта, который делает магию запуска приложения.

    Нашёл скрипт, который обновляет приложение с USB/SD флешек, но не хотелось бы делать это через внешние накопители, потому что:
    а - сейчас их нет.
    б - думаю, что это не слишком безопасно с точки зрения копирования моего приложения.

    Информация по моему контроллеру:

    Модель OWEN PLC210-03
    Серийный номер 84174230932478316
    Архитектура ARMv7 Processor rev 2 (v7l)
    Версия прошивки plc210 2.4.0601.0905
    Версия ядра 4.19.94-rt39-ti-owen-g14165aea90-owen10.57.1.18.16.8

  2. #2
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    13,595

    По умолчанию

    Добрый день.

    /home/root/Projects
    Это символическая ссылка на /root/Projects.

    Для обновления проекта нужно скопировать файлы загрузочного приложения в нужные папки из /root/CODESYS/PlcLogic (посмотрите на содержимое этой директории - интуитивно станет понятно, какие файлы куда копировать).

    После этого при необходимости можно очистить RETAIN-память:

    Код:
    service retain clear
    и перезапустить рантайм CODESYS для запуска нового проекта:

    Код:
    service codesys restart

  3. #3

    По умолчанию

    Добрый день, Евгений!

    Спасибо за быстрый ответ, в целом это помогло в моих поисках. Наверное, я в первом сообщении не смог донести то, что хотел в итоге получить. Я бы хотел, чтобы полностью сохранился и выполнял свою функцию раздел "Управление приложениями CODESYS" в web-интерфейсе ПЛК. Ну то есть чтобы моё автоматическое обновление из CODESYS не ломало бы внешний вид и логику указанного раздела, чтобы также подсвечивался синим активный проект и т.п. Наверное, можно это всё было бы решить через библиотеку FILE, но тасовать файлы через CODESYS для меня сейчас - это просто боль и унижение.
    Короче говоря, пришлось поковыряться в файлах ПЛК и там нашёлся prj-man.js, отвечающий за функционал вкладки "Управление приложениями CODESYS". Там я нашёл, во-первых, ссылку на баш-скрипт, который рассовывает файлы из архива с проектом в нужные места и перезагружает среду исполнения (т.е. делает то, что вы и рекомендовали), а во-вторых, название rpc-метода (или я хз как это назвать, честно говоря впервые в жизни видел джаваскрипт), который делает заданный проект "активным" во вкладке "Управление приложениями CODESYS".
    В итоге, кусок кода, который делает тоже самое, что и нажатие на кнопку "запустить" в web-интерфейсе, выглядит у меня так:
    Код:
    IF xOTA_UPDATE_ENABLE THEN
    	//тут выше скачали обновление проекта из облачной папки и положили этот архив в папку /home/root/Projects/APP_B
    
    	//магия ubus - дёргаем напрямую метод, который делает активной папку, в которой лежит наш проект
    	CmpSysExec.sysExecute('ubus call prjman set_actv $'{"name": "APP_B"}$'');
    	//запускаем скрипт, который распакует проект из нашей папки куда надо и перезапустит среду исполнения
    	CmpSysExec.sysExecute('/usr/bin/toprj.sh APP_B');
    END_IF

Похожие темы

  1. Импорт приложения с ПЛК200 на ПЛК210-1х
    от NataliaD в разделе ПЛК2хх
    Ответов: 1
    Последнее сообщение: 29.05.2024, 06:25
  2. Обновление прошивки СПК через Web
    от ASV_769 в разделе Помощь Разработчикам
    Ответов: 2
    Последнее сообщение: 07.02.2024, 18:24
  3. Ответов: 4
    Последнее сообщение: 11.11.2022, 12:55
  4. Обновление ПО через облако
    от Bariy в разделе Облачный сервис OwenCloud
    Ответов: 1
    Последнее сообщение: 22.01.2020, 13:05
  5. Обновление ПЛК 110-60 М02 через raspberry
    от Vitbas2 в разделе ПЛК1хх
    Ответов: 8
    Последнее сообщение: 24.04.2018, 06:56

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •