新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 上位機(jī)與PLC的通信與監(jiān)控設(shè)計(jì)

        上位機(jī)與PLC的通信與監(jiān)控設(shè)計(jì)

        作者: 時(shí)間:2011-10-06 來源:網(wǎng)絡(luò) 收藏

          //程序初始化:

        procedure TForm1.Init_(nPort:integer);

        begin

        if MSComm.PortOpen then

        MSComm.PortOpen:=False;

        MSComm.Commport:=nPort;

        //端口選擇

        MSComm.Settings:='9600,e,7,1';

        //1位起始位,7位數(shù)據(jù)位,偶效驗(yàn),2位停止位,9600bps

        MSComm.PortOpen:=True;//打開串口

        end;

        //FCS校驗(yàn)

        function FCS(s:string):variant;

        var


        i,len,tmpVar:integer;

        DataCheck:byte;

        f1,f2:byte;

        begin

        f1:=0;

        f2:=0;

        DataCheck:=0;

        len:=length(s);

        tmpVar:=0;

        for i:=1 to len do

        begin

        DataCheck:=ord(DataCheck) xor ord(s[i]);

        end;

        f1:=DataCheck and $0f;

        f2:=DataCheck and $f0;

        f2:=f2 shr 4;

        result:=inttostr(f2)+inttostr(f1);

        end;

        // 調(diào)用MSComm控件實(shí)現(xiàn)

        procedure TForm1.HandShake_;

        var

        tmpByte1,tmpByte2:char;

        tmpVar:string;

        s:string;

        begin

        Init_PLC(1);

        nbs
        p; s:=Edit1.text;

        tmpVar:=s+inttostr(FCS(s))+'*'+chr(13);

        MSComm.RThreshold:=0;

        MSComm.Output:=tmpVar;

        //向串口輸出數(shù)據(jù)

        sleep(1000);// 延時(shí)

        tmpVar:=MSComm.Input;

        //從串口讀取數(shù)據(jù)

        tmpByte1:=tmpVar[5];

        tmpByte2:=tmpVar[6];

        if tmpByte1=chr(48) tmpByte2:=chr(48);

        //校驗(yàn)碼等于00,PLC正常完成操作

        then

        begin

        Showmessage('發(fā)送的數(shù)據(jù)正確');

        else

        Showmessage('發(fā)送的數(shù)據(jù)有問題');

        //end;

        end;

        4.2 實(shí)現(xiàn)對PLC的

          編寫程序建立了與PLC的連接.在PLC的任何工作方式下都可以通過”讀”指令讀取PLC的狀態(tài).從而對PLC進(jìn)行監(jiān)視.只有當(dāng)PLC的工作方式為監(jiān)視的情況下才可以通過對PLC進(jìn)行控制.所以在需要上位機(jī)實(shí)施控制的系統(tǒng)里面PLC都必須設(shè)置為監(jiān)視工作方式.

          上位機(jī)只需要設(shè)置PLC的相應(yīng)工作位就可以實(shí)現(xiàn)對PLC的控制.下圖為PLC上位機(jī)控制過程。圖a表示PLC 正常工作時(shí)輸出由輸入0.00控制,當(dāng)需要把PLC的控制轉(zhuǎn)由上位機(jī)控制時(shí),只需要通過向PLC輸入@00RR00030001,置3.00為ON,切斷0.00的通路,這樣輸出10.00就轉(zhuǎn)由4.00控制,當(dāng)輸入@00WR00040001時(shí),4.00為ON,輸出位10.00產(chǎn)生輸出。

        (a) PLC正常工作

        (b)上位機(jī)控制

                                    圖6 PLC的上位機(jī)控制

        5結(jié)束語

          本文探討了實(shí)現(xiàn)PLC的上位鏈接系統(tǒng)通信的方法,以及要實(shí)現(xiàn)上位機(jī)對下PLC控制的PLC編程。通過上位機(jī)對PLC的監(jiān)視與控制,可用方便的實(shí)現(xiàn)工廠生產(chǎn)過程的自動化

          參考文獻(xiàn)

          [1] 弭洪濤,畢國忠等.PLC應(yīng)用技術(shù).北京:中國電力出版社2004

          [2] 宋伯生.PLC編程理論 算法及技巧. 北京:機(jī)械工業(yè)出版社2006


        上一頁 1 2 下一頁

        關(guān)鍵詞: 上位機(jī) PLC 通信 監(jiān)控

        評論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 出国| 红安县| 海淀区| 大姚县| 扎兰屯市| 宜兴市| 喀喇| 溧水县| 自治县| 太原市| 灌阳县| 隆化县| 阜南县| 海阳市| 吴忠市| 隆尧县| 邵武市| 连云港市| 桐柏县| 定陶县| 扶沟县| 兰西县| 武夷山市| 连云港市| 江门市| 法库县| 拉萨市| 瓮安县| 桦南县| 镇康县| 防城港市| 赤峰市| 略阳县| 克山县| 札达县| 鄂尔多斯市| 武胜县| 呼玛县| 开封市| 治县。| 凤冈县|