Вход

Просмотр полной версии : Визуализация на СПК107



Alex_Shakhray
03.03.2023, 07:46
Добрый день. Подскажите пожалуйста как связать программу с визуальным элементом и визуализацией, например переключить экран визуализации по условию, т.е. если от датчика тревоги пришел сигнал нужно показать соответствующий экран без участия оператора.

Евгений Кислов
03.03.2023, 07:59
Добрый день. Подскажите пожалуйста как связать программу с визуальным элементом и визуализацией, например переключить экран визуализации по условию, т.е. если от датчика тревоги пришел сигнал нужно показать соответствующий экран без участия оператора.

Добрый день.
См. п. 10.3.1:
https://ftp.owen.ru/CoDeSys3/11_Documentation/03_3.5.11.5/CDSv3.5_Visu_v3.0.pdf

Alex_Shakhray
03.03.2023, 09:22
Спасибо. А есть еще документация по синтаксису ST, где описаны переменные и примеры программного управления элементами визуализации?

Евгений Кислов
03.03.2023, 09:27
Спасибо. А есть еще документация по синтаксису ST, где описаны переменные и примеры программного управления элементами визуализации?

Это не касается конкретно ST, но я понял ваш вопрос.
В свободное время я работаю над большой статьей, посвященной этой теме. Думаю, к концу весны опубликую ее.
Пока что можете задавать конкретные вопросы - я постараюсь ответить на них.

Alex_Shakhray
03.03.2023, 10:06
Например, непонятно как работать со стоковым типом данных. Как реализованы сравнение строк, поиск в строке подстроки и символа, конкатенация строк.
К примеру Answer : STRING := '2';

IF Answer <> ' ' THEN
Answer := '1';
END_IF

Не работает, Answer всегда равно '2'

Евгений Кислов
03.03.2023, 10:11
Код корректный. Возможно, вы этот код нигде не вызываете?


поиск в строке подстроки

См. функцию FIND в библиотеке Standard.


конкатенация строк.

См. функцию CONCAT в библиотеке Standard.

Основные аспекты работы со строками описаны в этой статье:
https://aip.com.ru/article/codesys_rabota_so_strokami

Ну и в справке CODESYS, конечно.

Alex_Shakhray
03.03.2023, 10:49
Есть предположение, что PLC_PRG.SerialRequest не блокирующая, т.е. Answer при проверке еще не получил ответ, тогда вопрос как сделать задержку в программе типа delay(ms)

Евгений Кислов
03.03.2023, 10:53
Есть предположение, что PLC_PRG.SerialRequest не блокирующая, т.е. Answer при проверке еще не получил ответ, тогда вопрос как сделать задержку в программе типа delay(ms)

Если SerialRequest - это экземпляр ФБ из библиотеки OwenCommunication - то совершенно верно, они выполняются асинхронно.
Об этом написано в документации на библиотеку.

Насчет задержки - обычно для этого используются таймеры из библиотеки Standard.
Таймеры тоже являются неблокирующими, потому что блокирующая задержка противоречит идеологии программирования ПЛК, которые должны выполнять код циклически, со стабильным временем вызова и минимальным джиттером.

Alex_Shakhray
03.03.2023, 11:59
Спасибо, понятно.