• <strong id="227bx"></strong>

  • <label id="227bx"></label>
    <ol id="227bx"><code id="227bx"><noframes id="227bx">
  • 3.利用VB編程實現PC與三菱PLC通信

    編寫PC的通信程序可采用匯編語言編寫,或采用各種高級語言編寫,或采用工控組態軟件,或直接采用PLC廠家的通信軟件(如三菱的MELSE MEDOC等)

    下面利用VB6.0以一個簡單的例子來說明編寫通信程序的要點。假設PC要求從PLC中讀入從D123開始的4個字節的數據(D123、D124),其傳輸應答過程及報文如圖7-16所示。

    7-16 傳輸應答過程及命令報文

    命令報文中10F6HD123的地址,04H表示要讀入4個字節的數據。校驗和SUM30H31H30H46H36H30H34H03 H174H,溢出部分不計,故SUMH=7,SUAIL=4,相應的ASC碼為“37H”,“34H”。應答報文中4個字節的十六進制數,其相應的ASC碼為8個字節,故應答報文長度為12個字節。

    根據PCFX系列PLC的傳輸應答過程,利用VBMSComm控件可以編寫如下通信程序實現PCFX系列PLC之間的串行通信,以完成數據的讀取。MSComm控件可以采用輪詢或事件驅動的方法從端口獲取數據。在這個例子中使用了輪詢方法。

    1)通信口初始化

    Private Sub Initialize()

    MSComm1CommPort =1

    MSComm1Settings = “9600,E,7,1”

    MSComm1InBufferSize = 1024

    MSCommlOutBuffersize = 1024

    MSComm1InputLen = 0

    MSCommlInputMode = comInputText

    MSComm1Handshaking = comNone

    MSComm1PortOpen = True

    End Sub

    2)請求通信與確認

    Private Function MakeHandshaking()As Boolean

    Dim InPackage As String

    MSCommlOutBufferCount = 0

    MSCommlInBufferCount = 0

    MSCommlOutPut = Chr(&H5

    Do

    DoEvents

    Loop Until MSCommlInBufferCount = 1

    InPackage = MSCommlInput

    If InPackage = Chr(&H6 Then

    MakeHandShaking = True

    Else

    MakeHandshaking = False

    End If

    End Function

    3)發送命令報文

    Private Sub SendFrame ()

    Dim Outstring As String

    MSCommlOutBufferCount = 0

    MSCommlInBufferCount = 0

    Outstrin = Chr(&H2)+on10F604Chr(&H3)+74

    MSCommlOutput = Outstring

    End Sub

    4)讀取應答報文

    Private Sub ReceiveFrame()

    Dim Instring As String

    Do

    DoEvents

    Loop Until MSCommlInBufferCount = 12

    InString = MSCommlInpult

    End Sub

    国产AV无码专区亚洲AV|欧美色中文字幕在线|欧美a级毛欧美|亚洲国产激情一区二区|亚洲gv天堂gv无码男同
  • <strong id="227bx"></strong>

  • <label id="227bx"></label>
    <ol id="227bx"><code id="227bx"><noframes id="227bx">