Помогите сократить строки в функции разбитовки

Инженерное программное обеспечение

Помогите сократить строки в функции разбитовки

Сообщение Katerina » 14 янв 2019, 10:06

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

Разрабатываю проект в Wincc Advanced v15.

Получилась следующая функция разбитовки внешнего тега типа int:

Sub unBit1()
Dim mask0, mask1, mask2, mask3, mask4, mask5, mask6, mask7, mask8, mask9, mask10 'Битовые маски
Dim mask11, mask12, mask13, mask14, mask15 'Битовые маски
Dim bit_01_00, bit_01_01, bit_01_02, bit_01_03, bit_01_04, bit_01_05, bit_01_06, bit_01_07, bit_01_08, bit_01_09, bit_01_10
Dim bit_01_11, bit_01_12, bit_01_13, bit_01_14, bit_01_15
Dim bit_1 ' Внешний тег разбитовки - тип int
Set bit_1=SmartTags("bit_001")
mask0=1
mask1=2
mask2=4
mask3=8
mask4=16
mask5=32
mask6=64
mask7=128
mask8=256
mask9=512
mask10=1024
mask11=2048
mask12=4096
mask13=8192
mask14=16384
mask15=32768
'Нулевой бит
bit_01_00=(bit_1 And mask0)
SmartTags("bit_01_00")=bit_01_00
'Первый бит
bit_01_01=(bit_1 And mask1)
If bit_01_01=mask1 Then
SmartTags("bit_01_01")=1
Else SmartTags("bit_01_01")=0
End If
'Второй бит
bit_01_02=(bit_1 And mask2)
If bit_01_02=mask2 Then
SmartTags("bit_01_02")=1
Else
SmartTags("bit_01_02")=0
End If
'Третий бит
bit_01_03=(bit_1 And mask3)
If bit_01_03=mask3 Then
SmartTags("bit_01_03")=1
Else
SmartTags("bit_01_03")=0
End If
'Четвертый бит
bit_01_04=(bit_1 And mask4)
If bit_01_04=mask4 Then
SmartTags("bit_01_04")=1
Else
SmartTags("bit_01_04")=0
End If
'Пятый бит
bit_01_05=(bit_1 And mask5)
If bit_01_05=mask5 Then
SmartTags("bit_01_05")=1
Else
SmartTags("bit_01_05")=0
End If
'Шестой бит
bit_01_06=(bit_1 And mask6)
If bit_01_06=mask6 Then
SmartTags("bit_01_06")=1
Else
SmartTags("bit_01_06")=0
End If
'Седьмой бит
bit_01_07=(bit_1 And mask7)
If bit_01_07=mask7 Then
SmartTags("bit_01_07")=1
Else
SmartTags("bit_01_07")=0
End If
'Восьмой бит
bit_01_08=(bit_1 And mask8)
If bit_01_08=mask8 Then
SmartTags("bit_01_08")=1
Else
SmartTags("bit_01_08")=0
End If
'Девятый бит
bit_01_09=(bit_1 And mask9)
If bit_01_09=mask9 Then
SmartTags("bit_01_09")=1
Else
SmartTags("bit_01_09")=0
End If
'Десятый бит
bit_01_10=(bit_1 And mask10)
If bit_01_10=mask10 Then
SmartTags("bit_01_10")=1
Else
SmartTags("bit_01_10")=0
End If
'Одиннадцатый бит
bit_01_11=(bit_1 And mask11)
If bit_01_11=mask11 Then
SmartTags("bit_01_11")=1
Else
SmartTags("bit_01_11")=0
End If
'Двенадцатый бит
bit_01_12=(bit_1 And mask12)
If bit_01_12=mask12 Then
SmartTags("bit_01_12")=1
Else
SmartTags("bit_01_12")=0
End If
'Тринадцатый бит
bit_01_13=(bit_1 And mask13)
If bit_01_13=mask13 Then
SmartTags("bit_01_13")=1
Else
SmartTags("bit_01_13")=0
End If
'Четырнадцатый бит
bit_01_14=(bit_1 And mask14)
If bit_01_14=mask14 Then
SmartTags("bit_01_14")=1
Else
SmartTags("bit_01_14")=0
End If
'Пятнадцатый бит
bit_01_15=(bit_1 And mask15)
If bit_01_15=mask15 Then
SmartTags("bit_01_15")=1
Else
SmartTags("bit_01_15")=0
End If
End Sub

Ее можно проще написать? Подскажите пожалуйста. Я новичок в программировании. :(
Katerina
Дилетант
 
Сообщения: 9
Зарегистрирован: 23 дек 2018, 07:34

Re: Помогите сократить строки в функции разбитовки

Сообщение noface » 14 янв 2019, 11:41

Вы можете смотреть в битик интового тега с помощью стандартных возможностей портала.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
noface
Профан
 
Сообщения: 2
Зарегистрирован: 04 окт 2017, 16:20


Вернуться в Simatic TIA Portal / Step7

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0

cron