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

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

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

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


 返回的有用數據為第25~第40字節的共16 B,第41字節為第4~第40字節的數據的校驗和,而且第11、12字節的數據必須與主站讀命令的第11、12字節保持一致。
這樣經過兩次收發數據,才能正確完成一次數據的讀操作。
1.4 NetW指令分析
 (1)首先主站PLC發出寫命令,數據格式為: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字節數據規則與NetR命令一致,第51字節數據為校驗和,第35~50字節的數據為真正的要寫入從站的有用數據。
 (2)從站PLC正確接收后,則作出響應,返回E5。
 (3)主站接收到此響應后,則發出確認寫命令10 02 01 5C 5F 16,第3字節數據規則與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字節數據與主站寫命令應保持一致,這樣收發兩次數據,才能完成一次數據的寫操作。
2 單片機串口通信協議設計
2.1 串口通信方式選擇

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

3 結果驗證

 


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

此內容為AET網站原創,未經授權禁止轉載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
欧美日韩三区| 亚洲第一精品在线| 欧美jizzhd精品欧美喷水 | 亚洲精品免费看| 久久国产直播| 久久精品国产一区二区三区免费看| 亚洲尤物影院| 亚洲男女毛片无遮挡| 亚洲社区在线观看| 中文亚洲欧美| 亚洲一区在线免费| 亚洲欧美日韩中文播放| 亚洲欧美日韩一区二区三区在线观看 | 伊人狠狠色j香婷婷综合| 黄色成人91| 亚洲第一二三四五区| 亚洲国产日韩精品| 亚洲精品欧美专区| 亚洲精品午夜| 亚洲婷婷在线| 亚洲欧美日韩国产一区| 欧美一区二区日韩| 亚洲电影视频在线| 亚洲七七久久综合桃花剧情介绍| 亚洲欧洲在线观看| 中文无字幕一区二区三区| 亚洲一区二区黄色| 欧美一区二区日韩| 久久香蕉国产线看观看网| 裸体素人女欧美日韩| 欧美高清视频一二三区| 欧美日韩黄色一区二区| 国产精品久久久久一区二区三区| 国产欧美日韩在线播放| 伊人久久亚洲美女图片| 亚洲国语精品自产拍在线观看| 亚洲人成77777在线观看网| 99这里只有久久精品视频| 亚洲免费视频网站| 久久精品国产99精品国产亚洲性色| 亚洲黄色成人| 在线一区二区三区做爰视频网站| 亚洲综合视频1区| 久久精品亚洲热| 欧美成人一区二区| 国产精品久久777777毛茸茸| 国产亚洲欧洲997久久综合| 在线播放日韩| 在线亚洲欧美视频| 久久国产日韩| 亚洲天堂成人在线观看| 欧美在线电影| 欧美激情中文不卡| 国产精品一二| 亚洲欧洲一区二区三区在线观看 | 亚洲在线国产日韩欧美| 亚洲国产精品一区二区第四页av | 免费成人av资源网| 国产精品成人国产乱一区| 韩国精品主播一区二区在线观看| 亚洲精品国精品久久99热| 亚洲综合精品一区二区| 亚洲人体1000| 欧美一区二区三区在线看| 欧美电影电视剧在线观看| 国产精品久久久久久久免费软件| 影音先锋亚洲电影| 亚洲小少妇裸体bbw| 亚洲国产精品久久久| 亚洲无限av看| 免费在线国产精品| 国产精品一区二区久久| 亚洲激情综合| 欧美专区在线观看| 亚洲一区二区影院| 欧美福利视频| 国产视频一区二区在线观看| 亚洲精品在线二区| 亚洲丰满在线| 欧美一级视频免费在线观看| 欧美日韩高清一区| 在线免费观看日本一区| 午夜在线一区| 亚洲午夜一区二区| 欧美第一黄色网| 狠狠狠色丁香婷婷综合激情| 亚洲自拍偷拍网址| 亚洲天堂av综合网| 欧美激情国产精品| 激情文学综合丁香| 欧美一区高清| 欧美一区二区高清| 欧美色道久久88综合亚洲精品| 亚洲第一福利视频| 久久精品亚洲| 久久久综合网站| 国产欧美在线播放| 亚洲一区二区精品在线| 亚洲视频中文字幕| 欧美日产一区二区三区在线观看| 亚洲电影有码| 亚洲国产婷婷香蕉久久久久久99| 久久精品国产99精品国产亚洲性色| 国产精品家庭影院| 99re热这里只有精品视频| 亚洲精品一二三| 蜜桃久久精品乱码一区二区| 国内一区二区三区在线视频| 午夜亚洲伦理| 香蕉视频成人在线观看| 欧美性大战久久久久久久蜜臀| 亚洲毛片网站| 亚洲作爱视频| 欧美日韩国产大片| 亚洲三级电影在线观看| 日韩视频亚洲视频| 欧美美女视频| 亚洲精选在线观看| 一区二区三区四区国产| 欧美日韩国产黄| 亚洲美女一区| 亚洲图片欧洲图片av| 国产精品大全| 亚洲欧美成人在线| 欧美在线视频全部完| 国产日韩精品视频一区二区三区| 亚洲一区二区在| 欧美一区二区免费| 国产一区二区三区在线观看精品 | 午夜在线精品| 久久久久久久尹人综合网亚洲| 国产亚洲亚洲| 亚洲国产高清自拍| 欧美激情日韩| 一区二区高清视频| 亚洲欧美在线免费观看| 国产精品一区久久久久| 欧美一区2区三区4区公司二百| 久久久777| 亚洲高清资源| 在线一区欧美| 国产欧美va欧美不卡在线| 欧美影院久久久| 免费美女久久99| 亚洲精品在线视频| 亚洲自拍偷拍色片视频| 国产婷婷色一区二区三区| 久久精品二区| 欧美猛交免费看| 亚洲一区二区三| 久久久久久黄| 亚洲韩国青草视频| 亚洲一区免费| 国产一区二区三区高清在线观看| 亚洲春色另类小说| 欧美日韩国产首页| 午夜在线a亚洲v天堂网2018| 六月婷婷久久| 这里只有精品丝袜| 久久久91精品国产| 亚洲精品国精品久久99热一| 亚洲欧美一区二区原创| 一区福利视频| 亚洲欧美激情一区二区| 精品成人乱色一区二区| 亚洲视频一区在线观看| 国产一区在线免费观看| 日韩亚洲欧美一区二区三区| 国产精品视频一区二区三区| 亚洲国产美女久久久久 | 国产精品一区久久久| 亚洲国产你懂的| 国产精品女主播在线观看| 亚洲国产岛国毛片在线| 国产精品草草| 最新日韩欧美| 国产精品一区一区| 亚洲精品裸体| 国产午夜亚洲精品不卡| 一区二区三区鲁丝不卡| 国产真实精品久久二三区| 一区二区三区欧美| 国语自产精品视频在线看| 一区二区三区你懂的| 黄色另类av| 午夜欧美不卡精品aaaaa| 亚洲福利小视频| 久久国产精品99精品国产| 日韩午夜免费| 男男成人高潮片免费网站| 亚洲一区二区免费在线| 欧美精品自拍| 亚洲高清免费视频| 国产精品你懂得| 一区二区三区高清不卡| 伊人男人综合视频网| 欧美亚洲自偷自偷| 一区二区免费在线视频| 模特精品裸拍一区| 欧美一二三区在线观看|