国产又粗又猛又爽又黄的黄牛视频-欧美日韩精品网址-国产成人麻豆h视频在线观看-蜜臀av区一二三爽免费播放-久久久伦理精品-99精品资源在线视频-伊人久久大香樵-久久人妻人人爽-性欧美少妇煌妇喷水,麻豆免费在线观看视频网站,天天射天天干天天要,91精品国自产拍老熟女露脸

PLC技術(shù)資料
    FX系列可編程控制器與計(jì)算機(jī)通信的實(shí)現(xiàn)
    發(fā)布者:用戶投稿  發(fā)布時間:2008/4/25 14:04:19

    1  引言

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

    2  PLC與計(jì)算機(jī)的通信端口連接

        FX系列PLC的編程接口采用RS-422標(biāo)準(zhǔn),而計(jì)算機(jī)的串行口采用RS-232C標(biāo)準(zhǔn),因此采用接口模塊FX-232AW將RS-422標(biāo)準(zhǔn)轉(zhuǎn)換為RS-232C標(biāo)準(zhǔn)。如圖1所示,計(jì)算機(jī)、PLC與FX-232AW之間采用反饋與交叉相結(jié)合的連接圖。


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


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

    3  計(jì)算機(jī)與PLC之間的通信協(xié)議

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


    圖2  字符串格式


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


    圖3  計(jì)算機(jī)從PLC讀操作報文協(xié)議

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


    圖4  計(jì)算機(jī)向PLC寫操作報文協(xié)議


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

    4  計(jì)算機(jī)與PLC通信程序設(shè)計(jì)

        在Windows操作系統(tǒng)中實(shí)現(xiàn)串行通信主要有三種途徑:
    ?利用一些編程工具如Delphi提供的通信控件SPComm,Visual Basic或Visual C++提供的特定通信控件MSComm,開發(fā)者通過對這些控件編程來實(shí)現(xiàn)對串口的操作。
    ?調(diào)用Windows提供的API函數(shù)在Win32環(huán)境下,硬件設(shè)備被當(dāng)作文件系統(tǒng)來訪問,應(yīng)用程序調(diào)用Create File()函數(shù)來讀寫數(shù)據(jù)。
    ?通過C/C++語言將自己的程序編譯鏈接為DLL,然后用Visual Basic調(diào)用DLL里的函數(shù)來通信。這里介紹VB中通過MSComm控件實(shí)現(xiàn)串行通信的方法。
    由于Visual Basic 6.0是Windows環(huán)境下簡單高效的可視化編程語言開發(fā)系統(tǒng),以其所見及所得的可視化界面設(shè)計(jì)風(fēng)格和面向?qū)ο蟪绦蛟O(shè)計(jì)等特點(diǎn),已廣泛應(yīng)用于各個領(lǐng)域,改編程語言不但提供了良好的界面設(shè)計(jì)能力,而且在計(jì)算機(jī)串口通信方面也有很強(qiáng)的功能,VB中的通信控件MSComm具有完善的串行數(shù)據(jù)收發(fā)和接收功能,不但包括有全部Windows API中關(guān)于串行通信的函數(shù)所具有的功能,還提供了更多的對象屬性來滿足不同用戶的編程需要。
    MSComm控件提供了兩種處理通信的方法:
    ? 事件驅(qū)動法:當(dāng)有數(shù)據(jù)到達(dá)端口,端口狀態(tài)發(fā)生改變或有通信錯誤發(fā)生時,觸發(fā)MSComm控件的OnComm事件,事件驅(qū)動實(shí)時性強(qiáng),對外界情況可以作出快速響應(yīng),因而是處理串行端口交互作用的一種非常有效的方法。
    ?查詢法:用軟件或在程序中設(shè)置定時器實(shí)現(xiàn)對端口周期性掃描,通過讀取CommEvent屬性值來查詢通信事件和錯誤,并作出相應(yīng)處理,查詢法編程簡單,調(diào)試方便,如果應(yīng)用程序較小,并且是自保持的,這種方法是可取的。
    由于MSComm控件隱藏了調(diào)用過程,屏蔽了通信過程中的底層操作,使用該控件只需定義相應(yīng)的屬性,調(diào)用Send方法發(fā)送數(shù)據(jù)或等待處理相應(yīng)的事件接收數(shù)據(jù),就可以輕松實(shí)現(xiàn)串行異步通信。MSComm控件支持如下主要屬性和事件。
    CommPort屬性:設(shè)置(返回)控件對應(yīng)的端口號,系統(tǒng)用端口號唯一標(biāo)識每一個串行端口。
    Settings屬性:設(shè)置(返回)控件所用的傳輸協(xié)議,以字符串的形式定義控件使用的波特率、奇偶校驗(yàn)、數(shù)據(jù)位、停止位等參數(shù)。此設(shè)定應(yīng)與PLC的設(shè)定相一致。
    PortOpen屬性:打開或關(guān)閉通信端口。
    Input屬性:從接收緩沖區(qū)接收并保存MSComm控件接收到的數(shù)據(jù)。
    Output屬性:向發(fā)送緩沖區(qū)發(fā)送數(shù)據(jù)。
    InputLen屬性:設(shè)置從接收緩沖區(qū)讀取的字符數(shù)。
    InbufferCout屬性:返回接收到數(shù)據(jù)緩沖區(qū)中需要處理的數(shù)據(jù)長度。在查詢方式中,該屬性可用來判斷輸入緩沖區(qū)是否接收到所需的字符。
    InputMode屬性:設(shè)置(返回)Input屬性傳輸?shù)臄?shù)據(jù)類型。
    OnComm事件:MSComm控件產(chǎn)生動作(如接收數(shù)據(jù))或錯誤時,觸發(fā)該事件。
    CommEvent屬性:返回最近的通信事件或錯誤,可在OnComm事件中檢測該屬性的值后處理。
    這里給出計(jì)算機(jī)與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
    ’計(jì)算機(jī)與PLC的連結(jié)程序
    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(“連結(jié)成功,準(zhǔn)備發(fā)送數(shù)據(jù)”)
        Else
      MsgBox(“連結(jié)失敗”)
        End If
    Else
       MsgBox(“連結(jié)失敗”)
    End If
    End Sub
    ’計(jì)算機(jī)從PLC讀函數(shù)程序
    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)   
    ’讀數(shù)據(jù)幀由ENQ、命令串和和校驗(yàn)碼組成
    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))   
    ’計(jì)算應(yīng)答幀的和校驗(yàn)碼
    Z=Mid(Data$,Len(Data$)-1,2)   
    ’計(jì)算接收到的應(yīng)答幀的和校驗(yàn)碼
    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
    計(jì)算機(jī)向PLC寫函數(shù)程序與讀函數(shù)程序類似。

    5  結(jié)束語

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

    版權(quán)聲明PLC信息網(wǎng)轉(zhuǎn)載作品均注明出處,本網(wǎng)未注明出處和轉(zhuǎn)載的,是出于傳遞更多信息之目的,并不意味 著贊同其觀點(diǎn)或證實(shí)其內(nèi)容的真實(shí)性。如轉(zhuǎn)載作品侵犯作者署名權(quán),或有其他諸如版權(quán)、肖像權(quán)、知識產(chǎn)權(quán)等方面的傷害,并非本網(wǎng)故意為之,在接到相關(guān)權(quán)利人通知后將立即加以更正。聯(lián)系電話:0571-87774297。
0571-87774297  
佛教| 惠安县| 伊宁县| 辽源市| 杂多县| 同江市| 义乌市| 铅山县| 无棣县| 监利县| 肇州县| 宽城| 韶山市| 石门县| 山东省| 通渭县| 耒阳市| 九龙城区| 邵阳市| 鄂托克前旗| 棋牌| 湖北省| 台北县| 兴化市| 安龙县| 望都县| 奉化市| 田东县| 蒙山县| 临武县| 临湘市| 额济纳旗| 玉龙| 民乐县| 铜梁县| 当阳市| 门源| 凌云县| 文成县| 淳化县| 颍上县|