NET的計算機與S7-200_PLC自由口通信_第1頁
NET的計算機與S7-200_PLC自由口通信_第2頁
NET的計算機與S7-200_PLC自由口通信_第3頁
NET的計算機與S7-200_PLC自由口通信_第4頁
NET的計算機與S7-200_PLC自由口通信_第5頁
已閱讀5頁,還剩3頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、.net 的計算機與s7-200 plc 自由口通信摘要: 介紹了 s7-200 plc 和計算機的通信方式, 詳細說明了自由口模式下plc與計算機通信的實現(xiàn)方法,包括自由口工作的通信流程,計算機指令幀格式約定,plc反饋幀的格式約定等。編寫了s7-200 plc 的自由口通信程序,在上位機中用.net環(huán)境下的 c#語言開發(fā)了計算機與plc的串行通信程序,可靈活實現(xiàn)對plc存儲區(qū)數(shù)據(jù)的讀寫功能。關(guān)鍵詞: plc; .net ; c#;自由口通信中圖分類號: tp393 文獻標(biāo)識碼 : a free-port communication method between pc and s7-200

2、plc based on .net lu qing abstract: the communication method between s7-200 plc and computer is introduced and the s7-200 plc communication under the free-port is illuminated in detail, which mainly includes working process, computer instruction format and plc feedback information format. the serial

3、 communication program between computer and s7-200 plc based on c# is programmed, where host computer can read and write any kinds of data in plc to meet the requirement of the system . key words: plc; .net; c#; free-port communication 引言 plc作為一種高效、靈活、可靠的控制器,已經(jīng)廣泛地應(yīng)用在包括數(shù)字邏輯控制、運動控制、閉環(huán)過程控制、數(shù)據(jù)處理和聯(lián)網(wǎng)通信等工業(yè)

4、控制領(lǐng)域。在聯(lián)網(wǎng)通信方面,plc與上位計算機設(shè)備一起,可以組成“集中管理、分散控制”的分布式工業(yè)控制系統(tǒng)。在這種控制系統(tǒng)中,plc與上位機的通信對系統(tǒng)整體性能有著較大的影響。面對眾多廠家不同類型的plc ,它們在功能編程上沒有統(tǒng)一的標(biāo)準(zhǔn)而且在通信協(xié)議上也是千差萬別,選擇一種即能滿足通信要求又經(jīng)濟實用的通信協(xié)議是非常關(guān)鍵的。本文以s7-200plc為對象,詳細研究了s7-200plc 在自由端口模式下與pc之間的通信方法,并采用.net環(huán)境下的 c#語言編寫通信程序?qū)崿F(xiàn)了計算機與plc之間的通信。這種通信方式硬件投入低,通信協(xié)議靈活,可以在多個工業(yè)控制領(lǐng)域得到廣泛的應(yīng)用。1 s7-200 plc

5、 與上位機的通信方式 s7-200 系列 plc與上位機進行通信主要有以下幾種方式:(1)通過 s7-200 plc的 opc服務(wù)器 (pc access) 作為上位機的opc服務(wù)器,這種方式只須在opc 服務(wù)器中配置相應(yīng)的測點數(shù)據(jù),編程簡單,但通信速率不高,用戶不能自由修改通信協(xié)議;(2)利用觸摸屏,這種方式需要根據(jù)觸摸屏兼容的通信協(xié)議進行選擇,通信可靠性高,但靈活性差,觸摸屏界面編程功能也不夠強大;(3)利用通用編程軟件實現(xiàn),這種方法雖然系統(tǒng)開發(fā)工作量大,對技術(shù)人員的水平和經(jīng)驗都要求較高,但編程靈活,可以實現(xiàn)比較復(fù)雜的功能。本文采用了第三種通信方式,在開發(fā)通信軟件時考慮了s7-200 pl

6、c所特有的一種通信方式自由口通信模式。 在自由口模式下用戶可自定義協(xié)議,利用串口和plc的通信口來收發(fā)數(shù)據(jù),通信功能完全由用戶程序控制,通信任務(wù)和信息定義均需由用戶編程實現(xiàn),通過調(diào)用子程序來進行接收中斷、發(fā)送中斷、發(fā)送指令 (xmt )、接收指令 (rcv)等通信控制操作。2 自由口通訊工作模式的定義在中小規(guī)模系統(tǒng),通信速率要求不是特別高的情況下,s7-200 plc 自帶的編程口可以作為通信口使用。 s7-200 plc 編程軟件與plc進行通信所利用的ppi 協(xié)議實質(zhì)也是一種rs-485 通信,它可在多種模式下工作,其中自由口通信功能是s7-200 plc 的一個獨特的功能。在自由口通信方

7、式下,s7-200 plc 可以與任何協(xié)議公開的設(shè)備、控制器進行通信, 最高波特率可達38.4kbit/s。 一般上位機串行口符合rs-232c標(biāo)準(zhǔn)協(xié)議, 為了與 plc的 rs-485 通信則必須進行協(xié)議轉(zhuǎn)換。在 plc編程方面,自由口模式下的通訊協(xié)議主要就是自由口通信工作模式控制字的定義以及發(fā)送和接受數(shù)據(jù)指令的格式約定及其參數(shù)設(shè)置等。2.2 接收指令( rcv ) rcv(接收指令)從s7-200 plc的通訊口接收一個或多個數(shù)據(jù)字節(jié)。接收的數(shù)據(jù)字節(jié)保存在接收數(shù)據(jù)緩沖區(qū)中。 接收指令完成后, 會產(chǎn)生一個中斷事件 (對 port0 為中斷事件23,對 port1 為中斷事件 24)。啟動接收

8、指令后,cpu的通訊控制器就處于接收狀態(tài)。使用接收指令時需要設(shè)置消息起始和結(jié)束的判斷條件,通訊控制器用這些條件來判斷消息的開始和結(jié)束。當(dāng)判斷消息結(jié)束時接收狀態(tài)終止,否則通訊口會一直處在接收狀態(tài) 。由于 s7-200 plc 的自由口通訊是建立在rs-485 半雙工通訊的基礎(chǔ)上,接收和發(fā)送不能同時進行,接收指令不結(jié)束,就不能執(zhí)行發(fā)送指令。對幾個重要的特殊存儲區(qū)設(shè)置舉例如下:movb 16#ec, smb87(允許接受,檢測起始字符和結(jié)束字符,超時檢測)movb 104, smb88 (發(fā)送報文起始字符為h)movb 72, smb99(結(jié)束字符為h)movb +1000, smb92(接受超時時

9、間為1s)movb 35, smb94(接受最大字符數(shù)為35)2.3 發(fā)送指令( xmt ) xmt 發(fā)送指令利用數(shù)據(jù)緩沖區(qū)指定要發(fā)送的字符,用于向指定通信口以字節(jié)為單位發(fā)送一串?dāng)?shù)據(jù)字符,發(fā)送命令格式為 xmt table ,port , 其中 table為數(shù)據(jù)存儲區(qū)地址,port 指定 plc要發(fā)送數(shù)據(jù)的端口。一次最多發(fā)送255 個字節(jié)。 xmt 發(fā)送指令完成后, 會產(chǎn)生一個中斷事件(port0 為中斷事件9,port1為中斷事件 26)也可以監(jiān)視發(fā)送完成狀態(tài)位sm4.5和 sm4.6的變化來產(chǎn)生xmt中斷。3 s7-200 plc 通信程序設(shè)計3.1 通信程序流程本程序中 s7-200 c

10、pu 從通訊端口0 接收字符串,使用rcv指令和接受完成中斷接受數(shù)據(jù),以自定義協(xié)議來實現(xiàn)計算機與s7-200plc之間的數(shù)據(jù)通信時,為了避免通信中的各方爭用通信線路,一般采用主從方式,即計算機作為主機,向作為從站的s7-200 plc 端口 0 發(fā)送規(guī)定格式的報文。當(dāng) s7-200 plc接收到指令后進行相關(guān)的數(shù)據(jù)校驗, 這里采用 bbc校驗方式,即將每一幀的第一個字節(jié)(不包括起始字符)到該幀中正文校驗碼之前的所有字節(jié)作異或運算(本例中是從vb101到 vb130 ),并將校驗碼作為報文一部分發(fā)送到計算機。在plc接收端也要對接收緩沖區(qū)的數(shù)據(jù)進行bbc校驗,然后與指令中的校驗碼比較,如果校驗碼

11、相等則置位m0.0,plc執(zhí)行命令并將所接收到的數(shù)據(jù)反饋給計算機;如果校驗碼不相等 , 則置位 m0.1 并返回帶有校驗碼錯誤的反饋信息,通信流程圖如圖1 所示。圖 1 plc 通信流程圖3. 2 通信幀格式約定計算機每次發(fā)送一個33 字節(jié)的指令來實現(xiàn)一次讀寫操作。每條指令都包括起始字符、結(jié)束字符、目標(biāo)站地址、目標(biāo)寄存器地址、要讀寫的字節(jié)數(shù)、要寫入的數(shù)據(jù)和校驗碼。s7-200 plc 接收到計算機發(fā)送來的數(shù)據(jù), 先存放在 plc的接收緩沖區(qū),設(shè)定以vb100開始。自定義的接收緩沖區(qū)的數(shù)據(jù)設(shè)計格式見表1 表 1 plc 接收數(shù)據(jù)緩沖區(qū)vb100 接收到的字節(jié)數(shù)vb101 起始字符vb102 指令

12、類型(讀 / 寫)vb103 vb104 目標(biāo)站地址vb105vb112 目標(biāo)寄存器地址vb113 vb114 讀寫字節(jié)數(shù)vb115vb130 要寫入的數(shù)據(jù)vb131 vb132 校驗碼vb133 結(jié)束字符為避免在通信中由于指令中的起始字符或者結(jié)束字符與傳輸?shù)臄?shù)據(jù)有重復(fù)而導(dǎo)致plc的誤動作,這里采用文本傳送二進制數(shù)據(jù),即通過以 16 進制的 ascii 碼的格式來描述數(shù)據(jù),讓每個二進制的字節(jié)都表示成一對 ascii 編碼的 16 進制字符。比如48h可表示為 34h、38h兩個字節(jié)。指令類型自定義為05h代表讀操作, 06h代表寫操作。目標(biāo)寄存器地址采用四個字節(jié)表示,前兩個字節(jié)表示寄存器類型,

13、后兩個表示寄存器號,例如: vb101的地址可表示為08 00 00 65 ,其中“ 08 00 ”表示 v寄存器區(qū),“ 00 65 ”表示寄存器號 101。目標(biāo)寄存器地址表示方法如表2 所示:plc接收上位機的指令后會返回一個21 字節(jié)的反饋信息。自定義的發(fā)送緩沖區(qū)的格式如表3 所示:表 3 plc 發(fā)送緩沖區(qū)格式vb153 vb154 vb155 vb156vb171 vb172 vb173 vb174 發(fā)送字符數(shù)起始字符狀態(tài)信息發(fā)送數(shù)據(jù)區(qū)校驗碼結(jié)束字符其中 vb155狀態(tài)信息的格式定義為:01h代表讀入正確, 02h代表寫入正確, 03h代表校驗碼錯誤,04h代表指令不合法。3.3 主要

14、程序設(shè)計本系統(tǒng) plc程序設(shè)計采用模塊化設(shè)計,主要包括主程序、初始化子程序、讀子程序、寫子程序、校驗子程序、接收完成中斷程序和發(fā)送完成中斷程序。主程序負責(zé)判斷讀寫條件和調(diào)用各個子程序,具體包括判斷plc運行模式; 調(diào)用初始化子程序;判斷本機站號、指令類型和校驗碼等是否符合讀寫程序;調(diào)用讀、寫子程序;接收數(shù)據(jù)等。在初始化子程序中主要設(shè)置一些通信參數(shù)和rcv 接收參數(shù)并開啟接收完成中斷0和發(fā)送完成中斷1。在讀寫子程序中根據(jù)接收到的指令信息讀取目標(biāo)寄存器數(shù)據(jù)或者把數(shù)據(jù)寫入目標(biāo)寄存器中,并利用xmt發(fā)送反饋信息到計算機。讀寫程序如下:讀子程序:ld sm0.0 r sm87.7, 1 (禁止接收 )

15、r m0.0 (復(fù)位校驗位 ) rcv vb100, 0 movb 103, vb154 (送返回信息起始字符為g) movb 1, vb155 (狀態(tài)信息讀取正確)hta *vd135,vb156,16(將要讀取的數(shù)據(jù)做16 進制轉(zhuǎn) ascii 碼轉(zhuǎn)換 ) movb 71, vb174 (結(jié)束字符為 g) movb 21,vb153 ( 發(fā)送字節(jié)數(shù)為21 個字節(jié) ) ,(校驗發(fā)送數(shù)據(jù))ld sm4.5(端口 0 發(fā)送空閑時置1) xmt vb153, 0 寫子程序與讀程序類似,只是要對寫入的數(shù)據(jù)做ascii 碼轉(zhuǎn)換:movd &vb115, vd145(裝入要寫的數(shù)據(jù)源的地址指針)

16、ath *vd145, *vd135, vb139(對要寫入的數(shù)據(jù)做ascii 碼轉(zhuǎn) 16 進制轉(zhuǎn)換),xmt vb153, 0 4 上位機 c編程在 windows環(huán)境下開發(fā)與plc的通信軟件 , 利用 .net環(huán)境下的通信組件serialport 3 實現(xiàn)通信,并用 visual c 編寫軟件程序。該通信組件提供了使用rs232開發(fā)串行通信軟件的細則,組件主要屬性如表 4 所示 : .net環(huán)境下的 serialport組件沒有像傳統(tǒng)的visual basic 6.0中的 mscomm.portopen = true/false屬性,所以打開關(guān)閉串口相應(yīng)的是調(diào)用類的open() 和 clo

17、se() 方法。serialport組件讀取數(shù)據(jù)的許多方法是同步阻塞調(diào)用,應(yīng)盡量避免在主線程中調(diào)用,可以使用異步處理或線程間處理調(diào)用這些讀取數(shù)據(jù)的方法,采用這種方式可以顯著提高系統(tǒng)的工作性能,這也是.net環(huán)境與 visual basic 6.0編程環(huán)境的不同之處。serialport組件的串口屬性要設(shè)置成與plc串口參數(shù)相同的數(shù)值,例19200bit/s,無檢驗, 1 位停止位, 8個數(shù)據(jù)位。 觸發(fā) serialport組件接收數(shù)據(jù)的事件是datareceived 事件,設(shè)置 receivedbytesthreshold為1 表示立即接收。由于datareceived 事件在輔線程被引發(fā),而

18、收到完整的數(shù)據(jù)要在主線程窗體上顯示,所以要用到跨線程處理,在c# 中可采用控件異步委托begininvoke的方法窗體顯示收到的數(shù)據(jù)。serialport接收主要程序如下:private void serialport1_datareceived(object sender, serialdatareceivedeventargs e) int int_len = serialport1.bytestoread;/接收字節(jié)數(shù)byte bytes2 = new byteint_len; /接收字節(jié)serialport1.read(bytes2, 0, int_len); /讀入串口數(shù)據(jù)string st1 =tohexstring(bytes2); /轉(zhuǎn)換數(shù)據(jù)為16 進制顯示myinvoke iv1 = new myinvoke(display); /異步委托調(diào)用顯示數(shù)據(jù)receivebox1.begininvoke(iv1, new object st1 ); 編寫的通信界

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論