技術(shù)頻道

娓娓工業(yè)
您現(xiàn)在的位置: 中國傳動(dòng)網(wǎng) > 技術(shù)頻道 > 技術(shù)百科 > 自由口通信模式下計(jì)算機(jī)讀寫PLC存儲(chǔ)區(qū)的程序設(shè)計(jì)

自由口通信模式下計(jì)算機(jī)讀寫PLC存儲(chǔ)區(qū)的程序設(shè)計(jì)

時(shí)間:2008-08-19 10:31:00來源:ronggang

導(dǎo)語:?本文介紹了在自由口通信模式下,用計(jì)算機(jī)讀寫S7-200 PLC存儲(chǔ)區(qū)內(nèi)相鄰的多個(gè)字節(jié)數(shù)據(jù)的通信程序設(shè)計(jì)方法,程序設(shè)計(jì)中采用了多種可靠性措施
摘 要:本文介紹了在自由口通信模式下,用計(jì)算機(jī)讀寫S7-200 PLC存儲(chǔ)區(qū)內(nèi)相鄰的多個(gè)字節(jié)數(shù)據(jù)的通信程序設(shè)計(jì)方法,程序設(shè)計(jì)中采用了多種可靠性措施。 關(guān)鍵詞:PLC 通信 自由口模式 1 引言   使用S7-200的自由口模式與上位計(jì)算機(jī)通信,其硬件成本低,適應(yīng)性強(qiáng),但編程較困難。本文根據(jù)自定義的通信規(guī)約編制通信程序,實(shí)現(xiàn)了上位計(jì)算機(jī)對各PLC從站存儲(chǔ)器中字節(jié)、整數(shù)或雙整數(shù)數(shù)據(jù)的讀寫操作。 2 通信規(guī)約   通信采用單主站方式,一臺(tái)計(jì)算機(jī)作為主站,多臺(tái)PLC作為從站。計(jì)算機(jī)采用廣播方式主動(dòng)向所有PLC發(fā)送包含從站站址的讀/寫命令幀,每次被計(jì)算機(jī)指定站址的一臺(tái)PLC收到后返回響應(yīng)幀。   通信波特率為19.2k bit/s,串行數(shù)據(jù)格式為1位起始位,8位數(shù)據(jù)位,1位停止位,無奇偶校驗(yàn),采用異或校驗(yàn)方式,校驗(yàn)碼為除它本身外所有字節(jié)的異或值。計(jì)算機(jī)使用事件驅(qū)動(dòng)方式接收數(shù)據(jù);PLC用XMT(發(fā)送)指令發(fā)送數(shù)據(jù),用字符中斷方式接收數(shù)據(jù)。 [align=center] 圖1 通信幀格式[/align]   圖1是通信幀的格式,用陰影表示數(shù)據(jù)區(qū)。幀起始標(biāo)志占3個(gè)字節(jié),定義為十六進(jìn)制數(shù)BEBEBE。站址是計(jì)算機(jī)要讀寫的從站的編號。讀命令字節(jié)為CCH,寫命令字節(jié)為DDH,PLC響應(yīng)幀中的命令字節(jié)與接收到的命令字節(jié)相同,寫命令的響應(yīng)幀沒有“讀取的數(shù)據(jù)”部分。   除了幀起始標(biāo)志、讀寫區(qū)的首地址和讀寫的數(shù)據(jù)外,幀中其余各部分均只占一個(gè)字節(jié)。圖1中當(dāng)PLC對接收到的一幀數(shù)據(jù)校驗(yàn)無誤而且命令字節(jié)為CCH或DDH時(shí),響應(yīng)幀中的“PLC接收正誤標(biāo)志”為1,否則為0。   命令幀中的讀寫區(qū)首地址為PLC內(nèi)讀寫區(qū)域的起始字節(jié)地址的數(shù)字編碼,PLC接收到命令幀后可以將其作為指針,使用循環(huán)指令讀寫計(jì)算機(jī)指定的連續(xù)區(qū)域。經(jīng)作者反復(fù)實(shí)驗(yàn),得到了PLC內(nèi)部多種存儲(chǔ)區(qū)域地址的數(shù)字編碼規(guī)律。該數(shù)字編碼為雙字,高字表示存儲(chǔ)區(qū)類型(見表1),低字表示偏移量。根據(jù)尋址區(qū)域和偏移量就可以得到地址編碼,例如MB3的地址編碼為0200 0003H,它等同于PLC程序中的&MB3,只是表示方式不同而已。在通信幀中使用地址的數(shù)字編碼可以簡化PLC的程序。   表1 幾種存儲(chǔ)器區(qū)域地址高字編碼
  如果PLC接收超時(shí),PLC重新進(jìn)入接收狀態(tài);如果計(jì)算機(jī)接收超時(shí),重發(fā)3次命令幀,若3次均超時(shí),發(fā)出報(bào)警信息。 3 PLC通信程序設(shè)計(jì)   3.1 接收程序和發(fā)送程序的設(shè)計(jì)   PLC作為從站,只有接收到計(jì)算機(jī)的命令幀后才返回響應(yīng)幀,不會(huì)主動(dòng)發(fā)送數(shù)據(jù)。   PLC使用多個(gè)字符中斷服務(wù)程序,順次接收命令幀各部分的內(nèi)容。在接收幀起始標(biāo)志的中斷服務(wù)程序中,只有接收到連續(xù)3個(gè)BEH,PLC才認(rèn)為是一幀的開始,否則重新接收幀起始標(biāo)志。在接收站地址的中斷服務(wù)程序中,將接收到的站址與本站站址相比較,如果相同,繼續(xù)接收命令幀其余的字節(jié),否則重新接收幀起始標(biāo)志。這樣每次只有一臺(tái)PLC接收整個(gè)命令幀,避免了其余的PLC進(jìn)行不必要的接收。在接收數(shù)據(jù)區(qū)的中斷服務(wù)程序中,通過比較接收到的“數(shù)據(jù)區(qū)字節(jié)數(shù)”和實(shí)際接收到的字節(jié)數(shù)來判斷數(shù)據(jù)區(qū)接收是否完成。接收完數(shù)據(jù)區(qū)后再接收到一個(gè)字節(jié)的校驗(yàn)碼,則一幀接收完成,置發(fā)送允許標(biāo)志位。   主程序檢測到發(fā)送允許標(biāo)志位為1時(shí),進(jìn)行異或校驗(yàn)并檢查命令字節(jié),若接收正確,判斷是讀命令還是寫命令。如果是讀命令,將計(jì)算機(jī)要讀取的數(shù)據(jù)送入發(fā)送緩沖區(qū);如果是寫命令,將計(jì)算機(jī)提供的數(shù)據(jù)寫入指定的存儲(chǔ)區(qū)地址;最后計(jì)算異或校驗(yàn)碼并將它送入發(fā)送緩沖區(qū);組織好發(fā)送幀后將它發(fā)送出去。   3.2 讀寫PLC存儲(chǔ)區(qū)   首先從接收緩沖區(qū)中取出讀寫區(qū)首地址,存入符號地址為Address的雙字中,用循環(huán)程序?qū)崿F(xiàn)對多個(gè)字節(jié)的讀寫。讀寫PLC存儲(chǔ)區(qū)的語句格式為   MOVB *pFrom, *pTo   計(jì)算機(jī)讀存儲(chǔ)區(qū)時(shí),pFrom指向Address開始的m個(gè)字節(jié)的連續(xù)區(qū)域,pTo指向發(fā)送緩沖區(qū),循環(huán)次數(shù)m為要讀取的字節(jié)數(shù)。寫存儲(chǔ)區(qū)時(shí),pFrom指向接收緩沖區(qū)中要寫入的n個(gè)字節(jié)的連續(xù)區(qū)域,pTo指向Address開始的連續(xù)區(qū)域,循環(huán)次數(shù)n是要寫入的字節(jié)數(shù)。   3.3 接收緩沖區(qū)和發(fā)送緩沖區(qū)   使用XMT指令時(shí)每次最多可以發(fā)送255個(gè)字節(jié)。由于PLC不能同時(shí)發(fā)送和接收數(shù)據(jù),為了節(jié)省通信程序占用的存儲(chǔ)空間和簡化程序,接收緩沖區(qū)和發(fā)送緩沖區(qū)共用VB100­~VB355這片區(qū)域。接收數(shù)據(jù)時(shí),只存儲(chǔ)命令幀中的命令字節(jié)及其后的內(nèi)容。   VB100是XMT指令發(fā)送緩沖區(qū)的首字節(jié),即要發(fā)送的字節(jié)數(shù),響應(yīng)幀從VB101開始存放。對于某一從站來說,幀起始標(biāo)志和站址都是固定值,可以在PLC首次掃描時(shí)將它們送入發(fā)送緩沖區(qū)。PLC響應(yīng)幀中的命令字節(jié)與接收到的命令字節(jié)相同,因此PLC在生成響應(yīng)幀時(shí),只需生成除幀起始標(biāo)志、站址和命令字節(jié)以外的部分。經(jīng)分析可知,計(jì)算機(jī)每次最多可以從PLC讀取247個(gè)字節(jié),向PLC寫入244個(gè)字節(jié)的數(shù)據(jù)。 4 計(jì)算機(jī)程序設(shè)計(jì)   計(jì)算機(jī)通過PLC響應(yīng)幀中返回的站址號和命令字節(jié)判斷是哪個(gè)從站對何種命令作出的響應(yīng),并結(jié)合PLC接收正誤標(biāo)志作出相應(yīng)的處理。   4.1 接收及通信出錯(cuò)處理   計(jì)算機(jī)采用串口事件方式接收PLC發(fā)出的響應(yīng)幀。計(jì)算機(jī)將接收到的每個(gè)字節(jié)順次放入接收緩沖區(qū)(動(dòng)態(tài)字節(jié)型數(shù)組),通過數(shù)據(jù)區(qū)字節(jié)數(shù)判斷對響應(yīng)幀的接收是否結(jié)束。   接收完成后,計(jì)算機(jī)對接收到的數(shù)據(jù)作異或校驗(yàn),如果校驗(yàn)無誤,命令字節(jié)為CCH或DDH,而且PLC接收正誤標(biāo)志為1,計(jì)算機(jī)認(rèn)為接收正確。如果計(jì)算機(jī)異或校驗(yàn)判斷接收有誤或PLC返回的接收正誤標(biāo)志為0,將重發(fā)同樣的命令幀,若連續(xù)重發(fā)3次后均出錯(cuò),則提示用戶。   4.2 命令幀的生成   在計(jì)算機(jī)中命令幀用字節(jié)型數(shù)組來表示。假設(shè)要讀取1號站PLC中MB6開始的3個(gè)字節(jié)的數(shù)據(jù),MB6的地址代碼0200 0006H應(yīng)放在PLC接收緩沖區(qū)的VB107~VB110。根據(jù)S7-200的尋址方式,VB107~VB110各字節(jié)中的值分別為02H、00H 、00H、06H,PLC接收到的字節(jié)從低地址開始存放,所以在計(jì)算機(jī)中只需將以上4個(gè)字節(jié)順次存放于命令幀數(shù)組即可。本例從VB101開始的讀命令幀為:BE BE BE 01 06 CC 02 00 00 06 03 72(十六進(jìn)制數(shù)),最后一個(gè)字節(jié)(72H)為異或校驗(yàn)碼。   4.3 讀寫整數(shù)和雙整數(shù)的方法   整數(shù)占用一個(gè)字,雙整數(shù)占用連續(xù)的兩個(gè)字。由于PLC和計(jì)算機(jī)中整數(shù)和雙整數(shù)的存儲(chǔ)方式相同,計(jì)算機(jī)可以把它們分別拆成2個(gè)字節(jié)和4個(gè)字節(jié)后發(fā)送,亦可將接收到的多字節(jié)組合成整數(shù)或雙整數(shù)。   讀PLC中連續(xù)的n個(gè)整數(shù)時(shí),可以轉(zhuǎn)換為讀連續(xù)的2n個(gè)字節(jié),計(jì)算機(jī)接收到后將每相鄰的2個(gè)字節(jié)組合成1個(gè)整數(shù);同樣的,讀n個(gè)雙字可以轉(zhuǎn)化為讀4n個(gè)字節(jié),計(jì)算機(jī)接收到后將每相鄰的4個(gè)字節(jié)組合成1個(gè)雙整數(shù)。   將n個(gè)字或雙字寫入PLC時(shí),可將它們拆分成2n個(gè)字節(jié)或4n個(gè)字節(jié),按高字節(jié)在前,低字節(jié)在后的順序放入發(fā)送幀中。拆分操作可用位邏輯運(yùn)算來實(shí)現(xiàn)。例如,欲將256和-1兩個(gè)整數(shù)寫入PLC的MW6和MW8,首先將它們分別拆分為2個(gè)字節(jié)01H ,00H和FFH, FFH,設(shè)站號為1,則寫命令幀為BE BE BE 01 09 CC 02 00 00 06 01 00 FF FF 7F(十六進(jìn)制)。 5 實(shí)驗(yàn)及結(jié)論   經(jīng)多次實(shí)驗(yàn)表明,本文介紹的通信程序運(yùn)行穩(wěn)定可靠,能滿足工程實(shí)用的要求。該程序的通用性好,計(jì)算機(jī)可以讀寫PLC中的多種存儲(chǔ)區(qū)域,可設(shè)置讀寫的起始地址和字節(jié)數(shù),每次最多可讀寫240多個(gè)字節(jié),數(shù)據(jù)可以按字節(jié)、整數(shù)和雙整數(shù)來讀寫。   通過幀起始標(biāo)志、PLC接收正誤標(biāo)志和異或校驗(yàn)保證了通信的可靠性,接收出錯(cuò)和超時(shí)出錯(cuò)重發(fā)送機(jī)制進(jìn)一步提高了通信的性能。 參考文獻(xiàn)   [1] Siemens AG. S7-200 Programmable Controller System Manual. Nuernberg, 2002   [2] 廖常初. PLC編程及應(yīng)用. 北京:機(jī)械工業(yè)出版社,2002年   [3] 范逸之等. 利用Visual Basic實(shí)現(xiàn)串并行通信技術(shù). 北京:清華出版社

標(biāo)簽:

點(diǎn)贊

分享到:

上一篇:弧焊機(jī)器人本體探究

下一篇:微能WIN-V63矢量控制變頻器在...

中國傳動(dòng)網(wǎng)版權(quán)與免責(zé)聲明:凡本網(wǎng)注明[來源:中國傳動(dòng)網(wǎng)]的所有文字、圖片、音視和視頻文件,版權(quán)均為中國傳動(dòng)網(wǎng)(www.treenowplaneincome.com)獨(dú)家所有。如需轉(zhuǎn)載請與0755-82949061聯(lián)系。任何媒體、網(wǎng)站或個(gè)人轉(zhuǎn)載使用時(shí)須注明來源“中國傳動(dòng)網(wǎng)”,違反者本網(wǎng)將追究其法律責(zé)任。

本網(wǎng)轉(zhuǎn)載并注明其他來源的稿件,均來自互聯(lián)網(wǎng)或業(yè)內(nèi)投稿人士,版權(quán)屬于原版權(quán)人。轉(zhuǎn)載請保留稿件來源及作者,禁止擅自篡改,違者自負(fù)版權(quán)法律責(zé)任。

網(wǎng)站簡介|會(huì)員服務(wù)|聯(lián)系方式|幫助信息|版權(quán)信息|網(wǎng)站地圖|友情鏈接|法律支持|意見反饋|sitemap

中國傳動(dòng)網(wǎng)-工業(yè)自動(dòng)化與智能制造的全媒體“互聯(lián)網(wǎng)+”創(chuàng)新服務(wù)平臺(tái)

網(wǎng)站客服服務(wù)咨詢采購咨詢媒體合作

Chuandong.com Copyright ?2005 - 2024 ,All Rights Reserved 版權(quán)所有 粵ICP備 14004826號 | 營業(yè)執(zhí)照證書 | 不良信息舉報(bào)中心 | 粵公網(wǎng)安備 44030402000946號