基本信息
源码名称:VB与三菱PLC通讯数据传输
源码大小:0.19M
文件格式:.rar
开发语言:ASP
更新时间:2017-08-29
   友情提示:(无需注册或充值,赞助后即可获取资源下载链接)

     嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300

本次赞助数额为: 2 元 
   源码介绍

VB与三菱Q系列PLC通讯数据传输


Imports System.Runtime.InteropServices
Public Class Form1

    Dim Handle1 As Int32
    Dim Handle2 As Int32
    Dim EntLink1 As Boolean
    Dim ScanCount1 As Long
    Dim EntLink2 As Boolean
    Dim ScanCount2 As Long
    Dim PLC As New EntQsPlc_Asc.PlcClient
    Public Declare Function timeGetTime Lib "winmm.dll" () As UInt32

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim i As ShImports System.Net
ort
        Me.CenterToScreen()
        cmbReadMry.Items.Clear()
        cmbReadMry.Items.Add("X")
        cmbReadMry.Items.Add("Y")
        cmbReadMry.Items.Add("M")
        cmbReadMry.Items.Add("D")
        '
        cmbReadMry2.Items.Clear()
        cmbReadMry2.Items.Add("X")
        cmbReadMry2.Items.Add("Y")
        cmbReadMry2.Items.Add("M")
        cmbReadMry2.Items.Add("D")
        '
        cmbWriteMry.Items.Clear()
        cmbWriteMry.Items.Add("X")
        cmbWriteMry.Items.Add("Y")
        cmbWriteMry.Items.Add("M")
        cmbWriteMry.Items.Add("D")
        '
        cmbWriteMry2.Items.Clear()
        cmbWriteMry2.Items.Add("X")
        cmbWriteMry2.Items.Add("Y")
        cmbWriteMry2.Items.Add("M")
        cmbWriteMry2.Items.Add("D")
        '
        cmbBitMry.Items.Clear()
        cmbBitMry.Items.Add("X")
        cmbBitMry.Items.Add("Y")
        cmbBitMry.Items.Add("M")
        cmbBitMry.Items.Add("D")
        '
        cmbBitMry2.Items.Clear()
        cmbBitMry2.Items.Add("X")
        cmbBitMry2.Items.Add("Y")
        cmbBitMry2.Items.Add("M")
        cmbBitMry2.Items.Add("D")
        '
        cmbReadType.Items.Clear()
        cmbReadType.Items.Add("INT16")
        cmbReadType.Items.Add("UINT16")
        cmbReadType.Items.Add("DINT32")
        cmbReadType.Items.Add("HEX32")
        cmbReadType.Items.Add("REAL32")
        cmbReadType.Items.Add("BIN16")
        '
        cmbReadType2.Items.Clear()
        cmbReadType2.Items.Add("INT16")
        cmbReadType2.Items.Add("UINT16")
        cmbReadType2.Items.Add("DINT32")
        cmbReadType2.Items.Add("HEX32")
        cmbReadType2.Items.Add("REAL32")
        cmbReadType2.Items.Add("BIN16")

        '
        cmbWriteType.Items.Clear()
        cmbWriteType.Items.Add("INT16")
        cmbWriteType.Items.Add("UINT16")
        cmbWriteType.Items.Add("DINT32")
        cmbWriteType.Items.Add("HEX32")
        cmbWriteType.Items.Add("REAL32")
        cmbWriteType.Items.Add("BIN16")

        '
        cmbWriteType2.Items.Clear()
        cmbWriteType2.Items.Add("INT16")
        cmbWriteType2.Items.Add("UINT16")
        cmbWriteType2.Items.Add("DINT32")
        cmbWriteType2.Items.Add("HEX32")
        cmbWriteType2.Items.Add("REAL32")
        cmbWriteType2.Items.Add("BIN16")


        For i = 0 To 15 Step 1
            cmbBit.Items.Add("Bit" & i)
            cmbBit2.Items.Add("Bit" & i)
        Next i
        cmbReadMry.SelectedIndex = 2
        cmbWriteMry.SelectedIndex = 2
        cmbBitMry.SelectedIndex = 1
        cmbBit.SelectedIndex = 0
        cmbReadType.SelectedIndex = 0
        cmbWriteType.SelectedIndex = 0
        lstRead.Items.Clear()
        txtWrite.Text = ""
        '
        cmbReadMry2.SelectedIndex = 2
        cmbWriteMry2.SelectedIndex = 2
        cmbBitMry2.SelectedIndex = 1
        cmbBit2.SelectedIndex = 0
        cmbReadType2.SelectedIndex = 0
        cmbWriteType2.SelectedIndex = 0
        lstRead2.Items.Clear()
        txtWrite2.Text = ""
    End Sub


    Private Sub butLink_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles butLink.Click
        Dim re As Short
        Dim restr As String = ""
        re = PLC.EntLink(Trim(txtLocalIP.Text), Val(txtLocalPort.Text), Trim(txtRemoteIP.Text), Val(txtRemotePort.Text), "DEMO", Handle1)
        txtReLink.Text = re.ToString
        If re = 0 Then
            EntLink1 = True
            MsgBox("PLC联接成功! ")
        Else
            EntLink1 = False
            MsgBox("PLC联接失败: " & restr)
        End If
    End Sub


    Private Sub butLink2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles butLink2.Click
        Dim re As Short
        Dim restr As String = ""
        re = PLC.EntLink(Trim(txtLocalIP2.Text), Val(txtLocalPort2.Text), Trim(txtRemoteIP2.Text), Val(txtRemotePort2.Text), "DEMO", Handle2)
        txtReLink2.Text = re.ToString
        If re = 0 Then
            EntLink2 = True
            MsgBox("PLC联接成功! ")
        Else
            EntLink2 = False
            MsgBox("PLC联接失败: " & restr)
        End If
    End Sub


    Private Sub butClose_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles butClose.Click
        Dim re As Short
        If Not EntLink1 Then
            MsgBox("还未与PLC建立联接!")
            Exit Sub
        End If
        re = PLC.DeLink(Handle1)
        txtReClose.Text = re.ToString
    End Sub
    Private Sub butClose2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles butClose2.Click
        Dim re As Short
        If Not EntLink2 Then
            MsgBox("还未与PLC建立联接!")
            Exit Sub
        End If
        re = PLC.DeLink(Handle2)
        txtReClose2.Text = re.ToString
    End Sub


    Private Sub butRead_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles butRead.Click
        Dim re As Short
        Dim i As Short
        Dim RD() As Object
        ReDim RD(Val(txtReadCnt.Text - 1))
        If Not EntLink1 Then
            MsgBox("还未与PLC建立联接!")
            Exit Sub
        End If
        re = PLC.CmdRead(Handle1, cmbReadMry.SelectedIndex 1, cmbReadType.SelectedIndex 1, Val(txtReadAdd.Text), Val(txtReadCnt.Text), RD)
        txtReRead.Text = re.ToString
        lstRead.Items.Clear()
        For i = 0 To UBound(RD) Step 1
            If Not IsNothing(RD(i)) Then lstRead.Items.Add(RD(i))
        Next i
        If re <> 0 Then
            Timer1.Enabled = False
            butScan.Text = "Cycle R/W"
        End If
    End Sub

    Private Sub butRead2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles butRead2.Click
        Dim re As Short
        Dim i As Short
        Dim RD() As Object
        ReDim RD(Val(txtReadCnt2.Text - 1))
        If Not EntLink2 Then
            MsgBox("还未与PLC建立联接!")
            Exit Sub
        End If
        re = PLC.CmdRead(Handle2, cmbReadMry2.SelectedIndex 1, cmbReadType2.SelectedIndex 1, Val(txtReadAdd2.Text), Val(txtReadCnt2.Text), RD)
        txtReRead2.Text = re.ToString
        lstRead2.Items.Clear()
        For i = 0 To UBound(RD) Step 1
            If Not IsNothing(RD(i)) Then lstRead2.Items.Add(RD(i))
        Next i
        If re <> 0 Then
            Timer2.Enabled = False
            butScan2.Text = "Cycle R/W"
        End If
    End Sub

    Private Sub butWrite_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles butWrite.Click
        Dim re As Short
        Dim i As Short
        Dim temp() As String
        Dim WD() As Object
        If Not EntLink1 Then
            MsgBox("还未与PLC建立联接!")
            Exit Sub
        End If
        ReDim WD(Val(txtWriteCnt.Text) - 1)
        temp = Split(txtWrite.Text, vbCrLf)
        For i = 0 To UBound(WD) Step 1
            If i > UBound(temp) Then
                WD(i) = 0
            Else
                WD(i) = Trim(temp(i))
            End If
        Next i
        re = PLC.CmdWrite(Handle1, cmbWriteMry.SelectedIndex 1, cmbWriteType.SelectedIndex 1, Val(txtWriteAdd.Text), Val(txtWriteCnt.Text), WD)
        txtReWrite.Text = re.ToString
        If re <> 0 Then
            Timer1.Enabled = False
            butScan.Text = "Cycle R/W"
        End If
    End Sub
    Private Sub butWrite2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles butWrite2.Click
        Dim re As Short
        Dim i As Short
        Dim temp() As String
        Dim WD() As Object
        If Not EntLink2 Then
            MsgBox("还未与PLC建立联接!")
            Exit Sub
        End If
        ReDim WD(Val(txtWriteCnt2.Text) - 1)
        temp = Split(txtWrite2.Text, vbCrLf)
        For i = 0 To UBound(WD) Step 1
            If i > UBound(temp) Then
                WD(i) = 0
            Else
                WD(i) = Trim(temp(i))
            End If
        Next i
        re = PLC.CmdWrite(Handle2, cmbWriteMry2.SelectedIndex 1, cmbWriteType2.SelectedIndex 1, Val(txtWriteAdd2.Text), Val(txtWriteCnt2.Text), WD)
        txtReWrite2.Text = re.ToString
        If re <> 0 Then
            Timer2.Enabled = False
            butScan2.Text = "Cycle R/W"
        End If
    End Sub


    Private Sub butScan_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles butScan.Click
        If Not EntLink1 Then
            MsgBox("还未与PLC建立联接!")
            Exit Sub
        End If
        Timer1.Enabled = Not Timer1.Enabled
        If Timer1.Enabled Then
            ScanCount1 = 0
            butScan.Text = "Stop R/W"
        Else
            butScan.Text = "Cycle R/W"
        End If
    End Sub
    Private Sub butScan2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles butScan2.Click
        If Not EntLink2 Then
            MsgBox("还未与PLC建立联接!")
            Exit Sub
        End If
        Timer2.Enabled = Not Timer2.Enabled
        If Timer2.Enabled Then
            ScanCount2 = 0
            butScan2.Text = "Stop R/W"
        Else
            butScan2.Text = "Cycle R/W"
        End If
    End Sub



    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        Timer1.Enabled = False
        Dim tim As Integer = timeGetTime
        If Not EntLink1 Then
            MsgBox("还未与PLC建立联接!")
            Exit Sub
        End If
        Call butRead_Click(Nothing, Nothing)
        Call butWrite_Click(Nothing, Nothing)
       If (Val(txtReRead.Text) < 0) Or (Val(txtReWrite.Text) < 0) Then
            Timer1.Enabled = False
            butScan.Text = "DLL SCAN"
        Else
            ScanCount1 = 1
            txtScanCnt.Text = ScanCount1
            txtScanPrd.Text = (timeGetTime - tim) & "ms"
        End If
    End Sub
    Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick
        Timer2.Enabled = False
        Dim tim As Integer = timeGetTime
        If Not EntLink2 Then
            MsgBox("还未与PLC建立联接!")
            Exit Sub
        End If
        Call butRead2_Click(Nothing, Nothing)
        Call butWrite2_Click(Nothing, Nothing)
        If (Val(txtReRead.Text) < 0) Or (Val(txtReWrite.Text) < 0) Then
            Timer1.Enabled = False
            butScan.Text = "DLL SCAN"
        Else
            ScanCount2 = 1
            txtScanCnt.Text = ScanCount2
            txtScanPrd.Text = (timeGetTime - tim) & "ms"
        End If
    End Sub


    Private Sub butBitTest_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles butBitTest.Click
        If Not EntLink1 Then
            MsgBox("还未与PLC建立联接!")
            Exit Sub
        End If
        Dim rd As Boolean
        Dim re As Short
        re = PLC.Bit_Test(Handle1, cmbBitMry.SelectedIndex 1, Val(txtBitAdd.Text), cmbBit.SelectedIndex, rd)
        txtBitTest.Text = rd
        txtReBit.Text = re
    End Sub
    Private Sub butBitTest2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles butBitTest2.Click
        If Not EntLink2 Then
            MsgBox("还未与PLC建立联接!")
            Exit Sub
        End If
        Dim rd As Boolean
        Dim re As Short
        re = PLC.Bit_Test(Handle2, cmbBitMry2.SelectedIndex 1, Val(txtBitAdd2.Text), cmbBit2.SelectedIndex, rd)
        txtBitTest2.Text = rd
        txtReBit2.Text = re
    End Sub



    Private Sub butBitSet_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles butBitSet.Click
        If Not EntLink1 Then
            MsgBox("还未与PLC建立联接!")
            Exit Sub
        End If
        Dim re As Short
        re = PLC.Bit_Set(Handle1, cmbBitMry.SelectedIndex 1, Val(txtBitAdd.Text), cmbBit.SelectedIndex)
        txtReBit.Text = re
    End Sub
    Private Sub butBitSet2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles butBitSet2.Click
        If Not EntLink2 Then
            MsgBox("还未与PLC建立联接!")
            Exit Sub
        End If
        Dim re As Short
        re = PLC.Bit_Set(Handle2, cmbBitMry2.SelectedIndex 1, Val(txtBitAdd2.Text), cmbBit2.SelectedIndex)
        txtReBit2.Text = re
    End Sub


    Private Sub butBitRst_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles butBitRst.Click
        If Not EntLink1 Then
            MsgBox("还未与PLC建立联接!")
            Exit Sub
        End If
        Dim re As Short
        re = PLC.Bit_Reset(Handle1, cmbBitMry.SelectedIndex 1, Val(txtBitAdd.Text), cmbBit.SelectedIndex)
        txtReBit.Text = re
    End Sub
    Private Sub butBitRst2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles butBitRst2.Click
        If Not EntLink2 Then
            MsgBox("还未与PLC建立联接!")
            Exit Sub
        End If
        Dim re As Short
        re = PLC.Bit_Reset(Handle2, cmbBitMry2.SelectedIndex 1, Val(txtBitAdd2.Text), cmbBit2.SelectedIndex)
        txtReBit2.Text = re
    End Sub







End Class