PDA

Просмотр полной версии : ПР200 переменные VAR_EXTERNAL и VAR_GLOBAL



Васильев
18.03.2024, 14:31
подскажите пожалуйста
можно ли в проекте объявить глобальные переменные,
чтобы их использовать в разных функциональных блоках на языке ST?
(есть зарезервированные слова VAR_EXTERNAL и VAR_GLOBAL)

хотя наверное нет, иначе может получится коллизия записи
одной переменной в разных блоках...

в программе функ блока есть повторяющийся код, который инициализирует переменные
как сделать правильно, чтобы в одном месте было (например подпрограммы)

1exan
18.03.2024, 14:51
подскажите пожалуйста
можно ли в проекте объявить глобальные переменные,
чтобы их использовать в разных функциональных блоках на языке ST?
(есть зарезервированные слова VAR_EXTERNAL и VAR_GLOBAL)

хотя наверное нет, иначе может получится коллизия записи
одной переменной в разных блоках...

в программе функ блока есть повторяющийся код, который инициализирует переменные
как сделать правильно, чтобы в одном месте было (например подпрограммы)

Написать функцию (или ФБ), которая реализует повторяющийся код и использовать её в этом функциональном блоке

kondor3000
18.03.2024, 15:03
в программе функ блока есть повторяющийся код, который инициализирует переменные
как сделать правильно, чтобы в одном месте было (например подпрограммы)

Простой пример, пишите код таймера, например TON и используете его в ФБ, хоть 10 раз, используя разные экземпляры TON1,TON2,TON3, ...TON10 : TON ;
Тоже самое, с любым другим ФБ.

Васильев
18.03.2024, 15:45
поясните пожалуйста
у меня есть функц блок, с кучей выходов
в определенные моменты все выходы принимают значение инициализации
и потом один из них устанавл в нужное положение
как это реализовать на примере функц блока?

1exan
18.03.2024, 17:13
поясните пожалуйста
у меня есть функц блок, с кучей выходов
в определенные моменты все выходы принимают значение инициализации
и потом один из них устанавл в нужное положение
как это реализовать на примере функц блока?

Можно поподробней, особенно про "...один из них устанавл в нужное положение..."

Вообще - зачем инициализировать выходы блока? Ими блок управляет в соответствии со своей логикой; можно инициализировать логику блока, чтобы она установилась в какое-то исходное состояние

kondor3000
18.03.2024, 17:40
поясните пожалуйста
у меня есть функц блок, с кучей выходов
в определенные моменты все выходы принимают значение инициализации
и потом один из них устанавл в нужное положение
как это реализовать на примере функц блока?

Не совсем понятно, что вы имеете ввиду, посмотрите мой ФБ инициализации на ST, второй проект.
В примере инициализация, каждый раз при включении, если нужна однократная инициализация, то можно убрать :=false
Init : bool; // Переменная инициализации

https://owen.ru/forum/showthread.php?t=37840&page=54&p=431676#post431676

Васильев
18.03.2024, 17:50
в принципе всё работает...итак
в проекте на индикатор выводятся сообщения в строке 0 или 1 в зависимости от событий
когда сообщение надо вывести записываю в переменную сообщения (координата Y) число 0 (вывод в 1 строку) или 1 (вывод во второю строку)
в другие сообщения записываю их первоначальное сообщение положение в дисплее и получается если перелистывать вниз мы все сообщения увидим

так получается удобно сформировать список активных аварий например
или перелистывать переменные в строке 1



(все происходит на одном экране, т.к. не нашел как прочитать текущий номер экрана)

Васильев
18.03.2024, 18:06
зарезервированные слова VAR_EXTERNAL и VAR_GLOBAL
есть у кого пример или описание

kondor3000
18.03.2024, 18:07
зарезервированные слова VAR_EXTERNAL и VAR_GLOBAL
есть у кого пример или описание

Зарезервированы, не значит работающие. Это на будущее задел. Пока глобальных переменных в Лоджике нет.
ST в ОЛ появился не так давно и надеюсь будут допиливать потихоньку.
Год назад мы сидели с одними функциями, сейчас уже есть ФБ, встроенные таймеры , триггеры и переменные Времени и Даты.

Васильев
18.03.2024, 19:44
спасибо большое