亚洲综合在线播放_久久视频免费在线_久久久黄色av_亚洲免费视频一区

PLC技術資料
    FX系列可編程控制器與計算機通信的實現
    發布者:用戶投稿  發布時間:2008/4/25 14:04:19

    1  引言

        可編程控制器PLC是以微處理器為核心,綜合計算機技術、自動控制技術和通信技術發展起來的一種通用工業自動控制裝置,它具有可靠性高、體積小、功能強、程序設計簡單、靈活通用、維護方便以及抗干擾能力強等優點,因而廣泛應用于電力、冶金、能源、化工、交通等領域,但是大多數中小型PLC的顯示功能較差,人機交互操作不便,管理人員不能及時了解現場情況,尤其是在現場調試中,為彌補PLC在這些方面的不足,在實際控制系統中,通常采用PLC作為下位機實現對生產過程的控制,以計算機作為上位機實現工藝流程參數顯示、控制參數設置等功能,使PLC和計算機相互結合,充分發揮PLC在開關量、模擬量控制和計算機在管理、監控等方面的優勢,以實現優勢互補,極大提高控制系統的性價比。
    實現計算機和PLC控制系統的關鍵是兩者之間的通信,一般情況下,用戶可以采用現有的組態軟件實現監控,但該方法成本較高,為此本文介紹了在Visual Basic 6.0的環境下,實現計算機與三菱FX系列PLC的串行通信方法。

    2  PLC與計算機的通信端口連接

        FX系列PLC的編程接口采用RS-422標準,而計算機的串行口采用RS-232C標準,因此采用接口模塊FX-232AW將RS-422標準轉換為RS-232C標準。如圖1所示,計算機、PLC與FX-232AW之間采用反饋與交叉相結合的連接圖。


    圖1  FX-232AW接口引線連接圖


    ?引腳2、3:將引腳2、3交叉互連,使PLC與上位機之間能發送和接收數據。
    ?引腳4、5:將引腳4、5反饋短接,對計算機發送數據來說,PLC總是處于數據準備就緒狀態,計算機在任何時候都可以將數據送到PLC中。
    ?引腳6、20:將引腳6、20交叉互連,對計算機來說就必須檢測PLC是否處于準備就緒狀態,即檢測引腳6是否為高電平。當引腳6為高電平時,表示PLC準備就緒,可以接收數據,這時計算機就可以向PLC發送數據了;反之,當引腳6為低電平時,PLC與計算機則不能通信。

    3  計算機與PLC之間的通信協議

        FX系列PLC與計算機的通信模式有兩種:
    ? PLC與計算機采用專有協議(dedicated protocol)通信,這種方式無須編寫梯形圖,計算機直接讀寫PLC;
    ?PLC與計算機無協議通信,這種方式需要編寫梯形圖,并使用串行數據傳送指令RS。這里介紹專有通信協議。
    FX系列PLC與計算機專有通信協議提供有數據讀取、控制命令寫入、控制PLC啟/停和網絡測試等功能,該協議有兩種格式:format1和format4。兩種協議的區別在于字符串中是否添加CR/LF碼,采用哪種格式的協議由PLC中的特殊數據寄存器D8120決定,計算機向PLC傳送的字符串格式如圖2所示,在該字符串中,可由D8120來決定是否添加和校驗碼,此外format4需要在字符串末尾添加CR/LF。計算機與FX系列PLC之間采用主從應答通信方式,PLC內部不需要額外的通信程序,只要將所需數據放在數據寄存器中即可。每個數據寄存器都有相應的物理通信地址,通信時計算機直接對物理通信地址進行操作。


    圖2  字符串格式


    控制代碼(Control Code)主要用來控制每步數據的傳送。以format 1為例,當要對PLC進行讀操作時,計算機發出請求報文,該報文以ENQ碼開頭,并包括了報文中的所有字段,其中有字符域A。PLC對計算機的請求作出響應,以STX碼開頭,以ETX碼結尾,該報文不包括操作指令字段和消息等待時間。當計算機收到PLC發出的響應報文,計算機發出確認報文或未確認報文,該報文只包括有控制代碼、站號、PC號和錯誤碼Error Code,如圖3所示。


    圖3  計算機從PLC讀操作報文協議

    [NextPage]
    計算機與PLC間通過報文來交換信息,這些信息在交換過程中需要遵守一些約定。當要對PLC進行寫操作時,計算機同樣發出請求報文,該報文以ENQ碼開頭,包括了報文中的所有字符字段,其中有字符區域C,PLC對計算機的請求作出響應,返回確認報文或未確認報文,如圖4所示:


    圖4  計算機向PLC寫操作報文協議


    站號(Station NO.)用來決定計算機訪問哪一臺PLC,在FX系列PLC中,站號范圍從00H到0FH,特殊輔助寄存器D8121可用于設置站號。
    PC號(PC NO.)用來識別PLC上的CPU,對于FX系列PLC,該值為FFH。
    指令(Command)用來指定要進行的讀寫操作,每個命令字都由兩個ASCII碼表示。
    消息等待時間(Message Wait)指從計算機發出指令到成為接收狀態所需的時間,以10ms為一單位,等待時間可達150ms,可通過一個0到F間的ASCII碼來設定。消息等待時間主要用于半雙工通信模式下讀寫操作間的切換。
    字符區域(Character)A為計算機要讀取的存儲區的開始位置和字節數。B為PLC返回的要讀取的存儲區的數值。C為計算機要寫入的存儲區的開始位置和數值。
    和校驗碼(Sum Check Code)是從站號開始、和校驗之前所有字節按位相加后取和的低兩位數的ASCII碼,和校驗碼主要用于校驗數據傳送過程中是否發生位錯誤。

    4  計算機與PLC通信程序設計

        在Windows操作系統中實現串行通信主要有三種途徑:
    ?利用一些編程工具如Delphi提供的通信控件SPComm,Visual Basic或Visual C++提供的特定通信控件MSComm,開發者通過對這些控件編程來實現對串口的操作。
    ?調用Windows提供的API函數在Win32環境下,硬件設備被當作文件系統來訪問,應用程序調用Create File()函數來讀寫數據。
    ?通過C/C++語言將自己的程序編譯鏈接為DLL,然后用Visual Basic調用DLL里的函數來通信。這里介紹VB中通過MSComm控件實現串行通信的方法。
    由于Visual Basic 6.0是Windows環境下簡單高效的可視化編程語言開發系統,以其所見及所得的可視化界面設計風格和面向對象程序設計等特點,已廣泛應用于各個領域,改編程語言不但提供了良好的界面設計能力,而且在計算機串口通信方面也有很強的功能,VB中的通信控件MSComm具有完善的串行數據收發和接收功能,不但包括有全部Windows API中關于串行通信的函數所具有的功能,還提供了更多的對象屬性來滿足不同用戶的編程需要。
    MSComm控件提供了兩種處理通信的方法:
    ? 事件驅動法:當有數據到達端口,端口狀態發生改變或有通信錯誤發生時,觸發MSComm控件的OnComm事件,事件驅動實時性強,對外界情況可以作出快速響應,因而是處理串行端口交互作用的一種非常有效的方法。
    ?查詢法:用軟件或在程序中設置定時器實現對端口周期性掃描,通過讀取CommEvent屬性值來查詢通信事件和錯誤,并作出相應處理,查詢法編程簡單,調試方便,如果應用程序較小,并且是自保持的,這種方法是可取的。
    由于MSComm控件隱藏了調用過程,屏蔽了通信過程中的底層操作,使用該控件只需定義相應的屬性,調用Send方法發送數據或等待處理相應的事件接收數據,就可以輕松實現串行異步通信。MSComm控件支持如下主要屬性和事件。
    CommPort屬性:設置(返回)控件對應的端口號,系統用端口號唯一標識每一個串行端口。
    Settings屬性:設置(返回)控件所用的傳輸協議,以字符串的形式定義控件使用的波特率、奇偶校驗、數據位、停止位等參數。此設定應與PLC的設定相一致。
    PortOpen屬性:打開或關閉通信端口。
    Input屬性:從接收緩沖區接收并保存MSComm控件接收到的數據。
    Output屬性:向發送緩沖區發送數據。
    InputLen屬性:設置從接收緩沖區讀取的字符數。
    InbufferCout屬性:返回接收到數據緩沖區中需要處理的數據長度。在查詢方式中,該屬性可用來判斷輸入緩沖區是否接收到所需的字符。
    InputMode屬性:設置(返回)Input屬性傳輸的數據類型。
    OnComm事件:MSComm控件產生動作(如接收數據)或錯誤時,觸發該事件。
    CommEvent屬性:返回最近的通信事件或錯誤,可在OnComm事件中檢測該屬性的值后處理。
    這里給出計算機與PLC采用查詢法通信的部分程序。

    [NextPage]
    ’MSComm控件初始化
    Private Sub Form_Load()
    STX$=Chr$(2)
    ETX$=Chr$(3)
    ENQ$=Chr$(5)
    NAK$=Chr$(&H15)
    ACK$=Chr$(6)
    MSComm1.Settings=”9600,e,7,1”
    MSComm1.InBufferSize=1024
    MSComm1.CommPort=1
    MSComm1.OutBufferSize=1024
    MSComm1.OutBufferCount=0
    MSComm1.PortOpen=True
    MSComm1.InputLen=0
    End Sub
    ’計算機與PLC的連結程序
    Private Sub Command_Click()
    Dim WaitTime As Long
    Dim StartTime As Long
    MSComm1.Output=Chr(5)
    WaitTime=5
    StartTime=Timer
    Do While Timer<StartTime+WaitTime
        DoEvents
    Loop
    If MSComm1.InBufferCount>0 Then
        If Asc(MSComm1.Input)=0 Then
    MsgBox(“連結成功,準備發送數據”)
        Else
      MsgBox(“連結失敗”)
        End If
    Else
       MsgBox(“連結失敗”)
    End If
    End Sub
    ’計算機從PLC讀函數程序
    Function CmdRead(Rd As String) As String
    Dim X As Integer
    Dim Y As Integer
    Dim Z As Integer
    MSComm1.InBufferCount=0
    Read$=Chr(5)&Rd&CheckSum(Rd)   
    ’讀數據幀由ENQ、命令串和和校驗碼組成
    MSComm1.Output=Read$
    Do
        DoEvents
    Loop Until MSComm1.InBufferCount>=9
    Data$=MSComm1.Input
    X=Val(Asc(Left(Data$,1)))
    Y=CheckSum(Mid(Data$,2,Len(data$)-3))   
    ’計算應答幀的和校驗碼
    Z=Mid(Data$,Len(Data$)-1,2)   
    ’計算接收到的應答幀的和校驗碼
    If X=2 And Y=Z then   
    ’STX的ASCII碼為02H
        CmdRead=Mid(Data$,6,Len(Data$)-8)
        MSComm1.Output=ACK$
    Else
    CmdRead=‘Error’
        MSComm1.Output=NAK$
    End If
    End Function
    計算機向PLC寫函數程序與讀函數程序類似。

    5  結束語

        文中給出了利用VB的MSComm控件實現計算機與PLC實時通信的基本思想和設計方法,該程序簡單、可靠、實用,并可根據實際工礦要求靈活修改程序。現在火電廠輸煤程控系統的電除塵設備中,有些系采用該系列的PLC,可采用上述方法來保證控制系統通信穩定、有效。

    版權聲明PLC信息網轉載作品均注明出處,本網未注明出處和轉載的,是出于傳遞更多信息之目的,并不意味 著贊同其觀點或證實其內容的真實性。如轉載作品侵犯作者署名權,或有其他諸如版權、肖像權、知識產權等方面的傷害,并非本網故意為之,在接到相關權利人通知后將立即加以更正。聯系電話:0571-87774297。
0571-87774297  
主站蜘蛛池模板: 性欧美精品一区二区三区在线播放V| 日韩在线免费观看视频| 国产美女精品在线观看| 久久精品无码中文字幕| 亚洲.欧美.日本.国产综合在线| 国产精品福利网| 不卡一区二区三区视频| 欧日韩免费视频| 国产精品毛片va一区二区三区| 日韩久久久久久久| 亚洲欧洲国产日韩精品| 国产成人久久精品| 中文字幕不卡每日更新1区2区| 久久精品ww人人做人人爽| 日韩亚洲不卡在线| 日韩福利在线| 丁香五月网久久综合| 亚洲在线欧美| 欧美日韩亚洲在线| 久久福利视频导航| 欧美视频在线第一页| 久久久精品欧美| 一级日韩一区在线观看| 国产在线播放不卡| 久久精品亚洲热| 99高清视频有精品视频| 国产精品久久久久久久久久三级| 91精品国产91久久久| 亚洲欧洲免费无码| 国产精品av免费在线观看| 欧美精品aaa| 国产专区在线视频| 久久97精品久久久久久久不卡| 午夜精品一区二区在线观看| 国产精品三级在线| 国产精品久久亚洲7777| 国产精品第一视频| 综合操久久久| 欧美亚洲精品日韩| 激情深爱综合网| 97碰在线观看|