PDA

Просмотр полной версии : 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:
Если использовать глобальные переменные в проекте с резервированными контроллерами, будут ли копироваться значения этих переменных из основного контроллера в резервный?

Полигон
07.10.2026, 10:58
А вопрос попроще: в каком формате можно экспортировать глобальные переменные, чтобы можно было их импортировать в другой проект?

Добрый день!
Такой возможности (экспорт-импорт глобальных) пока не реализовано.

Полигон
07.10.2026, 10:59
Добрый день,

Если использовать глобальные переменные в проекте с резервированными контроллерами, будут ли копироваться значения этих переменных из основного контроллера в резервный?

Добрый день! Да, синхронизировать глобальные переменные можно. Для этого раздел с переменными надо добавить в блок SyncMan (или в оба блока, если их в проекте два).

TonyMilkers
15.10.2026, 14:43
Добрый день.

Если я:
1) создаю группу типов в разделе "Библиотека";
2) в этой группе создаю ФБ на FBD;
3) у этого ФБ создаю входы/выходы,
то могу ли я достучаться напрямую до этих входов/выходов из ST программы?

Если да, приведите, пожалуйста, пример обращения. Если нет, то планируется ли такая возможность?

Полигон
16.10.2026, 10:01
Добрый день.

Если я:
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 или через галочку "Подключить все глобальные объекты"?

Полигон
19.10.2026, 12:36
Добрый день.

Вроде, всё сделал, как вы говорите, но при трансляции выдаёт ошибку.

Как сделан блок cfgDI? Составной?

Полигон
19.10.2026, 12:38
И ещё вопрос возник. Если я создал два блока глобальных переменных, я в каждом из них могу объявить переменную с одним и тем же именем. Транслятор это пропускает. А вот какая из них будет привязана в ST-программе к переменной, объявленной в секции VAR_EXTERNAL или через галочку "Подключить все глобальные объекты"?

Это скорее недоработка в среде, в будущем будет исправлено, поэтому не стоит искусственно делать одинаковые имена переменным. Сейчас будет работать только одна из этих переменных (описанная последней по порядку выполнения).

AllXXX
22.10.2026, 13:22
Здравствуйте.
При написании блока на 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) или свой другой ФБ, это возможно?

Полигон
23.10.2026, 09:26
Здравствуйте.
При написании блока на 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)

AllXXX
23.10.2026, 13:52
(подробнее тут https://polygon2.ru/biblioteka/?libr...ng_limitations)
По ссылке нечего нет
Вернее есть страница с "Разделы документации" но на ней нечего не работает

Полигон
24.10.2026, 21:51
По ссылке нечего нет
Вернее есть страница с "Разделы документации" но на ней нечего не работает

https://polygon2.ru/biblioteka/?library=pol2&doc=st_lang_limitations

AllXXX
24.10.2026, 22:56
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;