• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于VC++的PC 機(jī)與PLC 串口通訊的實(shí)現(xiàn)

    2010-04-24 07:25:56張瑞卿胡愛軍
    制造技術(shù)與機(jī)床 2010年9期
    關(guān)鍵詞:控件命令串口

    張瑞卿 胡愛軍 張 超

    (華北電力大學(xué)機(jī)械工程系,河北 保定 071003)

    隨著微電子及控制技術(shù)的不斷發(fā)展,PLC 已逐漸 成為一種智能型、綜合型控制器,由PLC構(gòu)成的集散控制是現(xiàn)代工業(yè)控制的一個(gè)重要組成部分。PLC 具有使用簡單方便,故障率低,抗干擾能力強(qiáng)等優(yōu)點(diǎn);但同時(shí),數(shù)據(jù)的計(jì)算處理與管理能力較弱,且無法提供良好的人機(jī)界面。將計(jì)算機(jī)與PLC 結(jié)合起來,可使兩者優(yōu)勢互補(bǔ),充分利用計(jì)算機(jī)友好的人機(jī)界面,實(shí)現(xiàn)人機(jī)對話和監(jiān)控功能,并可進(jìn)行一定的輔助決策,組成高性能價(jià)格比的控制系統(tǒng)。實(shí)現(xiàn)計(jì)算機(jī)與PLC 結(jié)合的控制系統(tǒng)的關(guān)鍵之一是二者之間的通信。

    本設(shè)計(jì)選用三菱FX2N 系列的PLC,以Visual C++6.0 作為開發(fā)工具對PLC 通訊主程序進(jìn)行設(shè)計(jì),串口通訊采用ActiveX 控制Microsoft Communication Control 6.0,最后用PLC 編程電纜將PLC 編程口與計(jì)算機(jī)串口連接進(jìn)行調(diào)試。

    1 三菱PLC 與計(jì)算機(jī)之間通信協(xié)議

    串行通信是指外設(shè)和計(jì)算機(jī)間使用一根數(shù)據(jù)信號(hào)線一位一位地傳輸數(shù)據(jù),每一位數(shù)據(jù)都占據(jù)一個(gè)固定的時(shí)間長度?!按小笔侵竿庠O(shè)與接口電路之間的信息傳送方式,CPU 與接口之間仍按并行方式工作。串行通信的四個(gè)重要參數(shù):波特率(衡量通信速度的參數(shù))、奇偶校驗(yàn)位(一種簡單的檢錯(cuò)方式)、數(shù)據(jù)位(衡量通信中實(shí)際數(shù)據(jù)位的參數(shù))和停止位(表示單個(gè)數(shù)據(jù)包的最后一位)[1]。

    (1)三菱FX2N 系列通信數(shù)據(jù)幀格式

    FX2N 系列的PLC 與計(jì)算機(jī)之間的通信采用RS-232C 標(biāo)準(zhǔn),其傳輸速率一般設(shè)為9600 bps,實(shí)際傳輸過程還可設(shè)其它,比如115200 bps 等。奇偶校驗(yàn)位采用偶校驗(yàn)。數(shù)據(jù)以幀為單位發(fā)送和接收。一個(gè)多字符幀由起始字元、命令號(hào)碼、元件首地址、結(jié)束字元、和校驗(yàn)五部分組成,其中和校驗(yàn)值是將命令碼STX -ETX 之間的字符的ASCII 碼(十六進(jìn)制數(shù))相加,取得所得和的最低二位數(shù)。STX 和ETX 分別表示該字符幀的起始標(biāo)志和結(jié)束標(biāo)志[2]。

    起始字元(STX):ASCII 碼的起始字元STX 對應(yīng)的16 進(jìn)制數(shù)位0 ×02。無論命令信息還是回應(yīng)信息,它們的起始字元均為STX,接收方以此來判知傳輸資料的開始;

    命令號(hào)碼:為兩位16 進(jìn)制數(shù)。所謂命令號(hào)碼是指上位機(jī)要求下位機(jī)所執(zhí)行的動(dòng)作類別,例如要求讀取或?qū)懭雴吸c(diǎn)狀態(tài)、寫入或讀取暫存器資料、強(qiáng)制設(shè)定、運(yùn)行、停止等。在回應(yīng)信息中,下位機(jī)會(huì)將上位機(jī)接收到的命令號(hào)碼隨同其它信息一同發(fā)送給上位機(jī);

    元件首地址:對應(yīng)要操作的元件的相應(yīng)的地址。如從D123 單元中讀取數(shù)據(jù)時(shí),要把它對應(yīng)的地址:0x10F6 發(fā)送給PLC;

    元件個(gè)數(shù):一次讀取位元件或字元件的數(shù)量;

    結(jié)束字元(ETX):ASCII 碼的結(jié)束字元ETX 對應(yīng)的16 進(jìn)制數(shù)為0 ×03。無論命令信息還是回應(yīng)信息,它們的結(jié)束字元均為ETX,接收方以此來判知此次通訊已結(jié)束;

    校驗(yàn)碼(Checksum):校驗(yàn)碼是將STX -ETX 之間的ASCII 字元的16 進(jìn)制數(shù)值以"LRC(Longitudinal Redundancy Check)"法計(jì)算出1 個(gè)Byte 長度(兩個(gè)16 進(jìn)制數(shù)值00 -FFH)的校驗(yàn)碼。當(dāng)下位機(jī)接收到信息后,用同樣的方法計(jì)算出接收信息的校驗(yàn)碼,如果兩個(gè)校驗(yàn)碼相同,則說明傳送正確[2]。

    (2)三菱FX2N 系列通信命令

    FX2N 系列PLC 有4 個(gè)通信命令,它們是讀命令(30H)、寫命令(31H)、強(qiáng)制通命令(37H)、強(qiáng)制斷命令(38H)。

    (3)三菱FX2N 系列通信控制字符

    ENQ(ASCII 代碼05H):計(jì)算機(jī)向PLC 發(fā)送請求;

    ACK(ASCII 代碼06H):PLC 對ENQ 的確定回答;

    NAK(ASCII 代碼15H):PLC 對ENQ 的否認(rèn)回答;

    STX(ASCII 代碼02H):報(bào)文開始;

    ETX(ASCII 代碼02H):報(bào)文結(jié)束。

    (4)FX2N 系列設(shè)備地址

    ①讀寫時(shí)的軟設(shè)備地址

    S0 -S7:0000H;X0 -X7:0080H;Y0 -Y7:00A0H;T0 -T7:00C0H;M0 -M7:0100H;C0 -C7:01C0H;D0-D7:1000H

    ②置位/復(fù)位時(shí)的軟設(shè)備地址

    S0 -S7:0000H;X0 -X7:0400H;Y0 -Y7:0500H;T0 -T7:0600H;M0 -M7:0800H;C0 -C7:0E00H;D0-D7:0100H

    ③傳輸過程

    PC 機(jī)與FX 系列PLC之間采用應(yīng)答方式通信,傳輸出錯(cuò)則組織重發(fā)。其傳輸過程如圖1 所示。

    PLC 根據(jù)PC 機(jī)的命令,在每個(gè)循環(huán)掃描結(jié)束處的END 語句后組織自動(dòng)應(yīng)答,無需用戶在PLC 一方編寫程序。

    2 系統(tǒng)功能設(shè)計(jì)

    系統(tǒng)主要實(shí)現(xiàn)PLC 與計(jì)算機(jī)的通訊,具體主要完成PC 機(jī)指令下傳、監(jiān)測PLC 狀態(tài)、接收PLC 信息等功能。系統(tǒng)組成:小型PLC 一臺(tái)、RS232 串口、編程電纜、通訊界面。主操作界面在完成系統(tǒng)功能的前提下,力求明了直觀,操作簡單靈活方便。系統(tǒng)以VC++6.0 為平臺(tái),設(shè)計(jì)的界面如圖2 所示。

    本程序設(shè)計(jì)了四個(gè)串口可供選擇,只有在選擇串口之后才可進(jìn)行“打開串口,關(guān)閉串口”的操作,當(dāng)打開串口以后,就可以對PLC 進(jìn)行相應(yīng)的操作了,為了使界面整潔干凈,特別設(shè)計(jì)了“清空發(fā)送區(qū)”和“清空接收區(qū)”選項(xiàng),當(dāng)發(fā)送數(shù)據(jù)和接收數(shù)據(jù)放滿編輯框時(shí)只需點(diǎn)擊這兩個(gè)按鈕,數(shù)據(jù)就會(huì)清空。且實(shí)現(xiàn)代碼相當(dāng)簡單,m-sSend.Empty()、m-sReceive.Empty()就可輕松實(shí)現(xiàn)這一任務(wù)。

    PC 機(jī)與PLC 的通訊程序流程圖如圖3 所示。

    系統(tǒng)通信控制程序采用了MSComm 控件。此控件提供了兩種通信方法:①文件驅(qū)動(dòng),即用MSComm控件的OnComm 文件捕獲并處理通信事件和錯(cuò)誤,它是處理串行端口交互作用的一種非常有效的方法;②查詢方式,通過查詢串口屬性來獲得事件和錯(cuò)誤,實(shí)質(zhì)上還是屬于事件驅(qū)動(dòng),但在有些情況下顯得更為便捷。MSComm6.0 控件的屬性:①CommPort,設(shè)置或返回通信端口號(hào);②Settings,以字符串的形式設(shè)置或返回波特率、奇偶校驗(yàn)、數(shù)據(jù)位和停止位;③PortOpen,設(shè)置或返回通信端口的狀態(tài),也可以打開和關(guān)閉端口;④Input,返回和刪除接收緩沖區(qū)中的字符;⑤InputMode,設(shè)置或返回Input 屬性取回的數(shù)據(jù)的類型,數(shù)據(jù)取回的形式為字符串或二進(jìn)制數(shù)據(jù)的數(shù)組;⑥CommEvent 返回最近的通信事件或錯(cuò)誤的數(shù)字代碼,通信程序設(shè)計(jì)時(shí)可以根據(jù)該屬性值執(zhí)行不同的操作,在運(yùn)行時(shí)為只寫;⑦Output,將字符串寫入發(fā)送緩沖區(qū)。

    MSComm6.0 控件只有一個(gè)事件,即Oncomm 事件。在通信時(shí)如果發(fā)生錯(cuò)誤或者事件,將會(huì)引發(fā)Oncomm 事件并且改變其屬性值,通過GetCommEvent()可獲得Oncomm 產(chǎn)生事件或錯(cuò)誤的代碼。在與PLC進(jìn)行通信的過程中,使用MSComm6.0 控件可以自動(dòng)完成PLC 對計(jì)算機(jī)發(fā)送信息的接收,最終實(shí)現(xiàn)PC 機(jī)對PLC 的狀態(tài)檢測。

    軟件實(shí)現(xiàn)過程:FX2N 系列的PLC 與計(jì)算機(jī)之間的通信采用RS-232C 標(biāo)準(zhǔn),其傳輸速率固定為9600 bps,奇偶校驗(yàn)位采用偶校驗(yàn)。數(shù)據(jù)以幀為單位發(fā)送和接收。PC 機(jī)向PLC 中寫數(shù)據(jù)時(shí)首先需對串口進(jìn)行初始化,并對波特率、校驗(yàn)位等進(jìn)行設(shè)置,然后根據(jù)通信協(xié)議對PLC 進(jìn)行相應(yīng)的讀寫、復(fù)位、置位等操作,PLC根據(jù)PC 機(jī)送來的控制字進(jìn)行相應(yīng)的操作。數(shù)據(jù)發(fā)送,采用專用發(fā)送指令XMT TABLE,CommPort,其中TABLE 為發(fā)送緩沖區(qū)的首地址,首地址中保存要發(fā)送的字節(jié)數(shù),即數(shù)據(jù)長度,最大為255,其后的地址中保存要發(fā)送的數(shù)據(jù),CommPort 指定用于發(fā)送的端口。對于數(shù)據(jù)接收,使用接收指令RCV TABLE,CommPort,接收指令激活初始化或結(jié)束接收信息,通過制定端口接收信息并存儲(chǔ)于數(shù)據(jù)緩沖區(qū)中,數(shù)據(jù)緩沖區(qū)的第一個(gè)數(shù)據(jù)指明了接收的字節(jié)數(shù)。

    3 系統(tǒng)功能驗(yàn)證

    將計(jì)算機(jī)用通訊電纜與PLC 相連后,首先發(fā)送請求05H 以后,驗(yàn)證計(jì)算機(jī)與PLC 是否可以正常通信,接收區(qū)顯示06,表示PLC 對ENQ 的確定回答,即PLC已準(zhǔn)備好,可以進(jìn)行下面的操作,具體如圖4 和圖5。

    這里主要對PLC 讀值功能進(jìn)行驗(yàn)證。讀操作命令格式如下:

    STX -CMD0 -數(shù)據(jù)段-ETX-SUMH-SUML

    在按上述命令格式發(fā)送相應(yīng)的代碼后,就可直接讀取PLC 響應(yīng)的信息了。響應(yīng)信息格式如下:

    STX-DATA-ETX-SUMH-SUML

    圖6 和圖7 分別是對PLC 進(jìn)行讀值驗(yàn)證時(shí)發(fā)送數(shù)據(jù)和接收數(shù)據(jù)的顯示。

    其中接收數(shù)據(jù)顯示中的023030033633,是對X 軟地址值(0080H)讀取后接收到的數(shù)據(jù)。具體算法如下:

    故,轉(zhuǎn)變成兩字節(jié)ASCII 代碼SUMLX=33;SUMHX=36。

    理論分析和實(shí)際操作的結(jié)果是一致的,即證明了本設(shè)計(jì)是準(zhǔn)確無誤的。

    4 結(jié)語

    本文主要使用Visual C++6.0 作為開發(fā)工具,通過編寫各個(gè)模塊對應(yīng)的操作程序,最后用通訊電纜將PC 機(jī)與三菱PLC 相連進(jìn)行調(diào)試,基本上達(dá)到了預(yù)期的設(shè)計(jì)目標(biāo),實(shí)現(xiàn)了計(jì)算機(jī)與PLC 的通信功能。

    [1]張?bào)蘩颍瑒?Visual C++實(shí)踐與提高——串口通信與工程應(yīng)用篇[M].北京:中國鐵道出版社,2005.

    [2]李現(xiàn)勇.Visual C++串口通信技術(shù)與工程實(shí)踐(第二版)[M].北京:人民郵電出版社,2004.

    [3]賀哲榮,石帥軍.流行PLC 實(shí)用程序及設(shè)計(jì)[M].西安:西安電子科技大學(xué)出版社,2006.

    [4]王力虎,李紅波.PC 控制及接口程序設(shè)計(jì)實(shí)例[M].北京:科學(xué)出版社,2004.

    [5]王衛(wèi)兵.PLC 系統(tǒng)通信、擴(kuò)展與網(wǎng)絡(luò)互連技術(shù)[M].北京:機(jī)械工業(yè)出版社,2004.

    猜你喜歡
    控件命令串口
    只聽主人的命令
    淺談AB PLC串口跟RFID傳感器的通訊應(yīng)用
    關(guān)于.net控件數(shù)組的探討
    軟件(2018年7期)2018-08-13 09:44:42
    移防命令下達(dá)后
    USB接口的多串口數(shù)據(jù)并行接收方法探索
    這是人民的命令
    基于藍(lán)牙串口適配器的GPS接收機(jī)與AutoCAD的實(shí)時(shí)無線通信
    地礦測繪(2015年3期)2015-12-22 06:27:26
    基于并行控制的FPGA多串口拓展實(shí)現(xiàn)
    藍(lán)色命令
    就這樣玩會(huì)VBA中常見的自定義控件
    電腦迷(2012年24期)2012-04-29 00:44:03
    铁力市| 巨鹿县| 杭锦后旗| 南丰县| 舞钢市| 沙坪坝区| 上虞市| 元阳县| 高安市| 岑巩县| 定结县| 屏东市| 惠州市| 呼图壁县| 柏乡县| 五常市| 深水埗区| 册亨县| 资中县| 敦煌市| 德昌县| 丰都县| 张家港市| 宜都市| 谷城县| 穆棱市| 镇巴县| 崇仁县| 铁岭市| 同德县| 海林市| 永川市| 河池市| 五河县| 丁青县| 安福县| 江安县| 闽侯县| 长岛县| 银川市| 梁山县|