日韩床上生活一级视频|能看毛片的操逼网站|色悠悠网站在线观看视频|国产免费观看A淫色免费|国产av久久久久久久|免费A级视频美女网站黄|国产毛片av日韩小黄片|热久久免费国产视频|中文字幕无码色色|成人在线视频99久久久

當(dāng)前位置:機(jī)電之家首頁 >> PLC技術(shù)>> PLC基礎(chǔ) >> PLC通信 >> 如何用VB實(shí)現(xiàn)Modbus串行通訊
如何用VB實(shí)現(xiàn)Modbus串行通訊

在一些應(yīng)用中可能需要使用諸如VB來進(jìn)行上位機(jī)監(jiān)控程序的開發(fā),而Modbus協(xié)議是這類應(yīng)用中首選的通訊協(xié)議;Modbus協(xié)議以其簡單易用,在工業(yè)領(lǐng)域里已廣泛的為其他第三方設(shè)備所支持。這里對(duì)VB和Twido PLC間的通訊進(jìn)行說明。
  對(duì)于大部分應(yīng)用,Twido PLC作為從站,它不需要編制通訊程序,只要把通訊口的參數(shù)設(shè)置好即可,例如下圖表示此Twido通過編程口和上位機(jī)連接,其站號(hào)地址為2;波特率、數(shù)據(jù)位、校驗(yàn)、停止位和上位機(jī)設(shè)置保持一致。
  


  VB程序通過利用MSComm控件很容易就能夠?qū)崿F(xiàn)。
  1. 通訊口初始化:
   MSComm1.Settings = "9600,n,8,1"
   MSComm1.CommPort = 1
   MSComm1.SThreshold = 0
   If Not MSComm1.PortOpen Then MSComm1.PortOpen = True
  
  2. CRC校驗(yàn)碼的計(jì)算方法,如以下函數(shù),可以得到字節(jié)數(shù)組變量cmdbbbbbb指向的字符串的CRC校驗(yàn)碼。
  Function crc16_1(ByRef cmdbbbbbb() As Byte, ByVal j As Integer)
   Dim data As Integer
   Dim i As Integer
  
  
   Addressreg_crc = &HFFFF
   For i = 0 To j
   Addressreg_crc = Addressreg_crc Xor cmdbbbbbb(i)
   For j = 0 To 7
   data = Addressreg_crc And &H1
   If data Then
   Addressreg_crc = Int(Addressreg_crc / 2)
   Addressreg_crc = Addressreg_crc And &H7FFF
   Addressreg_crc = Addressreg_crc Xor &HA001
   Else
   Addressreg_crc = Addressreg_crc / 2
   Addressreg_crc = Addressreg_crc And &H7FFF
   End If
   Next j
   Next i
  
   If Addressreg_crc < 0 Then
   Addressreg_crc = Addressreg_crc - &HFFFF0000
   End If
  
   HiByte = Addressreg_crc And &HFF
   LoByte = (Addressreg_crc And &HFF00) / &H100
  End Function
  
  3. 讀多個(gè)字的命令(本例是從2號(hào)站讀%MW10起始的4個(gè)字):
   Dim SendStr(7) As Byte
   Dim RcvStr() As Byte
   SendStr(0) = 2 ,從站號(hào)是2
   SendStr(1) = &H3 ,讀多個(gè)字的命令代碼
   SendStr(2) = 0 ,起始地址高字節(jié)
   SendStr(3) = 10,起始地址低字節(jié)
   SendStr(4) = &H0,數(shù)據(jù)長度高字節(jié)
   SendStr(5) = 4 ,數(shù)據(jù)長度低字節(jié)
  
   Call crc16(SendStr(), 5) ,CRC計(jì)算
   SendStr(6) = HiByte
   SendStr(7) = LoByte
   ,讀命令發(fā)送后,當(dāng)接收 5 + SendStr(5) * 2 個(gè)字節(jié)時(shí)產(chǎn)生中斷
   CmdLenth = 5 + SendStr(5) * 2
   MSComm1.RThreshold = CmdLenth
   MSComm1.Output = SendStr ,發(fā)送命令
  
  
  4. 寫多個(gè)字的命令(本例是寫2號(hào)站%MW20起始的3個(gè)字):
   Dim WriteStr() As Byte
   k = 6 ,寫6個(gè)字節(jié)
   ReDim WriteStr(8 + k)
  
   WriteStr(0) = 2 ,從站號(hào)是2
   WriteStr(1) = &H10 ,寫多個(gè)字的命令代碼
   WriteStr(2) = 0 ,起始地址高字節(jié)
   WriteStr(3) = 20 ,起始地址低字節(jié)
   WriteStr(4) = &H0 ,數(shù)據(jù)長度高字節(jié)<字的個(gè)數(shù)>
   WriteStr(5) = k / 2 ,數(shù)據(jù)長度低字節(jié)<字的個(gè)數(shù)>
  
   WriteStr(6) = k ,數(shù)據(jù)長度<字節(jié)的個(gè)數(shù)>
   WriteStr(7) = &H12,寫的第1個(gè)字的高字節(jié)
   WriteStr(8) = &H34,寫的第1個(gè)字的低字節(jié)
   WriteStr(9) = &H56,寫的第2個(gè)字的高字節(jié)
   WriteStr(10) = &H78,寫的第2個(gè)字的低字節(jié)
   WriteStr(11) = &H9A,寫的第3個(gè)字的高字節(jié)
   WriteStr(12) = &HBC,寫的第3個(gè)字的低字節(jié)
  
   Call crc16(WriteStr(), 6 + k)
   WriteStr(9 + (k / 2 - 1) * 2) = HiByte
   WriteStr(10 + (k / 2 - 1) * 2) = LoByte
  
   MSComm1.InBufferCount = 0
   MSComm1.Output = WriteStr
   ,寫命令發(fā)送后,當(dāng)接收到8個(gè)字節(jié)時(shí)中斷
   CmdLenth = 8
   MSComm1.RThreshold = CmdLenth
  
  5. 通訊事件中斷產(chǎn)生時(shí)的數(shù)據(jù)處理:
  Private Sub MSComm1_OnComm()
   Dim inx() As Byte
   Select Case MSComm1.CommEvent
   Case comEvReceive ,判斷為接收事件
   MSComm1.bbbbbLen = CmdLenth ,接收數(shù)據(jù)的長度
   inx = MSComm1.bbbbb ,接收數(shù)據(jù)
   MSComm1.InBufferCount = 0
  
   For k = 3 To CmdLenth - 3
   tmpstr = tmpstr & "/" & Hex(inx(k))
   Next
   Text1.Text = tmpstr ,以十六進(jìn)制顯示所接收長度的數(shù)據(jù)
  
  
   Beep
   End Select
  End Sub
作者:未知 點(diǎn)擊:3136次 [打印] [關(guān)閉] [返回頂部]
本文標(biāo)簽:如何用VB實(shí)現(xiàn)Modbus串行通訊
* 由于無法獲得聯(lián)系方式等原因,本網(wǎng)使用的文字及圖片的作品報(bào)酬未能及時(shí)支付,在此深表歉意,請(qǐng)《如何用VB實(shí)現(xiàn)Modbus串行通訊》相關(guān)權(quán)利人與機(jī)電之家網(wǎng)取得聯(lián)系。
電子樣本

SN系列樣冊(cè)
:鞏經(jīng)理
:13915946763
:南京塞姆泵業(yè)有限公司
個(gè)人求購

倪高純 【求購】  超聲波液位...  2025-12-24
戴先生 【求購】  美孚s-2...  2025-12-23
李先生 【求購】  一體化消防...  2025-12-22
何經(jīng)理 【求購】  亨通電纜  2025-12-22
肖先生 【求購】  氣缸LCR...  2025-12-22
王嘉文 【求購】  減速機(jī)  2025-12-22
付先生 【求購】  循環(huán)水處理  2025-12-22
楊金軍 【求購】  玉柴船用發(fā)...  2025-12-22
VIP公司推薦