⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 grpaddr.bas

📁 vb与三菱PLC的通信例子 对初学者很有用的
💻 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 + -