《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計應(yīng)用 > 以單片機作為S7-200 PLC從站的PPI協(xié)議的設(shè)計
以單片機作為S7-200 PLC從站的PPI協(xié)議的設(shè)計
來源:微型機與應(yīng)用2012年第17期
孟 強,梅大成,秦 勃,葉 強
(西南石油大學(xué),四川 成都,610500)
摘要: 為了將單片機加入到SIEMENS S7-200系列PLC的PPI(點對點協(xié)議)通信網(wǎng)絡(luò)中,就需要分析PPI通信協(xié)議格式。本文利用CommMonitor6.0(串口監(jiān)視精靈)工具,監(jiān)控PLC與PLC之間的通信,通過總結(jié)分析出其數(shù)據(jù)格式,然后編寫相應(yīng)的單片機C51程序,使PLC能夠使用NetR/NetW(網(wǎng)絡(luò)讀寫命令)與單片機進行數(shù)據(jù)交換。
關(guān)鍵詞: PIC PLC 單片機 PPI NetR NetW
Abstract:
Key words :

摘  要: 為了將單片機加入到SIEMENS S7-200系列PLCPPI(點對點協(xié)議)通信網(wǎng)絡(luò)中,就需要分析PPI通信協(xié)議格式。本文利用CommMonitor6.0(串口監(jiān)視精靈)工具,監(jiān)控PLC與PLC之間的通信,通過總結(jié)分析出其數(shù)據(jù)格式,然后編寫相應(yīng)的單片機C51程序,使PLC能夠使用NetR/NetW(網(wǎng)絡(luò)讀寫命令)與單片機進行數(shù)據(jù)交換。
關(guān)鍵詞: PLC;單片機;PPI;NetR;NetW

 在工業(yè)控制領(lǐng)域,可編程邏輯控制器PLC(Programmable Logic Controller)以其可靠性高、抗干擾能力強,通用性強、靈活性好、功能齊全、編程簡單、使用方便以及安裝簡便等特點而得到了廣泛的應(yīng)用。現(xiàn)代工業(yè)控制系統(tǒng)大都向著分散化、網(wǎng)絡(luò)化和智能化方向發(fā)展,如何實現(xiàn)現(xiàn)場分散的控制設(shè)備的網(wǎng)絡(luò)通信十分重要。
 西門子公司的S7-200系列PLC支持PPI、MPI、Profibus和自由口通信等多種通信方式。采用MPI協(xié)議需要相應(yīng)的CP卡或MPI卡支持,如CP5511通信卡;若采用Profibus協(xié)議,則需要Profibus-DP模塊EM277;若采用自由口方式,則在PLC中需要編寫通信程序,占用PLC有限的程序存儲空間,同時也難以保證在惡劣復(fù)雜環(huán)境下通信數(shù)據(jù)的正確可靠性;若采用PPI協(xié)議,只需在整個通信網(wǎng)絡(luò)中選定1個PLC作為通信主站點,其他PLC都作為從站點,主站PLC通過NetR/NetW指令周期性地與從站PLC進行數(shù)據(jù)交換,這種通信方式非常簡單可靠,得到了廣泛的應(yīng)用。
 在實際應(yīng)用中通常又需要PLC能夠與其他設(shè)備通信,本文以單片機串口通信為例,詳細地分析了NetR/NetW指令的通信流程與數(shù)據(jù)格式,并設(shè)計出了單片機串口通信協(xié)議,使PLC能夠使用NetR/NetW指令與單片機通信。
1 S7-200系列PLC網(wǎng)絡(luò)讀寫指令分析
1.1 PPI協(xié)議簡介

 PPI是西門子公司專門為S7-200系列PLC開發(fā)的通信協(xié)議,內(nèi)置于S7-200 CPU中。PPI物理上基于RS485接口,通過屏蔽雙絞線就可以實現(xiàn)PPI通信,是一種主-從通信協(xié)議。主站設(shè)備發(fā)送要求到從站設(shè)備,從站設(shè)備響應(yīng),從站本身不能主動發(fā)出信息。為了進行PPI通信,S7-200系列PLC專門配備了網(wǎng)絡(luò)讀指令及網(wǎng)絡(luò)寫指令,使用STEP 7-Micro WIN中的NetR/NetW Wizard可以很方便地配置網(wǎng)絡(luò)通信。使用該向?qū)Э梢跃庉嬜疃?4條網(wǎng)絡(luò)讀寫指令,每條網(wǎng)絡(luò)讀寫指令最多能夠讀或者寫16 B的數(shù)據(jù)。其核心是使用順序控制指令,這樣在任一時刻只有一條NetR/NetW指令有效。在主程序中必須用SM0.0指令來調(diào)用該向?qū)傻淖映绦颍员WC它的正常運行。該子程序有3個參數(shù):  
 (1)Timeout(超時)。0為不計時;1-36767為設(shè)置以秒為單位的超時延時時間。如果通信有問題的時間超出此延時時間,則會報告錯誤。
 (2)Cycle(周期)。所有網(wǎng)絡(luò)讀/寫操作每完成一次切換狀態(tài)。  
 (3)Error(錯誤)。0為無錯誤;1為出錯,通過檢查NetR/NetW指令緩沖區(qū)狀態(tài)字節(jié),可以獲取錯誤代碼。
1.2 PPI協(xié)議數(shù)據(jù)幀分析
 利用CommMonitor6.0工具監(jiān)控單主站PLC之間的通信,可以獲得4種不同的數(shù)據(jù)幀。
 (1)令牌幀:SD1,DA SA;
 (2)無數(shù)據(jù)字段的固定長度的請求幀或應(yīng)答幀:SD2,DA SA FC FCS ED;
 (3)有可變數(shù)據(jù)字段的請求或應(yīng)答幀:SD3,LE LER SD3 DA SA FC DU FCS ED;
 (4)短應(yīng)答幀:SC。
 SD1~SD3為開始定界符,以區(qū)別不同類型的幀格式,SD1=0xDC,SD2=0x10,SD3=0x68;LE=LER,表示從DA至DU的數(shù)據(jù)長度;DA為目的地址,指示接收該幀的站;SA為源地址,指示發(fā)送該幀的站;FC為幀控制字節(jié),包含用于該幀服務(wù)和優(yōu)先權(quán)等的詳細說明;DU為數(shù)據(jù)字段,包含有效的數(shù)據(jù)信息;FCS為幀校驗字節(jié),表示從DA到DU之間的校驗和的256余數(shù);ED為幀結(jié)束定界符(0x16);SC為單一字符(0xE5),用于從站的確認。
 當(dāng)系統(tǒng)主站PLC上電運行后,在一定時間(即用戶所設(shè)定的Timeout時間內(nèi))會進行通信網(wǎng)絡(luò)初始化,首先生成令牌并初始化令牌環(huán),由于是單主站系統(tǒng),該主站將會一直持有該令牌。接著主站就會不斷地搜索它管轄范圍的從站,通常從用戶所配置的第一條NetR/NetW指令的從站地址開始,搜索范圍也由用戶設(shè)定(一般為0~31)。主站首先發(fā)送請求幀10 DA SA FC FCS ED (FC功能碼為49H,表示有回答要求的從站狀態(tài)查詢),從站正確接收到后將發(fā)送響應(yīng)幀10 SA DA FC FCS ED (FC功能碼為00H,表示應(yīng)答肯定)。接著主站繼續(xù)搜索下一個從站,一定時間內(nèi)如果沒有從站響應(yīng),則將繼續(xù)進行下一個網(wǎng)絡(luò)地址搜索。主站PLC一直重復(fù)循環(huán)此過程,并將從站狀態(tài)信息記錄下來,直到Timeout時間到,主站才開始真正執(zhí)行由用戶所配置NetR/NetW操作。
1.3 NetR指令分析
 由NetR/NetW指令向?qū)?/strong>創(chuàng)建的指令,最多只能讀取16 B的信息,而且指令是順序執(zhí)行的,完成一條讀指令需要兩次數(shù)據(jù)收發(fā)。在測試過程中,設(shè)定主站PLC地址為01,從站PLC地址為02,主站從PLC從站的VB100~VB115存儲區(qū)讀取16 B的通信過程如下:


 返回的有用數(shù)據(jù)為第25~第40字節(jié)的共16 B,第41字節(jié)為第4~第40字節(jié)的數(shù)據(jù)的校驗和,而且第11、12字節(jié)的數(shù)據(jù)必須與主站讀命令的第11、12字節(jié)保持一致。
這樣經(jīng)過兩次收發(fā)數(shù)據(jù),才能正確完成一次數(shù)據(jù)的讀操作。
1.4 NetW指令分析
 (1)首先主站PLC發(fā)出寫命令,數(shù)據(jù)格式為:68 2F 2F 68 02 01 6C 32 01 00 00 02 02 00 0E 00 14 05 01 12 0A 10 02 00 10 00 01 84 00 03 20 00 04 00 80 00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF 30 16。其中,第6、11、12字節(jié)數(shù)據(jù)規(guī)則與NetR命令一致,第51字節(jié)數(shù)據(jù)為校驗和,第35~50字節(jié)的數(shù)據(jù)為真正的要寫入從站的有用數(shù)據(jù)。
 (2)從站PLC正確接收后,則作出響應(yīng),返回E5。
 (3)主站接收到此響應(yīng)后,則發(fā)出確認寫命令10 02 01 5C 5F 16,第3字節(jié)數(shù)據(jù)規(guī)則與NetR命令一致。
 (4) 從站接收到確認寫命令后,返回確認命令 68 12 12 68 01 02 08 32 03 00 00 02 02 00 02 00 01 00 00 05 01 FF 4C 16。第11、12字節(jié)數(shù)據(jù)與主站寫命令應(yīng)保持一致,這樣收發(fā)兩次數(shù)據(jù),才能完成一次數(shù)據(jù)的寫操作。
2 單片機串口通信協(xié)議設(shè)計
2.1 串口通信方式選擇

  PPI協(xié)議物理上采用RS485標準,每個字符擴展成11 bit,采用NRZ(不歸零)編碼。首先是1 bit開始位,它總是二進制“0”,接著是8 bit信息位,之后是1 bit奇偶校驗位(PPI協(xié)議規(guī)定為偶檢驗),最后是1 bit停止位,它總是二進制“1”。
 因此,應(yīng)將單片機串口通信設(shè)置為工作方式3:9 bit UART通信模式,8 bit數(shù)據(jù)位與1 bit奇偶檢驗位,奇偶校驗方式使用偶校驗;定時器1用作波特率發(fā)生器,選擇工作方式2,8 bit自動重裝模式,在這里使用9 600 b/s波特率,由式(1)、(2)計算可得,TL1=0xFD。
baudrate=2SMOD×T1溢出率/32(1)
T1溢出率=fosc/(12×(256-TL1))(2)
 串口通信初始化程序:
TMOD|=0x20;    
//定時器1選擇方式2,8 bit自動重裝模式
TH1=0xFD;        
TL1=0xFD;        
PCON &=0x7F;    //SMOD=0,波特率不加倍
SCON=0xD0;    //串口通信選擇方式3,9 bit UART模式,8 bit數(shù)據(jù)位,1 bit校驗位
TR1=1;
2.2 接收信息起始條件和結(jié)束條件選擇
 在串口通信過程中,單片機有可能從一個字符的中間開始接收字符,從而導(dǎo)致校驗錯誤和接收信息功能終止,為避免出現(xiàn)此類問題,就需要在接收開始前,對信息的起始和結(jié)束條件進行定義。
由于PLC會發(fā)送3種不同類型的數(shù)據(jù)幀,并且單片機需要及時做出正確的響應(yīng),因此,單片機在接收到不同的數(shù)據(jù)幀時應(yīng)作出不同的響應(yīng)。單片機采用中斷的方式接收數(shù)據(jù),而由于在PPI協(xié)議中,并沒有固定的起始字符,經(jīng)過分析,采用斷點檢測的方法來作為接收起始條件。斷點是指在小于一個完整字符傳輸時間的一段時間內(nèi),接收數(shù)據(jù)一直為0,只有在斷點之后接收到的字符才會存入到信息緩沖區(qū),任何在斷點之前接收到的字符都被忽略。一個完整字符傳輸時間定義為傳輸起始位、數(shù)據(jù)位、校驗位和停止位的時間總和。在本系統(tǒng)中,通信波特率為9 600 b/s,因此傳輸一個完整的字符(11 bit)時間為t=11/9 600,即為1.145 83 ms,為了方便,斷點檢測時間可以設(shè)定為2 ms。
 信息結(jié)束采用字符間隔定時器的方式來判斷一條信息的結(jié)束。字符間隔時間是指從一個字符的結(jié)尾(停止位)到下一個字符的結(jié)尾(停止位)之間的時間。在數(shù)據(jù)傳輸過程中,如果兩個字符之間的時間間隔超過了所設(shè)定的時間,則表示這條信息接收完成。由于定時器總是包含接收一個完整字符的時間,因此該時間值應(yīng)設(shè)置為大于在指定波特率下傳輸一個字符的時間(在此為1.145 83 ms),在這里設(shè)置為2 ms。單片機在每接收到一個字符后,都要重啟字符間隔定時器,如果超時,則表示信息接收完成。
由于單片機硬件資源有限,只提供2個定時器,定時器1用作波特率發(fā)生器,斷點檢測和字符間隔定時器的時間都為2 ms,因此可以共用定時器0。為了計算方便,定時器0選擇工作方式1(16 bit定時器),初值為TH0=0xFF,TL0=0xFD。
2.3數(shù)據(jù)字符檢驗程序
 接收校驗程序如下:
ACC=SBUF;
if(RB8==P)
{
  rxd_buf[rxd_count]=ACC;      //暫存到接收緩沖區(qū)
      rxd_count++;
    }
    else            //接收校驗錯,則需要重新開始接收
{
  rxd_en=0;                    //停止接收標志
      rxd_count=0;
      return;            
    } 
 發(fā)送校驗程序如下:
ACC=txd_buf[txd_count];
TB8=P;
SBUF=txd_buf[txd_count];
 單片機在接收到一條完整的信息后,首先會進行數(shù)據(jù)幀分析,通過比較,判斷主站PLC發(fā)送的數(shù)據(jù)幀類型,并對判斷正確的請求幀給予正確的響應(yīng),返回給PLC正確的數(shù)據(jù)格式。使用Keil開發(fā)工具編寫C51程序代碼,采用結(jié)構(gòu)化程序設(shè)計思想,程序流程圖如圖1所示。

3 結(jié)果驗證

 


 最后通過通信測試驗證,PLC主站能夠使用NetR/NetW指令很方便地讀取單片機的數(shù)據(jù)或向單片機寫入給定的數(shù)據(jù)。而且在具有多個PLC從站的PPI網(wǎng)絡(luò)中,通過設(shè)定不同從站地址,將多個單片機接入到該網(wǎng)絡(luò)中,作為主站的PLC也能夠正常地訪問各個從站PLC與單片機從站,它們之間的通信穩(wěn)定可靠,且互不影響,這也為以后在PPI網(wǎng)絡(luò)中擴展其他智能設(shè)備提供了可行性。
參考文獻
[1] 張揚,蔡春偉,孫明建.S7-200 PLC原理與應(yīng)用系統(tǒng)設(shè)計[M].北京:機械工業(yè)出版社,2007.
[2] 孫鶴旭,梁濤,云利軍.Profibus現(xiàn)場總線控制系統(tǒng)的設(shè)計與開發(fā)[M].北京:國防工業(yè)出版社,2007.
[3] 馬忠梅,籍順心,張凱,等.單片機的C語言應(yīng)用程序設(shè)計[M].北京:北京航空航天大學(xué)出版社,2005.
[4] 廖常初.PLC編程及應(yīng)用[M].北京:機械工業(yè)出版社,2008.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
亚洲国产精品激情在线观看| 午夜亚洲性色视频| 国产精品久久午夜| 欧美激情第二页| 免费不卡亚洲欧美| 六月天综合网| 久久先锋影音av| 久久亚洲私人国产精品va| 欧美一区二区高清在线观看| 亚洲在线观看视频网站| 亚洲一区二区三区四区视频 | 欧美一区二区三区视频| 小黄鸭精品密入口导航| 亚洲欧美日韩综合国产aⅴ| 亚洲你懂的在线视频| 亚洲欧美文学| 欧美在线播放一区| 久久国产精品久久久久久| 亚洲第一黄网| 91久久夜色精品国产九色| 亚洲人体偷拍| 夜夜夜精品看看| 亚洲欧美激情精品一区二区| 欧美一区二区高清| 久久综合给合| 欧美激情第4页| 欧美日韩免费观看一区三区| 国产精品第十页| 国产啪精品视频| 激情久久五月| 亚洲欧洲一区| 中文久久精品| 性欧美video另类hd性玩具| 亚洲第一伊人| aa级大片欧美三级| 性xx色xx综合久久久xx| 久久久久久久激情视频| 欧美国产另类| 国产精品v欧美精品v日韩| 国产午夜精品在线| 亚洲片在线资源| 亚洲性xxxx| 久久国产精品色婷婷| 日韩一级黄色片| 午夜精品久久久久久久久久久| 欧美自拍偷拍午夜视频| 欧美不卡福利| 国产精品国产| 激情小说另类小说亚洲欧美| 亚洲美女电影在线| 午夜一区二区三区在线观看| 亚洲区在线播放| 中文精品99久久国产香蕉| 欧美在线免费观看亚洲| 欧美wwwwww| 国产精品一级二级三级| 伊人一区二区三区久久精品| 99视频精品全国免费| 香蕉精品999视频一区二区| 亚洲黄色成人久久久| 亚洲一区在线直播| 蜜桃精品一区二区三区| 国产精品免费电影| 亚洲福利视频在线| 午夜精品久久久久久久男人的天堂| 亚洲国产日韩欧美一区二区三区| 亚洲一区二区成人在线观看| 美女国产一区| 国产伦精品一区二区三区高清版 | 亚洲国产精品小视频| 亚洲午夜三级在线| 噜噜噜久久亚洲精品国产品小说| 欧美日韩在线一区| 在线观看av一区| 亚洲综合国产精品| 一本色道久久综合亚洲精品小说 | 免费亚洲一区| 国产精品外国| 亚洲免费高清视频| 亚洲国产精品美女| 欧美在线观看www| 欧美日韩美女| 亚洲黄色免费| 久久精品国产亚洲高清剧情介绍| 亚洲欧美国产制服动漫| 欧美精品午夜| 在线观看亚洲a| 香蕉成人啪国产精品视频综合网| 一区二区三区你懂的| 免费视频一区| 韩日欧美一区二区| 亚洲欧美精品一区| 亚洲在线一区| 欧美日韩国产首页| 亚洲国产91| 亚洲国产美国国产综合一区二区| 欧美亚洲视频在线看网址| 欧美日韩亚洲激情| 亚洲黄色在线看| 亚洲国产另类久久久精品极度| 久久av在线看| 国产欧美一区二区三区视频| 中文一区字幕| 亚洲一级在线观看| 欧美日韩无遮挡| 亚洲人成网站777色婷婷| 亚洲国产一区二区a毛片| 久久久久久噜噜噜久久久精品| 国产精品一区久久久| 在线视频你懂得一区| 日韩一区二区精品| 欧美极品在线观看| 亚洲人成网站影音先锋播放| 亚洲欧洲精品一区二区精品久久久| 久久免费精品视频| 国产一区二区三区的电影| 欧美亚洲网站| 久久精品免费电影| 国产亚洲高清视频| 欧美在线一二三| 久久这里只精品最新地址| 精品成人国产| 亚洲欧洲日本在线| 欧美黄色精品| 亚洲精品国精品久久99热| 日韩一级欧洲| 欧美视频免费在线观看| 这里只有精品在线播放| 亚洲欧美偷拍卡通变态| 国产精品一区二区久久久| 亚洲一区区二区| 欧美在线亚洲在线| 黑人操亚洲美女惩罚| 亚洲国产日韩一级| 欧美国产综合| 日韩视频免费看| 亚洲影视综合| 国产区二精品视| 久久精品成人欧美大片古装| 女主播福利一区| 日韩视频精品在线| 午夜一区二区三视频在线观看| 国产欧美在线看| 亚洲高清视频一区二区| 欧美国产成人精品| 99国产精品| 欧美一区二区免费观在线| 国内精品国语自产拍在线观看| 亚洲黄色av一区| 欧美色视频一区| 午夜国产精品影院在线观看| 久久久久久夜| 亚洲欧洲视频| 欧美一区二区三区电影在线观看| 国产亚洲午夜| 亚洲精品一区二区三| 国产精品久久久久久超碰 | 亚洲承认在线| 欧美久久久久| 亚洲男女自偷自拍图片另类| 久久一区欧美| 99视频+国产日韩欧美| 久久精品久久综合| 亚洲人成小说网站色在线| 小黄鸭精品aⅴ导航网站入口| 狠狠久久亚洲欧美专区| 99这里只有久久精品视频| 国产精品亚洲第一区在线暖暖韩国| 久久av最新网址| 欧美日韩国产123| 久久精品盗摄| 国产精品swag| 亚洲黄色在线| 国产精品入口尤物| 亚洲国产一成人久久精品| 国产精品福利av| 亚洲国产精品久久久久婷婷884 | 欧美日韩一本到| 欧美一区免费视频| 欧美日韩国产不卡| 欧美影院视频| 国产精品高清一区二区三区| 亚洲成色最大综合在线| 国产精品www| 亚洲精品在线观看免费| 国产欧美精品一区 | 中国亚洲黄色| 影音国产精品| 欧美一区在线直播| 亚洲精品视频在线观看网站| 久久精品久久综合| 亚洲天堂av在线免费观看| 裸体丰满少妇做受久久99精品| 一区二区三区欧美成人| 欧美承认网站| 欧美一区二区三区播放老司机| 欧美日韩hd| 亚洲经典在线| 国产有码在线一区二区视频| 亚洲一区二区成人在线观看|