zhidaoshenmo
雖然我們不是“富二代”,但是我們還有成為“富一代”的機(jī)會(huì)。
級(jí)別: 家園常客
精華主題: 0
發(fā)帖數(shù)量: 559 個(gè)
工控威望: 638 點(diǎn)
下載積分: 1175 分
在線時(shí)間: 309(小時(shí))
注冊(cè)時(shí)間: 2009-04-16
最后登錄: 2017-10-25
查看zhidaoshenmo的 主題 / 回貼
樓主  發(fā)表于: 2009-12-31 23:04

  
    本系統(tǒng)以PC對(duì)基于PLC的交通燈控制系統(tǒng)的監(jiān)控為例,在上位機(jī)與PLC正常通信的前提下,設(shè)計(jì)如下界面。窗體的內(nèi)容主要包括,四大區(qū):端口、站號(hào)選擇區(qū),設(shè)定時(shí)間輸入?yún)^(qū),監(jiān)控顯示區(qū),控制按紐區(qū)。從站號(hào)選擇區(qū)選擇不同站號(hào)即不同PLC,實(shí)現(xiàn)對(duì)多個(gè)PLC的實(shí)時(shí)監(jiān)控。

3.1 串口初始化程序

  If MSComm1.PortOpen <> True Then
  MSComm1.PortOpen=True
  End If
  MSComm1.Settings=“9600,E,7,2”
  MSComm1.InputLen=0
  MSComm1.InBufferCount=0
  MSComm1.InputMode=comInputModeText
  MSComm1.Handshaking=comNone

3.2 計(jì)算機(jī)與PLC通信的VB程序
  
Public Function ReadData(ByVal InputStr As String, ByVal Num1 As Integer, ByVal Num2 As Integer) As String




   Dim OutputStr As String
   Dim InString As String
   Dim ReturnStr As String
   Dim EndString As String
   Dim FCSString As String
   Dim ReturnFCSString As String
   Form1.MSComm1.InBufferCount=0
   OutputStr=InputStr+FCS(InputStr)+“*”
   If Form1.MSComm1.PortOpen=True Then
   Form1.MSComm1.Output=OutputStr+Chr$(13)’按照PLC幀格式輸出
   End If
   Do
   DoEvents
   Loop Until Form1.MSComm1.InBufferCount >=Num2’返回幀的長度
   InString=Form1.MSComm1.Input
   EndString=Mid$(InString,6,2)’取返回幀的響應(yīng)碼
   If EndString <> “00”Then
   ReadData=“Error”
   Exit Function
   End If
   EndString=Mid$(InString,1,Len(InString)-4)  
   ReturnFCSString=Mid$(InString, Len(InString) -3,2)’取返回幀校驗(yàn)碼
   FCSString=FCS(EndString)  
   If FCSString <> ReturnFCSString Then
   ReadData=“Error”
   Exit Function
   End If
   If Len(InString)>=Num2 Then
   ReturnStr=Mid$(InString, Len(InString)-Num1-3, Num1)’取返回幀的數(shù)據(jù),其度為Num1
   ReadData = ReturnStr  
   End If
  End Function
本帖最近評(píng)分記錄:
  • 下載積分:+2(夏日雪夢(mèng)) 優(yōu)秀文章
  • 本人在廈門..同行的朋友,可以加我QQ:784272323
    廈門鑫趣科技有限公司,主要從事回收、銷售、維修和租賃進(jìn)口儀器儀表及其附件。