PPI通信協議是一種主從式的通信協議,上位機即PC機為主,PLC為從。通信開始由計算機發起,PLC予以響應。
1)、計算機按通信任務,用一定格式,向PLC發送通信命令。
2)、PLC收到命令后,進行命令校驗,如無誤,則向計算機發送數據E5H或F9H,作出初步應答。
3)、計算機收到初步應答后,再向PLC發送SD DA SA FCFCS ED確認命令。
這里,SD為起始字符,為10H;DA為目的,即PLC地址02H;SA為數據源,即計算機地址00H;FC為功能碼,取5CH;FCS為SA、DA、FC和的256余數,為5EH;末字節ED為結束符,也是16H。如按以上設定的計算機及PLC地址,則發送10、02、00、5C、5E、及16,6個字節的十六進制數據,以確認所發命令。
4)、PLC收到此確認后,執行計算機所發送的通信命令,并向計算機返回相應數據。它的通信過程要往復兩次才完成一次的通信,比較麻煩,但較嚴謹,不易出錯。
SD LELER SD DASA FC DASPSSAP DU FCS ED
SD:(Start Delimiter)開始定界符,占1字節,為68H
LE:(Length)報文數據長度,占1字節,標明報文以字節計,從DA到DU的長度;
LER:(Repeated Length)重復數據長度,同LE
SD: (Start Delimiter)開始定界符(68H)
DA:(DestinationAddress)目標地址,占1字節,指PLC在PPI上地址,一臺PLC時,一般為02,多臺PLC時,則各有各的地址;
SA:(Source Address)源地址,占1字節,指計算機在PPI上地址,一般為00;
FC:(Function Code)功能碼,占1字節,6CH一般為讀數據,7CH一般為寫數據
DSAP:(Destination Service Access Point)目的服務存取點,占多個字節
SSAP:(Source Service Access Point)源服務存取點,占多個字節
DU:(Data Unit)數據單元,占多個字節
FCS:(Frame CheckSequence)占1字節,從DA到DU之間的校驗和的256余數;
ED:(End Delimiter)結束分界符,占1字節,為16H
命令類型
1)讀命令讀命令長度都是33個字節。字節0~21,都是相同的,為:“68 1B 1B 68 02 00 6C 3201 00 00 00 00 00 0E 00 00 04 01 12 0A 10”。而從字節22開始,將根據讀取數據的軟器件類型及地址的不同而不同。
字節22,表示讀取數據的單位。為01時,1bit;為02時,1字節;為04時,1字;為06時,雙字。
字節23,恒0。
字節24,表示數據個數。01,表示一次讀一個數據。如為讀字節,最多可讀208個字節,即可設為DEH。
字節25,恒0.
字節26,表示軟器件類型。為01時,V存儲器;為00時,其它。
字節27,也表示軟器件類型。為04時,S;為05時,SM;為06時,AI;為07時AQ;為1E時,C;為81時,I;為82時,Q;為83時,M;為84時,V;為1F時,T。
字節28、29及30,軟器件偏移量指針(存儲器地址乘8),如:VB100,存儲器地址為100,偏移量為800,轉換成十六進制就是320H,則字節28到30這三個字節就是00、03、及20.
字節31、32為FCS和ED。
返回數據與發送命令格式數據相同,但包含一條數據。具體是:
SD LELER SD DASA FC DASPSSAP DU FCS ED
這里的SD、LE、Ler、SD、SA及FC與命令含義相同。但SD為PLC地址,DA為計算機地址。此外:
字節16:數據塊占用的字節數,即從字節21到校驗和前的字節數。一條數據時:字,為06;雙字,為08;其它為05.
字節22:數據類型,讀字節為04.
字節23、24:讀字節時,為數據個數,單位以位計,1個字節為08;2個字節為10(16進制計),余類推。
字節25及其后至校驗和之前,為返回所讀值。
如讀VB100開始3個字節,其命令碼為:
68 1B 1B 68 02 00 6C 32 01 00 0000 00 00 0E 00 00 04 01 12 0A 1002000300 01 84 00 03 20 8D 16(紅色02為字節為單位,03為讀3個字節)
68 1B 1B 68 02 00 6C 3201 00 00 00 00 00 0E 00 00 04 01 12 0A 10 04 00 01 00 01 84 00 0D 08 84 16
返回碼:
68 18 18 68 00 02 08 32 03 00 0000 00 00 02 00 07 00 00 04 01 FF 04 00 1899 34 568B 16
(這里紅色99、34、56分別為VB100、VB101、VB102的值)
2)寫命令寫一個字節,命令長為38個字節,字節0~字節21為:
6820 2068 02 00 7C 32 01 00 00 00 00 00 0E 00 00 04 01 12 0A 10
寫一個字,命令長為39個字節,字節0~字節21為:
6821 2168 02 00 7C 32 01 00 00 00 00 00 0E 00 00 04 01 12 0A 10
寫一個雙字數據,命令長為41個字節,字節0~21為:
68 23 23 68 02 00 7C 32 01 00 0000 00 00 0E 00 00 04 01 12 0A 10
字節22~字節30,為寫入數據的長、存儲器類型、存儲器類型、存儲器偏移量。這些與讀數據的命令相同。字節32如果是寫入的是位數據,這一字節為03,,其它則為04.
字節34寫入數據的位數:01:1位,08:1字節,10H:1字,20H:1雙字。
字節35~字節40為校驗碼、結束符。
如果寫入的是位、字節數據,字節35就是寫入的值,字節36為00,字節37為校驗碼,字節38為16H、結束碼。如果寫入的是字數據(雙字節),字節35、字節36就是寫入的值,字節37為校驗碼,字節38為16H、結束碼.如果寫入的是雙字數據(4字節),字節35~字節38就是寫入的值,字節39為校驗碼,字節40為16H、結束碼。
需要注意顏色字體的功能
如寫入QB0=FF,其命令為:
68 20 20 68 02 00 7C 32 01 00 0000 00 00 0E 000505 01 12 0A 100200 01 00 008200 00 0000 04 0008FF86 16
如協議QD0=FF,其命令是:
68 23 23 68 02 00 7C 32 01 00 0000 00 00 0E 000805 01 12 0A 100600 01 00 00820000 00 00 04 0020FF FF FF FF A2 16
如寫入VB100=12,其命令如下:
68 20 20 68 02 00 7C 32 01 00 0000 00 00 0E 000505 01 12 0A 100200 01 00 018400 03 2000 04 000812BF16
PLC返回數據E5后,確認寫入命令,發送以下數據:
10 02 00 5C 5E 16
PLC返回數據E5后,寫入成功。
如寫入VW0=4660,其命令如下:
68 21 21 68 02 00 7C 32 01 00 0000 00 00 0E 00 06 05 01 12 0A 10 04 00 01 00 01 84 00 00 00 00 04 00 10 12 34DB 16
如寫入VW100=1234H,其命令如下:
68 21 21 68 02 00 7C 32 01 00 0000 00 00 0E 000605 01 12 0A 100400 01 00 018400 032000 04 001012 34FE 16
寫入VD0=FFFFFFFFH
68 23 23 68 02 00 7C 32 01 0000 00 00 00 0E 00 08 05 01 12 0A 10 06 00 01 00 01 84 00 00 00 00 04 00 20 FFFF FF FF A5 16
PLC返回數據E5后,確認寫入命令,發送以下數據:
10 02 00 5C 5E 16
PLC返回數據E5后,寫入成功。
請注意以上紅體字的含義。
以上命令如執行成功,則返回
68 12 12 68 00 02 08 32 03 00 0000 00 00 02 00 01 00 00 05 01 FF 47 16
否則返回:
68 0F 0F 68 00 02 08 32 02 00 0000 00 00 00 00 00 85 00 C3 16
3)STOP命令 stop命令使得S7-200CPU從run狀態轉換到stop狀態(此時cpu模塊上的模式開關應處于run或term位置)。計算機發出如下命令:
68 1D 1D 68 02 00 6C 32 01 00 0000 00 00 10 00 00 29 00 00 00 00 00 09 50 5F 50 52 4F 47 52 41 4D AA 16
PLC返回:E5,同時PLC即轉為stop狀態。
但計算機再發確認報文(10 02 00 5C 5E 16)
PLC將返回:68 10 10 68 00 02 08 32 03 00 00 00 00 00 01 00 00 00 00 29 69 16
到此,才算完成這個通信過程。
4)RUN命令 run命令使得S7-200 cpu從stop狀態轉換到run狀態(此時cpu模塊上的模式開關應處于run或term位置)。PC機發出如下命令:
68 21 21 68 02 00 6C 32 01 00 0000 00 00 14 00 00 28 00 00 00 00 00 00 FD 00 00 09 50 5F 50 52 4F 47 52 41 4DAA 16
PLC返回:E5,同時PLC即轉為RUN狀態。
但計算機再發確認報文(10 02 00 5C 5E 16)
PLC將返回:68 10 10 68 00 02 08 32 03 00 00 00 00 00 01 00 00 00 00 29 69 16
至此,才算完成這個通信過程。
注:以上介紹的不是西門子發布的正式通信協議,還有其它內容。
建議結合些通信的例子來進行測試。
-
西門子
+關注
關注
93文章
3008瀏覽量
115640 -
S7-200
+關注
關注
13文章
407瀏覽量
50330
原文標題:西門子S7-200PPI通信協議
文章出處:【微信號:GKYXT1508,微信公眾號:工控云學堂】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論