Страница 3 из 17 ПерваяПервая 1234513 ... ПоследняяПоследняя
Показано с 21 по 30 из 168

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

  1. #21

    По умолчанию PRG#06-07. Как считать информацию об устройстве и проекте в переменные программы?

    Вопрос: как считать информацию об устройстве и проекте в переменные программы?

    Для контроллеров ОВЕН эта информация доступна в узле таргет-файла Info.

    07-11-2026 18-10-56.png

    В текущих версиях CODESYS каналы AUTHOR и VERSION очищаются после перезагрузки контроллера, если загрузочное приложение контроллера создано с помощью команды Создать загрузочное приложение (как в онлайн, так и в оффлайн-режиме).
    Этот эффект не проявляется, если загрузочное приложение создано неявно
    (при загрузке проекта с помощью команды Логин с установленной галочкой Обновить загрузочное приложение).
    Информация об ошибке зафиксирована в баг-трекере CODESYS (CDS-47464).

    07-11-2026 18-01-58.png

    Данные об авторе и версии проекта вводятся пользователем в CODESYS в меню Проект во вкладке Информация проекта.
    При этом следует установить галочку Автоматически генерировать POU ‘Информация о проекте‘.

    07-11-2026 18-13-36.png

    Собственно, можно использовать в проекте и эти автоматически сгенерированные функции:

    07-11-2026 18-17-51.png

    Преимуществом функции GetTextProperty является то, что она возвращает значения в виде переменных типа WSTRING, и это позволяет корректно отобразить имя проекта и его автора, если они содержат символы кириллицы.

    В каналах PROJECT и AUTHOR узла Info символы кириллицы будут отображены некорректно в связи с особенностями работы системных функций CODESYS.

    С PROJECT ничего сделать не получится, а вот для преобразования AUTHOR можно использовать следующий код (ограничение - имя автора должно включать только символы кириллицы и пробелы):

    Код:
    PROGRAM PLC_PRG
    VAR
            xInit: 	  		BOOL;
    	iLen:			INT;
    	i:			INT;
    	abyAuthor: 		ARRAY [0..159] OF BYTE;
    	wsAuthor: 		WSTRING;
    END_VAR
    
    
    IF NOT(xInit) THEN
    	
    	iLen := LEN(TargetVars.stInfo.sAuthorName);
    	
    	FOR i := 0 TO iLen - 1 DO
    		
                    abyAuthor[2 * i]  := TargetVars.stInfo.sAuthorName[i];	
    
    		IF TargetVars.stInfo.sAuthorName[i] = 16#20 THEN
    			
                            // Старший байт кода UTF-16 для пробела
    			abyAuthor[2 * i + 1] := 16#00;
    			
    		ELSE
    			
                            // Старший байт кода UTF-16 для символов кириллицы
    			abyAuthor[2 * i + 1] := 16#04;
    		
    		END_IF
    	
    	END_FOR
    
    	MEM.MemMove(ADR(abyAuthor), ADR(wsAuthor), TO_UINT(iLen * 2) );
    	
    	xInit := TRUE;
    
    END_IF
    Кроме того, можно получить информацию о проекте с помощью функций библиотеки CmpApp.
    Функции возвращают разные структуры, в которых часть полей являются общими, и имеют уже упомянутые проблемы с кириллицей.

    Код:
    PROGRAM PLC_PRG
    VAR
            xInit: 	  	BOOL;
    	pstAppInfo:	POINTER TO CmpApp.APPLICATION_INFO;
    	stAppInfo:	CmpApp.APPLICATION_INFO;
    	stProjectInfo:	CmpApp.PROJECT_INFO;
    	pstApp:		POINTER TO CmpApp.APPLICATION;
    	dwError:	DWORD;
    END_VAR
    
    
    IF NOT(xInit) THEN
    	
    	pstApp := CmpApp.AppGetCurrent(ADR(dwError) );
    	
    	IF pstApp <> 0 THEN
    		
    		pstAppInfo 	:= CmpApp.AppGetApplicationInfo(pstApp, ADR(dwError) );
    		dwError 	:= CmpApp.AppGetProjectInformation(pstApp, ADR(stProjectInfo) );
    		
    	END_IF
    	
    	IF pstAppInfo <> 0 THEN
    		
    		stAppInfo := pstAppInfo^;
    	
    	END_IF
    	
    	xInit := TRUE;
    
    END_IF
    07-11-2026 19-07-05.png

    Если требуется считать информацию об устройстве без использования узла Info (например, в рамках разрабатываемой вами библиотеки), то можно воспользоваться библиотекой CmpSysExec, предназначенной для выполнения команд Linux. Ознакомьтесь с документаций и видеопримером.

    Вам потребуется выполнить следующие команды:

    Код:
    cat /etc/RELEASE
    ubus call softlogic information
    ubus call system board
    Вывод двух последних команд можно фильтровать с помощью утилиты jq:

    Код:
     ubus call system board | jq .sn
    Примеры вывода команд (аналогичный вывод вы получите в CODESYS):

    08-11-2026 9-10-21.png 08-11-2026 9-10-08.png

    Библиотека CmpSysExec поддержана только на контроллерах ОВЕН - проверить ее работу на виртуальном контроллере и использовать на контроллерах других произвоидителей не получится.

  2. #22

    По умолчанию COM#04. Как организовать обмен по протоколу Modbus ASCII?

    Вопрос: как организовать обмен по протоколу Modbus ASCII?

    Примечание: для контроллеров, программируемых в CODESYS V3.5 SP11 Patch 5 и выше, в компоненте Modbus Master COM Port доступен выбор протокола Modbus ASCII.

    Ответ: это возможно с помощью библиотеки OwenCommunication, которую можно скачать здесь.
    У ФБ MB_SerialRequest (Modbus Master) есть вход xIsAsciiMode. Если он имеет значение TRUE - то блок работает по протоколу Modbus ASCII.
    В ФБ MB_SerialSlave реализовано автоопределение протокола, так что блок отвечает на запросы и по протоколу Modbus RTU, и Modbus ASCII - задавать какие-то настройки для этого не требуется.

  3. #23

    По умолчанию VISU#02. Где хранятся файлы стандартных ламп/кнопок, используемые в визуализации?

    Вопрос: где хранятся изображения стандартных ламп и кнопок, используемые в визуализации?

    Ответ: по умолчанию все стандартные изображения элементов, доступные в визуализации, хранятся в папке

    C:\ProgramData\CODESYS\Visualization Styles\3S-Smart Software Solutions GmbH

    Далее нужно открыть папку с названием нужного стиля и выбрать версию. Изображения хранятся в формате .svg.

  4. #24

    По умолчанию VISU#03. Можно ли изменить внешний вид диалогов ввода? (Numpad, Keypad)

    Вопрос: можно ли изменить внешний вид диалогов ввода? (Numpad, Keypad)

    Ответ: да, это возможно. Исходники лежат в папке установки по пути ...\CODESYS\Projects\Visu\Dialogs\VisuDialogs.libr ary

    Откройте файл в CODESYS (желательно предварительно сделать копию). Дальше можно либо отредактировать библиотеку и сохранить ее под новым названием (обязательно также отредактируйте информацию проекта - заголовок и плейсхолдер), либо добавить в библиотеку новый диалог, созданный на основе существующего. Помимо визуализаций, библиотека содержит программную часть - желательно не редактировать ее (или же редактировать с четким пониманием происходящего).
    Сохраните библиотеку в репозиторий.

    22-02-2018 10-27-47.png 22-02-2018 10-38-11.png 22-02-2018 10-27-30.png

    В проекте CODESYS добавьте вашу библиотеку (если вы редактировали существующую и сохранили ее под новым названием).

    22-02-2018 10-36-14.png

    В настройках элемента ввода появится возможность выбрать ваш диалог:

    22-02-2018 10-40-23.png 22-02-2018 10-46-35.png

    Примечание: В некоторых случаях после добавления библиотеки с новыми диалогами в проект нет возможности выбрать новые диалоги в Менеджере визуализации. Тогда следует закрыть проект и открыть его заново.

    См. также библиотеку OwenVisuDialogs с кастомизированными диалогами ввода.

  5. #25

    По умолчанию PRG#08. Чем отличаются типы данных WORD и UINT?

    Вопрос: чем отличаются типы данных WORD и UINT? (а также BYTE и USINT, DWORD и UDINT, LWORD и ULINT) Ведь они занимают одинаковое количество памяти и имеют совпадающий диапазон возможных значений.

    Ответ: в соответствии со стандартом МЭК 61131-3 типы USINT/UINT/UDINT/ULINT относятся к группе "целые беззнаковые числа", а BYTE/WORD/DWORD/LWORD - к группе "наборы бит" (bit strings). Для целых чисел определены арифметические операции. Для наборов бит определен побитовый доступ к данным. CODESYS 3.5 позволяет производить арифметические операции и обеспечивает побитовый доступ к любому из этих типов данных - так что фактически отличия отсутствуют. Поддержка всех типов сохранена для соответствия стандарту и совместимости с другим ПО. В целом, можно порекомендовать использовать UINT (и остальные схожие типы) для представления исчислимых величин (например, количества подсчитанных импульсов, числа произведенных продуктов и т.д.), а наборы бит - для представления бинарных данных (например, битовой маски состояния входов/выходов, кода ошибки и т.д.).

  6. #26

    По умолчанию COM#05. Как подключить контроллер к SCADA-системе TraceMode?

    Вопрос: как подключить контроллер к SCADA-системе TraceMode?

    Ответ: см. видео для СПК1хх и видео для СПК1хх [М01].

  7. #27

    По умолчанию PRG#09. Некоторые особенности языка CFC

    1. Команда Удалить неиспользуемые контакты позволяет удалить входы и выходы блока, к которым не привязаны переменные. Это позволяет сэкономить место на холсте.

    CFC1.png

    2. Метки соединений позволяют перейти к именованным связям - это особенно удобно, если ФБ, выходы и входы которых следует соединить, разнесены друг от друга на холсте.

    CFC2.png

    3. Параметры (VAR_INPUT CONSTANT) позволяют уменьшить число входов блока. Параметры представляют собой настройки, которые не изменяются в процессе работы блока.

    CFC3.png

    Примечание: язык CFC удобен для наглядного представления алгоритмов, но это достоинство часто сводится на нет смешением разных уровней абстракции в пределах одного POU. На следующем рисунке (в верхней части) используются как блоки высокого уровня (PID), так и низкого (триггеры, таймеры, операторы конверсии и т.д.). Оптимальным решением является сокрытие обвязки ПИД-регулятора в отдельные POU (см. нижнюю часть рисунка).

    CFC0.jpg

  8. #28

    По умолчанию IDE#07. Как сделать ярлык для англоязычной версии CODESYS?

    Вопрос: как сделать ярлык для англоязычной версии CODESYS?

    Комментарий: это может потребоваться, чтобы при каждой необходимости не переключать язык через опции проекта.

    Ответ: скопируйте существующий ярлык и в его свойствах замените путь на что-то вроде этого (конкретный путь зависит от места установки CODESYS и его версии):

    "D:\Soft\3S CODESYS 3.5 SP5 Patch5\CODESYS\Common\CODESYS.exe" --Profile="CODESYS V3.5 SP5 Patch 5" --Culture="En"

  9. #29

    По умолчанию IDE#08. В каких форматах можно сохранить проект CODESYS?

    Вопрос: в каких форматах можно сохранить проект CODESYS?

    Ответ: доступно 4 формата сохранения/экспорта проекта:

    1. .project (Файл - Сохранить проект) - стандартный формат сохранения проектов CODESYS;
    2. .projectarchive (Файл - Архив проекта - Сохранить проект) - включает в свой состав проект и все компоненты (таргет-файлы, библиотеки и т.д.). Этот формат удобен для переноса проекта на другой ПК (на котором, например, могут отсутствовать библиотеки, использующиеся в проекте). При отправке проектов в техподдержку - пожалуйста, используйте именно этот формат. Обратите внимание, что вес архива достаточно велик и может превышать 20 Мб - в этом случае рекомендуется загрузить его на любой файловый хостинг и отправить в письме ссылку.
    3. .export (Проект - Экспорт) - позволяет экспортировать проект или его фрагмент в специфичном для CODESYS xml-подобном формате. Для импорта следует выделить в проекте узел Application и использовать команду Проект - Импорт.
    4. .xml (Проект - Export PLCopen XML) - позволяет экспортировать проект или его фрагмент в универсальном xml-подобном формате, разработанном организацией PLCopen. В будущем планируется включение этого формата в стандарт МЭК 61131 (как МЭК 61131-10). Таким образом, проект, сохраненный в данном формате, можно перенести в другую среду разработки с поддержкой PLCopen XML. Полная совместимость в настоящий момент не гарантируется.

  10. #30

    По умолчанию VISU#04. Как из программы изменить диапазон элемента Стрелочный индикатор?

    Вопрос: как из программы изменить диапазон элемента Стрелочный индикатор?

    Ответ: привязка переменных к параметрам Начало шкалы и Конец шкалы поддерживается начиная с версии CODESYS V3.5 SP14 Patch 3.

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

Похожие темы

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

Ваши права

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