- Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
- Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
- Не надо писать свой вопрос в первую попавшуюся тему - всегда лучше создать новую тему.
- За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения. Непонятно? - Читать здесь.
- Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
- Перед тем как что-то написать - читать здесь, а затем здесь и здесь.
- Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.
Вопрос по VBS Tia Portal 15.1
Модератор: Глоб.модераторы
-
- здесь недавно
- Сообщения: 8
- Зарегистрирован: 14 июл 2023, 11:38
- Имя: Владимир
Вопрос по VBS Tia Portal 15.1
Коллеги, доброго дня, недавно начал изучать VBS, тк на работе на не написана скада, и вот при выполнении работ по корректировки визуализации, нужно было сделать так, что бы в i/o филде вместо 3х значного числа, могли вводить 4х значное, вроде нашел скрипт где это прописывалось, поменял там ограничения, потом в переменных поменял диапазон ограничений, но теперь в окне при вводе значения надо два раза нажимать Enter тк получается вот такая штука. Мб кто-то подскажет, что я не так сделал?
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
- здесь недавно
- Сообщения: 94
- Зарегистрирован: 29 окт 2017, 19:52
- Имя: Дмитрий
- Благодарил (а): 5 раз
- Поблагодарили: 18 раз
-
- здесь недавно
- Сообщения: 8
- Зарегистрирован: 14 июл 2023, 11:38
- Имя: Владимир
Вопрос по VBS Tia Portal 15.1
Потому что скада полностью написана на VB) с этим вопросом вроде разобрался сам. Но появились другие. Сделал 4 I/O филда и хотел цвет менять в зависимости от условий, но при запуске скады пишет ошибку.
Не могу понять что не так с объявлением работы с объектами на экране
Код: Выделить всё
Sub Cut_CalcDistance_()
'Данный скрипт вызывается каждый раз при изменении текущей длины панели Plc\PCrd\Misc\ActPnLen и подсчитывает дистанцию до стыка.
SmartTags("USJ_mm_to_ch_coil") = ( SmartTags("Plc\PCwr\cList\cDist\Up_mm2ChCoil") - SmartTags("Plc\PCrd\Misc\ActPnLen") - SmartTags("Plc\Par\Gen\misc\USJ_Saw_Dist") ) / 1000 'Дистанция до верхней сшивки
SmartTags("LSJ_mm_to_ch_coil") = ( SmartTags("Plc\PCwr\cList\cDist\Lw_mm2ChCoil") - SmartTags("Plc\PCrd\Misc\ActPnLen") - SmartTags("Plc\Par\Gen\misc\LSJ_Saw_Dist") ) / 1000 'Дистанция до нижней сшивки
Dim a, b, c, d, e, f, ObjScreen, Obj1, Obj2, Obj3, Obj4
'Set ObjScreen = HmiRuntime.Screens("N01-CutList") 'Открытие экрана резов
Set Obj1 = HmiRuntime.Screens("N01-CutList").ScreenItems("I/O field_73") 'Открытие на редактирование элемента экрана резов в котором отображается значение дистанции до ближ возм сшивки по верху
Set Obj2 = HmiRuntime.Screens("N01-CutList").ScreenItems("I/O field_74") 'Открытие на редактирование элемента экрана резов в котором отображается значение дистанции до ближ возм сшивки по низу
Set Obj3 = HmiRuntime.Screens("N01-CutList").ScreenItems("I/O field_87") 'Открытие на редактирование элемента экрана резов в котором отображается значение дистанции до стоп заливки по вате
Set Obj4 = HmiRuntime.Screens("N01-CutList").ScreenItems("I/O field_88") 'Открытие на редактирование элемента экрана резов в котором отображается значение дистанции до стоп заливки по пене
a = (SmartTags("L2_CUTLIST_R_PnLen")(1) - SmartTags("Plc\PCrd\Misc\ActPnLen")) / 1000 'Подсчет имитационной панели
b = SmartTags("Display\Saw\CutL\mToEnd")*1000 ' Перевод в мм из м дистанции до конца заказа по ордернейму
c = b - SmartTags("Plc\PCrd\Misc\ActPnLen") - SmartTags("Plc\Par\Gen\misc\USJ_Saw_Dist") 'Подсчет длинны до сшивки по верху для имитации работы ближ верхней сшивки в мм
c = c
d = b - SmartTags("Plc\PCrd\Misc\ActPnLen") - SmartTags("Plc\Par\Gen\misc\LSJ_Saw_Dist") 'Подсчет длинны до сшивки по низу для имитации работы ближ нижней сшивки в мм
d = d
'Расчет до возможности ближайшей сшивки по верху
If (c > SmartTags("Plc\Par\Gen\misc\USJ_Saw_Dist")) And SmartTags("Plc\PCrd\Misc\CycleON") Then
If c < (SmartTags("Plc\PCrd\Misc\ActPnLen") *2) Then
Obj1.BackColor = RGB(255,0,0)
End If
SmartTags("Display\NearUCut") = Round(a,2)
Else
Obj1.BackColor = RGB(182,182,182)
SmartTags("Display\NearUCut") = 0
End If
'Расчет до возможности ближайшей сшивки по низу
If (d > SmartTags("Plc\Par\Gen\misc\LSJ_Saw_Dist")) And SmartTags("Plc\PCrd\Misc\CycleON") Then
If d < (SmartTags("Plc\PCrd\Misc\ActPnLen") *2) Then
Obj2.BackColor = RGB(255,0,0)
End If
SmartTags("Display\NearLCut") = Round(a,2)
Else
Obj2.BackColor = RGB(182,182,182)
SmartTags("Display\NearLCut") = 0
End If
'Расчет длинны панели до заливки при производстве на вате
e = (b - SmartTags("Plc\PCrd\Misc\ActPnLen") - 42000) / 1000
e = e
If ( e > 42.0 ) And SmartTags("Plc\PCrd\Misc\CycleON") Then
If e < ((SmartTags("Plc\PCrd\Misc\ActPnLen") *2)/1000) Then
Obj3.BackColor = RGB(255,0,0)
End If
SmartTags("Display\MWDist") = Round(a,2)
Else
Obj3.BackColor = RGB(182,182,182)
SmartTags("Display\MWDist") = 0
End If
'Расчет длинны панели до заливки при производстве на ПИРЕ/ПУРЕ
f = (b - SmartTags("Plc\PCrd\Misc\ActPnLen") - 36000) / 1000
f = f
If ( f > 36.0 ) And SmartTags("Plc\PCrd\Misc\CycleON") Then
If f < ((SmartTags("Plc\PCrd\Misc\ActPnLen") *2)/1000) Then
Obj4.BackColor = RGB(255,0,0)
End If
SmartTags("Display\PIRDist") = Round(a,2)
Else
Obj4.BackColor = RGB(182,182,182)
SmartTags("Display\PIRDist") = 0
End If
End Sub
У вас нет необходимых прав для просмотра вложений в этом сообщении.