📄 grpaddr.bas
字号:
Attribute VB_Name = "GRPADDR"
'Option Explicit
Function group_DATA_addr$(b1$, ch_base%)
contact_no% = CInt(b1$)
ch_offset% = contact_no% * 2
ch% = ch_base% + ch_offset%
address$ = Hex$(ch%)
group_DATA_addr$ = Right$("0000" + address$, 4)
End Function
Function group_address$(a$)
b0$ = Left$(a$, 1)
alen% = Len(a$)
b1$ = Right$(a$, alen% - 1)
contact_no% = CInt(b1$)
'
Select Case b0$
Case "X"
If contact_no% > 177 Then b1$ = "0000"
ch_base% = 8 * 16
address$ = group_XY_addr$(b1$, ch_base%)
'
Case "Y"
If contact_no% > 177 Then b1$ = "0000"
ch_base% = 10 * 16
address$ = group_XY_addr$(b1$, ch_base%)
'
Case "T"
If contact_no% > 255 Then b1$ = "0000"
ch_base% = 12 * 16
address$ = group_TCMS_addr(b1$, ch_base%)
'
Case "C"
If contact_no% > 255 Then b1$ = "0000"
ch_base% = (16 + 12) * 16
address$ = group_TCMS_addr$(b1$, ch_base%)
'
Case "M"
If contact_no% > 1023 Then b1$ = "0000"
ch_base% = 16 * 16
address$ = group_TCMS_addr(b1$, ch_base%)
'
Case "S"
If contact_no% > 999 Then b1$ = "0000"
ch_base% = 0 * 16
address$ = group_TCMS_addr$(b1$, ch_base%)
Case "D"
Select Case contact_no%
Case 0 To 511
ch_base% = 16 * 16 * 16
address$ = group_DATA_addr$(b1$, ch_base%)
Case 8000 To 8255
ch_base% = 14 * 16 * 16
b1$ = CStr(CInt(b1$) - 8000)
address$ = group_DATA_addr$(b1$, ch_base%)
Case Else: b1$ = "0000"
End Select
Case Else:
End Select
address$ = "0000" + address$
group_address = Right(address$, 4)
End Function
Function TC_coil_group_address$(a$, out_rst%)
b0$ = Left$(a$, 1)
alen% = Len(a$)
b1$ = Right$(a$, alen% - 1)
contact_no% = CInt(b1$)
'
Select Case b0$
Case "T"
If contact_no% > 255 Then b1$ = "0000"
ch_base% = ((2 + 2 * out_rst%) * 16 + 12) * 16
alen% = Len(b1$)
ch_offset% = Int(contact_no% / 8)
ch% = ch_base% + ch_offset%
address$ = Hex$(ch%)
'
Case "C"
If contact_no% > 255 Then b1$ = "0000"
ch_base% = ((3 + 2 * out_rst%) * 16 + 12) * 16
alen% = Len(b1$)
ch_offset% = Int(contact_no% / 8)
ch% = ch_base% + ch_offset%
address$ = Hex$(ch%)
Case Else
'
End Select
address$ = "0000" + address$
TC_coil_group_address$ = Right(address$, 4)
End Function
Function TC_value_group_address$(a$)
b0$ = Left$(a$, 1)
alen% = Len(a$)
b1$ = Right$(a$, alen% - 1)
contact_no% = CInt(b1$)
'
Select Case b0$
Case "T"
If contact_no% > 255 Then b1$ = "0000"
ch_base% = 8 * 16 * 16
alen% = Len(b1$)
ch_offset% = contact_no% * 2
ch% = ch_base% + ch_offset%
address$ = Hex$(ch%)
'
Case "C"
Select Case contact_no%
Case 0 To 199
ch_base% = 10 * 16 * 16
alen% = Len(b1$)
ch_offset% = contact_no% * 2
ch% = ch_base% + ch_offset%
address$ = Hex$(ch%)
Case 200 To 255
ch_base% = 12 * 16 * 16
alen% = Len(b1$)
ch_offset% = (contact_no% - 200) * 4
ch% = ch_base% + ch_offset%
address$ = Hex$(ch%)
Case Else
address$ = "0000"
End Select
Case Else
'
End Select
TC_value_group_address$ = Right$("0000" + address$, 4)
End Function
Function group_TCMS_addr$(b1$, ch_base%)
contact_no% = CInt(b1$)
ch_offset% = Int(contact_no% / 8)
ch% = ch_base% + ch_offset%
group_TCMS_addr$ = Hex$(ch%)
End Function
Function group_XY_addr$(b1$, ch_base%)
alen% = Len(b1$)
contact_no% = CInt(b1$)
Index% = 1
If CInt(b1$) < 8 Then b1$ = "0" + b1$: Index% = 0
ch_offset% = CInt(Left$(b1$, alen% - Index%))
If ch_offset% > 7 Then ch_offset% = ch_offset% - 2
cont_offset% = CInt(Right$(b1$, 1))
ch% = ch_base% + ch_offset%
group_XY_addr$ = Hex$(ch%)
End Function
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -