閱讀 | 訂閱
閱讀 | 訂閱
控製係統

基於VB的台達PLC與監控計算機的串行通信實現(三)

星之球激光 來源:中電網2013-03-07 我要評論(0 )   

4.2 VB與(yu) PLC 通信的實現 以下舉(ju) 例說明現場設備與(yu) PLC通信的實現。 1)控製要求:控製PLC的起動、停止,並顯示運行狀態(綠色為(wei) 運行,紅色為(wei) 停止);能夠用交替型按鈕控...

    4.2 VB與(yu) PLC通信的實現

  以下舉(ju) 例說明現場設備與(yu) PLC通信的實現。

  1)控製要求:控製PLC的起動、停止,並顯示運行狀態(綠色為(wei) 運行,紅色為(wei) 停止);能夠用交替型按鈕控製Y0,Y1,並用指示燈顯示Y0,Y1狀態(綠色為(wei) 運行,紅色為(wei) 停止);能夠對D256,D512兩(liang) 個(ge) 寄存器進行數值寫(xie) 入的操作。

  2)實現思路:PLC起動停止的標誌位為(wei) M1072,查DVP協議,知道地址為(wei) H0C30,按功能碼01操作; 同樣Y0,Y1的地址分別為(wei) H0500,H0501。寫(xie) 入FF00為(wei) ON,0000為(wei) OFF,按功能碼05操作;D256,D512地址分別為(wei) H1100,H1200,按功能碼06操作即可。

  3)VB接口的設計如圖10所示。

  

  圖10 監控程序界麵

  用按鈕控製PLC的起動停止,Y0、Y1的ON/OFF及D256、D512寫(xie) 完數據的發送;用Shape組件做指示燈,表示PLC的運行狀態和Y的狀態;用timer組件不停的讀取M1072的狀態,以判斷PLC的運行情況;用MScomm控件實現PC與(yu) PLC的通信。

  4)編程實現的代碼構成

  (1) LRC算法校驗的實現

  Public Function LRC(str As String) As String

  c = 0

  l = Len(str)

  For c = c + 1 To l

  c_data = Mid$(str, c, 2)

#p#分頁標題#e#  d_lrc = d_lrc + Val(“&H” + c_data)

  c = c + 1

  Next c

  If d_lrc 》 &HFF Then

  d_lrc = d_lrc Mod &H100

  End If

  h_lrc = Hex(&HFF - d_lrc + 1)

  If Len(h_lrc) 》 2 Then

  h_lrc = Mid(h_lrc, Len(h_lrc) - 1, 2)

  End If

  LRC = h_lrc

  End Function

  (2) 運行的開始就判斷PLC的狀態並設置標誌位

  ‘初次運行打開串口,並顯示PLC運行狀態

  Private Sub Form_Load()

  Dim s1 As String

  Dim s2 As String

  Dim s22 As String

  Dim s3 As String#p#分頁標題#e#

  Dim s4 As String

  MSComm1.PortOpen = True

  s2 = “01010C300001”

  s22 = LRC(s2)

  s1 = “:” + s2 + s22 + Chr$(13) + Chr$(10)

  MSComm1.Output = s1

  s3 = MSComm1.Input

  s4 = Mid$(s, 6, 8)

  If s4 = “0C30FF00” Then

  plc = 1 ’PLC為(wei) 運行標誌

  Else

  plc = 0 ‘PLC為(wei) 停止標誌

  End If

  End Sub

    (3) 下麵一段為(wei) 用指示燈表示PLC的運行狀態

  Private Sub Timer5_Timer()

  Dim s1 As String

  Dim s2 As String#p#分頁標題#e#

  Dim s22

  Dim s3 As String

  Dim s4 As String

  s2 = “01010C300001”

  s22 = LRC(s2)

  s1 = “:” + s2 + s22 + Chr$(13) + Chr$(10)

  MSComm1.Output = s1

  s3 = MSComm1.Input

  s4 = Mid$(s3, 8, 2)

  If s4 = “31” Then

  plc = 1 ’PLC為(wei) 運行標誌

  Else: If s4 = “30” Then plc = 0 ‘PLC為(wei) 停止標誌

  End If

  If plc = 1 Then

  Label2.Caption = “PLC正在運行。。.。。.”

  Shape1.FillColor = RGB(0, 255, 0) ’green

  Else

  Label2.Caption = “PLC已經停止”#p#分頁標題#e#

  Shape1.FillColor = RGB(255, 0, 0) ‘red

  End If

  End Sub

  (4) PLC的起動與(yu) 停止

  ’起動PLC

  Private Sub start_Click()

  Dim strout As String

  Timer5.Enabled = False

  str = “00050C30FF00” ‘M1072 為(wei) PLC起動停止標誌位。查地址表,M1072為(wei) OC30.FF00為(wei) 置

  ON,0000為(wei) 置OFF。

  ’以上都是固定格式,要牢記。

  LRCC = LRC(str) ‘計算 str的lrc校驗碼。

  strout = “:” + str + LRCC + Chr$(13) + Chr$(10) ’欲傳(chuan) 送之數據。13為(wei) D,10為(wei) A

  MSComm1.Output = strout

  Timer5.Enabled = True

  End Sub

  ‘停止PLC

#p#分頁標題#e#  Private Sub stop_Click()

  Dim strout As String

  Timer5.Enabled = False

  str = “00050C300000”

  LRCC = LRC(str)

  strout = “:” + str + LRCC + Chr$(13) + Chr$(10)

  MSComm1.Output = strout

  Timer5.Enabled = True

  End Sub

  Y0、Y1的ON/OFF與(yu) PLC起動/停止的控製方式相同,指示燈的表示方式也相同。D256,D512數據寫(xie) 入的操作類似,限於(yu) 篇幅其它代碼就不再列出了。

5 結束語

  VB語言易於(yu) 編程使用,為(wei) 與(yu) 串行設備的通信提供了很大的方便。台達PLC采用標準的目前廣為(wei) 流行的MODBUS協議,為(wei) 實現PLC與(yu) 監控計算機的通信提供了簡化的平台。由於(yu) 台達所有的機電產(chan) 品都支持MODBUS協議,所以,掌握了VB與(yu) PLC通信過程,也就等於(yu) 掌握了PC與(yu) 台達所有機電產(chan) 品的通信。

轉載請注明出處。

免責聲明

① 凡本網未注明其他出處的作品,版權均屬於(yu) fun88网页下载,未經本網授權不得轉載、摘編或利用其它方式使用。獲本網授權使用作品的,應在授權範圍內(nei) 使 用,並注明"來源:fun88网页下载”。違反上述聲明者,本網將追究其相關(guan) 責任。
② 凡本網注明其他來源的作品及圖片,均轉載自其它媒體(ti) ,轉載目的在於(yu) 傳(chuan) 遞更多信息,並不代表本媒讚同其觀點和對其真實性負責,版權歸原作者所有,如有侵權請聯係我們(men) 刪除。
③ 任何單位或個(ge) 人認為(wei) 本網內(nei) 容可能涉嫌侵犯其合法權益,請及時向本網提出書(shu) 麵權利通知,並提供身份證明、權屬證明、具體(ti) 鏈接(URL)及詳細侵權情況證明。本網在收到上述法律文件後,將會(hui) 依法盡快移除相關(guan) 涉嫌侵權的內(nei) 容。

網友點評
0相關評論
精彩導讀