<style id="7i3y3"></style>

      <sub id="7i3y3"><i id="7i3y3"></i></sub>

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

        串口通信

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

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

        具體做法:
        1. 在新建的XLS文檔里,命名一個“遍歷讀FXPLC”和一個“PLC數(shù)據(jù)”工作表。
        2. VBA程序全部放在與“遍歷讀FXPLC”工作表對應的代碼區(qū)內,工作表的第一行放3個控件
        ,一個MSCOMM通訊控件和兩個命令按鈕。這里要說明的是,用戶在安裝了VB6.0后才可使用
        MSCOMM控件,當然可以在自有 MSCOMM32.OCX 時自行注冊后使用。
         MSCOMM控件的引用:
         在Exexl的菜單欄中點擊: 視圖 -> 工具欄 -> 控件工具箱, 將它拖到工具欄上或其它合
         適的位置.
         點擊控件工具箱工具上的"查看代碼"按鈕,進入代碼編輯區(qū),再點擊VB編輯器的菜單欄中的:
         工具 -> 引用,在"可使用的引用"  區(qū)中尋找"MSCOMM32.OCX"控件并選中它。如找不到,點
         擊"瀏覽"按鈕,在Windows的系統(tǒng)文件區(qū)(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"工作表從第二行起由程序自動填寫每次操作的狀態(tài),如:"0000:OK",
         表示讀映象地址0000區(qū)時得到了正確的數(shù)據(jù),而“8000:ERR”則表示在讀8000h映象地址
         時出錯。
         "PLC數(shù)據(jù)"工作表由程序自動填寫由PLC返回的對應數(shù)據(jù),如"8000:XXXXXXX.....",它表示
         PLC返回8000h首地址開始的完整數(shù)據(jù)(含起始符、結束符和校驗碼)。
         程序開始運行后,整個讀入過程大約需時10-15分鐘。
        5.下面就可以在"遍歷讀FXPLC"的代碼區(qū)編制代VB代碼了。

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

        'CommError=通訊出錯計數(shù)
        'FxAddress=PLC映象地址計數(shù)

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

        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  '設置串口參數(shù)和打開端口
        CommExit = 0
        CommError = 0
        Range("A1") = ""
        Range(RowCo1) = ""
        FxAddress = 0
        RowCo1 = "a2:p257" '操作結果填寫在表格的區(qū)域
        MaxLen = 16     '每次讀PLC映象的字節(jié)數(shù)
        '遍歷讀FX-PLC映象區(qū)
        For Each c In Range(RowCo1)
           '命令串轉換
           s = "0" & Right("000" & Hex(FxAddress), 4) & Hex(MaxLen)
           '指示正在讀入的區(qū)域
           c = Right("000" & Hex(FxAddress), 4) & ":"
           '清接收區(qū)殘余數(shù)據(jù),和發(fā)命令
           s1 = MSComm1.Input
           MSComm1.Output = FxChar(s)
           
           FxString = ""  '清接收區(qū)
           CommEnd = 0    '置發(fā)送狀態(tài)
           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)   '數(shù)據(jù)寫入"PLC數(shù)據(jù)"工作表
           c = c & ErrStr  '給出本輪通訊結果狀態(tài)
           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") = "出錯計數(shù):" & CommError
                 End If
                 CommExit = 1
               End If
        End Select
        End Sub

        '將PLC每次返回的數(shù)據(jù)填寫在"PLC數(shù)據(jù)"工作表里
        Private Sub WriteData(n As Long)
        Dim i&, j&
        Dim s$
        Static Row1%, Col1%
        With Worksheets("PLC數(shù)據(jù)")
        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


        '將要發(fā)向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

        '設置通訊口參數(shù)后,打開通訊口
        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
        文章數(shù):175
        年度積分:50
        歷史總積分:1223
        注冊時間:2002/8/7
        發(fā)站內信
        發(fā)表于:2003/8/1 19:49:00
        #4樓
        如果僅相要PLC數(shù)據(jù)包中的有效數(shù)據(jù),Private Sub MSComm1_OnComm()中接收可改為:
        =======================================================

        '在串口中斷中接收FX-PLC返回的字串:僅截取有用數(shù)據(jù)
        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") = "出錯計數(shù):" & CommError
                                   CommExit = 1
                           End Select
                       Else
                           FxString = FxString & s '僅串接有效數(shù)據(jù)
                       End If
               End Select
        End Select
        End Sub
        1742
        王美勛 版主
        文章數(shù):318
        年度積分:50
        歷史總積分:1742
        注冊時間:2001/12/18
        發(fā)站內信
        發(fā)表于:2003/8/1 20:18:00
        #5樓
        把鄰國的東西吃透,建起我們的民族工控產業(yè)。

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

        關于我們 | 聯(lián)系我們 | 廣告服務 | 本站動態(tài) | 友情鏈接 | 法律聲明 | 非法和不良信息舉報

        工控網(wǎng)客服熱線:0755-86369299
        版權所有 工控網(wǎng) Copyright©2026 Gkong.com, All Rights Reserved

        109.2007
        主站蜘蛛池模板: 国产高在线精品亚洲三区| 骚片av蜜桃精品一区| 国产AV天堂亚洲国产AV天堂| 色哟哟国产成人精品| 无码中文字幕av免费放| 免费午夜无码片在线观看影院 | 中文字幕第一页国产| 欧洲熟妇精品视频| 国产黄色一区二区三区四区| 国产一区二区三区不卡自拍| 免费无码成人AV在线播放不卡| 亚洲综合国产激情另类一区| 国产免费不卡av在线播放| 亚洲AV永久无码精品秋霞电影影院| 亚洲AV成人无码精品电影在线| 777奇米四色成人影视色区| 国产高清视频在线播放www色| 久久频这里精品99香蕉| 亚洲欧洲av一区二区久久| 国产伦一区二区三区视频| 亚洲精品麻豆一二三区| 北岛玲中文字幕人妻系列| 国产伦一区二区三区精品| 成人网站免费观看永久视频下载| 熟妇激情一区二区三区| 激情五月开心综合亚洲| 人人人澡人人肉久久精品| 国产高潮大叫在线观看| 在线日韩日本国产亚洲| 黄色三级毛片网站| 99re视频精品全部免费| 精品国产成人A区在线观看| 日韩一区二区三区水蜜桃| 丁香婷婷激情俺也去俺来也| 欧美日韩一线| 亚洲国产精品日韩AV专区| 亚洲国产精品线观看不卡| 91中文字幕一区二区| 国产精品免费AⅤ片在线观看 | 97成人碰碰久久人人超级碰oo | 国产欧美日韩精品丝袜高跟鞋|