Как из ST-программы обратиться к выходу (входу) блока, находящегося в FBD-блоке? Конструкция, показанная на скрине, вызывает ошибки при проверке.
И что вообще можно почитать про ST в Полигоне? Например, про создание библиотечных блоков на ST.
Как из ST-программы обратиться к выходу (входу) блока, находящегося в FBD-блоке? Конструкция, показанная на скрине, вызывает ошибки при проверке.
И что вообще можно почитать про ST в Полигоне? Например, про создание библиотечных блоков на ST.
Добрый день.
Напрямую к входам/выходам блоков другой программы обратиться не получится. Потребуется использовать промежуточные глобальные переменные.
Информация о языке ST приведена в справке в самой среде Полигон. Создание составного блока на ST в целом не отличается от создания составного блока на C++. Информация также приведена в справке в разделе Среда разработки - Структура проекта - Функциональный блок - Составной блок - Блок на ST.
Спасибо. За полдня удалось разобраться с записью значений в глобальные переменные. Просто и очевидно! Встроенная справка очень помогла, особенно раздел "Среда разработки/Создание библиотеки" – исчерпывающий гайд.
А вопрос попроще: в каком формате можно экспортировать глобальные переменные, чтобы можно было их импортировать в другой проект?
Добрый день,
Почитал "Среда разработки/Создание библиотеки", но не понял как этот раздел справки помог разобраться с записью в глобальные переменные
Если использовать глобальные переменные в проекте с резервированными контроллерами, будут ли копироваться значения этих переменных из основного контроллера в резервный?
Добрый день.
Если я:
1) создаю группу типов в разделе "Библиотека";
2) в этой группе создаю ФБ на FBD;
3) у этого ФБ создаю входы/выходы,
то могу ли я достучаться напрямую до этих входов/выходов из ST программы?
Если да, приведите, пожалуйста, пример обращения. Если нет, то планируется ли такая возможность?
Добрый день!
Да, это возможно для экземпляра вашего типа блока. Для этого нужно:
1) создать экземпляр блока на странице модуля, задать ему нормальное имя (оно будет его именем в коде на ST)
2) создать раздел глобальных переменных
3) с нажатым Ctrl потянуть блок в раздел глобальных, при отпускании мыши выбрать Добавить (заголовок блока должен стать желтым, в дереве он должен появиться в разделе)
4) в коде на ST описать доступ к нему в секции VAR_EXTERNAL, либо подключить все глобальные (подробнее тут https://polygon2.ru/biblioteka/?libr...l2&doc=globals).
Затем в коде можно обращаться к входам/выходам этого блока также как если бы его экземпляр был создан тут же в коде (но может быть Ваш вопрос был о том как создать его в коде?).
При этом действуют те же ограничения на блоки, которые можно использовать в коде на ST: без циклических входов/выходов, только стандартные типы данных, без константных входов и указателей в качестве выходов (подробнее тут https://polygon2.ru/biblioteka/?libr...ng_limitations)
Добрый день.
Вроде, всё сделал, как вы говорите, но при трансляции выдаёт ошибку.
И ещё вопрос возник. Если я создал два блока глобальных переменных, я в каждом из них могу объявить переменную с одним и тем же именем. Транслятор это пропускает. А вот какая из них будет привязана в ST-программе к переменной, объявленной в секции VAR_EXTERNAL или через галочку "Подключить все глобальные объекты"?
Последний раз редактировалось TonyMilkers; 16.10.2026 в 13:22.