Страница 11 из 17 ПерваяПервая ... 910111213 ... ПоследняяПоследняя
Показано с 101 по 110 из 168

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

  1. #101

    По умолчанию COM#19. Как настроить проброс портов для ПЛК2хх?

    Вопрос: как настроить проброс портов для ПЛК2хх, чтобы использовать контроллер в качестве шлюза между сетями?

    Ответ: см. статью.

  2. #102

    По умолчанию PRG#26. Ограничение библиотеки CmpSysExec на длину команды и способ его обхода

    ФБ библиотеки CmpSysExec используются для вызова утилит Linux (например, curl).
    Длина команды, подаваемой на вход блока, ограничена 255 символами.

    Примечание: в версии библиотеки 3.5.17.31 добавлен блок SysExecute5, который позволяет работать с командами длиной до 2047 символов.

    В некоторых случаях этого может оказаться недостаточно - например, когда в теле команды передается текст длинного сообщения или значения множества параметров REST API запроса.

    В такой ситуации можно записать текст во временный файл (см. пример) и использовать этот файл как аргумент при вызове curl.

    Код:
    // текст сообщения передается как аргумент команды
    curl -s -X POST https://api.telegram.org/bot1395641168:AAFMoUpthm5W_wnQEPR6-dNsP4Hah0S2-8c/sendMessage -d "chat_id=721952499" -d "text=123"
    
    // текст сообщения сохраняется в файл, который передается как аргумент команды
    curl -s -X POST https://api.telegram.org/bot1395641168:AAFMoUpthm5W_wnQEPR6-dNsP4Hah0S2-8c/sendMessage -d "chat_id=721952499" -d "text=$(cat /home/root/CODESYS_WRK/message.txt)"

  3. #103

    По умолчанию PRG#27. Файловые плейсхолдеры

    При работе с файлами с помощью библиотек CAA File и SysFile часто требуется указывать путь к конкретной директории - например, директории сервера web-визуализации, USB-накопителю и т.д.
    Эти пути могут отличаться для разных моделей ПЛК и разных прошивок - поэтому запомнить все их вариации довольно сложно.
    Вместо этого проще использовать плейсхолдеры (заместители).
    В этом случае CODESYS сам заменит плейсхолдер на путь к нужной директории.
    Следует учитывать, что плейсхолдеры обрабатываются только упомянутыми библиотеками (например, их нельзя использовать при работе с библиотекой CmpSysExec).

    Плейсхолдеры CODESYS:

    • $$PlcLogic$$ - директория проекта CODESYS;
    • $$visu$$ - директория файлов визуализации (одновременно с этим - директория сервера web-визуализации);
    • $$trend$$ - директория файлов трендов;
    • $$alarms$$ - директория файлов тревог.


    Специфичные плейсхолдеры для контроллеров ОВЕН:

    • $$USB$$ - корневая директория USB-накопителя;
    • $$SD$$ - корневая директория SD-накопителя;
    • $$FTP$$ - директория FTP-сервера.


    Пример использования плейсхолдеров:

    Код:
    	hFile := SysFile.SysFileOpen('$$visu$$/test.txt', SysFile.ACCESS_MODE.AM_APPEND_PLUS, ADR(dwRes) );
    	SysFile.SysFileWrite(hFile, ADR(sData), TO_UINT(LEN(sData)), ADR(dwRes) );
    	SysFile.SysFileClose(hFile);

  4. #104

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

    Вопрос: как переключить экран, отображаемый в элементе Фрейм, из кода программы?

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

    Если вы используете CODESYS V3.5 SP17 Patch 3 с плагином визуализации 4.3.0.0 или выше - то см. этот пример и информацию из п. 5 данного документа.

  5. #105

    По умолчанию VISU#29. Работа с тревогами из кода программы (AlarmManager)

    Компания Пролог подготовила ряд видео о специфическом функционале компонента Конфигурация тревог, основанном на библиотеке AlarmManager.

    1. Базовый функционал и действия уведомления (вызов ФБ с интерфейсом IAlarmNotifiable)
    2. Тревоги со способом наблюдения Событие
    3. Передача тревог между ПЛК (RemoteAlarms)
    4. Работа с тревогами из кода

  6. #106

    По умолчанию COM#20. Как отмасштабировать значение, считываемое по Modbus?

    Вопрос: в проекте настроен опрос других устройств по протоколу Modbus через стандартные компоненты. Считываются целочисленные значение, и согласно документации их нужно домножить на 0.01, чтобы получить "настоящее" значение в формате REAL. Можно ли это выполнить это масшабирование на уровне настройки компонентов Modbus?

    Ответ:

    1. Необходимо создать ФБ для конвертации данных. В рамках примера он будет называться CONVERT.
    Перед объявлением ФБ необходимо указать атрибут io_function_block, а перед объявлением его переменной, которая будет привязываться к компоненту Modbus - io_function_block_mapping.

    Код:
    {attribute 'io_function_block'}
    FUNCTION_BLOCK CONVERT
    VAR_INPUT
    	{attribute 'io_function_block_mapping'}
    	wInput:		WORD;
    END_VAR
    VAR_OUTPUT
    	rOutput:	REAL;
    END_VAR
    VAR
    END_VAR
    
    rOutput := wInput * 0.01;
    2. В компоненте Modbus на вкладке Соотнесение входов/выходов выберите нужный канал (нужно выделить конкретный регистр - тип WORD)
    и нажмите кнопку Добавить ФБ для IO-канала.

    2021-08-30_12-51-42.png

    В выпадающем окне нужно выбрать ФБ CONVERT.

    2021-08-30_12-51-54.png

    В результате в столбце Соотнесение отобразится соответствующая пиктограмма, а в столбце Переменная будет автоматически сформирован путь к неявно объявленному экземпляру ФБ.

    2021-08-30_12-52-10.png

    3. С помощью этого пути можно обратиться к выходной переменной ФБ в коде программы (убрав из пути узел Application):

    Код:
    PROGRAM PLC_PRG
    VAR
    	rValue1:		REAL;
    	rValue2:		REAL;
    END_VAR
    
    rValue1 := Modbus_Slave_COM_Port_CONVERT.rOutput;
    rValue2 := Modbus_Slave_COM_Port_CONVERT_1.rOutput;
    2021-08-30_12-55-31.png

  7. #107

    По умолчанию COM#21. Как подключиться к SQL-серверу?

    Вопрос: требуется записываться и считывать данные из СУБД с использованием SQL. Как это можно сделать?

    Ответ:

    Работа с MySQL поддерживается начиная с прошивки 1.3.0620.xxxx.
    Работа с MsSQL поддерживается начиная с прошивки 1.3.0812.xxxx.
    Работа с PostgreSQL поддерживается начиная с прошивки 2.4.xxxx.xxxx.
    Работа с SQLite (встраиваемая СУБД, хостится на самом ПЛК) поддерживается во всех прошивках.

    См. пример и видео: MySQL / MsSQL / PostgreSQL / SQLite

  8. #108

    По умолчанию COM#22. Как подключить контроллер к VPN?

    Вопрос: как подключить контроллер к VPN?

    Ответ: контроллеры Овен поддерживают протоколы OpenVPN и WireGuard.

    Настройка подключения производится через web-конфигуратор.

    Документация (см. приложение Г) / Видеопример по OpenVPN

  9. #109

    По умолчанию COM#23. Как работать с GSM/GPRS-модемами?

    Вопрос: как работать с GSM/GPRS-модемами (отправлять/получать cмc, устанавливать GPRS-подключение)?

    Ответ: см. информацию по ссылке.

  10. #110

    По умолчанию COM#24. Как настроить обмен между ПЛК, программируемыми в CODESYS V3.5?

    Вопрос: как настроить обмен данными между несколькими ПЛК, программируемыми в CODESYS V3.5?
    Очевидно, что это можно сделать с помощью протокола Modbus TCP, но этот вариант является довольно трудоемким (настройка мастера и слэйвов, размещение данных в регистрах и т.д.)
    Нет ли более простых способов?

    Ответ: такие способы есть.

    1. Если один ПЛК должен передавать одни и те же данные на несколько других ПЛК, то можно использовать сетевые переменные (Network Variables).
    См. документацию (п. 3) и видеопример.

    2. Если один ПЛК должен считывать/записывать разные данные с одного или нескольких ПЛК, то можно использовать Менеджер источников данных (Data Source Manager).
    См. видеопример, доп. информацию для ПЛК2хх и информацию в онлайн-справке CODESYS.

    Вопрос: Как в коде контролировать наличие связи через Data Source Manager?

    Ответ: это можно сделать с помощью глобальных переменных диагностики:

    • g_Datasources.<имя_источника_данных>Error (тип - Datasources.DataSourceError)
    • g_Datasources.<имя_источника_данных>State (тип - Datasources.DataSourceMonitoringState)


    Имя источника данных можно увидеть в дереве проекта (по умолчанию для первого источника данных это имя - Datasource).

    2021-10-01_8-49-33.png

    Перечисления для этих переменных объявлены в библиотеке Datasources, которая автоматически добавляется в проект вместе с менеджером источников данных:

    2021-10-01_8-55-53.png


    Вопрос: Как в коде контролировать наличие связи при использовании сетевых переменных?

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

    Для диагностики на стороне отправителя:

    необходимо в свойствах списка сетевых переменных на вкладке Свойства сети установить галочку Подтверждение для ожидания подтверждений от получателя.

    2021-10-01_9-21-43.png

    В случае обрыва связи в структуре NetVarTxDiag_UDP поле sLastError примет значение NetVarUDPError_NOACKNOWLEDGEMENT, а поле nErrorCount будет постоянно увеличиваться.

    2021-10-01_9-14-37.png

    Для диагностики на стороне получателя:

    В случае обрыва связи в структуре NetVarRxDiag_UDP значение полей nReceiveCount и tLastReceive "застынут" и перестанут изменяться.

    2021-10-01_9-17-44.png

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

Похожие темы

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

Ваши права

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