国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于CAN總線的多PLC網(wǎng)絡通信方案研究

2012-07-25 03:19薛青娜
微處理機 2012年1期
關(guān)鍵詞:歐姆龍通信協(xié)議三菱

薛青娜

(西安鐵路職業(yè)技術(shù)學院,西安710014)

1 引言

目前,出于成本的考慮,大部分的小型PLC并沒有集成CAN通信接口,部分大型 PLC集成有CAN通訊接口,但價格較貴。隨著應用技術(shù)的發(fā)展,經(jīng)常會出現(xiàn)一些應用場合,在面積較大的范圍內(nèi),需要多臺PLC協(xié)同完成一個系統(tǒng)的綜合控制[1]。許多制造業(yè)用戶特別是大型企業(yè),為了避免過分依賴一家系統(tǒng)提供商,通常會采用幾家不同廠商的控制系統(tǒng)。PLC之間的通信格式不兼容,給企業(yè)內(nèi)部的系統(tǒng)集成、集中管理和升級帶來了極大的困難。因此,研究一種統(tǒng)一的通信協(xié)議,以使不同品牌的PLC可以統(tǒng)一監(jiān)控和互相自由通信具有重要的現(xiàn)實意義。

2 基于CAN總線的PLC網(wǎng)絡方案

CAN總線具有多主工作方式、各站依據(jù)優(yōu)先權(quán)進行總線訪問的機制、無破壞性的總線仲裁技術(shù)、短幀結(jié)構(gòu)不易受干擾、自動檢錯、發(fā)送期間若丟失仲裁或由于出錯而遭到破壞的幀可實現(xiàn)自動重發(fā)等性能。直接通信距離最遠可達10km(傳輸速率為5kbit/s),最高通信速率可達1Mbit/s(傳輸距離為40m),非常適合用于組建PLC通信網(wǎng)絡[2]。

提出了一種基于CAN總線的PLC網(wǎng)絡方案,能夠?qū)Χ嗯_聯(lián)網(wǎng)的PLC實現(xiàn)遠程配置、數(shù)據(jù)通信,并能夠在投入較低硬件成本的基礎(chǔ)上,實現(xiàn)良好的系統(tǒng)運行性能。這個方案也充分發(fā)揮了現(xiàn)場總線CAN-bus的實時、可靠、高速、遠距離、易維護等特點[3]。通過單片機將PLC的通訊協(xié)議轉(zhuǎn)化為CAN協(xié)議,并組成CAN總線網(wǎng)絡,以實現(xiàn)各PLC之間的相互訪問,同時可使用上位機檢測各PLC的工作和通信狀況。這種方式組建的PLC網(wǎng)絡,與選擇集成CAN通訊功能的PLC設備相比,具有更加靈活的系統(tǒng)擴展能力,也能夠獲得更好的性價比[4]。

圖1 基于CAN總線的PLC網(wǎng)絡方案

在該方案中與上位機聯(lián)系的歐姆龍PLC通過轉(zhuǎn)換網(wǎng)關(guān)連接,而下位機的 PLC1,PLC2,…,PLCn則是不同公司的PLC產(chǎn)品,有歐姆龍的PLC,有三菱的SC-09,還有滿足MODBUS通信協(xié)議的控制產(chǎn)品。這里轉(zhuǎn)換網(wǎng)關(guān)的作用就是搭建不同PLC協(xié)議與CAN協(xié)議之間的橋梁,并滿足不同PLC協(xié)議之間的無縫銜接。為了開發(fā)方便起見,轉(zhuǎn)換網(wǎng)關(guān)使用周立功的DP51+開發(fā)板來進行實現(xiàn),其中的CAN功能通過CAN控制芯片SJA1000來完成。

3 PLC協(xié)議與CAN協(xié)議的轉(zhuǎn)換方案

在CAN與多PLC協(xié)議轉(zhuǎn)換方案中,主要是通過軟件來實現(xiàn)協(xié)議之間的轉(zhuǎn)換,這里有歐姆龍通信協(xié)議、三菱SC-09、Modbus RTU。這里在DP51+的軟件中使用f_serial_1.c和f_can_1.c:實現(xiàn)歐姆龍通信協(xié)議和CAN協(xié)議的互相轉(zhuǎn)換;f_serial_2.c和f_can_2.c:實現(xiàn)三菱SC-09通信協(xié)議和CAN協(xié)議的互相轉(zhuǎn)換;f_serial_3.c和f_can_3.c:實現(xiàn)Modbus RTU通信協(xié)議和CAN協(xié)議的互相轉(zhuǎn)換。在軟件檢測到不同協(xié)議的時候,通過中斷方式來調(diào)用上述函數(shù)完成協(xié)議轉(zhuǎn)換。

3.1 歐姆龍通信協(xié)議與CAN協(xié)議互相轉(zhuǎn)換

在上位機中嚴格按照OMRON專用協(xié)議編寫通信程序。這樣PLC才能理解上位機發(fā)來的命令幀,而上位機才能理解PLC發(fā)回的響應幀[5]。響應幀在PLC的上位鏈接單元中自動生成,在PLC中無需用戶再編寫通信程序,因此可以沒有PLC的主動參與而進行通信。PLC也有能力在必須主動參與時發(fā)起數(shù)據(jù)傳輸。當多節(jié)點參與通信時,必須為上位機鏈接通信設置節(jié)點號,用以區(qū)分不同的節(jié)點,本文中每個DP51+上只有一個PLC,節(jié)點號設置為00。從上位計算機發(fā)送一個命令時,必須遵循上位機連接通信協(xié)議。

程序f_can_1.C用來將CAN接口接收到的命令轉(zhuǎn)化為歐姆龍的通信協(xié)議。主函數(shù)void f_can_1()首先發(fā)送各命令共同的起始字符'@'和節(jié)點號"00",unsigned char m_canchar[]中保存了主程序中接收到的CAN命令,其中第一個字節(jié)為該命令的控制字符,根據(jù)該字節(jié)的值區(qū)別不同的命令并分別處理。

f_serial_1.C程序用來將串口接收到的歐姆龍響應命令轉(zhuǎn)化為CAN命令。CAN命令幀的地址為讀取命令中包含的發(fā)送節(jié)點地址,命令碼為將相應命令碼的第7位置1,unsigned char m_serialchar[]中保存了主程序中接收到的歐姆龍PLC通過串口發(fā)送的字符,其中第四和第五字節(jié)保存了命令的標題碼,程序以此判斷并分別處理不同的命令。若為測試命令,則將數(shù)據(jù)區(qū)的第三個字節(jié)設置為本節(jié)點PLC的類型號,其它讀寫命令由開始地址區(qū)分后轉(zhuǎn)換為相應的CAN命令。在處理讀數(shù)據(jù)的響應命令時,對于大于8個字節(jié)的命令,要分成多幀分別傳送。

3.2 三菱通信協(xié)議與CAN協(xié)議互相轉(zhuǎn)換

三菱SC-09通信電纜采用統(tǒng)一的編址處理各種軟設備,因此需要明確每一個軟設備的具體設備地址,讀寫時各軟設備的地址范圍如下表所示,每一地址為一個字節(jié),長8位,相當于8個軟設備,如讀寫時0080H實際是X0~X7的值。

表1 三菱字軟設備地址

程序f_can_2.C用來將CAN接口接收到的命令轉(zhuǎn)化為三菱SC-09的通信協(xié)議。因為三菱SC-09通信協(xié)議中每個字節(jié)的最高位為偶校驗位,其余位為數(shù)據(jù)位,而DP51+串口協(xié)議每字節(jié)8位數(shù)據(jù)位,無校驗位。

f_serial_2.C程序用來將串口接收到的SC-09的通信命令轉(zhuǎn)化為CAN命令。因接收到的每個字節(jié)都包含了偶校驗位,所以在使用每個字節(jié)的值之前,首要要去取偶校驗位,然后再根據(jù)標題碼判斷不同的處理命令。

3.3 MODBUS協(xié)議與CAN協(xié)議轉(zhuǎn)換

程序f_can_3.C用來將CAN接口接收到的命令轉(zhuǎn)化為Modbus的通信協(xié)議。在DP51+接收到讀取工作區(qū)的命令0x22后,首先發(fā)送節(jié)點地址01,其后為讀取保持寄存器命令的標題碼03,標題碼之后為讀取變量的開始地址和讀取數(shù)目,把轉(zhuǎn)換完成的Modbus命令中從地址到讀取數(shù)據(jù)低位的各字節(jié)存儲在數(shù)組char ch[]中,然后計算該命令的CRC校驗。

f_serial_3.C程序用來將串口接收到控制器的應答命令轉(zhuǎn)化為CAN命令。DP51+接收到應答命令后計算CRC校驗,確認校驗無誤則轉(zhuǎn)化為CAN命令并發(fā)送回相應的節(jié)點,如果命令大于8個字節(jié),則分成多幀分別發(fā)送。

4 不同類型PLC互相通信

4.1 歐姆龍PLC主動發(fā)起寫操作

必要時歐姆龍能主動發(fā)起傳送數(shù)據(jù),以減少上位機監(jiān)控的頻率。實現(xiàn)這一功能需要在歐姆龍PLC中編寫TXD命令,首先初始化DM區(qū),DM0高字節(jié)為寫操作命令代碼,與CAN協(xié)議的命令碼相同,低字節(jié)為寫操作目標節(jié)點的地址。DM1中保存寫命令的開始地址,從DM2開始保存要寫的數(shù)值。

TXD命令的格式如圖2所示,首源字S為傳送數(shù)據(jù)第一個字的地址,本文中固定為DM0,控制字(C)的值決定了數(shù)據(jù)的輸出端口,在上位機鏈接模式中,最低兩位未使用,均設置為0。最高位設置為1,則輸出到外圍端口,設置為0,則輸出到外圍端口以外的端口。當最高位設置為0時,第二位設置為0,使用CPU單元內(nèi)置的RS-232C端口,設置為1或2則分別使用串行通信板端口1或2。本文使用CPU單元內(nèi)置的RS-232C端口,因此控制字C設置為#0。字節(jié)數(shù)N必須是#0000到#0061之間的BCD值(即最多有122個字節(jié)的ASCII字符)。當執(zhí)行條件為ON時,TXD從首源字S開始讀出N個字節(jié)數(shù)據(jù),將其轉(zhuǎn)化為ASCII碼,然后輸出數(shù)據(jù)到指定端口,在讀取DM區(qū)時,將先讀取高字節(jié),后讀取低字節(jié)。

圖2 歐姆龍TXD命令

從歐姆龍PLC發(fā)送出的字符格式如下表所示,歐姆龍PLC將自動添加前綴(起始字符、節(jié)點號和標題碼EX)和后綴(校驗碼和結(jié)束符)。程序f_serial_1.C通過標題碼EX來判斷是否是歐姆龍PLC發(fā)出的TXD命令,根據(jù)正文的最高字節(jié),將其轉(zhuǎn)化為相應的CAN通信命令(按字節(jié)寫輸出命令0x03、按字節(jié)寫工作區(qū)命令0x13),接收寫入命令節(jié)點的處理流程與上位機監(jiān)控時相同,在收到寫入節(jié)點發(fā)回的正確響應命令后,歐姆龍主動發(fā)起的對其它節(jié)點寫入數(shù)據(jù)的操作結(jié)束。

表2 歐姆龍EX命令

4.2 歐姆龍PLC主動發(fā)起讀操作

當需要歐姆龍主動發(fā)起讀數(shù)據(jù)操作時,需要使用查詢命令0x04。兩PLC互相通信的示意圖如圖3所示。

以歐姆龍主動發(fā)起讀取三菱PLC數(shù)據(jù)的操作為例,具體通信步驟如下:

(1)在歐姆龍PLC中編寫TXD命令,首先初始化DM區(qū),DM0高字節(jié)為命令代碼,與CAN協(xié)議的命令碼相同(04),低字節(jié)為讀取數(shù)據(jù)目標PLC的節(jié)點地址。DM1高字節(jié)設置讀取目標PLC哪個區(qū)域的數(shù)據(jù),若讀取輸入?yún)^(qū)則置為01,讀取輸出區(qū)則設置為02,讀取工作區(qū)則設置為03。低字節(jié)設置讀取來的數(shù)據(jù)放到本機工作區(qū)的開始地址,如設置為00。DM2設置為讀取目標節(jié)點數(shù)據(jù)的開始地址,DM3設置為讀取的字節(jié)數(shù)。然后通過TXD命令將DM0到DM3的數(shù)據(jù)發(fā)送到DP51+(1)。

圖3 PLC主動讀數(shù)據(jù)通信流程

(2)DP51+(1)確認歐姆龍發(fā)送來的EX命令正文的第一個字節(jié)為0x04后,將其轉(zhuǎn)化為CAN查詢命令(0x04),并發(fā)送到目標節(jié)點。

(3)DP51+(2)接收到查詢消息幀以后,通過判斷第3個字節(jié)的值,采用相應的命令讀取三菱PLC輸入?yún)^(qū)、輸出區(qū)或者工作區(qū)的數(shù)據(jù)。

(4)三菱PLC自動響應對它的讀數(shù)據(jù)命令。

(5)DP51+(2)接收到三菱PLC對讀數(shù)據(jù)命令的響應后,以接收到CAN命令的第4個字節(jié)的值為開始地址,發(fā)出按字節(jié)寫工作區(qū)命令0x13到DP51+(1)。

(6)DP51+(1)接收到寫工作區(qū)命令0x13后,處理開始地址后轉(zhuǎn)化為歐姆龍寫IR區(qū)命令,在接收到歐姆龍PLC的正確響應后通信結(jié)束,讀取的數(shù)據(jù)保存在歐姆龍的工作區(qū)中。

4.3 三菱PLC主動發(fā)起讀寫操作

三菱PLC主動發(fā)起讀寫其它節(jié)點的數(shù)據(jù)需要使用RS指令。RS指令的格式如圖4所示,雖然在一個程序中可以按需使用大量RS指令,但必須保證同一時刻只有一個RS指令被驅(qū)動。該指令使用RS-232接口來發(fā)送和接收串行數(shù)據(jù),在RS指令接通的情況下,將M8122置位(設置發(fā)送請求),將從發(fā)送地址開始,依次將數(shù)據(jù)發(fā)送到串口,發(fā)送數(shù)據(jù)的個數(shù)由發(fā)送數(shù)據(jù)點數(shù)決定。本文不需要三菱PLC主動接收數(shù)據(jù),因此接收數(shù)據(jù)點數(shù)設置為0。

由M8161決定發(fā)送數(shù)據(jù)的方式,當M8161設置為OFF時,16位數(shù)據(jù)被分成高8位和低8位,然后再發(fā)送;設置為ON時,高8位被忽略,只發(fā)送低8位。本文中CAN應用層協(xié)議采用按字節(jié)方式讀寫,因此使用RS指令前,將M8161設置為ON。

圖4 三菱RS指令

由三菱PLC主動發(fā)起寫其它節(jié)點的操作時,首先初始化數(shù)據(jù)寄存器,D0設置為寫操作命令代碼,與CAN協(xié)議的命令碼相同,D1設置為寫操作目標節(jié)點的地址。D2中保存寫命令的開始地址,從D3開始保存要寫的數(shù)值。然后驅(qū)動RS指令,并設置發(fā)送請求。三菱PLC將自動在數(shù)據(jù)塊的前后分別添加數(shù)據(jù)塊起始標志STX和數(shù)據(jù)塊結(jié)束標志ETX。

由三菱PLC主動發(fā)起讀取其它節(jié)點數(shù)據(jù)的操作時,首先初始化數(shù)據(jù)寄存器,D0設置為查詢命令代碼04,D1設置為讀取數(shù)據(jù)目標節(jié)點的地址。D2設置為讀取目標PLC哪個區(qū)域的數(shù)據(jù),D3設置為讀取來的數(shù)據(jù)放到本機工作區(qū)的開始地址。D4設置為讀取目標節(jié)點數(shù)據(jù)的開始地址,D5設置為讀取的字節(jié)數(shù)。然后驅(qū)動RS指令,并設置發(fā)送請求。其余通信流程與歐姆龍主動發(fā)起讀取其它節(jié)點數(shù)據(jù)的流程相同。

5 系統(tǒng)測試

用Keil軟件編寫協(xié)議轉(zhuǎn)換程序(與歐姆龍PLC連接的DP51+的CAN通信地址設置為2,另外一個與三菱PLC連接的DP51+的CAN地址設置為3,實際應用時可外接DIP開關(guān)用來選擇地址),并生成匯編文件,然后將DP51+的串口與上位機串口相連接,將模式選擇開關(guān)撥到編程模式,打開DPFlash下載軟件,型號選擇DP51(+),選擇連接的上位機串口,并選擇波特率為 9600bps[6-7]。

在歐姆龍PLC中首先將DM0-DM2分別設置為#0302、#0000、#0001,然后執(zhí)行如圖5所示的命令,每1秒鐘通過TXD命令將DM0-DM2的數(shù)據(jù)發(fā)送到串口,經(jīng)過DP51+轉(zhuǎn)換為對三菱PLC寫輸出區(qū)的命令,然后將DM2中的數(shù)值循環(huán)左移一位。三菱PLC的輸出指示燈依次循環(huán)點亮,由歐姆龍PLC主動發(fā)起的寫數(shù)據(jù)命令正確執(zhí)行。

圖5 歐姆龍TXD通信程序

在歐姆龍PLC中首先將DM0-DM3分別設置為#0402、#0100、#0000、#0002,然后每 1 秒鐘通過TXD命令將DM0-DM3的數(shù)據(jù)發(fā)送到串口,將三菱PLC的輸入?yún)^(qū)從地址0開始的兩個字節(jié)讀到工作區(qū)IR016,然后將輸出區(qū)IR100設置為與工作區(qū)起始地址IR016的值相同。將三菱PLC的輸入點設置為ON以后,歐姆龍PLC相應的輸出點點亮,由歐姆龍主動發(fā)起的讀數(shù)據(jù)命令正確執(zhí)行。

6 結(jié)束語

許多制造業(yè)用戶特別是大型企業(yè),為了避免過分依賴一家系統(tǒng)提供商,通常會采用幾家不同廠商的控制系統(tǒng)[8]。PLC之間的通信格式不兼容,給企業(yè)內(nèi)部的系統(tǒng)集成、集中管理和升級帶來了極大的困難。本文提出了一種基于CAN總線的PLC網(wǎng)絡通信方案,該方案通過將各廠家不同的通信協(xié)議轉(zhuǎn)化為統(tǒng)一的CAN網(wǎng)絡通信,從而實現(xiàn)了較好的互相連通以及統(tǒng)一的上位機監(jiān)控能力。

[1] 甘永梅,李慶豐,劉小娟.現(xiàn)場總線技術(shù)及其應用[M].北京:機械工業(yè)出版社,2004.

[2] 溫克強.Modbus通訊協(xié)議在DCS與PLC通訊中的應用[J].石油化工自動化,2005(5):65-68.

[3] 李喜東,劉波濤,劉剛.Modbus RTU串行通訊協(xié)議在工業(yè)現(xiàn)場的應用[J].自動化技術(shù)與應用,2005,24(7):37-40.

[4] 袁飛,程恩.基于Modbus規(guī)約的智能儀表與PC機通信技術(shù)實現(xiàn)[J].微計算機信息,2004,20(9):56-57.

[5] 趙偉,張小牛.網(wǎng)絡化一測量技術(shù)與儀器發(fā)展的新趨勢[J].電測與儀表.2000,37(7):5-9.

[6] 鄭平,李英.基于Ethernet的全開放工業(yè)控制網(wǎng)絡[J].工業(yè)儀表與自動化裝置,2001(3):6-9.

[7] 吳欽偉.工業(yè)儀表與裝置智能化網(wǎng)絡化的進展[J].自動化博覽,2003(18):1-6.

猜你喜歡
歐姆龍通信協(xié)議三菱
三菱日聯(lián)銀行
三菱日聯(lián)銀行
利用三菱PLC在老設備上的改造應用
人民幣上的圓圈
人民幣上的圓圈
人民幣上的圓圈
人民幣的圓圈
基于NS-3的PLC多頻通信協(xié)議仿真平臺設計與實現(xiàn)
別致型男 試駕2015款三菱帕杰羅精英超越版
基于風險分析的安全通信協(xié)議簡化研究