在現代工業中,plc通信聯網功能的應用日益廣泛。在實際生產現場,各個工位上可能使用不同廠家生產的plc,它們之間通信聯網一直是工程上的一個難題。歐姆龍plc所*的通信協議宏功能可以很好地解決這個問題[1] 。歐姆龍中小型plc,如cqm1h、c200hα、cj1、cs1等機型,均支持通信協議宏功能,可以實現與其他廠家的plc通信。協議宏通信方式編程簡單、易于實現,是不同廠家plc通信的一種簡便易行的方法。
本文選用歐姆龍的c200he-cpu42型plc,使用通信協議宏,與三菱的fx2n-64mr型 plc進行通信。歐姆龍plc為上位機,三菱 plc則為下位機。
網絡結構如圖1所示,主機c200he-cpu42作為上位機,使用c200hw-com06-ev1型通信板,通信板上帶有rs-232c與rs-422a/485串行通信口各一個,都支持通信協議宏功能[2]。三菱fx2n-64mr作為下位機,機體上加裝fx2n-485-bd串行通信功能擴展板,支持三菱計算機鏈接(computer link)通信協議[3]。1臺上位plczui多可連接16臺下位plc,上位plc與下位plc通過rs-485串行端口連接。通信過程中,上位plc首先發出指令并啟動通信,下位plc收到指令并執行,然后將執行結果返回上位plc。下位plc之間不能進行直接通信。
圖1 網絡結構
歐姆龍的通信協議宏由通信序列(sequence)組成,由pmcr指令調用,與帶有rs-232c或rs-422a/485端口的各種外圍設備交換數據。通信協議宏支持軟件(cx-protocol)的對話式菜單使通信序列易于登記。軟件支持x-on和x-off、rts和cts等控制方法,允許傳送任何帶有校驗碼(如sum,lrc或crc)和幀長度的數據信息。一個接收陣列(matrix),zui多可以設置15種類型的期望的接收信息,而每個期望接收信息都可以包含確定下一步要執行的過程和出現信息接收錯誤時要執行的故障處理命令[4]。
三菱計算機鏈接通信協議用于計算機與plc之間的通信,計算機發出讀寫plc數據的命令幀,plc收到后自動生成和返回響應幀,但是計算機程序仍需用戶編寫[3]。上位計算機通過安裝在各臺plc 上的串行通信功能擴展板連接多臺plc構成網絡。通信協議有兩種格式(format 1和format 4),區別在于字符串zui后是否添加cr/lf碼。本文采用format 1通信格式。
地址決定計算機訪問哪一臺plc,同一網絡中各plc的地址不能重復,設定范圍為00h~0fh。plc號用來識別plc的cpu類型。指令用來操作的類型,如讀、寫等操作,由2個ascii碼組成。校驗碼是從地址開始,校驗碼之前的所有字符的十六進制數的ascii碼求和,取和的低兩位數據的ascii碼。
計算機與plc之間的數據流有3種形式:計算機從plc中讀數據、計算機向plc寫數據和plc向計算機寫數據。本文用到了前兩種數據流形式。
(1)計算機從plc讀數據操作
命令:enq+地址+plc標識號+指令+等待時間+字符區域a+校驗碼
響應:stx+地址+ plc標識號+字符區域b+etx+校驗碼 (正確時)
nak+地址+ plc標識號+錯誤代碼 (錯誤時)
計算機收到響應信號后發出確認信號:ack+地址+ plc號或nak+地址+ plc號
(2)計算機向plc寫數據操作
命令:enq+地址+plc標識號+指令+等待時間+字符區域c+校驗碼
響應:ack+地址+ plc標識號 (正確時)
nak+地址+ plc標識號+錯誤代碼 (錯誤時)
字符區域中,a為要讀取的存儲區的開始位置和字節數;b為返回的存儲區的值;c為要寫入的存儲區的開始位置和數值。校驗碼用來校驗數據是否正確。
歐姆龍plc與三菱plc通信之前,先要生成通信協議宏。下面以從三菱plc的x位元件組讀數據和向三菱plc的y位元件組寫數據為例,介紹協議宏組態方法:
(1)創建通信協議宏
根據三菱計算機鏈接通信協議的格式要求,在cx-protocol軟件上創建工程,如圖2所示。創建“read”和“write”兩個通信序列(sequence)。接收陣列(matrix)用于接收響應數據。
圖2 通信協議宏結構
(2)創建通信序列
在通信序列中設置鏈接字(link word)、傳輸方式控制參數(control)、應答方法(response)、數據接收監控時間(timer tr)、數據接收完成監控時間(timer tfr)、數據發送完成監控時間(timer tfs)等內容。
(3)創建通信步
在通信序列中創建通信步(step)。每個通信步包括步號(step)、重復計數器(repeat)、命令(command)、重試(retry)、發送信息(send message)、接收信息(recv message)、是否響應(response)、下一個執行過程(next)以及出錯處理(error)等內容。
(4)創建發送和接收信息
發送信息與接收信息必須嚴格按照計算機鏈接通信協議格式編寫。由“報頭”(header)、“結束符”(terminator)、“校驗碼”(check code)、“幀長度”(length)、“地址”(address)和“數據”(data)等幾部分組成。其中,讀數據的發送信息結構如圖4所示。在發送信息中,“數據”為上位plc向下位plc發送的具體數據,由“報頭”、“地址”、“plc標識號”、“指令”、“消息等待時間”、“字符區域”、“校驗碼”等七部分組成。其中, “h”為報頭,取值enq,其ascii碼為“05h”。“a”為地址,取值“00”,表示與從機00通信。“ff”為fx系列plc的標識號。“br”為“讀位元件”指令。“a”為等待時間,對應100ms。“x0004”、“04”表示從x004開始讀取4個位元件的值。“c”為校驗碼,為sum(0)。
(5)創建接收陣列
三菱通信格式比較復雜,而且接收到響應數據具有一定的不確定性。因此,在協議宏程序中使用接收陣列的形式完成數據的接收工作。如圖3所示,在接收陣列中設置了3種可能接收到的數據信息(receive message),并規定接收到特殊數據信息后要進行的下一步處理方法(next process)。
通信協議宏組態結束后,將其下載到通信板中。
三菱plc通信參數設置:通信格式設置為format 1,波特率9600bps、偶校驗、7位數據位、1位停止位。地址設置范圍00h~0fh。
圖3 接收陣列
歐姆龍plc通信參數設置:通信板a端口設定為協議宏通信方式,其他通信參數要與下位三菱plc的通信參數保持一致。
通信協議宏的調用與執行程序段如圖4所示,28908為通信板端口a使用標志。pmcr指令的*操作數“#1000”、“#1001”為控制字,*位的“1”表示使用通信板的端口a,后3位數表示調用并執行的通信序列號。dm0000、dm0200為pmcr指令的第二操作數,所的有效通道存放發送的數據。dm0100、dm0300為pmcr指令的第三操作數,存放接收到的數據。當pmcr調用000號通信序列時,從三菱plc的x位元件組讀取數據,當pmcr調用001號通信序列時,向下位plc的y位元件組寫入數據。
圖4協議宏調用程序
通信協議宏具有較強的靈活性,程序的編寫和調用非常簡單,容易實現不同廠家plc之間的通信。在程序的編制與調試過程中,一些細節問題必須予以注意:
(1)在程序中有多條pmcr指令時,使用微分指令避免指令間的沖突;
(2)讀取幾個設備的數據,使用變量的方式接收數據;
(3)將發送信息與接收信息寫在不同的通信步中,避免從站斷線導致pmcr指令執行標志無法復位。
上一篇:柴油機起動電機故障的檢修判斷
免責聲明
- 凡本網注明"來源:智能制造網"的所有作品,版權均屬于智能制造網,轉載請必須注明智能制造網,http://www.xashilian.com。違反者本網將追究相關法律責任。
- 企業發布的公司新聞、技術文章、資料下載等內容,如涉及侵權、違規遭投訴的,一律由發布企業自行承擔責任,本網有權刪除內容并追溯責任。
- 本網轉載并注明自其它來源的作品,目的在于傳遞更多信息,并不代表本網贊同其觀點或證實其內容的真實性,不承擔此類作品侵權行為的直接責任及連帶責任。其他媒體、網站或個人從本網轉載時,必須保留本網注明的作品來源,并自負版權等法律責任。
- 如涉及作品內容、版權等問題,請在作品發表之日起一周內與本網聯系,否則視為放棄相關權利。
2025中國鄭州衡器與計量技術設備展覽會
展會城市:鄭州市展會時間:2025-11-07