Как передать значение из внешнего тега во внутренний ?

Инженерное программное обеспечение
Ответить
Katerina
Дилетант
Сообщения: 9
Зарегистрирован: 23 дек 2018, 07:34

Как передать значение из внешнего тега во внутренний ?

Сообщение Katerina »

Здравствуйте!

Версия ПО - Tia Portal v15 (Advanced).

Как передать значение тега (тип int), подвязанного к PLС, в Internal Tag (тип bool)?
Создала внешний тег bit[1] типа int и теги внутренние типа bool:
bit_01_00
bit_01_01

bit_01_31
Создаю на экранах глазки. Необходимо, чтобы они становились видимыми по определенному биту (bit_01_00, bit_01_01...bit_01_31).

Написала функцию в VB (я так поняла эта функция подойдет для конкретного бита):
Function GetBit(ByVal value, ByVal mask)
GetBit = Sgn(mask And value)
End Function
, где mask - маска,
value - значение тега (bit[1]).

Создала кнопку. Подвязала к ней событие. В режиме runtime меняю значение тега bit[1], нажимаю на кнопку для того, чтобы сделать видимым необходимый глазок, глазок становится видимым.
Если кнопку не нажму, то при изменении тега bit[1] в контроллере, булевые теги не изменяются (bit_01_00..bit_01_31)

Функция отдельно работает при нажатии на кнопку. Но мне необходимо, чтобы эта функция работала не при нажатии на кнопку, а в режиме runtime и теги типа bool менялись бы ...Например, в Rockwell можно было использовать Derrived Tags. А в Tia Portal v15 к сожалению не могу разобраться еще, как это реализовать... Помогите пожалуйста.

petr2off
Любитель
Сообщения: 41
Зарегистрирован: 01 ноя 2018, 05:11

Re: Как передать значение из внешнего тега во внутренний ?

Сообщение petr2off »

Есть функция Gettag и Settag (точнее их там коллекция, в зависимости от типа Тэга). При этом какой тег читается и какой пишется зависит только от имени тэга - внешний он, или внутренний не важно.
Например SetTagBit(Имя тега, Записываемое значение) или считываемое значение := GetTagBit(Имя тега)

Katerina
Дилетант
Сообщения: 9
Зарегистрирован: 23 дек 2018, 07:34

Re: Как передать значение из внешнего тега во внутренний ?

Сообщение Katerina »

А к чему эти функции привязать, чтобы при запуске проекта они автоматически срабатывали? Через свойство Event Scheduled tasks?

И мне надо реализовать так, что бы при изменении внешнего тега bit[1], изменялись мои внутренние ( разбитовку необходимо осуществить):

if bit[1] = 1 then bit_01_00 = 1
if bit[1] = 2 then bit_01_01 = 1
if bit[1] = 4 then bit_01_02 = 1
if bit[1] = 8 then bit_01_03 = 1


как то так...
изменяю в контроллере тег bit[1]=1 и хочу чтоб в режиме runtime взвелся тег внутренний bit_01_00..

petr2off
Любитель
Сообщения: 41
Зарегистрирован: 01 ноя 2018, 05:11

Re: Как передать значение из внешнего тега во внутренний ?

Сообщение petr2off »

По разному это делается. Например к временному триггеру, который будет с определенным периодом опрашивать внешние ТЭГи и обновлять значения местных тэгов. А можно к триггеру изменения значений внешнего тэга, который при изменении значения будет менять значения внутреннего тэга. А есть еще процедуры динамизации графических объектов. По разному можно сделать.

Katerina
Дилетант
Сообщения: 9
Зарегистрирован: 23 дек 2018, 07:34

Re: Как передать значение из внешнего тега во внутренний ?

Сообщение Katerina »

А можете подсказать где можно прочитать про триггер изменения значений внешнего тэга? :) этот вариант очень понравился. Это где то в свойствах HMI Tags? или это надо писать скрипт?

petr2off
Любитель
Сообщения: 41
Зарегистрирован: 01 ноя 2018, 05:11

Re: Как передать значение из внешнего тега во внутренний ?

Сообщение petr2off »

Есть там такая тема, называется Global Script (или фоновый сценарий). Хотя я им не пользовался, предпочитал динамизацию графического объекта. Фоновый сценарий, на то он и фоновый - что не связан напрямую с графическими объектами. Те. это некоторая обработка, которая крутится внутри RunTime и активизируется согласно типу триггера.

Katerina
Дилетант
Сообщения: 9
Зарегистрирован: 23 дек 2018, 07:34

Re: Как передать значение из внешнего тега во внутренний ?

Сообщение Katerina »

Спасибо огромное за ответы :) очень помогли)

Ответить