閱讀 | 訂閱
閱讀 | 訂閱
控制系統(tǒng)

基于VB的臺(tái)達(dá)PLC與監(jiān)控計(jì)算機(jī)的串行通信實(shí)現(xiàn)(三)

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

4.2 VB與 PLC 通信的實(shí)現(xiàn) 以下舉例說明現(xiàn)場(chǎng)設(shè)備與PLC通信的實(shí)現(xiàn)。 1)控制要求:控制PLC的起動(dòng)、停止,并顯示運(yùn)行狀態(tài)(綠色為運(yùn)行,紅色為停止);能夠用交替型按鈕控...

    4.2 VB與PLC通信的實(shí)現(xiàn)

  以下舉例說明現(xiàn)場(chǎng)設(shè)備與PLC通信的實(shí)現(xiàn)。

  1)控制要求:控制PLC的起動(dòng)、停止,并顯示運(yùn)行狀態(tài)(綠色為運(yùn)行,紅色為停止);能夠用交替型按鈕控制Y0,Y1,并用指示燈顯示Y0,Y1狀態(tài)(綠色為運(yùn)行,紅色為停止);能夠?qū)256,D512兩個(gè)寄存器進(jìn)行數(shù)值寫入的操作。

  2)實(shí)現(xiàn)思路:PLC起動(dòng)停止的標(biāo)志位為M1072,查DVP協(xié)議,知道地址為H0C30,按功能碼01操作; 同樣Y0,Y1的地址分別為H0500,H0501。寫入FF00為ON,0000為OFF,按功能碼05操作;D256,D512地址分別為H1100,H1200,按功能碼06操作即可。

  3)VB接口的設(shè)計(jì)如圖10所示。

  

  圖10 監(jiān)控程序界面

  用按鈕控制PLC的起動(dòng)停止,Y0、Y1的ON/OFF及D256、D512寫完數(shù)據(jù)的發(fā)送;用Shape組件做指示燈,表示PLC的運(yùn)行狀態(tài)和Y的狀態(tài);用timer組件不停的讀取M1072的狀態(tài),以判斷PLC的運(yùn)行情況;用MScomm控件實(shí)現(xiàn)PC與PLC的通信。

  4)編程實(shí)現(xiàn)的代碼構(gòu)成

 ?。?) LRC算法校驗(yàn)的實(shí)現(xiàn)

  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#分頁標(biāo)題#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

 ?。?) 運(yùn)行的開始就判斷PLC的狀態(tài)并設(shè)置標(biāo)志位

  ‘初次運(yùn)行打開串口,并顯示PLC運(yùn)行狀態(tài)

  Private Sub Form_Load()

  Dim s1 As String

  Dim s2 As String

  Dim s22 As String

  Dim s3 As String#p#分頁標(biāo)題#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為運(yùn)行標(biāo)志

  Else

  plc = 0 ‘PLC為停止標(biāo)志

  End If

  End Sub

    (3) 下面一段為用指示燈表示PLC的運(yùn)行狀態(tài)

  Private Sub Timer5_Timer()

  Dim s1 As String

  Dim s2 As String#p#分頁標(biāo)題#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為運(yùn)行標(biāo)志

  Else: If s4 = “30” Then plc = 0 ‘PLC為停止標(biāo)志

  End If

  If plc = 1 Then

  Label2.Caption = “PLC正在運(yùn)行。。.。。.”

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

  Else

  Label2.Caption = “PLC已經(jīng)停止”#p#分頁標(biāo)題#e#

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

  End If

  End Sub

 ?。?) PLC的起動(dòng)與停止

  ’起動(dòng)PLC

  Private Sub start_Click()

  Dim strout As String

  Timer5.Enabled = False

  str = “00050C30FF00” ‘M1072 為PLC起動(dòng)停止標(biāo)志位。查地址表,M1072為OC30.FF00為置

  ON,0000為置OFF。

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

  LRCC = LRC(str) ‘計(jì)算 str的lrc校驗(yàn)碼。

  strout = “:” + str + LRCC + Chr$(13) + Chr$(10) ’欲傳送之?dāng)?shù)據(jù)。13為D,10為A

  MSComm1.Output = strout

  Timer5.Enabled = True

  End Sub

  ‘停止PLC

#p#分頁標(biāo)題#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與PLC起動(dòng)/停止的控制方式相同,指示燈的表示方式也相同。D256,D512數(shù)據(jù)寫入的操作類似,限于篇幅其它代碼就不再列出了。

5 結(jié)束語

  VB語言易于編程使用,為與串行設(shè)備的通信提供了很大的方便。臺(tái)達(dá)PLC采用標(biāo)準(zhǔn)的目前廣為流行的MODBUS協(xié)議,為實(shí)現(xiàn)PLC與監(jiān)控計(jì)算機(jī)的通信提供了簡(jiǎn)化的平臺(tái)。由于臺(tái)達(dá)所有的機(jī)電產(chǎn)品都支持MODBUS協(xié)議,所以,掌握了VB與PLC通信過程,也就等于掌握了PC與臺(tái)達(dá)所有機(jī)電產(chǎn)品的通信。

 

轉(zhuǎn)載請(qǐng)注明出處。

暫無關(guān)鍵詞
免責(zé)聲明

① 凡本網(wǎng)未注明其他出處的作品,版權(quán)均屬于激光制造網(wǎng),未經(jīng)本網(wǎng)授權(quán)不得轉(zhuǎn)載、摘編或利用其它方式使用。獲本網(wǎng)授權(quán)使用作品的,應(yīng)在授權(quán)范圍內(nèi)使 用,并注明"來源:激光制造網(wǎng)”。違反上述聲明者,本網(wǎng)將追究其相關(guān)責(zé)任。
② 凡本網(wǎng)注明其他來源的作品及圖片,均轉(zhuǎn)載自其它媒體,轉(zhuǎn)載目的在于傳遞更多信息,并不代表本媒贊同其觀點(diǎn)和對(duì)其真實(shí)性負(fù)責(zé),版權(quán)歸原作者所有,如有侵權(quán)請(qǐng)聯(lián)系我們刪除。
③ 任何單位或個(gè)人認(rèn)為本網(wǎng)內(nèi)容可能涉嫌侵犯其合法權(quán)益,請(qǐng)及時(shí)向本網(wǎng)提出書面權(quán)利通知,并提供身份證明、權(quán)屬證明、具體鏈接(URL)及詳細(xì)侵權(quán)情況證明。本網(wǎng)在收到上述法律文件后,將會(huì)依法盡快移除相關(guān)涉嫌侵權(quán)的內(nèi)容。

網(wǎng)友點(diǎn)評(píng)
0相關(guān)評(píng)論
精彩導(dǎo)讀