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

📄 form1.frm

📁 WinCC 污水处理系统源程序.里面包含了许多VB6制作的功能组件.很有参考意义.
💻 FRM
字号:
VERSION 5.00
Object = "{648A5603-2C6E-101B-82B6-000000000014}#1.1#0"; "MSCOMM32.OCX"
Begin VB.Form Form1 
   Caption         =   "Form1"
   ClientHeight    =   9195
   ClientLeft      =   60
   ClientTop       =   345
   ClientWidth     =   4680
   LinkTopic       =   "Form1"
   ScaleHeight     =   9195
   ScaleWidth      =   4680
   StartUpPosition =   3  '窗口缺省
   Begin VB.CommandButton Command1 
      Caption         =   "Clear"
      Height          =   855
      Left            =   3600
      TabIndex        =   1
      Top             =   2160
      Width           =   975
   End
   Begin MSCommLib.MSComm MSComm 
      Left            =   3720
      Top             =   120
      _ExtentX        =   1005
      _ExtentY        =   1005
      _Version        =   393216
      BaudRate        =   4800
      InputMode       =   1
   End
   Begin VB.ListBox List2 
      Height          =   8880
      Left            =   120
      TabIndex        =   0
      Top             =   120
      Width           =   3255
   End
End
Attribute VB_Name = "Form1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Dim MyServer As OPCServer
Dim MyGroups As OPCGroups

Dim MyGroup_DigitalRead As OPCGroup
Dim MyGroup_AnalogRead As OPCGroup

Dim MyItems_DigitalRead As OPCItems
Dim MyItems_AnalogRead As OPCItems

Dim ServerHandle() As Long
Dim Errors() As Long

Dim ClientHandles_DigitalRead(1 To 18) As Long
Dim ClientHandles_AnalogRead(1 To 6) As Long

Dim OPCItemsID_DigitalRead(1 To 18) As String
Dim OPCItemsID_AnalogRead(1 To 6) As String

Dim sendArray(1 To 19) As Byte

Dim DigitalRead(1 To 18) As Byte
Dim AnalogRead(1 To 6) As Integer

Dim DigitalValue() As Variant   '从WinCC接收数字量
Dim AnalogValue() As Variant   '从WinCC接收模拟量

Private Sub Command1_Click()
List2.Clear

End Sub
Private Sub Form_Load()

MSComm.PortOpen = True

'OPC初始化
Set MyServer = New OPCServer
MyServer.Connect "OPCServer.WinCC"

Set MyGroups = MyServer.OPCGroups

Set MyGroup_DigitalRead = MyGroups.Add("Group3")
Set MyGroup_AnalogRead = MyGroups.Add("Group4")

'从WinCC读数字变量ItemID连接
OPCItemsID_DigitalRead(1) = "WB_GSJ_Y"
OPCItemsID_DigitalRead(2) = "WB_GSJ_M"
OPCItemsID_DigitalRead(3) = "WB_GSJ_T"

OPCItemsID_DigitalRead(4) = "WB_1PWB_Y"
OPCItemsID_DigitalRead(5) = "WB_1PWB_M"
OPCItemsID_DigitalRead(6) = "WB_1PWB_T"

OPCItemsID_DigitalRead(7) = "WB_2PWB_Y"
OPCItemsID_DigitalRead(8) = "WB_2PWB_M"
OPCItemsID_DigitalRead(9) = "WB_2PWB_T"

OPCItemsID_DigitalRead(10) = "WB_3PWB_Y"
OPCItemsID_DigitalRead(11) = "WB_3PWB_M"
OPCItemsID_DigitalRead(12) = "WB_3PWB_T"

OPCItemsID_DigitalRead(13) = "WB_4PWB_Y"
OPCItemsID_DigitalRead(14) = "WB_4PWB_M"
OPCItemsID_DigitalRead(15) = "WB_4PWB_T"

OPCItemsID_DigitalRead(16) = "WB_YZJ_Y"
OPCItemsID_DigitalRead(17) = "WB_YZJ_M"
OPCItemsID_DigitalRead(18) = "WB_YZJ_T"

'从WinCC读模拟变量ItemID连接
OPCItemsID_AnalogRead(1) = "WB_DL_H"
OPCItemsID_AnalogRead(2) = "WB_DL_L"
OPCItemsID_AnalogRead(3) = "WB_YW_H"
OPCItemsID_AnalogRead(4) = "WB_1YW"
OPCItemsID_AnalogRead(5) = "WB_2YW"
OPCItemsID_AnalogRead(6) = "WB_3YW"

For i = 1 To 18
ClientHandles_DigitalRead(i) = i
Next i

For i = 1 To 6
ClientHandles_AnalogRead(i) = i + 18
Next i

Set MyItems_DigitalRead = MyGroup_DigitalRead.OPCItems
Set MyItems_AnalogRead = MyGroup_AnalogRead.OPCItems


'从WinCC读数字量
MyItems_DigitalRead.AddItems 18, OPCItemsID_DigitalRead, ClientHandles_DigitalRead, ServerHandle, Errors
MyGroup_DigitalRead.SyncRead OPCCache, 18, ServerHandle, DigitalValue, Errors

For i = 1 To 18
If DigitalValue(i) Then
    DigitalRead(i) = 1
Else
    DigitalRead(i) = 0
End If

Next i

'整合数字量字节,共6字节
For i = 1 To 16 Step 3
sendArray((i + 2) \ 3) = DigitalRead(i) * 16 + DigitalRead(i + 1) * 32 + DigitalRead(i + 2) * 64
Next i

'从WinCC读模拟量
MyItems_AnalogRead.AddItems 6, OPCItemsID_AnalogRead, ClientHandles_AnalogRead, ServerHandle, Errors
MyGroup_AnalogRead.SyncRead OPCCache, 6, ServerHandle, AnalogValue, Errors

For i = 1 To 6
AnalogRead(i) = AnalogValue(i)
Next i


'整合模拟量字节,共12个
j% = 1
For i = 7 To 17 Step 2
sendArray(i) = AnalogRead(j) \ 256
sendArray(i + 1) = AnalogRead(j) Mod 256
j = j + 1
Next i

'加最后校验字节
sendArray(19) = 254

'输出到列表,调试用
For i = 1 To 19
List2.AddItem sendArray(i)
Next i

'发送
MSComm.Output = sendArray

MSComm.PortOpen = False

End

End Sub

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -