Как, с помощью VBscript, скопировать PLC-бит в бит «панельного» слова ?

Панели оператора PP/OP/TP/TD/MP.
Программные пакеты ProTool/WinCC flexible, SCADA система WinCC
Alex3110
Posts: 159
Joined: Mon Sep 27, 2010 7:17 pm

Как, с помощью VBscript, скопировать PLC-бит в бит «панельного» слова ?

Post by Alex3110 »

Всем привет !

TIA-portal и панельTP1500 Comfort.
На панели есть PLC-шный битовый тэг.
Нужно создать новое сообщение на панели, но я не хочу ничего делать в PLC (создавать дополнительное слово, или копировать тот бит в уже имеющееся «алармное» слово ), чтобы использовать «классический» метод передачи битов сообщений через слова.

Можно ли скопировать «внешний» битовый тег в любой бит «внутреннего» слова панели, например, в бит № 3 ?

Как это сделать в коде VBS ?

Заранее благодарен.
Rex2701
Posts: 374
Joined: Wed Oct 13, 2010 8:44 am
Location: Russian Federation

Re: Как, с помощью VBscript, скопировать PLC-бит в бит «панельного» слова ?

Post by Rex2701 »

https://support.industry.siemens.com/cs ... 7&lc=en-RU
Читаешь из одного тега, пишешь в другой.
Alex3110
Posts: 159
Joined: Mon Sep 27, 2010 7:17 pm

Re: Как, с помощью VBscript, скопировать PLC-бит в бит «панельного» слова ?

Post by Alex3110 »

Спасибо за ответ.

В ссылке указан раздел «SmartTags» документа, где приведён пример, в котором рассказывается как в одно и то же поле вывода выводить различные параметры одного и того же графического объекта «Motor», созданного пользователем. Объект содержит 3 элемента : "RPM" (Int), "On" (Bool) и "Off" (Bool). В зависимости от введённого в определённое поле ввода имени элемента, в поле вывода выводится значение/состояние этого элемента.

Что-то не уловил связь с моей задачей.
Rex2701
Posts: 374
Joined: Wed Oct 13, 2010 8:44 am
Location: Russian Federation

Re: Как, с помощью VBscript, скопировать PLC-бит в бит «панельного» слова ?

Post by Rex2701 »

Alex3110 wrote: Tue Apr 09, 2019 5:48 amЧто-то не уловил связь с моей задачей.
Так будет понятнее?

Code: Select all

SmartTag("Tag1").Value = SmartTag("Tag2").Value
Понятно, что отдельный бит так не скопировать. Надо наворачивать логические операции, чтобы маскировать его... Но общая идея-то должна быть понятна.
sania
Site Admin
Posts: 1387
Joined: Sat Aug 13, 2005 6:15 am

Re: Как, с помощью VBscript, скопировать PLC-бит в бит «панельного» слова ?

Post by sania »

обязательно VB?
можно же в свойствах тага проца, в эвентах использовать SetTag , в нём внутренний таг(ворд) а значение - таг проца(бит)
в алармах пишешь ворд а триггер бит =8 и всё...
Alex3110
Posts: 159
Joined: Mon Sep 27, 2010 7:17 pm

Re: Как, с помощью VBscript, скопировать PLC-бит в бит «панельного» слова ?

Post by Alex3110 »

Rex2701 wrote: Tue Apr 09, 2019 10:01 am Так будет понятнее?

Code: Select all

SmartTag("Tag1").Value = SmartTag("Tag2").Value
Понятно, что отдельный бит так не скопировать. Надо наворачивать логические операции, чтобы маскировать его... Но общая идея-то должна быть понятна.
Вобщем идея была понятна, непонятны были детали.
Т.е. :
Сначала надо найти такое слово (или байт), в который попадает нужный бит, а потом, с помощью указанной Вами "конструкции" передать это слово из внешнего "PLC"-ного тэга (слова или байта)" во "внутренний" HMI-ный.
Это если найдётся такое слово (байт) ...
А точно бит нельзя напрямую передать из "внешнего" во "внутренний" ?
Ну а если нельзя и не найдётся уже созданное такое слово (байт), то придётся создавать новый тэг формата "слово" (байт) в который нужный бит попадает. А это уже работа внутри кода PLC, т.е. основное условие "не залазить в PLC" - нарушается.
Тогда мне проще воспользоваться классической схемой, т.е. в ПЛК создать новое слово, накидать в него все нужные биты и передавать это слово в HMI.


sania wrote: Wed Apr 10, 2019 9:07 am обязательно VB
Да и не обязательно. Чем проще,тем лучше. Завтра гляну на работе.
Rex2701
Posts: 374
Joined: Wed Oct 13, 2010 8:44 am
Location: Russian Federation

Re: Как, с помощью VBscript, скопировать PLC-бит в бит «панельного» слова ?

Post by Rex2701 »

Пишу по памяти, возможно есть ошибка:

Code: Select all

Dim w as Word
Dim b as Int
w = SmartTag("HMIWord").Value
b = SmartTag("PLCbit").Value
w = w AND (b * 8)
SmartTag("HMIWord").Value = w
И что сложного?
Alex3110
Posts: 159
Joined: Mon Sep 27, 2010 7:17 pm

Re: Как, с помощью VBscript, скопировать PLC-бит в бит «панельного» слова ?

Post by Alex3110 »

Да в принципе, наверное, и ничего...
Если работаешь с этим не раз в 3 года :-)
Rex2701
Posts: 374
Joined: Wed Oct 13, 2010 8:44 am
Location: Russian Federation

Re: Как, с помощью VBscript, скопировать PLC-бит в бит «панельного» слова ?

Post by Rex2701 »

Alex3110 wrote: Tue Apr 16, 2019 10:26 am Да в принципе, наверное, и ничего...
Если работаешь с этим не раз в 3 года :-)
Последний раз я писал скрипт в WinCC Flexible как раз где-то 3-4 года назад.