-
Вложений: 6
PRG#33. Что такое методы, свойства, действия и переходы?
Вопрос: если нажать ПКМ на POU и выбрать команду Добавление объекта, то появляется возможность добавить в POU Действие, Метод, Переход и Свойство.
Что это и зачем это нужно? Это имеет отношение к объектно-ориентированному подходу (ООП)?
Ответ:
1.1 Действие позволяет выделить фрагмент POU в обособленный объект с собственным названием.
В других языках программирования аналогичные объекты называются процедурами (при этом действие является процедурой без параметров).
Преимущества использования процедур описаны в этой статье:
https://ru.wikipedia.org/wiki/%D0%9F...82%D0%B2%D0%B0
Например, вы замечаете, что в разных фрагментах вашего POU, реализующего машину состояний, вам приходится дублировать один и тот же код для возвращения на шаг ожидания команды и очистки используемых ресурсов.
В этом случае вы можете оформить его в виде действия с названием SwitchToIdle:
Вложение 60714
Теперь во всех фрагментах POU вы можете заменить повторяющие строки кода вызовом действия:
Код:
// ...
SwitchToIdle();
// ...
Если вам потребуется изменить этот код - то достаточно будет поменять его в действии, а не искать по всей программе.
Кроме того, действия являются неотъемлемой частью языка SFC - они используются для описания выполняемых на конкретном шаге команд:
Вложение 60715
Действие не является элементом ООП.
За исключением языка SFC - всегда предпочтительнее использовать метод, а не действие (его функциональность перекрывает функциональность действия).
Статьи из справки CODESYS:
https://help.codesys.com/webapp/_cds...rsion=3.5.17.0
https://help.codesys.com/webapp/_cds...rsion=3.5.17.0
1.2. Переход является аналогом действия, используемым в языке SFC для описания условий переходов между шагами (см. скриншот выше).
Это удобно для описания сложных условий, состоящих из нескольких строк кода - они бы загромождали блок-схему.
На блок-схеме переход отмечается заливкой правого верхнего угла соответствующего ему прямоугольника.
Справедливый вопрос - почему переход можно добавить к POU, который реализован не на языке SFC?
Ответ есть в баг-трекере CODESYS - это необходимо в тех случаях, когда ФБ на языке SFC, наследуемый от ФБ на другом языке, должен иметь доступ к условиям перехода своего базового ФБ.
Вложение 60716
Переход не является элементом ООП.
Статья из справки CODESYS: https://help.codesys.com/webapp/_cds...rsion=3.5.17.0
1.3. Метод представляет собой функцию, встраиваемую в ФБ и имеющую доступ к его переменным.
В отличие от действия - метод может иметь собственные входные, выходные и локальные переменные (а также константы).
Возвращаясь к примеру из п. 1.1 - предположим, после очистки ресурсов в зависимости от выполнения тех или иных условий нам требуется перейти на конкретный шаг машины состояний.
Код:
// как и функция - метод может иметь аргументы и возвращать значения
xIsStateSwitched := SwitchToState(eNewState := STATE.READ);
Метод может входить в состав интерфейса.
Метод является элементом ООП, но может успешно использоваться и в структурном программировании.
Статья из справки CODESYS: https://help.codesys.com/webapp/_cds...rsion=3.5.17.0
1.4. Свойство представляет собой переменную, для которой автоматически создаются методы чтения (Get) и записи (Set).
Это позволяет при чтении или записи переменной автоматически выполнить какой-либо фрагмент кода (например, провалидировать значение или отмасштабировать его).
Пример: пусть у нас есть ФБ TEST_FB с локальной переменной iSetpoint. В рамках нашей задачи представим, что ее значение должно принадлежать диапазону -10...10.
Вложение 60711
Добавим свойство Setpoint и в методе записи обеспечим ограничение значений переменной с помощью оператора LIMIT.
Вложение 60712
Таким образом, при записи значения в свойство из кода программы произойдет автоматический вызов метода Set и обработанное (ограниченное оператором LIMIT) значение свойства будет записано в переменную iSetpoint.
Доступ к свойству не требует вызова экземпляра ФБ:
Вложение 60713
Cвойство является элементом ООП.
Статьи из справки CODESYS: https://help.codesys.com/webapp/_cds...rsion=3.5.17.0
-
PRG#34. Где прочитать об использовании объектно-ориентированного подхода в CODESYS?
Вопрос: где прочитать об использовании объектно-ориентированного подхода (ООП) в CODESYS V3.5?
Ответ: объектно-ориентированный подход (ООП) - это устоявшаяся и хорошая известная методология программирования, которая не является какой-то уникальной чертой CODESYS V3.5.
Если вы ранее не использовали ООП - то изучать его на примере CODESYS будет не самой лучшей идеей из-за крайне ограниченного количества методических материалов (особенно для начинающих).
Желательно ознакомиться с концепцией ООП на примере какого-то enterprise-языка - например, Java (реализация ООП в CODESYS вдохновлена Java, используются те же самые ключевые слова - interface, extends, implements, super, this).
В интернете доступно множество книг, статей, обучающих курсов и учебных видео по этому вопросу.
Применение ООП неразрывно связано с системным подходом к проектированию ПО.
Чтобы научиться оценивать, продуктивно ли будет использовать ООП в рамках вашей конкретной задачи, и применять объектно-ориентированный дизайн при проектировании ПО - необходимо изучить соответствующую литературу (например - см. Грэди Буч. Объектно-ориентированный анализ и проектирование).
С терминологический точки зрения - говорить о примении ООП в CODESYS можно только при наличии осмысленного использования в вашем приложении наследования и полиморфизма
(абстракция и инкапсуляция и так являются неотъемлемой частью продуманного приложения для ПЛК - даже созданного в типичной для них парадигме структурного программирования).
Список материалов по использованию ООП при программировании ПЛК на языках стандарта МЭК 61131-3:
1. Wolfgang Horn, Michael Braun. Object-oriented Programming in SIMOTION
Это единственная известная мне книга, системно рассматривающая вопрос использования ООП для программирования ПЛК и рассчитанная в том числе на начинающих пользователей.
2. Обучающие материалы PLCopen. Руководство по применению объектно-ориентированного подхода
3. Швецов М. Л. CoDeSys V3 и объектно-ориентированные расширения языков МЭК 61131-3. Стратегическая идея или насущная необходимость?
4. Петров И. В. Объектно-ориентированное программирование CDS V3
5. Швецов М. Л. Эффективное применение ООП CODESYS на практике
6. Кузьмина Н. С. Объектно-ориентированное программирование в стандарте МЭК 61131-3
7. Хесс Д. Объектно-ориентированные расширения МЭК 61131-3
8. CoDeSys. Object-Oriented Controller Programming
9. OOP in CODESYS (часть 1, часть 2, часть 3)
10. Статьи из блога Стефана Хеннекена
11. Информация из онлайн-справки CODESYS
12. Информация из онлайн-справки Beckhoff
13. Вебинар по ООП от Beckhoff
14. Примеры использования ООП в CODESYS:
-
Вложений: 1
VISU#30. Как сделать всплывающее окно при появлении тревог?
Вопрос: можно ли сделать так, чтобы при возникновении тревог на основном экране визуализации появлялось всплывающее окно с уведомлением о возникшей тревоге?
Ответ: см. пример.
Вложение 60856
-
Вложений: 1
PRG#35. Как определить объем используемой/свободной RETAIN-памяти?
Вопрос: как определить объем используемой/свободной RETAIN-памяти?
Ответ: после выполнения команды Компиляция - Генерировать код на панели сообщений компиляции отображается информация об общей и свободной RETAIN-памяти
(параметр Наибольший непрерывный промежуток памяти). Соответственно, определить размер используемой в проекте RETAIN-памяти можно путем вычитания объема свободной RETAIN-памяти из общей.
Вложение 60930
-
PRG#36. Как перенести проект из старой версии CODESYS в V3.5 SP17 Patch 3?
Вопрос: наши проекты созданы в старых версиях CODESYS (V3.5 SP16 Patch 3, V3.5 SP14 Patch 3 и т.д.).
Как перенести их в версию V3.5 SP17 Patch 3?
Ответ: см. видео.
-
Вложений: 1
PRG#37. Как перенести установленные плагины с одного ПК на другой?
Вопрос: я использую CODESYS V3.5 SP17 Patch 3. С помощью CODESYS Installer обновил версии некоторых плагинов.
Как теперь перенести их на другой ПК, на котором нет интернета/нет возможности использовать VPN и т.д.?
Ответ: при загрузке плагина через CODESYS Installer его пакет (.package) сохраняется в директории C:\Users\<ваш пользователь>\AppData\Local\Temp\APInstaller\<дата загрузки плагина>.
Вы можете перенести эти пакеты на другой ПК и установить их через CODESYS Installer.
Вложение 61481
-
Вложений: 6
OTHER#12. Как отключить диагностику дискретных выходов в ПЛК210-03?
Вопрос: в проекте используется контроллер ПЛК210-03. Дискретные выходы контроллера не будут использоваться. На контроллере они светятся красным.
С точки зрения заказчика красные светодиоды - это плохо (авария и т.д.). Как их отключить и убрать красное свечение? Питание на выходы подано согласно схеме подключения.
Ответ: цвет индикаторов выходов в выключенном состоянии определяется по следующей схеме:
Вложение 61647
Общий принцип диагностики выходов и изменения цвета индикаторов выходов следующий:
Вложение 61657
Если в проекте выходы не будут использоваться (то есть к ним не будет подключена нагрузка), и при этом красное свечение индикаторов выходов нужно отключить, то:
1. Подайте питание на выходы согласно схеме подключения из РЭ.
Вложение 61655 Вложение 61656
2. Отключите диагностику быстрых дискретных выходов (FDO) в среде CODESYS:
в узле LeftSide на вкладке Конфигурация в параметре Режим включения дискретных выходов присвойте всем выходам значение TRUE.
Это переключит их в режим Верхний и нижний ключ, в котором диагностика выходов отключена.
Вложение 61648
3. Отключите диагностику обычных дискретных выходов (DO) в среде CODESYS:
в узле RightSide на вкладке Конфигурация в параметре Диагностика работы выходов и обрыва нагрузки присвойте всем выходам значение FALSE.
Вложение 61649
-
VISU#31. Медленное применение настроек тренда в плагине визуализации 4.2.0.0
Вопрос: используем CODESYS V3.5 SP17 Patch 3 с плагином визуализации 4.2.0.0.
Для элемента Тренд настроено управление видимостью перьев и диапазоном по оси Y - оператор в визуализации выбирает конкретное перо, после чего оно становится видимым, все остальные перья скрываются и устанавливается подходящий диапазон по оси Y. Но применение этих настроек происходит только спустя 10...30 секунд после выбора пера. С чем может быть связана эта проблема?
Ответ: в плагине визуализации 4.2.0.0 изменился механизм обновления трендов.
Теперь на него влияет переменная VisuElems.VisuElemBase.Visu_Globals.g_VisuTrendWit hTimeSelectorUpdateBehaviour; ее значение по умолчанию - 100.
(из-за особенностей нашего форума в имени переменной отображается лишний пробел)
Перерисовка тренда происходит с периодом = (время элемента выбора интервала дат) / VisuElems.VisuElemBase.Visu_Globals.g_VisuTrendWit hTimeSelectorUpdateBehaviour.
Вот так работает клиентский проект со значением этой переменной по умолчанию = 100:
https://ftp.owen.ru/CoDeSys3/95_Inte...aviour_100.mp4
А вот что будет, если присвоить ей значение 0 (не обязательно делать это циклически - достаточно присвоить переменной 0 в первом цикле контроллера):
https://ftp.owen.ru/CoDeSys3/95_Inte...ehaviour_0.mp4
При значении 0 обновление тренда происходит максимально быстро - как в прошлых версиях плагина визуализации.
Соответственно, такое поведение приводит к увеличению нагрузки на контроллер.
-
Вложений: 1
OTHER#13. Как определить, можно ли перепрошить ПЛК2xx на прошивку 2.4.xxxx.xxxx?
Вопрос: В ReadMe для прошивки 2.4.xxxx.xxxx написано следующее:
Цитата:
Для ПЛК210:
Перепрошивка с версии 1.2.xxxx.xxxx / 1.3.xxxx.xxxx на версию 2.4.xxxx.xxxx поддерживается только для устройств, выпущенных начиная с июля 2020 года (с 512 Мб flash-памяти).
Для ПЛК200:
Перепрошивка с версии 1.2.xxxx.xxxx / 1.3.xxxx.xxxx на версию 2.4.xxxx.xxxx поддерживается только для устройств, выпущенных начиная с марта 2021 года (с 512 Мб flash-памяти).
Как определить дату производства ПЛК и объем его flash-памяти?
Ответ: дату производства ПЛК можно определить по заводскому номеру.
В его 7-8 разрядах указан год производства прибора, а в 9-10 - месяц.
Пример заводского номера: 103026210832371658
Этот ПЛК произведен в августе 2021 года (08.21).
Но лучше ориентироваться на объем flash-памяти.
Перезагрузите ПЛК, откройте web-конфигуратор, перейдите на вкладку Состояние/Журналы и выполните поиск по слову nand.
В выводе отобразятся сообщения, в которых указан объем flash-памяти контроллера.
Вложение 62426
-
Вложений: 1
PRG#38. Как использовать блок ПИД для управления охладителем?
Вопрос: есть проект, в котором используется ФБ PID из библиотеки Util.
Выход данного регулятора предназначен для управления нагревателем.
Подскажите, что нужно сделать, если требуется управлять охладителем?
Ответ: умножьте коэффициент пропорциональности (значение на входе KP регулятора) на -1.
Вложение 62728
-
Вложений: 1
PRG#39. Как вызвать метод в языке CFC?
Вопрос: как организовать вызов метода на языке CFC?
Ответ: см. скриншот.
CreateRecipe - метод ФБ RecipeManCommands.
При вызове метода в языке CFC ко всем его входам и выходам обязательно должны быть привязаны переменные.
Вложение 62748
-
PRG#40. Как считать имя экземпляра ФБ в его коде для использования в логе ПЛК?
Вопрос: мы разрабатываем ФБ и планируем выводить информацию об ошибках, возникших в процессе его работы, в лог контроллера.
Для этого нужно в коде ФБ считать имя конкретного экземпляра этого ФБ.
Как это сделать?
Ответ: см. видео.
-
Вложений: 2
DEBUG#11. При переносе проекта в SP17 возникает ошибка "Идентификатор LANG не задан"
Вопрос: при переносе проекта в версию CODESYS V3.5 SP17 Patch 3 возникают следующие ошибки:
Вложение 65697
Как их исправить?
Ответ: ошибки связаны с библиотекой OwenVisuDialogs.
Для начала обновите версию библиотеки до 3.5.17.2.
После этого откройте библиотеку в Менеджере библиотек и выделите в ней узел KeypadDefaultLanguage.
В столбце Значение (редактируется) введите KEYPAD_LANG.RUS_LC, чтобы указать, что по умолчанию диалог KeypadOwen будет открываться с русской раскладой в нижнем регистре.
Можно указать и одно из других значений - KEYPAD_LANG.RUS_UC (верхний регистр), KEYPAD_LANG.ENG_LC или KEYPAD_LANG.ENG_UC.
После этого ошибки исчезнут.
Вложение 65698
-
Вложений: 1
OTHER#14. Как удалить пользователя виртуального контроллера?
Вопрос: я создал пользователя виртуального контроллера, но забыл его логин и пароль, и теперь не могу к нему подключиться. Как удалить пользователя?
Ответ: перейдите в папку C:\ProgramData\CODESYS\CODESYSControlWinV3\<иденти фикатор виртуального контроллера>\
Если у вас установлены несколько виртуальных контроллеров - то при выборе последней директории (у которой имя - идентификатор) ориентируйтесь на дату изменения (выбирайте директорию с самой недавней датой изменения).
Удалите все файлы формата .csv.
После этого перезапустите виртуальный контроллер, и вы сможете подключиться к нему без необходимости вввода логина и пароля.
Вложение 65863
-
Вложений: 3
COM#27. Как считать информацию диагностики компонентов Modbus в переменные программы?
Вопрос: в компонентах Modbus (ModbusTCP_Slave_Device, Modbus_TCP_Slave и Modbus_Slave_COM_Port) на вкладке Состояние отображается диагностическая информация. Как считать ее в переменные программы?
Вложение 66550
Ответ: см. пример.
В примере контроллер опрашивает сам себя по протоколу Modbus TCP и одно slave-устройство по протоколу Modbus RTU.
В переменные программы считывается информация диагностики по всем трем упомянутым выше компонентам.
Вложение 66551
В следующих версиях плагина CODESYS Modbus планируется реализовать более простой способ получения этой информации в программе пользователя:
Вложение 66555
-
Вложений: 2
VISU#32. Не удается ввести пароль пользователя визуализации в CODESYS V3.5 SP17
Вопрос: используем CODESYS V3.5 SP17 Patch 3. В web-визуализации не получается ввести пароль пользователя в стандартном диалоге VUM_Login - после ввода пароля кнопки OK и Cancel становятся неактивными, а сам диалог частично заливается цветом фона экрана. Вот видео с демонстрацией проблемы. В таргет-визуализации и сервисной визуализации, отображаемой в редакторе CODESYS, проблема не повторяется.
Такая же проблема возникает при вводе пароля в диалогах VUM_ChangePassword и VUM_UserManagement.
Ответ: это баг плагина визуализации 4.1.1.0.
Есть несколько способов его решения:
1. Установить и добавить в менеджер библиотек библиотеку OwenVisuDialogs версии 3.5.17.2 и использовать диалоги этой библиотеки LoginOwen2, UserChangePasswordOwen2 и UserMgmtConfigOwen2.
Их потребуется выбрать в Менеджере визуализации на вкладке Установки диалога:
Вложение 67670
При этом во время ввода пароль не будет скрываться "звездочками" - это нужно для обхода бага.
2. Если вы используете ПЛК2хх - то для устранения бага достаточно установить в Менеджере визуализации галочку Поддержка клиентских анимаций и наложение исходных элементов.
У СПК эта галочка недоступна.
Вложение 67671
3. Обновить плагин визуализации до версии 4.2.0.0 или выше. Актуальная версия плагина на май 2023 - это 4.3.0.0 (скачать).
Установка пакета плагина выполняется через CODESYS Installer. Рекомендуется перед обновлением плагина создать новое окружение (с помощью кнопки Add Installation), чтобы не перезаписать плагин в текущем окружении (иначе потребуется обновлять его при открытии всех проектов, в которых использовалась предыдущая версия плагина).
-
Вложений: 3
COM#28. ПЛК2xx - настройка статических маршрутов
Вопрос:
В нашей системе используются два ПК и два ПЛК210.
ПК1 подключен к ПЛК1 через интерфейс Eth3 (подсеть 192.168.2.x).
ПК2 подключен к ПЛК2 через интерфейс Eth3 (подсеть 192.168.22.x).
При этом ПЛК связаны между собой через интерфейс Eth1-2, настроенный в режиме моста (подсеть 192.168.70.x).
Вложение 67940
Соответственно, ПК1 может подключиться только к ПЛК1, а ПК2 - только к ПЛК2.
Как настроить систему таким образом, чтобы каждый ПК мог подключиться к обоим ПЛК?
Ответ:
1. В качестве шлюзов на ПК потребуется указать IP-адрес соответствующего ПЛК (см. рисунок выше). В ПЛК не следует указывать шлюзы.
2. В web-конфигураторе каждого ПЛК на вкладке Cеть/Статические маршруты нужно настроить статические маршруты:
Вложение 67939
Скачать информацию в виде памятки:
https://ftp.owen.ru/CoDeSys3/99_Foru...aticRoutes.pdf
Вопрос:
Мы используем ПЛК200. К одному из его портов подключен ПК, а к другому - модуль Mx210.
На каждом интерфейсе настроены разные подсети (на одном - 192.168.20.x, на втором - 10.2.25.x).
Как настроить систему таким образом, чтобы ПК мог подключиться к Mx210?
Ответ: в качестве шлюза на ПК потребуется указать IP-адрес сетевого интерфейса ПЛК, к которому подключен ПК. В ПЛК не следует указывать шлюзы.
В такой конфигурации запросы к подсети модуля будут обрабатываться центральным процессором ПЛК. Это приведет к увеличению времени цикла пользовательского приложения CODESYS.
Вложение 67941
-
Вложений: 3
COM#29. Обеспечение безопасного соединения по OPC UA
Вопрос: как обеспечить защиту данных при их передаче по протоколу OPC UA?
Ответ: CODESYS обеспечивает два способа защиты данных, передаваемых по OPC UA:
1. Защита подключения с помощью сертификата безопасности.
2. Использование для подключения логина и пароля.
Подробнее см. в видео.
Обратите внимание на ряд нюансов:
1. Использование логина/пароля возможно только совместно с сертификатом безопасности.
2. После генерации или импорта сертификата требуется перезагрузить контроллер или перезапустить рантайм CODESYS через web-конфигуратор (вкладка ПЛК/Настройки - кнопка Перезапустить CODESYS).
3. Для отображения в CODESYS на вкладке Символьные права созданных в символьной конфигурации наборов символов - требуется предварительно загрузить проект в контроллер:
Вложение 68219
4. После переноса сертификата клиента из папки Quarantined Certificates в Trusted Certificates - перезагрузка контроллера (и перезапуск рантайма) не требуется.
Подтверждение сертификата может занять до нескольких десятков секунд.
5. Если требуется при наличии логинов/паролей обеспечить и "анонимное" подключение по OPC UA - то необходимо в CODESYS в узле Device на вкладке Установки соединения выполнить следующую команду:
Устройство - Изменить политику соединения - установить галочку Анонимный логин
Вложение 68221
6. Если при подключении по OPC UA возникает ошибка 0x800A0000 (BadTimeout) - то увеличьте таймаут соединения в настройках OPC UA-клиента:
Вложение 68222
-
Вложений: 1
COM#30. Как считать информацию о тревогах ПЧВ AFD-E? (Modbus-функции 0x07 и 0x08)
Вопрос: для чтения информации о тревогах и диагностики ПЧВ AFD-E требуется использовать (см. п. 1.4 и 1.5) функции Modbus-функции 0x07 (Read Exception Status) и 0x08 (Diagnostics).
В стандартном компоненте Modbus эти функции не поддерживаются. Как можно считать с ПЧВ данную информацию?
Ответ: это можно сделать с помощью библиотеки OwenCommunication. См. пример реализации упомянутых функций Modbus с помощью этой библиотеки:
https://ftp.owen.ru/CoDeSys3/21_Exam...projectarchive
Вложение 69734
-
Вложений: 2
VISU#33. Почему в web-визуализации не работает зум на смартфоне?
Вопрос: почему в web-визуализации CODESYS, открываемой на смартфоне, не работает зуммирование с помощью жеста pinch?
Ответ: для возможности зуммирования с помощью жестов нужно в менеджере визуализации на вкладке Установки снять галочку Multitouch handling, а в узле WebVisualization снять галочку Handle touch as mouse events.
Вложение 69887 Вложение 69888
См. также VISU#16. Как вкл./откл. поддержку multi-touch для различных клиентов визуализации?
-
Вложений: 8
VISU#34. Формат базы данных элемента Тренд (.sqlite)
Вопрос: в CODESYS элемент визуализации Тренд сохраняет историю в виде файла .sqlite.
Я выгрузил этот файл из контроллера и открыл в программе DB Browser for SQLite.
В моем проекте CODESYS к тренду привязана единственная переменная типа REAL.
В таблице TblTrendData отображаются сохраненные данные, но их значения мне непонятны.
В каком формате они сохраняются? Почему столбцов значений именно 10?
Вложение 69935
Ответ:
1. Метка времени сохраняется формате Unix Timestamp в микросекундах.
https://www.epochconverter.com/
Вложение 69936
2. В DB Browser for SQLite при открытии файла тренда значения перьев всегда интерпретируются как целочисленные (INTEGER).
Фактически вы сейчас видите "сырые" данные с неверной интерпретацией.
Поменяйте формат отображения на HEX и скопируйте их в любой HEX-to-FLOAT конвертер - и вы увидите корректные значения.
https://www.h-schmidt.net/FloatConverter/IEEE754.html
Вложение 69938 Вложение 69939 Вложение 69940
К сожалению, мы не можем предоставить инструкцию или скрипт для DB Browser for SQLite для автоматической конвертации.
3. В таблице 10 столбцов, потому что в настройках тренда по умолчанию задано именно такое ограничение на максимальное число перьев.
Вложение 69937
Примечание: в истории тревог (которая тоже сохраняется в виде .sqlite) метка времени хранится уже в другом формате - LDAP timestamp.
https://www.epochconverter.com/ldap
Вложение 69943 Вложение 69944
-
OTHER#15. Как отключить возможность входа в экранный конфигуратор СПК?
Вопрос: нужно отключить для оператора возможность входа в экранный конфигуратор СПК.
Также хотелось бы скрыть прогресс-бар (и надписи над ним), отображаемый в процессе загрузки контроллера.
Как это можно сделать?
Ответ: подключитесь к контроллеру по SSH (с помощью утилиты типа Putty или через web-конфигуратор: вкладка Система - Терминал) и выполните команды:
Код:
uci set psplash.config.nomenu='1'
uci set psplash.config.enable_bar='0'
uci set psplash.config.enable_msg='0'
uci commit
-
Вложений: 4
DEGUG#12. Вопросы о сертификатах безопасности
Вопрос: при подключении к контроллеру появляется следующее сообщение:
Вложение 73301
При нажатии на кнопку Да открывается вкладка Безопасность, где несколько сертификатов выделено желтым цветом.
Вложение 73303
Что это означает и что делать?
Ответ: это просто информационное сообщение о том, что у вас истекает срок действия TLS-сертификатов.
Если вы используете их (например, для подключения к веб-визуализации по протоколу HTTPS или для шифрования трафика между средой CODESYS и контроллером) - то перегенерируйте их
(с помощью кнопки, выделенной на скриншоте выше).
Если вы их не используете - то можете не обращать внимание на эти сообщения.
Вопрос: в журнале контроллера отображаются следующие ошибки:
Вложение 73304
Что они означают?
Ответ: строго говоря, это не ошибки, а информационные предупреждения об отсутствии в контроллере TLS-сертификата для веб-визуализации.
В случае необходимости подключения к веб-визуализации по протоколу HTTPS сертификат можно сгенерировать через CODESYS (см. выше) или в веб-конфигураторе на вкладке ПЛК - Настройки.
В следующих версиях CODESYS эти сообщения перенесли из группы "ошибки" в группу "сообщения отладки":
Вложение 73433
-
Вложений: 2
VISU#35. Как отключить необходимость ввода пароля ПЛК для web-визуализации?
Вопрос: в контроллере был создан пользователь CODESYS, чтобы устранить возможность неавторизованного подключения из среды разработки.
После этого при попытке подключения к web-визуализации появляется окно с запросом на ввод логина и пароля этого пользователя:
Вложение 73585
Это неудобно - нужно, чтобы авторизация требовалась только при подключении из CODESYS.
Как отключить необходимость авторизации в web-визуализации?
Примечание: описанный ниже способ поддерживается только для ПЛК210-1x и СПК210.
Ответ:
1. Подключитесь к контроллеру с помощью WinSCP (или другим аналогичным SCP-клиентом).
2. Перейдите в рабочую директорию CODESYS (ПЛК210 - /root/CODESYS, СПК210 - /home/root/CODESYS_WRK).
3. Откройте файл CODESYSControl_User.cfg.
4. В секции [CmpWebServerHandlerV3] присвойте параметру AllowFileTransferServices значение 0.
Вложение 73586
5. Сохраните файл.
6. Перезапустите CODESYS (в веб-конфигураторе: ПЛК - Настройки - кнопка Перезапустить CODESYS) или перезагрузите контроллер.
Примечание: после этого перестанет работать функционал передачи файлов через визуализацию (Visu Transfer File).
Дополнение:
Для СПК1хх [М01], ПЛК210-0x и ПЛК200 процедура будет другой:
1. Подключитесь к терминалу Linux контроллера (например, через утилиту Putty или через web-конфигуратор: Система - Терминал).
2. Введите команду
Для СПК1хх [М01]:
Код:
chattr -i /home/root/CODESYS_WRK/CODESYSControl.cfg
Для ПЛК210-0x и ПЛК200:
Код:
chattr -i /root/CODESYS/CODESYSControl.cfg
3. Отредактируйте файл CODESYSControl.cfg (с помощью утилиты nano или другим удобным вам способом - через WinSCP и т. п.):
измените значение параметра AllowFileTransferServices на 0.
4. Сохраните файл.
5. Перезапустите CODESYS (в веб-конфигураторе: ПЛК - Настройки - кнопка Перезапустить CODESYS) или перезагрузите контроллер.
-
Вложений: 1
OTHER#16. Накопители для обновления прошивки/приложения - требования и рекомендации
Вопрос: периодически требуется обновить прошивку (или приложение CODESYS) контроллера с USB или SD накопителя.
С некоторыми накопителями получается, с некоторыми - нет.
В чём может быть дело?
Ответ: накопители, используемые для обновления прошивки/приложения CODESYS, должны соответствовать следующим требованиям:
1. Файловая система FAT32.
2. Один раздел на накопителе.
3. Стиль таблицы разделов - MBR.
4. Для USB-накопителей потребление тока должно соответствовать возможностям порта контроллера (см. информацию в руководстве по эксплуатации).
Если не получилось, то можно:
1. Отформатировать накопитель.
2. Попробовать другой накопитель.
https://owen.ru/forum/showthread.php...l=1#post429318
Вложение 73587
Тот факт, что накопитель определяется в Linux (например, вы видите это в CODESYS в узле Drives или web-конфигураторе) - не означает, что он подойдет для обновления прошивки/приложения с накопителя.
Основная причина, по которой подходят не все накопители - процесс обновления прошивки/приложения начинается в начальном загрузчике, у которого достаточно жесткие требования к таймингам накопителя.
Особенно часто возникают проблемы с USB flash от noname-вендоров.
Список накопителей, которые мы успешно используем у себя в офисе:
USB: Transcend JetFlash (серии 600, 590), Adata C008, Kingston DT R3.0 G2, Smartbuy (серия Quartz)
SD: Transcend, Kingston, Adata, Samsung (серия Evo Plus)
-
DEBUG#13. Не работает синхронизация по NTP
Вопрос: не получается настроить синхронизацию времени с NTP-сервером.
В чем может быть проблема?
Ответ:
1. Проверьте работу вашего сервера с каким-нибудь NTP-клиентом, запущенным на ПК.
2. Убедитесь, что в вашей сети не блокируются UDP-пакеты.
3. Если в качестве NTP-сервера используется cлужба W32tm (ОС Windows) - то NTP-клиент ПЛК, настраиваемый через web-конфигуратор (вкладка Система - Время), не сможет синхронизировать время, так как использует версию протокола NTPv4, а W32tm поддерживает только NTPv3.
Возможные варианты решения для п. 3:
1. Запустить на ПК NTP-сервер, который поддерживает версию протокола NTPv4.
2. Организовать синхронизацию времени по NTP средствами CODESYS (см. пример).
Даже в этом случае рекомендуется вместо W32tm использовать отдельный программный NTP-сервер - например, от Meinberg.
-
Вложений: 2
DEBUG#14. При установке пакета возникает ошибка подтверждения подписи
Вопрос: при попытке установки пакета с помощью CODESYS Installer появляется сообщение "Не удалось подтвердить подпись для следующего пакета. <путь к файла пакета>. Для следующего пакета подпись не соответствует подписи для принятого контекста установки. <путь к файла пакета>.". Как решить эту проблему?
Вложение 73918
Ответ: используйте для установки пакетов CODESYS Installer версии 2.2.2 или выше:
https://ftp.owen.ru/CoDeSys3/01_CODE...er%202.2.2.exe
Данная ошибка проявляется при определенных (не при всех) сочетаниях среды версий CODESYS и CODESYS Installer.
Вложение 73919
-
Вложений: 1
IDE#12. При установке CODESYS возникает ошибка "gateway.exe is not marked..."
Вопрос: при установке CODESYS возникает ошибка "gateway.exe is not marked for installation".
В чем причина?
Вложение 74374
Ответ: такая ошибка может возникнуть, если на ПК установлена OEM-версия CODESYS (например, SoMachine от Schneider Electric).
Для ее устранения нужно удалить это ПО и запустить установку CODESYS заново.
-
Вложений: 3
COM#31. Как сделать переменные Modbus Slave Device энергонезависимыми? (RETAIN)
Вопрос: мы настраиваем контроллер в режиме Modbus Slave, используя для этого компоненты Modbus Serial Device и ModbusTCP Slave Device в дереве проекта.
Требуется, чтобы переменные, привязанные к каналам слэйва, сохраняли свои значения после перезагрузки.
Для этого они объявлены в области RETAIN (или PERSISTENT).
Для входных регистров (input registers) и дискретных входов (discrete inputs) значения этих энергонезависимых переменных сохраняются после перезагрузки контроллера.
Но для регистров хранения (holding registers) и обмоток (coils) - значения энергонезависимых переменных после перезагрузки обнуляются.
Как это исправить?
Ответ:
Описанная проблема исправлена в плагине CODESYS Modbus версии 4.1.0.0.
1. Загрузите актуальную версию плагина (рекомендуемая - CODESYS Modbus 4.3.0.0).
2. Установите ее через CODESYS Installer (предварительно потребуется закрыть среду CODESYS).
3. В проект нажмите ПКМ на Modbus Serial Device (или ModbusTCP Slave Device) в дереве проекта и используйте команду Обновить устройство.
Для Modbus Serial Device выберите версию 4.2.0.0, для ModbusTCP Slave Device - версию 4.3.0.0.
Проверьте, что версия компонента обновилась - для этого перейдите на вкладку Информация.
Вложение 75130 Вложение 75131
4. В настройках компонента установите галочку Запись.
Вложение 75132
-
Вложений: 1
COM#32. Как получать сообщения по протоколу NMEA 0183?
Вопрос: к COM-порту контроллера подключен GPS-приемник, который периодически отправляет по протоколу NMEA 0183 сообщения с текущим временем и географическими координатами (RMC-строки).
Как в коде программы получить и обработать эти сообщения?
Ответ: см. пример.
Для теста примера использовалась программа NMEA Simulator.
Вложение 75388
Отличия в цифрах после запятой для широты и долготы связаны с тем, что обновление данных в окне СODESYS и окне симулятора происходит несинхронно.
-
Вложений: 4
COM#33. Подключение к OwenCloud - известные проблемы
Вопрос 1: в символьной конфигурации был включен экспорт комментариев - чтобы они отображались в OwenCloud в качестве названий параметров.
После этого контроллер перестал подключаться к облаку. В чем может быть проблема?
Ответ: при отправке комментариев в OwenCloud их длина обрезается до 31 символа.
В результате такие "обрезанные" комментарии для разных переменных могут стать одинаковыми.
Пример:
Код:
xVolume1_SensorFailed: BOOL; // ФС Отказ датчика уровня воды Емкость 1
xVolume2_SensorFailed: BOOL; // ФС Отказ датчика уровня воды Емкость 2
Для обеих переменных комментарии при их отправке в OwenCloud будут обрезаны до ФС Отказ датчика уровня воды Ем и станут одинаковыми.
При разборе символьной конфигурации в OwenCloud в ряде конкретных случаев из-за таких повторяющихся имен могут возникнуть ошибки, из-за которых импорт конфигурации будет прерван, и связь контроллера с облаком не будет установлена. При этом всё зависит от сочетания переменных в символьной конфигурации - например, если в символьной конфигурации будут только две переменные, показанные выше (с совпадающим "обрезанным" именем) - то связь установится, но если в символьной конфигурации будут другие переменные, то при их определенном сочетании связь установлена не будет.
Поэтому разработчик должен проанализировать комментарии к переменным, выбранным в символьной конфигурации, и исключить возможность того, что комментарии разных переменных будут совпадать (в том числе, при их обрезании до 31 символа).
Вопрос 2: в проект была добавлена символьная конфигурация. Через некоторое время (измеряемое часами) начинают проявляться проблемы.
Примеры таких проблем:
- не удается подключиться к контроллеру из CODESYS
- не отображается веб-визуализация
- перестает работать обмен
- на экране СПК пропадают изображения
С чем это может быть связано?
Ответ: в текущей реализации библиотеки OwenStorage (отвечающей за связь с OwenCloud) есть ошибка: если в символьной конфигурации нет ни одной переменной "элементарного" типа (BOOL, INT и т. д.) - то начинается утечка дескрипторов, приводящая к описанному поведению.
Характерный признак утечки дескрипторов - отображение в логе контроллера сообщения "Could not open /dev/random: Too many open files".
Вложение 75602
Обычно это проявляется у клиентов, добавляющих в символьную конфигурацию только экземпляры структур. Для решения проблемы достаточно добавить в символьную конфигурацию хотя бы одну переменную "элементарного" типа.
Ошибка будет исправлена в следующей версии библиотеки, после чего данный ответ будет обновлен.
Upd. - проблема устранена в прошивке 3.7.0228.1046 (СПК210) и 3.7.0331.0614 (ПЛК210).
Ошибка исправлена в обновлении компонента OwenCloud (3.5.17.3003) в дереве проекта и библиотеки OwenStorage (3.5.17.32).
Вопрос 3: для добавления контроллера в OwenCloud требуется указать его серийный номер.
У моего контроллера в веб-конфигураторе серийный номер не отображается:
Вложение 75406
Почему так случилось и что можно сделать?
Ответ: такое может случиться из-за некорректно проведенной процедуры перепрошивки.
Вам требуется отправить прибор в сервисный центр.
Вопрос 4: для связи с OwenCloud контроллер должен быть подключен к сети, которая имеет доступ в интернет.
Должны ли быть в ней открыты какие-то порты?
Ответ: для связи с OwenCloud контроллер устанавливает клиентское соединение с ресурсом gate.owencloud.ru по порту 26502.
Соответственно, никакие настройки сети не должны мешать ему это делать.
Самый простой способ проверки - выполнить пинг до gate.owencloud.ru в веб-конфигураторе контроллера на вкладке Сеть/Диагностика:
Вложение 75407
Если пинга нет - то проверьте корректность сетевых настроек контроллера на вкладке Сеть/Интерфейсы.
В большинстве случаев проблема связана с тем, что не указан (или некорректно указан) IP-адрес шлюза.
Вложение 75409
Если вы не знаете, какой адрес шлюза в вашей локальной сети - обратитесь к ее системному администратору.
-
Вложений: 1
COM#34. Как увеличить максимальное число подключений для ФБ MB_TcpSlave?
Вопрос: для настройки контроллера в режиме Modbus TCP Slave используем ФБ MB_TcpSlave из библиотеки OwenCommunication.
Первый Modbus TCP клиент успешно опрашивает контроллер, но вот второй не может установить с ним соединение.
Если отключаем первый клиент, то второй успешно подключается и опрашивает ПЛК.
В чем может быть проблема?
Ответ: по умолчанию ФБ MB_TcpSlave может обрабатывать только одно клиентское подключение.
Чтобы увеличить максимальное число одновременно обрабатываемых клиентов - в менеджере библиотек выберите библиотеку OwenCommunication, найдите узел Settings и задайте параметру g_c_usiMaxCountClients нужное значение (в диапазоне 1...16).
Вложение 76315
-
Вложений: 3
COM#35. Modbus TCP - опрос резервированных slave-устройств
Начиная с версии плагина Modbus 4.4.0.0 стандартный компонент Modbus TCP Client поддерживает механизм Modbus Network Redundancy.
Для его использования необходимо:
1. Установить плагин Modbus версии 4.4.0.0 (ссылка) или выше.
2. Установить модифицированный файл описания компонента (ссылка для версии плагина 4.4.0.0, ссылка для плагина версии 4.5.0.0) с помощью команды Инструменты - Репозиторий устройств - Установить.
3. В проекте CODESYS настроить обмен в режиме Modbus TCP Master через стандартные компоненты: Ethernet --> Modbus TCP Client ---> Modbus TCP Server.
Требуемая версия компонента Modbus TCP Client: 4.4.0.0 или 4.5.0.0
Требуемая версия компонента Modbus TCP Server: 4.4.0.1 или 4.5.0.1
В прошлых версиях плагина эти компоненты назывались Modbus TCP Master и Modbus TCP Slave соответственно.
4. В компоненте Modbus TCP Server на вкладке Конфигурация установить для параметра fallback IP значение TRUE, а в параметре SecondIPAddress - IP-адрес резервного slave-устройства.
Вложение 79245
В случае потери связи с slave-устройством, имеющим "основной" IP-адрес (заданный на вкладке Общее), произойдет попытка подключения к slave-устройству с "резервным" IP-адресом (SecondIPAddress) и начнется его опрос.
Попытка обратного переключения (для опроса "основного" slave-устройства) произойдет только в случае потери связи с "резервным" slave-устройством.
Для определения IP-адреса текущего опрашиваемого устройства используйте переменную <имя_компонента_в_дереве_проекта>.ComSettings.ipAd dress (тип - ARRAY [0..3] OF BYTE).
Вложение 79534
В версии 4.5.0.0 появилось два новых параметра:
- Preffered Line - предпочитаемое slave-устройство (Line1, Line2 или None);
- Keep both lines connected - установить два параллельных TCP-соединения с обоими slave-устройствами. Для использования этого функционала в контроллере должна присутствовать дополнительная лицензия для Modbus TCP Master.
Вложение 85271
Если параметр Preffered Line имеет значение Line1 или Line2, то в случае возобновления связи с соответствующим slave-устройством контроллер переключится на его опрос.
В случае установки галочки Keep both lines connected - контроллер будет параллельно опрашивать оба slave-устройства, но данные в каналы будут считываться/записываться только для "предпочитаемого".
Для определения текущей активной "preffered line" используйте переменную <имя_компонента_в_дереве_проекта>.usiActiveLine (тип - USINT).
Для определения кода последней ошибки связи с "резервным" slave-устройством используйте переменную <имя_компонента_в_дереве_проекта>.ComStateBackup (тип - перечисление MODBUSTCPCOMSTATE).
Примечание: при использовании компонента Modbus TCP Client версии 4.4.0.0 или выше наблюдаются ошибки в работе шаблонов модулей Mx210:
- канал Флаг ошибки всегда имеет значение TRUE (даже при наличии связи с модулем и успешного обмена);
- для модулей МВ210-101/102: каналы Код статуса всегда имеют значение Нет связи с модулем (даже при наличии связи с модулем и успешного обмена).
-
Вложений: 1
OTHER#17. СПК1хх [М01] и отключение подсветки экрана
Вопрос: в СПК1хх [М01] с прошивкой 2.4.xxxx.xxxx не удается полностью отключить подсветку экрана.
Даже при установке яркости подсветки в значение 0 на экране продолжают отображаться элементы, просто очень тускло.
Можно ли это как-то исправить?
Ответ: к сожалению, нет. Эта проблема устранена в СПК210.
В СПК1хх [М01] с прошивкой 2.4.xxxx.xxxx можно использовать следующее обходное решение, которое частично исправит визуальную часть проблемы:
создайте экран визуализации с "полностью черным" фоном и укажите его в узле Screen для параметра конфигурации Off visu name:
Вложение 82296
-
DEBUG#15. СПК210-07, прошивка 3.7.0228.1046 - нельзя зайти в экранный конфигуратор
Вопрос: после перепрошивки СПК210-07 на прошивку 3.7.0228.1046 не получается зайти в экранный конфигуратор - потому что при запуске не отображается прогресс-бар загрузки контроллера и нет надписи Режим загрузки.
Как это исправить?
Ответ:
Для устранения проблемы необходимо:
- подключиться к СПК210-07 по USB или Ethernet;
- перейти в web-конфигуратор;
- открыть вкладку Система/Обновление прошивки;
- нажать кнопку Обзор и выбрать файл swu-hotfix-spk210_07-psplash.swu из архива с прошивкой 3.7.0228.1046;
- нажать кнопку Обновить;
- процесс установки хотфикса завершится автоматической перезагрузкой контроллера, после которой описанные выше проблемы перестанут проявляться.
-
Вложений: 3
PRG#41. Как считать системное время виртуального контроллера?
Вопрос: для получения системного времени контроллеров ОВЕН в коде программы мы используем узел OwenRTC в дереве проекта.
Но для виртуального контроллера CODESYS Control Win V3 (и для контроллеров других производителей) данный узел недоступен.
Как получить системное время в этом случае?
Ответ: можно воспользоваться библиотекой SysTimeRtc. Ее потребуется добавить в Менеджер библиотек вашего проекта:
Вложение 82987
- функция SysTimeRtcGet позволяет получить системное время контроллера;
- функция SysTimeRtcGetTimezone позволяет получить информацию о его часовом поясе (поддерживается не во всех контроллеров; для CODESYS Control Win V3 - поддерживается).
Пример функции-обертки для получения системного времени, которую вы можете создать в своем проекте:
Код:
// Функция для получения системного времени
FUNCTION GetSystemDT : DT
VAR_INPUT
// Установите TRUE, если ваш контроллер не поддерживает функцию SysTimeRtcGetTimezone...
xUseManuaTimeZonelOffset: BOOL := FALSE;
// ...и задайте смещение для вашего часового пояса сами ( в минутах); например: 180 для UTC+3
iTimeZoneOffsetInMinutes: INT(INT#-12*60..INT#14*60) := 0;
END_VAR
VAR
stTimeZone: SysTimeRtc.TimezoneInformation;
dwErrorCode: DWORD;
END_VAR
IF NOT(xUseManuaTimeZonelOffset) THEN
dwErrorCode := SysTimeRtc.SysTimeRtcGetTimezone(stTimeZone);
iTimeZoneOffsetInMinutes := -1 * stTimeZone.iBias;
END_IF
{warning disable C0196}
GetSystemDT := TO_DT(SysTimeRtc.SysTimeRtcGet(dwErrorCode) + (iTimeZoneOffsetInMinutes * 60) );
{warning restore C0196}
Вложение 82988 Вложение 82989
-
Вложений: 1
VISU#36. Как запретить нажатие на кнопку для клиентов web-визуализации?
Вопрос: мы используем для управления техпроцессом панельный контроллер СПК. Требуется, чтобы элементы управления (кнопки, поля ввода и т. д.) были активны только в таргет-визулизации (с экрана СПК), но неактивны для клиентов web-визуализации. Как это можно реализовать?
Ответ: в параметре Переменные состояний/Отключение ввода для всех нужных элементов введите выражение
Код:
VisuElems.CurrentClientType = VisuElems.Visu_ClientType.WebVisualization
Вопрос: но что, если для конкретного web-клиента (с известным IP-адресом) требуется разрешить управление?
Ответ: создайте в проекте функцию:
Код:
FUNCTION DisableVisuElement : BOOL
VAR
pClientData: POINTER TO VisuElems.VisuStructClientData;
fbHelper: VisuElems.VisuFbClientTagDataHelper;
sCurrentClientIp: STRING;
i: DINT;
END_VAR
VAR CONSTANT
// Массив IP-адресов клиентов, которым разрешено управление
// Отредактируйте его под свою задачу
c_asAllowIp: ARRAY [1..2] OF STRING := ['212.16.18.23', '212.16.18.24'];
END_VAR
// Код функции
pClientData := VisuElems.CurrentVisuClient;
IF pClientData <> 0 THEN
fbHelper(pClientData := pClientData, stIPv4 => sCurrentClientIp);
FOR i := 1 TO UPPER_BOUND(c_asAllowIp, 1) DO
IF sCurrentClientIp = c_asAllowIp[i] THEN
DisableVisuElement := FALSE;
RETURN;
ELSE
DisableVisuElement := TRUE;
END_IF
END_FOR
END_IF
Привяжите вызов это функции к параметру Переменные состояний/Отключение ввода всех нужных элементов:
Вложение 85043
-
Вложений: 4
PRG#42. Как считать температуру процессора СПК210?
Вопрос: у ПЛК210 в дереве проекта в узле PLC210_xx есть канал Температура CPU.
Как получить такое же значение для СПК210?
Вложение 85064
Ответ: см. пример.
Вложение 85063
Комментарий: строго говоря, у ПЛК210 в узле PLC210_xx отображается не температура CPU, а температуры платы контроллера, которая измеряется отдельным термодатчиком.
Начиная с версии прошивки 3.7.0923.1107 в СПК210 и ПЛК210-1x добавлен параметр Температура CPU:
- в узел Debug;
- в web-конфигуратор на вкладку Состояние/Обзор.
Вложение 86437 Вложение 86436
-
Вложений: 1
COM#36. Как считать из контроллера файлы по протоколу HTTP(S)?
Вопрос: мы используем систему верхнего уровня, которая работает как HTTP(S)-клиент и должна считывать с контроллера файлы архивов по этому протоколу.
Как это реализовать?
Ответ: в состав прошивки контроллера входит HTTP(S)-сервер uhttpd, который используется для организации доступа к web-конфигуратору.
Для решения описанной задачи разумно запустить еще один экземпляр сервера:
1. Загрузите утилиту WinSCP
2. Подключитесь с помощью нее к контроллеру, указав его IP-адрес и протокол SCP.
Имя пользователя - root, пароль - тот, что используется для доступа к конфигуратору (по умолчанию - owen)
3. Перейдите в директорию /etc/config и откройте файл uhttpd
4. Добавьте в конец файла секцию, описывающую еще один экземпляр сервера. Сохраните файл.
Например, секция может выглядеть так:
Код:
config uhttpd 'custom'
list listen_http '0.0.0.0:8081'
list listen_https '0.0.0.0:444'
option home '/home/server_files'
option rfc1918_filter '1'
option index_page 'index.html'
option enable_index_cache '1'
option cert '/etc/uhttpd.crt'
option key '/etc/uhttpd.key'
Вложение 85702
В рамках примера:
- сервер будет доступен по порту 8081 (HTTP) и 444 (HTTPS);
- в качестве рабочей директории сервера будет использоваться /home/server_files;
- в качестве сертификатов HTTPS будут использоваться сертификаты веб-конфигуратора.
Вы можете задать и другие настройки, ориентируясь на требования вашей задачи.
Описание возможных настроек доступно по ссылке:
https://openwrt.org/docs/guide-user/...bserver/uhttpd
5. Перейдите в директорию /home и создайте в ней директорию server_files.
Разместите в этой созданной директории нужные вам файлы (например, для теста скопируйте в нее файл test.csv).
В приложении контроллера вам потребуется организовать сохранение в этой директории нужных вам файлов - например, с помощью библиотеки CAA File или SysFile (см. документ CODESYS V3.5. Архивация).
6. Перезагрузите контроллер, чтобы изменения в файле /etc/config/uhttpd вступили в силу.
Если вы подключены к контроллеру по SSH - то вместо этого можно выполнить команду reload_config
7. Для тестирования введите в браузере строку
Код:
http://<ip вашего контроллера>:8081/test.csv
или
Код:
https://<ip вашего контроллера>:444/test.csv
Во втором случае может возникнуть сообщение с текстом типа "Предупреждение! Вероятная угроза безопасности".
Это связано с тем, что по умолчанию в контроллере используются самоподписанные сертификаты, которые не вызывают доверия у браузера.
Потребуется подтвердить загрузку файла ("Принять риск и продолжить").
Вы можете использовать собственные сертификаты (см. параметры cert и key в конфиг-файле).
Система верхнего уровня должна отправить HTTP-запрос с методом GET (при необходимости предварительно приняв сертификат) для загрузки этого файла.
-
Вложений: 1
OTHER#18. СПК210 раз в час экран промаргивает на одну секунду
Вопрос: мы используем СПК210 с прошивкой 3.7.0228.1046. Раз в час экран гаснет на одну-две секунды, после чего включается обратно. С чем это связано?
Ответ: если в течение длительного времени на дисплее отображается один и тот же экран визуализации - то может возникнуть остаточное изображение (ореол), которое "отпечатается" и будет сохраняться при переходе на другие экраны.
Это особенность LCD-дисплеев.
Для редуцирования этой проблемы начиная с версии прошивки 3.7.0228.1046 реализован механизм автообновления экрана - вы наблюдаете последствия его работы.
Настройки расположены в проекте CODESYS в узле Screen.
Алгоритм работы: если Enable screen refresh = TRUE, то с интервалом, определяемым параметром On mode refresh period, Dim mode refresh period или Off mode refresh period (в зависимости от режима), дисплей заливается черным (0xFFFFFF) цветом на интервал времени T1, а затем белым (0x000000) цветом на интервал времени T2.
По умолчанию автоообновление включено; для нормального режима работы (On mode) его период составляет 3600 секунд (час), а для режимов "Притушено" и "Погашено" - 600 секунд (10 минут)
Вложение 86097