PDA

Просмотр полной версии : Присваивание переменных



Vitorgan
23.09.2016, 12:01
Добрый день, подскажите пожалуйста, как лучше (правильней) присваивать входным переменным программы - конфигурационные переменные ПЛК?

Как я понимаю есть два способа:
В объявлении прописывать адрес конфигурационной типа AT%QW2.1.0
Либо в начале скрипта после объявления присваивать программным переменным- конфигурационные по названиям (которые я прописал в конфигурации ПЛК, перет адресом AT%QW2.1.0)

Невозможно ли присваивать названия(имена) но в объявлении?

Гарчев Евгений
23.09.2016, 13:11
Здравствуйте!
Нельзя, но мне интересно зачем Вы хотите так делать и какой в этом смысл?
Зачем объявлять еще одну переменную, внутреннюю, если уже есть объявленная глобальная переменная в конфигурации, которую Вы можете использовать в любом POU?

Vitorgan
23.09.2016, 13:46
Есть переменные вытащенные из аналоговых овеновских модулей аля МВ110 8 а, 8ас, приходят в PLC wordами, уходят на скаду wordами, но помимо этого залетают в скрипты где используются как INT, вот и приходится объявлять новые переменные с практически идентичными именами, но объявлять как INT , типа

a AT%QW2.1.0:INT;

Если есть какой то другой вариант, кроме создания доп программ, фб. чтоб также я одной строчкой решал вопрос с адресацией, и конвертацией в INT. Очень прошу подсказать тогда.

Vitorgan
23.09.2016, 13:48
И еще, я как понимаю не могу вытащить с модулей INT, так как при вставке подэлемента могу выбрать только 2bytes, который автоматом является WORD

Гарчев Евгений
23.09.2016, 13:54
Есть переменные вытащенные из аналоговых овеновских модулей аля МВ110 8 а, 8ас, приходят в PLC wordами, уходят на скаду wordами, но помимо этого залетают в скрипты где используются как INT, вот и приходится объявлять новые переменные с практически идентичными именами, но объявлять как INT , типа

a AT%QW2.1.0:INT;

Если есть какой то другой вариант, кроме создания доп программ, фб. чтоб также я одной строчкой решал вопрос с адресацией, и конвертацией в INT. Очень прошу подсказать тогда.

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

Гарчев Евгений
23.09.2016, 13:56
И еще, я как понимаю не могу вытащить с модулей INT, так как при вставке подэлемента могу выбрать только 2bytes, который автоматом является WORD

Если объем памяти, для конфигурации ПЛК позволяет, то можно "вытаскивать" с модуля float.

Vitorgan
23.09.2016, 14:03
Понятное дело) спасибо за помощь.
Так как все таки правильней объявлять в скрипте или в VARах?

Vitorgan
23.09.2016, 14:12
в какой строчке? в самом скрипте? да мне легче присвоить тогда в скрипте, а WORD_TO_INT автоматом сделается, так как в объявлении INT,

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

Vitorgan
23.09.2016, 14:24
И термин "скрипт" здесь как-то не очень ))

Извиняюсь, в теле программы) привычка.

а почему тупиковый? можете объяснить?

Vitorgan
23.09.2016, 14:33
Можно поподробнее?

Vitorgan
23.09.2016, 14:53
А если например со скады через OPC приходит маска битовая, а я в Global_Variables создаю переменные которым присваиваю абсолютной адресацией биты данной маски, и потом в теле программ использую только созданные мной ГЛ. переменный, так правильней? или это тоже "не есть хорошо".