麻豆一区区三三四区产品麻豆-麻豆影视国产TV在线观看-麻豆影视国产在线观看-麻豆影视在线-麻豆影视在线观看av-麻豆影院

plcjiemi
微信掃一掃,加我為好友
級別: 工控俠客
精華主題: 0
發(fā)帖數(shù)量: 180 個
工控威望: 2039 點
下載積分: 16 分
在線時間: 361(小時)
注冊時間: 2021-07-29
最后登錄: 2024-11-26
查看plcjiemi的 主題 / 回貼
樓主  發(fā)表于: 2021-08-20 16:49
Siemens PPI協(xié)議分析
大家好:由于前段時間的瘋狂的研究西門子PPI協(xié)議解密之故,所以無心插柳的研究出了較實用的西門子S7-200 PPI協(xié)議,今天奉獻大家。我們經(jīng)常要用于上位機、現(xiàn)場設(shè)備與S7-200CPU之間的通訊,但是西門子公司沒有公布PPI協(xié)議的格式,用戶如果想使用PPI協(xié)議監(jiān)控,必須購買其監(jiān)控產(chǎn)品或第三方廠家的組態(tài)軟件。大家要知道國內(nèi)的組態(tài)王、紫金橋、力控等等組態(tài)公司是花了多少錢才得到的PPI的深層協(xié)議嗎?其實西門子工控產(chǎn)品的超高價壟斷掠奪行為已經(jīng)引起了我們國家及業(yè)內(nèi)人士的抵制和抗議,他們的什么軟件都需要授權(quán)且對于系統(tǒng)的霸道性是有目共睹的。
這樣給用戶自主開發(fā)就帶來了一定的困難,特別是想用VB、VC等語言自行開發(fā),根本沒辦法接入PLC,要么你大把掏錢給他們。我是通過一個串口監(jiān)視軟件的數(shù)據(jù)監(jiān)視與分析,找出了PPI協(xié)議的關(guān)鍵報文格式所在。
其實西門子S7-200 PLC之間或者PLC與PC之間通信有很多種方式:自由口,PPI方式,MPI方式,Profibus方式。使用自由口方式進行編程時,在上位機和PLC中都要編寫數(shù)據(jù)通信程序。使用PPI協(xié)議進行通信時,PLC可以不用編程,而且可讀寫所有數(shù)據(jù)區(qū),快捷方便。這也是我們之所以要研究、找出PPI協(xié)議的源動力!
下面我們就要說說分析的方法了!
西門子的STEP 7 MicroWIN 是用于S7-200系列PLC的開發(fā)工具,它使用PC機上的COM口通過一條PC/PPI編程電纜連到PLC的編程口上。這說明,PC實際上是可以通過串口同S7-200 CPU通訊。只是我們不知道通訊協(xié)議而已。通過截獲PC機串口上的收發(fā)數(shù)據(jù),對照Step 7軟件發(fā)出的指令,我們就有可能分析出有關(guān)指令的報文和通訊方式;然后,直接通過串口向PLC發(fā)送報文,以驗證這些指令報文是否正確。本著這一思想,我們采用以下步驟獲得這些報文。
你首先下載上面那個英文的串口監(jiān)控軟件,英文不好的網(wǎng)友可以使用我們?yōu)槟銤h化的漢化包,替換原文件即可,你必須使用這個軟件,因為我先前使用過很多的監(jiān)控軟件,在收發(fā)數(shù)據(jù)很多的情況下都有死機現(xiàn)象,造成數(shù)據(jù)丟失,容易給我們錯誤分析。接下來你先打開這個軟件,新建、選擇端口COM1,然后再將PC/PPI編程電纜接在COM1上,這樣,Step7 Micro/Win發(fā)給PLC的報文就可以在監(jiān)視軟件上完全裸露的展現(xiàn)在你的面前了。我們按S7-200系統(tǒng)手冊設(shè)置好串口參數(shù):9600,8,E偶校驗,1位停止位。然后設(shè)置好Step7軟件,使之能與S7-200 CPU正常通訊。從Step7軟件中發(fā)出一個明確指令,監(jiān)視軟件就能顯示這條報文了(用16進制顯示,ASCII碼的只能看到幾個版本號之類的,其他都沒有意義)。
我們的破解策略就是通過軟件監(jiān)視的方法,分析PLC內(nèi)部固有的PPI通訊協(xié)議,然后上位機采用VB編程,遵循PPI通訊協(xié)議,讀寫PLC數(shù)據(jù),實現(xiàn)人機操作任務(wù)。這種通訊方法,與一般的自由通訊協(xié)議相比,省略了PLC的通訊程序編寫,只需編寫上位機的通訊程序資源。S7-200的編程口物理層為RS-485結(jié)構(gòu),SIEMENS提供MicroWin軟件,采用的是PPI(Point to Point)協(xié)議,關(guān)于232串口轉(zhuǎn)485你可以采用我們網(wǎng)站開發(fā)研制的自制PPI電纜,效果倍好哦!請點擊下載!還是自己動手,豐衣足食啊!
不能光說不練啊!下面我們就說說西門子PLC到底是怎么通訊的。
PC與PLC采用主從方式通訊,PC按如下文的格式發(fā)讀寫指令,PLC作出接收正確的響應(yīng)(返回應(yīng)答數(shù)據(jù)E5H或F9H見下文分析),上位機接到此響應(yīng)則發(fā)出確認命令(10 02 00 5C 5E 16),PLC再返回給上位機相應(yīng)數(shù)據(jù)。一般上位機要連接PLC就要先發(fā)送如下尋呼數(shù)據(jù) 10 02 00 49 4B 16 同志們吶!我們可都是有血、有肉、有思想、有靈感的高級動物啊,面對這么多枯燥、無味、復(fù)雜、混亂的機器數(shù)字你怎么記呢?反正我是記不住啊!(^_^開始洗腦)這時你可以閉上眼睛,安靜、靜、再靜。。。。。。想一想戰(zhàn)爭時期的戰(zhàn)地對講機通話模式,那么這個初始的尋呼指令(10 02 00 49 4B 16)就可以理解為:“洞兩洞兩(02),我是洞洞(00),聽到請回答,聽到請回答!over!”。
現(xiàn)在我們來簡單的分析一下這個指令的具體含義: 10起始符,咳嗽一聲要開始講話的意思。02是上位機要聯(lián)系的下位機PLC的地址站號,就是要找的人。 00就是上位機電腦本身自己的站號。49尋呼指令,呼叫尋找的意思。16終止符,over、完畢、結(jié)束的意思。 其中4B為校驗碼,防止數(shù)據(jù)傳輸出錯而設(shè)計的,它是這樣得來的:02+00+49和的最后兩位就是校驗碼,這就是所說的偶校驗或稱和校驗也稱余校驗,因為取的是除以100后的余數(shù)。計算器在16進制計算時公式(02+00+49)mod 100得出的數(shù)就是校驗碼,你計算一下是不是等于4B啊!其他的所有PPI協(xié)議校驗都是如此。假如02站號的PLC收到尋呼信號那么會回答: 10 00 02 00 02 16 意思是:“報告洞洞(00) ,洞兩(02)收到,請指示,over!” 這樣的解釋是不是很好理解啊!你有更好的解釋嗎?既然找到了要找的人,接下來PC上位機電腦,就是司令啦!就可以發(fā)號施令了。這時上位機發(fā)出一條指令,這個指令下面詳細解說,發(fā)號施令后如果PLC正確接收就會返回 E5 字符,意思是:“明白!”。其實啊,說到這里PLC只說他明白,他已經(jīng)明白了上位機PC的指示,但并沒有執(zhí)行命令,那么要怎么他才執(zhí)行命令呢?就是上位機PC發(fā)出確認命令后才執(zhí)行。這時上位機會發(fā)出確認指令(10 02 00 5C 5E 16),這里的5C是執(zhí)行指令,意思是:“請洞兩立即執(zhí)行,over!”。然后PLC就干他該干的工作了!原來PLC也不容易啊,怪不得叫下位機呢!就是下人的意思!
說了這么多亂不亂吶?目的就是要理清上下級關(guān)系、主從關(guān)系,指令的順序,用一個好的記憶方法記住枯燥無味的機器碼。
下面我們列表分析讀取PLC密碼的指令:68 1B 1B 68 02 00 6C 32 01 00 00 00 00 00 0E 00 00 04 01 12 0A 10 02 00 08 00 00 03 00 05 E0 D2 16
讀命令分析:一次讀一條數(shù)據(jù)
1.開始定界符(68H)
2.報文數(shù)據(jù)長度
3.重復(fù)數(shù)據(jù)長度
4.開始定界符(68H)
5.遠程目標(biāo)地址,指該地址的值,就是PLC的地址
6.本地地址,指該地址的指針,就是上位機自己的地址
7.功能碼,5CH為交替周期觸發(fā),6CH為首次信息周期觸發(fā),7CH為交替周期觸發(fā)。
8-17.目的服務(wù)存取點
18-22.源服務(wù)存取點 18位分析:01:位排列 02:字節(jié)排列 04:字排列 06:雙字排列
23-31.數(shù)據(jù)單元
32.校驗碼
33.結(jié)束分界符(16H)
報文數(shù)據(jù)長度和重復(fù)數(shù)據(jù)長度為自DA至DU的數(shù)據(jù)長度,校驗碼為DA至DU數(shù)據(jù)的和校驗,只取其中的末字節(jié)值關(guān)于這個校驗碼的計算方法同上面說明。
在讀寫PLC的變量數(shù)據(jù)中,讀數(shù)據(jù)的功能碼為 6CH,寫數(shù)據(jù)的功能碼為 7CH。
對于一次讀取一個數(shù)據(jù),讀命令都是33個字節(jié)。前面的1—22字節(jié)是相同的,為
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
起始符
長度
起始符
遠程
本地
功能碼
通訊編號
參數(shù)長度
04讀05寫
排列格式
68
1B
1B
68
02
00
6C
32
01
00
00
00
88
00
0E
00
00
04
01
12
0A
10
讀取PLC密碼的指令:68 1B 1B 68 02 00 6C 32 01 00 00 00 00 00 0E 00 00 04 01 12 0A 10 02 00 08 00 00 03 00 05 E0 D2 16
23
24
25
26
27
28
29
30
31
32
33
讀取長度
數(shù)據(jù)個數(shù)
存儲器類型
偏移量
校驗碼
終止符
02
00
08
00
00
03
00
05
E0
D2
16
因為是PC上發(fā)的讀PLC數(shù)據(jù)的命令,SA=00,DA=02,如果有多個站,DA要改成相應(yīng)的站號。讀命令中從DA到DU的長度為1B即27個字節(jié)。從23字節(jié)開始根據(jù)讀取數(shù)據(jù)的類型、位置不同而不同。上表是讀不同存儲器命令的Byte23—33。
字節(jié)
23
24
25
26
27
28
29
30
31
32
33
功能
讀取長度
數(shù)據(jù)個數(shù)
存儲器類型
偏移量
校驗碼
終止符
讀Q0.1
01
00
01
00
00
82
00
00
00
64
16
讀M0.0
01
00
01
00
00
83
00
00
00
65
16
讀M0.1
01
00
01
00
00
83
00
00
01
66
16
讀SMB34
02
00
01
00
00
05
00
00
01
F9
16
讀VB100
02
00
01
00
01
84
00
03
20
8B
16
讀VW100
04
00
01
00
01
84
00
03
20
8D
16
讀VD100
06
00
01
00
01
84
00
03
20
8F
16
讀I0.5
01
00
01
00
00
81
00
00
05
68
16
讀I0.7
01
00
01
00
00
81
00
00
07
6A
16
上表讀命令的Byte23-33從表中我們可以得出以下結(jié)果:
Byte 23 讀取數(shù)據(jù)的長度
01:1 Bit 02:1 Byte
04:1 Word 06:Double Word
Byte 25數(shù)據(jù)個數(shù),這里是01 ,一次讀多個數(shù)據(jù)時見下面的說明。
Byte 27 存儲器類型,01:V存儲器 00:其它
Byte 28 存儲器類型
04:S 05:SM 06:AI 07:AQ 1E: C
81:I 82:Q 83:M 84:V 1F: T
Byte 29,30,31存儲器偏移量指針(存儲器地址*8),如:VB100,存儲器地址為100,偏移量指針為800,轉(zhuǎn)換成16進制就是320H,則Byte 29—31這三個字節(jié)就是:00 03 20。
Byte 32 校驗和,前面已說到這是從(DA+SA+DSAP+SSAP+DU) Mod 256 。
一次讀多條數(shù)據(jù)
對于一次讀多個數(shù)據(jù)的情況,前21Byte與上面相似只是長度LD,LDr及Byte 15不同:
Byte 15 數(shù)據(jù)塊占位字節(jié),它指明數(shù)據(jù)塊占用的字節(jié)數(shù)。與數(shù)據(jù)塊數(shù)量有關(guān),長度=4+數(shù)據(jù)塊數(shù)*10,如:一條數(shù)據(jù)時為4+10=0E(H);同時讀M,V,Q三個不同的數(shù)據(jù)塊時為4+3*10=22(H)。
Byte 23 總是02 即以Byte為單位。
Byte 25 以字節(jié)為單位,連續(xù)讀取的字節(jié)數(shù)。如讀2個VD則Byte25=8
Byte 19---30 按上述一次讀一個數(shù)據(jù)的格式依次列出,
Byte 31---42 另一類型的數(shù)據(jù),也是按上述格式給出。
以此類推,一次最多讀取222個字節(jié)的數(shù)據(jù)。

寫命令分析:
一次寫一個Double Word類型的數(shù)據(jù),寫命令是40個字節(jié),其余為38個字節(jié)。寫一個Double Word類型的數(shù)據(jù),前面的1—22字節(jié)為 :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
15
17
18
19
20
21
22
開始符
長度
開始符
遠程
本地
功能碼
68
21
21
68
02
00
7C
32
01
00
00
00
00
00
0E
00
00
04
01
12
0A
10
68 23 23 68 02 00 6C 32 01 00 00 00 00 00 0E 00 00 04 01 12 0A 10
寫一個其它類型的數(shù)據(jù),前面的0—21字節(jié)為 :(與上面比較,只是長度字節(jié)發(fā)生變化)
68 21 21 68 02 00 6C 32 01 00 00 00 00 00 0E 00 00 04 01 12 0A 10
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
數(shù)據(jù)長度
數(shù)據(jù)個數(shù)
存儲類型
偏移量
數(shù)據(jù)形式
數(shù)據(jù)位數(shù)
寫入值
校驗碼
終止符
01
00
01
00
00
82
00
00
00
00
03
00
01
01
79
16


本帖最近評分記錄:
  • 下載積分:+1(wflmg)
  • 微信WeChat:plcjiemi  網(wǎng)址URL:plcjiemi.com  Email:plcjiemi@qq.com
    qplcer
    級別: 探索解密
    精華主題: 0
    發(fā)帖數(shù)量: 15 個
    工控威望: 110 點
    下載積分: 1204 分
    在線時間: 1(小時)
    注冊時間: 2017-04-20
    最后登錄: 2024-10-25
    查看qplcer的 主題 / 回貼
    1樓  發(fā)表于: 2022-02-07 11:09
    樓主厲害,modbus報文研究透了,其實三菱老款FX2N系列PLC也需要專門研究報文去寫程序

    主站蜘蛛池模板: 99久久这里只精品国产免费| 亚洲午夜精品A片久久软件| 日产精品卡二卡三卡四卡视| 成人国产精品日本在线观看| 亚洲精品成人专区在线观看| 性啪啪chinese东北女人| 国产高潮国产高潮久久久91| 国内精品乱码卡一卡2卡三卡新区| 久久男人无码av资源网站| 亚洲天堂一区二区三区| 丝袜久久精品视频| 成 人 网 站免费观看| www.seyu| 国产毛片久久国产 | 人人干人人看| 久久国产精品亚洲欧美日韩| 久久免费精品| 人妻无码中文字幕一区二区三区| 91丝袜在线| 亚洲第一男人天堂| 丁香花在线观看免费观看图片| 久久精品国产日韩不卡| 国产三级视频在线观看| 欧美色图一区二区三区| 久久久久99精品成人网站| 99热资源| 欧美成人精品欧美一级乱黄| 无码播放一区二区三区| 三级精品在线观看自拍| aⅴ中文无码亚洲| 亚洲国产情侣一区二区三区| 粉嫩AV久久一区二区三区王玥| 天天精品夜夜精品视频| 国产卡一卡2卡3精品推荐| 国产女女精品视频久热视频| 加勒比东京热国产精品| 亚洲免费视频日本一区二区| 秋霞网在线伦理免费| 2024精品国产自在现线官网| 亚洲高清毛片一区二区| 成人区精品一区二区不卡av免费|