Здравствуйте!
Версия ПО - 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 к сожалению не могу разобраться еще, как это реализовать... Помогите пожалуйста.
Как передать значение из внешнего тега во внутренний ?
Re: Как передать значение из внешнего тега во внутренний ?
Есть функция Gettag и Settag (точнее их там коллекция, в зависимости от типа Тэга). При этом какой тег читается и какой пишется зависит только от имени тэга - внешний он, или внутренний не важно.
Например SetTagBit(Имя тега, Записываемое значение) или считываемое значение := GetTagBit(Имя тега)
Например SetTagBit(Имя тега, Записываемое значение) или считываемое значение := GetTagBit(Имя тега)
Re: Как передать значение из внешнего тега во внутренний ?
А к чему эти функции привязать, чтобы при запуске проекта они автоматически срабатывали? Через свойство 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..
И мне надо реализовать так, что бы при изменении внешнего тега 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..
Re: Как передать значение из внешнего тега во внутренний ?
По разному это делается. Например к временному триггеру, который будет с определенным периодом опрашивать внешние ТЭГи и обновлять значения местных тэгов. А можно к триггеру изменения значений внешнего тэга, который при изменении значения будет менять значения внутреннего тэга. А есть еще процедуры динамизации графических объектов. По разному можно сделать.
Re: Как передать значение из внешнего тега во внутренний ?
А можете подсказать где можно прочитать про триггер изменения значений внешнего тэга? этот вариант очень понравился. Это где то в свойствах HMI Tags? или это надо писать скрипт?
Re: Как передать значение из внешнего тега во внутренний ?
Есть там такая тема, называется Global Script (или фоновый сценарий). Хотя я им не пользовался, предпочитал динамизацию графического объекта. Фоновый сценарий, на то он и фоновый - что не связан напрямую с графическими объектами. Те. это некоторая обработка, которая крутится внутри RunTime и активизируется согласно типу триггера.
Re: Как передать значение из внешнего тега во внутренний ?
Спасибо огромное за ответы очень помогли)