<nobr id="zkazv"></nobr>

      午夜精品一区二区三区成人,中文字幕av一区二区,亚洲AVAV天堂AV在线网阿V,肥臀浪妇太爽了快点再快点,国产网友愉拍精品视频手机,国产精品无码a∨麻豆,久久中文字幕一区二区,a级国产乱理伦片在线观看al
      您現在所在的是:

      串口通信

      回帖:75個,閱讀:50479 [上一頁] [1] [2] [3] [4] [5] [6] [7] [8] [下一頁]
      1223
      Guan_Qing_Xin
      文章數:175
      年度積分:50
      歷史總積分:1223
      注冊時間:2002/8/7
      發站內信
      發表于:2003/7/31 17:46:00
      #0樓
      用FX-PLC編程口通訊電纜遍歷讀PLC的映象區
        FX-PLC的編程口通訊協議只有幾個命令,這就是"0,1,7,8"(讀/寫/強制位ON/強制位OFF),
      它以PLC內部映象地址為操作對象,所有元件地址都從一張映象地址表中換算出來,包括用戶
      程序。
       它屬于低層操作協議,有最強大的功能,諸如元件讀寫、強制位元件、程序讀寫、密碼讀
      寫、非連續地址通訊時用的指針隊列讀寫....有廠家編程軟件所提供的全部功能(它也是
      通過編程口與PLC連接的)。在上位機獨占PLC的直連條件下,是一種最得心應手的通訊方
      法。

       本人嘗試在Execl電子表格中編程,遍歷讀出FX-PLC的全部映象地址里的數據和它的狀態
      ,當然它包含了PLC的全部元件區和用戶程序區(PLC密碼在程序區內)了。

      具體做法:
      1. 在新建的XLS文檔里,命名一個“遍歷讀FXPLC”和一個“PLC數據”工作表。
      2. VBA程序全部放在與“遍歷讀FXPLC”工作表對應的代碼區內,工作表的第一行放3個控件
      ,一個MSCOMM通訊控件和兩個命令按鈕。這里要說明的是,用戶在安裝了VB6.0后才可使用
      MSCOMM控件,當然可以在自有 MSCOMM32.OCX 時自行注冊后使用。
       MSCOMM控件的引用:
       在Exexl的菜單欄中點擊: 視圖 -> 工具欄 -> 控件工具箱, 將它拖到工具欄上或其它合
       適的位置.
       點擊控件工具箱工具上的"查看代碼"按鈕,進入代碼編輯區,再點擊VB編輯器的菜單欄中的:
       工具 -> 引用,在"可使用的引用"  區中尋找"MSCOMM32.OCX"控件并選中它。如找不到,點
       擊"瀏覽"按鈕,在Windows的系統文件區(system/system32)可找到它,  注意在文件類型欄
       中應選"ActiveX控件(*.OCX)",找到"MSCOMM32.OCX"文件后點擊選擇,退出。
      3.返回Execl編輯器,點擊控件工具箱上的"其它控件"按鈕,在它的菜單欄中選中:
       Microsoft Chart Control, version 6.0 或:
       Microsoft Communications Control, version 6.0
       把這個電話機圖標安放在"遍歷讀FXPLC"工作表的第一行上,它的缺省名為MSComm1
       再在控件工具箱拖放兩個命令按鈕放到第一行:CommandButton1和CommandButton2,
       給按鈕分別命名為"開始測試"和"打斷操作"。
      4.說明:"遍歷讀FXPLC"工作表從第二行起由程序自動填寫每次操作的狀態,如:"0000:OK",
       表示讀映象地址0000區時得到了正確的數據,而“8000:ERR”則表示在讀8000h映象地址
       時出錯。
       "PLC數據"工作表由程序自動填寫由PLC返回的對應數據,如"8000:XXXXXXX.....",它表示
       PLC返回8000h首地址開始的完整數據(含起始符、結束符和校驗碼)。
       程序開始運行后,整個讀入過程大約需時10-15分鐘。
      5.下面就可以在"遍歷讀FXPLC"的代碼區編制代VB代碼了。

      (有興趣者頂一下,我將貼出VB代碼...)
      1742
      王美勛 版主
      文章數:318
      年度積分:50
      歷史總積分:1742
      注冊時間:2001/12/18
      發站內信
      發表于:2003/7/31 18:02:00
      #1樓
      愿與大家交朋友
      955
      jemmie107
      文章數:2
      年度積分:50
      歷史總積分:955
      注冊時間:2003/8/1
      發站內信
      發表于:2003/8/1 19:31:00
      #2樓
      我也頂一下----------------
      1223
      Guan_Qing_Xin
      文章數:175
      年度積分:50
      歷史總積分:1223
      注冊時間:2002/8/7
      發站內信
      發表于:2003/8/1 19:46:00
      #3樓
      '操作狀態CommExit: 0=通訊進行狀態,>1=通訊被打斷
      '通訊狀態CommEnd:0=開始發送和等待接收,>1:接收串已結束

      'CommError=通訊出錯計數
      'FxAddress=PLC映象地址計數

      'FxString=存放每次PLC返回的應答串
      'ErrStr=每串操作的結果提示,"OK" 或 "ERR"
      'RowCo1=每次操作結果放在電子表格的填充區域

      Public CommExit%, CommEnd%
      Public CommError&, FxAddress&
      Public FxString$, ErrStr$, RowCo1$

      '將CommandButton1改名為Beginning,開始測試
      Private Sub Beginning_Click()
      Dim c As Range
      Dim m1, m2
      Dim s$, s1$, MaxLen&

      On Error GoTo err1
      CommPortOpen 1  '設置串口參數和打開端口
      CommExit = 0
      CommError = 0
      Range("A1") = ""
      Range(RowCo1) = ""
      FxAddress = 0
      RowCo1 = "a2:p257" '操作結果填寫在表格的區域
      MaxLen = 16     '每次讀PLC映象的字節數
      '遍歷讀FX-PLC映象區
      For Each c In Range(RowCo1)
         '命令串轉換
         s = "0" & Right("000" & Hex(FxAddress), 4) & Hex(MaxLen)
         '指示正在讀入的區域
         c = Right("000" & Hex(FxAddress), 4) & ":"
         '清接收區殘余數據,和發命令
         s1 = MSComm1.Input
         MSComm1.Output = FxChar(s)
         
         FxString = ""  '清接收區
         CommEnd = 0    '置發送狀態
         c.Select    '焦點指向當前單元格
         
         m1 = Timer + 2 '限定等待時間2秒,超出后轉出錯并結束
         Do While CommExit = 0
             m2 = Timer
             If m2 > m1 Then
                 MsgBox "通訊線路出錯!請檢查線路...", vbCritical
                 MSComm1.PortOpen = False
                 Exit Sub
             End If
             DoEvents    '交出VB事件處理控制權
         Loop
         
         '通訊被人工打斷
         If CommExit > 1 Then
             MsgBox "通訊被取消...", vbExclamation
             MSComm1.PortOpen = False
             Exit Sub
         End If
         DoEvents    '交出VB事件處理控制權
         WriteData (FxAddress)   '數據寫入"PLC數據"工作表
         c = c & ErrStr  '給出本輪通訊結果狀態
         FxAddress = FxAddress + MaxLen  '映象地址遷移
         If FxAddress > &HFFFF& Then
             MsgBox "讀入工作全部完成!", vbExclamation
             Exit For
         End If
         DoEvents    '交出VB事件處理控制權
      Next
      MSComm1.PortOpen = False
      err1:
      End Sub

      '將CommandButton2改名為CancelB,打斷正在進行的通訊
      Private Sub CancelB_Click()
      CommExit = 3
      End Sub

      '在串口中斷中接收PLC返回的字串
      Private Sub MSComm1_OnComm()
      Dim s
      Select Case MSComm1.CommEvent
         Case comEvReceive
             s = MSComm1.Input
             Select Case s
                 Case Chr(6)
                    CommEnd = 3
                 Case Chr(21)
                    CommEnd = 100
             End Select
             FxString = FxString & s
             If Len(FxString) >= 3 Then
                 If Asc(Right(FxString, 3)) = 3 Then
                     CommEnd = 5
                 End If
             End If
             If CommEnd > 2 Then
               If CommEnd = 5 Then
                   ErrStr = "OK"
               Else
                   ErrStr = "ERR"
                   CommError = CommError + 1
                   Range("a1") = "出錯計數:" & CommError
               End If
               CommExit = 1
             End If
      End Select
      End Sub

      '將PLC每次返回的數據填寫在"PLC數據"工作表里
      Private Sub WriteData(n As Long)
      Dim i&, j&
      Dim s$
      Static Row1%, Col1%
      With Worksheets("PLC數據")
      If n = 0 Then
         Row1 = 2
         Col1 = 0
         .Range(RowCo1) = ""
      End If
      .Range(Chr(&H61 + Col1) & Row1) = Right("000" & Hex(n), 4) _
         & ":" & FxString
      If Chr(&H61 + Col1) = "p" Then
         Col1 = 0
         Row1 = Row1 + 1
      Else
         Col1 = Col1 + 1
      End If
      FxString = ""
      CommExit = 0
      End With
      End Sub


      '將要發向PLC的命令字串組合:加起始符02h和結束符03h,及累加校驗和,返回給調用者
      Private Function FxChar$(s$)
      Dim m%, n%
      Dim s1$
      s1 = UCase(s)
      For m = 1 To Len(s1)
         n = n + Asc(Mid(s1, m, 1))
      Next
      n = n + 3
      FxChar = Chr(2) & s1 & Chr(3) & Right(Hex(n), 2)
      End Function

      '設置通訊口參數后,打開通訊口
      Private Sub CommPortOpen(Port%)
      If MSComm1.PortOpen = True Then
         MSComm1.PortOpen = False
      End If
      MSComm1.CommPort = Port
      MSComm1.Settings = "9600,e,7,1"
      MSComm1.RTSEnable = True
      MSComm1.InputMode = comInputModeText
      MSComm1.SThreshold = 1
      MSComm1.PortOpen = True
      End Sub
      1223
      Guan_Qing_Xin
      文章數:175
      年度積分:50
      歷史總積分:1223
      注冊時間:2002/8/7
      發站內信
      發表于:2003/8/1 19:49:00
      #4樓
      如果僅相要PLC數據包中的有效數據,Private Sub MSComm1_OnComm()中接收可改為:
      =======================================================

      '在串口中斷中接收FX-PLC返回的字串:僅截取有用數據
      Private Sub MSComm1_OnComm()
      Dim s
      Select Case MSComm1.CommEvent
         Case comEvReceive
             s = MSComm1.Input
             Select Case s
                 Case Chr(2) '串起始碼
                 Case Chr(6), Chr(21) '單應答碼和出錯碼
                    CommEnd = s
                 Case Chr(3) '串結束碼
                    CommEnd = 1
                 Case Else
                    If CommEnd Then
                         Select Case CommEnd
                             Case 1 To 3 '串結束碼到后,再等兩個校驗和碼
                                 CommEnd = CommEnd + 1
                             Case 4 To 6 '正常結束
                                 ErrStr = "OK"
                                 CommExit = 1
                             Case Is > 6 '出錯結束
                                 ErrStr = "ERR"
                                 CommError = CommError + 1
                                 Range("a1") = "出錯計數:" & CommError
                                 CommExit = 1
                         End Select
                     Else
                         FxString = FxString & s '僅串接有效數據
                     End If
             End Select
      End Select
      End Sub
      1742
      王美勛 版主
      文章數:318
      年度積分:50
      歷史總積分:1742
      注冊時間:2001/12/18
      發站內信
      發表于:2003/8/1 20:18:00
      #5樓
      把鄰國的東西吃透,建起我們的民族工控產業。

      我再頂一下!
      [此貼子已經被作者于2024/11/27 17:39:33編輯過]
      愿與大家交朋友
      967
      YCM1233211
      文章數:9
      年度積分:50
      歷史總積分:967
      注冊時間:2003/6/15
      發站內信
      發表于:2003/8/27 16:04:00
      #6樓
      這位朋友的好幾篇文章都好極!
      我很是佩服----人品與才學.
      我狂頂!
      5631
      心情 版主
      文章數:1633
      年度積分:50
      歷史總積分:5631
      注冊時間:2001/6/6
      發站內信
      09工控人生征文
      發表于:2003/8/30 15:47:00
      #7樓
      真不錯,太謝謝了
      1231
      feng89
      文章數:107
      年度積分:50
      歷史總積分:1231
      注冊時間:2002/10/23
      發站內信
      發表于:2003/8/30 20:58:00
      #8樓
      太好了!!!!!!!!!!!!
      135元10點PLC,6點輸入,4點繼電器輸出,帶外殼、開關電源。
      WWW.FXPLC.CN
      967
      dreamfour
      文章數:6
      年度積分:50
      歷史總積分:967
      注冊時間:2003/7/14
      發站內信
      發表于:2003/9/2 15:03:00
      #9樓
      太好了!!

      關于我們 | 聯系我們 | 廣告服務 | 本站動態 | 友情鏈接 | 法律聲明 | 非法和不良信息舉報

      工控網客服熱線:0755-86369299
      版權所有 工控網 Copyright©2025 Gkong.com, All Rights Reserved

      140.4009
      主站蜘蛛池模板: 国产一区二区三区在线观看免费| 成人区人妻精品一区二区| 国产一级精品在线免费看| 亚洲av无码之国产精品网址蜜芽| 亚洲区综合中文字幕日日| 亚洲AV天天做在线观看| 国产另类ts人妖一区二区| 欧美肥老太牲交大战| 亚洲综合网中文字幕在线| 久久精品国产99麻豆蜜月| 亚洲中文字幕一二区日韩| 日韩av片无码一区二区不卡| 欧产日产国产精品精品| 无码福利写真片视频在线播放 | 91中文字幕一区在线| 蜜桃av无码免费看永久| 国产系列高清精品第一页| 精品国产乱码久久久久APP下载| 久久精品国产福利亚洲av| 一面膜上边一面膜下边视频| 樱花草视频www日本韩国| 国产精品小仙女自拍视频| 男女一级国产片免费视频| 欧美成本人视频免费播放| 99精品人妻少妇一区二区| 免费观看日本污污ww网站69| av天堂亚洲天堂亚洲天堂| 中文字幕av一区二区| 不卡一区二区国产精品| 不卡一区二区国产在线| 国产中文字幕在线精品| 97久久久精品综合88久久| 久久精品午夜视频| 国产剧情视频一区二区麻豆| 欧美18videosex性欧美tube1080| 成人免费在线播放av| 无码人妻斩一区二区三区| 色综合欧美亚洲国产| 亚洲国产日韩一区三区| 国产午夜福利视频在线| 高潮潮喷奶水飞溅视频无码|