Просмотр полной версии : ST в среде Полигон
TonyMilkers
02.10.2026, 08:16
Как из ST-программы обратиться к выходу (входу) блока, находящегося в FBD-блоке? Конструкция, показанная на скрине, вызывает ошибки при проверке.
И что вообще можно почитать про ST в Полигоне? Например, про создание библиотечных блоков на ST.
Александр Пинэко-Скворцов
02.10.2026, 09:16
Как из ST-программы обратиться к выходу (входу) блока, находящегося в FBD-блоке? Конструкция, показанная на скрине, вызывает ошибки при проверке.
И что вообще можно почитать про ST в Полигоне? Например, про создание библиотечных блоков на ST.
Добрый день.
Напрямую к входам/выходам блоков другой программы обратиться не получится. Потребуется использовать промежуточные глобальные переменные.
Информация о языке ST приведена в справке в самой среде Полигон. Создание составного блока на ST в целом не отличается от создания составного блока на C++. Информация также приведена в справке в разделе Среда разработки - Структура проекта - Функциональный блок - Составной блок - Блок на ST.
TonyMilkers
05.10.2026, 10:01
Спасибо. За полдня удалось разобраться с записью значений в глобальные переменные. Просто и очевидно! Встроенная справка очень помогла, особенно раздел "Среда разработки/Создание библиотеки" – исчерпывающий гайд.
А вопрос попроще: в каком формате можно экспортировать глобальные переменные, чтобы можно было их импортировать в другой проект?
S#716_0P
06.10.2026, 13:57
Добрый день,
Почитал "Среда разработки/Создание библиотеки", но не понял как этот раздел справки помог разобраться с записью в глобальные переменные :confused:
Если использовать глобальные переменные в проекте с резервированными контроллерами, будут ли копироваться значения этих переменных из основного контроллера в резервный?
А вопрос попроще: в каком формате можно экспортировать глобальные переменные, чтобы можно было их импортировать в другой проект?
Добрый день!
Такой возможности (экспорт-импорт глобальных) пока не реализовано.
Добрый день,
Если использовать глобальные переменные в проекте с резервированными контроллерами, будут ли копироваться значения этих переменных из основного контроллера в резервный?
Добрый день! Да, синхронизировать глобальные переменные можно. Для этого раздел с переменными надо добавить в блок SyncMan (или в оба блока, если их в проекте два).
TonyMilkers
15.10.2026, 14:43
Добрый день.
Если я:
1) создаю группу типов в разделе "Библиотека";
2) в этой группе создаю ФБ на FBD;
3) у этого ФБ создаю входы/выходы,
то могу ли я достучаться напрямую до этих входов/выходов из ST программы?
Если да, приведите, пожалуйста, пример обращения. Если нет, то планируется ли такая возможность?
Добрый день.
Если я:
1) создаю группу типов в разделе "Библиотека";
2) в этой группе создаю ФБ на FBD;
3) у этого ФБ создаю входы/выходы,
то могу ли я достучаться напрямую до этих входов/выходов из ST программы?
Если да, приведите, пожалуйста, пример обращения. Если нет, то планируется ли такая возможность?
Добрый день!
Да, это возможно для экземпляра вашего типа блока. Для этого нужно:
1) создать экземпляр блока на странице модуля, задать ему нормальное имя (оно будет его именем в коде на ST)
2) создать раздел глобальных переменных
3) с нажатым Ctrl потянуть блок в раздел глобальных, при отпускании мыши выбрать Добавить (заголовок блока должен стать желтым, в дереве он должен появиться в разделе)
4) в коде на ST описать доступ к нему в секции VAR_EXTERNAL, либо подключить все глобальные (подробнее тут https://polygon2.ru/biblioteka/?library=pol2&doc=globals).
Затем в коде можно обращаться к входам/выходам этого блока также как если бы его экземпляр был создан тут же в коде (но может быть Ваш вопрос был о том как создать его в коде?).
При этом действуют те же ограничения на блоки, которые можно использовать в коде на ST: без циклических входов/выходов, только стандартные типы данных, без константных входов и указателей в качестве выходов (подробнее тут https://polygon2.ru/biblioteka/?library=pol2&doc=st_lang_limitations)
TonyMilkers
16.10.2026, 11:40
Добрый день.
Вроде, всё сделал, как вы говорите, но при трансляции выдаёт ошибку.
TonyMilkers
16.10.2026, 13:19
И ещё вопрос возник. Если я создал два блока глобальных переменных, я в каждом из них могу объявить переменную с одним и тем же именем. Транслятор это пропускает. А вот какая из них будет привязана в ST-программе к переменной, объявленной в секции VAR_EXTERNAL или через галочку "Подключить все глобальные объекты"?
Добрый день.
Вроде, всё сделал, как вы говорите, но при трансляции выдаёт ошибку.
Как сделан блок cfgDI? Составной?
И ещё вопрос возник. Если я создал два блока глобальных переменных, я в каждом из них могу объявить переменную с одним и тем же именем. Транслятор это пропускает. А вот какая из них будет привязана в ST-программе к переменной, объявленной в секции VAR_EXTERNAL или через галочку "Подключить все глобальные объекты"?
Это скорее недоработка в среде, в будущем будет исправлено, поэтому не стоит искусственно делать одинаковые имена переменным. Сейчас будет работать только одна из этих переменных (описанная последней по порядку выполнения).
Здравствуйте.
При написании блока на ST задался таким вопросом
В документации (https://polygon2.ru/dokumentacziya/) нашёл только обращение к стандартным ФБ (https://polygon2.ru/biblioteka/?library=paCore&doc=st_fb%2Fst_fb)
VAR
tonTest: TON;
END_VAR
tonTest (IN:= xTest, PT:= tTest);
xTonTest:= tonTest.Q;
А если я хочу добавить в свой блок нестандартный (например, Генератор случайных чисел из paCore.rndgen) или свой другой ФБ, это возможно?
Здравствуйте.
При написании блока на ST задался таким вопросом
В документации (https://polygon2.ru/dokumentacziya/) нашёл только обращение к стандартным ФБ (https://polygon2.ru/biblioteka/?library=paCore&doc=st_fb%2Fst_fb)
VAR
tonTest: TON;
END_VAR
tonTest (IN:= xTest, PT:= tTest);
xTonTest:= tonTest.Q;
А если я хочу добавить в свой блок нестандартный (например, Генератор случайных чисел из paCore.rndgen) или свой другой ФБ, это возможно?
Да, в коде можно использовать и другие блоки из библиотек, открытых в Полигоне или другие блоки созданные в вашем проекте (за исключением составных, это временное ограничение).
При этом действуют те же ограничения на блоки, которые можно использовать в коде на ST: без циклических входов/выходов, только стандартные типы данных, без константных входов и указателей в качестве выходов (подробнее тут https://polygon2.ru/biblioteka/?libr...ng_limitations)
(подробнее тут https://polygon2.ru/biblioteka/?libr...ng_limitations)
По ссылке нечего нет
Вернее есть страница с "Разделы документации" но на ней нечего не работает
По ссылке нечего нет
Вернее есть страница с "Разделы документации" но на ней нечего не работает
https://polygon2.ru/biblioteka/?library=pol2&doc=st_lang_limitations
https://polygon2.ru/biblioteka/?library=pol2&doc=st_lang_limitations
С этим разделом документации я уже ознакомился.
Разобрался, так как у меня резервирование нужно использовать DelayOn_sync
VAR_INPUT
xTest : BOOL
tTest : DINT; // <- В миллисекундах не TIME
END_VAR
VAR_OUTPUT
xTonTest: BOOL;
END_VAR
VAR
tonTest: DelayOn_sync;
END_VAR
tonTest (I:= xTest, P:= tTest);
xTonTest:= tonTest.Q;
Powered by vBulletin® Version 4.2.3 Copyright © 2026 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot