Страница 16 из 17 ПерваяПервая ... 614151617 ПоследняяПоследняя
Показано с 151 по 160 из 168

Тема: CODESYS V3.5. Онлайн-FAQ

  1. #151

    По умолчанию COM#34. Как увеличить максимальное число подключений для ФБ MB_TcpSlave?

    Вопрос: для настройки контроллера в режиме Modbus TCP Slave используем ФБ MB_TcpSlave из библиотеки OwenCommunication.
    Первый Modbus TCP клиент успешно опрашивает контроллер, но вот второй не может установить с ним соединение.
    Если отключаем первый клиент, то второй успешно подключается и опрашивает ПЛК.
    В чем может быть проблема?

    Ответ: по умолчанию ФБ MB_TcpSlave может обрабатывать только одно клиентское подключение.
    Чтобы увеличить максимальное число одновременно обрабатываемых клиентов - в менеджере библиотек выберите библиотеку OwenCommunication, найдите узел Settings и задайте параметру g_c_usiMaxCountClients нужное значение (в диапазоне 1...16).

    2024-06-06_8-32-03.png

  2. #152

    По умолчанию COM#35. Modbus TCP - опрос резервированных slave-устройств

    Начиная с версии плагина Modbus 4.4.0.0 стандартный компонент Modbus TCP Client поддерживает механизм Modbus Network Redundancy.

    См. информацию в статье.

    Примечание: при использовании компонента Modbus TCP Client версии 4.4.0.0 или выше наблюдаются ошибки в работе шаблонов модулей Mx210:
    • канал Флаг ошибки всегда имеет значение TRUE (даже при наличии связи с модулем и успешного обмена);
    • для модулей МВ210-101/102: каналы Код статуса всегда имеют значение Нет связи с модулем (даже при наличии связи с модулем и успешного обмена).

  3. #153

    По умолчанию OTHER#17. СПК1хх [М01] и отключение подсветки экрана

    Вопрос: в СПК1хх [М01] с прошивкой 2.4.xxxx.xxxx не удается полностью отключить подсветку экрана.
    Даже при установке яркости подсветки в значение 0 на экране продолжают отображаться элементы, просто очень тускло.
    Можно ли это как-то исправить?

    Ответ: к сожалению, нет. Эта проблема устранена в СПК210.
    В СПК1хх [М01] с прошивкой 2.4.xxxx.xxxx можно использовать следующее обходное решение, которое частично исправит визуальную часть проблемы:
    создайте экран визуализации с "полностью черным" фоном и укажите его в узле Screen для параметра конфигурации Off visu name:

    2025-03-03_13-03-02.png

  4. #154

    По умолчанию 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;
    • нажать кнопку Обновить;
    • процесс установки хотфикса завершится автоматической перезагрузкой контроллера, после которой описанные выше проблемы перестанут проявляться.

  5. #155

    По умолчанию PRG#41. Как считать системное время виртуального контроллера?

    Вопрос: для получения системного времени контроллеров ОВЕН в коде программы мы используем узел OwenRTC в дереве проекта.
    Но для виртуального контроллера CODESYS Control Win V3 (и для контроллеров других производителей) данный узел недоступен.
    Как получить системное время в этом случае?

    Ответ: можно воспользоваться библиотекой SysTimeRtc. Ее потребуется добавить в Менеджер библиотек вашего проекта:

    SysTimeRtc.png

    • функция 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}
    2025-04-10_6-31-07.png 2025-04-10_6-30-50.png

  6. #156

    По умолчанию 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
    Привяжите вызов этой функции к параметру Переменные состояний/Отключение ввода всех нужных элементов:

    28-07-2025 13-28-41.png

  7. #157

    По умолчанию PRG#42. Как считать температуру процессора СПК210?

    Вопрос: у ПЛК210 в дереве проекта в узле PLC210_xx есть канал Температура CPU.
    Как получить такое же значение для СПК210?

    2025-07-30_7-50-26.png

    Ответ: см. пример.

    2025-07-30_6-56-19.png

    Комментарий: строго говоря, у ПЛК210 в узле PLC210_xx отображается не температура CPU, а температуры платы контроллера, которая измеряется отдельным термодатчиком.

    Начиная с версии прошивки 3.7.0923.1107 в СПК210 и ПЛК210-1x добавлен параметр Температура CPU:
    • в узел Debug;
    • в web-конфигуратор на вкладку Состояние/Обзор.


    cpu2.png cpu1.png

  8. #158

    По умолчанию 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'
    2025-09-12_7-39-14.png

    В рамках примера:
    • сервер будет доступен по порту 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 (при необходимости предварительно приняв сертификат) для загрузки этого файла.

  9. #159

    По умолчанию 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 минут)

    Autorefresh.png

  10. #160

    По умолчанию PRG#43. Примеры команд Linux

    Библиотека CmpSysExec позволяет выполнять команды Linux.
    В этом проекте собраны примеры команд для решения задачи, о которых спрашивали наши пользователи:
    https://ftp.owen.ru/CoDeSys3/21_Exam...projectarchive

    Примечание: некоторые команды будут работать только в актуальных прошивках ПЛК210-1x и СПК210.

    ФБ Пример команды Описание
    GetEthLinkStatus ethtool eth0 | grep "Link detected" Определение физического подключения кабеля к сетевому интерфейсу
    GetConnectionsCount ss -tnHo state established src :4840 | tr -s " " | cut -d" " -f5 | cut -d: -f1 | wc -l Определение кол-ва клиентских подключений к сетевому порту

Страница 16 из 17 ПерваяПервая ... 614151617 ПоследняяПоследняя

Похожие темы

  1. Ответов: 1
    Последнее сообщение: 29.06.2017, 11:21

Ваши права

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