西门子PPI协议分析左转右转

用户自主开发特别是想用VB、VC等语言自行开发,根本没办法接入PLC,要么你大把掏钱给他们。洋为中用,最近在国外网站得到一个串口监视软件,带协议分析的相当不错,通过此软件的数据监视、分析方法,找出了PPI协议的关键报文格式所在。

其实西门子S7-200PLC之间或者PLC与PC之间通信有很多种方式:自由口,PPI方式,MPI方式,Profibus方式。使用自由口方式进行编程时,在上位机和PLC中都要编写数据通信程序。使用PPI协议进行通信时,PLC可以不用编程,而且可读写所有数据区,快捷方便。这也是我们之所以要研究、找出PPI协议的源动力!

下面我们就要说说分析的方法了!

西门子的STEP7MicroWIN是用于S7-200系列PLC的开发工具,它使用PC机上的COM口通过一条PC/PPI编程电缆连到PLC的编程口上。这说明,PC实际上是可以通过串口同S7-200CPU通讯。只是我们不知道通讯协议而已。通过截获PC机串口上的收发数据,对照Step7软件发出的指令,我们就有可能分析出有关指令的报文和通讯方式;然后,直接通过串口向PLC发送报文,以验证这些指令报文是否正确。本着这一思想,我们采用以下步骤获得这些报文。

首先你用串口监控软件,新建、选择端口COM1,然后再将PC/PPI编程电缆接在COM1上,这样,Step7Micro/Win发给PLC的报文就可以在监视软件上完全裸露的展现在你的面前了。我们按S7-200系统手册设置好串口参数:9600,8,E偶校验,1位停止位。然后设置好Step7软件,使之能与S7-200CPU正常通讯。从Step7软件中发出一个明确指令,监视软件就能显示这条报文了(用16进制显示,ASCII码的只能看到几个版本号之类的,其他都没有意义)。

我们的破解策略就是通过软件监视的方法,分析PLC内部固有的PPI通讯协议,然后上位机采用VB编程,遵循PPI通讯协议,读写PLC数据,实现人机操作任务。这种通讯方法,与一般的自由通讯协议相比,省略了PLC的通讯程序编写,只需编写上位机的通讯程序资源。S7-200的编程口物理层为RS-485结构,SIEMENS提供MicroWin软件,采用的是PPI(PointtoPoint)协议。

下面我们就说说西门子PLC到底是怎么通讯的。

说了这么多乱不乱呐!目的就是要理清上下级关系、主从关系,指令的顺序,用一个好的记忆方法记住枯燥无味的机器码。

读命令分析:一次读一条数据SDLELERSDDASAFCDASPSSAPDUFCSEDSD:(StartDelimiter)开始定界符(68H)LE:(Length)报文数据长度LER:(RepeatedLength)重复数据长度SD:(StartDelimiter)开始定界符(68H)SA:(SourceAddress)目标地址,指该地址的值,就是PLC的地址DA:(DestinationAddress)本地地址,指该地址的指针,就是上位机自己的地址FC:(FunctionCode)功能码,5CH为交替周期触发,6CH为首次信息周期触发,7CH为交替周期触发。DSAP:(DestinationServiceAccessPoint)目的服务存取点SSAP:(SourceServiceAccessPoint)源服务存取点DU:(DataUnit)数据单元FCS:(FrameCheckSequence)校验码ED:(EndDelimiter)结束分界符(16H)报文数据长度和重复数据长度为自DA至DU的数据长度,校验码为DA至DU数据的和校验,只取其中的末字节值关于这个校验码的计算方法同上面说明。在读写PLC的变量数据中,读数据的功能码为6CH,写数据的功能码为7CH。对于一次读取一个数据,读命令都是33个字节。前面的0—21字节是相同的,为

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

SD

LE

LER

DA

SA

FC

开始符

长度

站号

源地址

功能码

协议识别

远程控制

冗余识别

协议数据

单元参考

参数长度

数据长度

04读05写

变量地址数

68

1B

02

00

6C

32

01

0E

04

0A

下面我们列表分析读取PLC密码的指令:681B1B6802006C320100000000000E00000401120A100200080000030005E0D216

22

23

24

25

26

27

28

29

30

31

DU

FCS

DE

读取长度

数据个数

存储器类型

偏移量

校验码

结束符

08

03

05

E0

D2

因为是PC上发的读PLC数据的命令,SA=00,DA=02,如果有多个站,DA要改成相应的站号。读命令中从DA到DU的长度为1B即27个字节。从22字节开始根据读取数据的类型、位置不同而不同。上表是读不同存储器命令的Byte22—32。

字节

功能

读Q0.1

82

64

读M0.0

83

65

读M0.1

66

读SMB34

F9

读VB100

84

8B

读VW100

8D

读VD100

06

8F

读I0.5

81

读I0.7

07

6A

上表读命令的Byte22-32从表中我们可以得出以下结果:Byte22读取数据的长度01:1Bit02:1Byte04:1Word06:DoubleWordByte24数据个数,这里是01,一次读多个数据时见下面的说明。Byte26存储器类型,01:V存储器00:其它Byte27存储器类型04:S05:SM06:AI07:AQ1E:C81:I82:Q83:M84:V1F:TByte28,29,30存储器偏移量指针(存储器地址*8),如:VB100,存储器地址为100,偏移量指针为800,转换成16进制就是320H,则Byte28—29这三个字节就是:000320。Byte31校验和,前面已说到这是从(DA+SA+DSAP+SSAP+DU)Mod256。一次读多条数据对于一次读多个数据的情况,前21Byte与上面相似只是长度LD,LDr及Byte14不同:Byte14数据块占位字节,它指明数据块占用的字节数。与数据块数量有关,长度=4+数据块数*10,如:一条数据时为4+10=0E(H);同时读M,V,Q三个不同的数据块时为4+3*10=22(H)。Byte22总是02即以Byte为单位。Byte24以字节为单位,连续读取的字节数。如读2个VD则Byte24=8Byte19---30按上述一次读一个数据的格式依次列出,Byte31---42另一类型的数据,也是按上述格式给出。以此类推,一次最多读取222个字节的数据。

写命令分析:一次写一个DoubleWord类型的数据,写命令是40个字节,其余为38个字节。写一个DoubleWord类型的数据,前面的0—21字节为:

7C

6823236802006C320100000000000E00000401120A10写一个其它类型的数据,前面的0—21字节为:(与上面比较,只是长度字节发生变化)6821216802006C320100000000000E00000401120A10

33

34

35

36

37

存储类型

数据形式

数据位数

写入值

终止符

79

从22字节开始根据写入数据的值和位置不同而变化。上表是几个写命令的Byte22—40。字节22232425262728293031323334353637383940写入位置及值长度个数类型偏移量位数值、校验码、结束符M0.0=10100010000830000000003000101007116M0.0=00100010000830000000003000100007016M0.1=10100010000830000010003000101007216vb100=10020001000184000320000400081000AE16vb100=FF02000100018400032000040008FF009D16VW100=FFFF04000100018400032000040010FFFFA616VD100=FFFFFFFF06000100018400032000040020FFFFFFFFB816

写命令的Byte22—最后,经分析我们可以得出以下结果:Byte22--Byte30写入数据的长度、存储器类型、存储器偏移量与读命令相同。T,C等不能用写命令写入。Byte32如果写入的是位数据这一字节为03,其它则为04Byte34写入数据的位数01:1Bit08:1Byte10H:1Word20H:1DoubleWordByte35--40值、校验码、结束符如果写入的是位、字节数据,Byte35就是写入的值,Byte36=00,Byte37=检验码,Byte38=16H,结束。如果写个的是字数据(双字节),Byte35,Byte36就是写入的值,Byte37=检验码,Byte38=16H,结束。如果写个的是双字数据(四字节),Byte35—38就是写入的值,Byte39=检验码,Byte40=16H,结束。

写指令:先发1002005C5E16后发写指令

1、写一位M区(例子M0.0)

先发1002005C5E16收到E5后

发6820206802007C320100000000000E00050501120A1001000100008300000000030001018016

收到E5说明写入完成(只要报文长度,跟校验码对了,就会回复E5)

报文长度

目标

地址(PLC

源站地址(上位机)

报文长度为:目标地址到倒数第二位的校验位前面的字节长度(根据写入值不通报文长度不同)

功能码:7C表示写入;6C表示读取。

17位:05表示写入;04表示读取。

16位:16位的05表示写入的是位或者字节(即用一个字节存储)

06表示字;08表示双字(4个字节);0C表示8个字节

数据长度(22位):01位;02字节;04字;06双字。

数据个数:0100表示一个;0200表示连续的两个;0400连续的4个。

存储类型:26位:01V区;00其他。

27位:04S区;05SM区;06AI;07AQ;1EC;

81I;82Q;83M;84V;1FT

偏移量:000000000000000000000XXX(XXX表示位)

例如:10.3=1010.011即000053

数据形式:03表示位;04表示其他。

数据位数:即写入数据多少位。01一位;08八位;10十六位;20三十二位。

写入值:写入位,字节均用一个字节存储;写入双字得用四个字节。

校验码:即报文的偶校验(所有之和Mod100H)

终止符:16H

若M10.3=1写入,00005301D3(校验码D3是从开头第五个02到倒数第三个01的所有数字的偶校验(算术和))

因为01010.011(10.3)为000053

即:6820206802007C320100000000000E00050501120A100100010000830000530003000101D316

M10.3=0

即:6820206802007C320100000000000E00050501120A100100010000830000530003000100D216

2、写V区一个字节(例子VB100=10H)

发:6820206802007C320100000000000E00050501120A100200010001840003200004000810bd16

3、写V区一个字(双字)

发:6821216802007C320100000000000E00060501120A1004000100018400032000040010abcd3016

发:6823236802007C320100000000000E00080501120A1006000100018400032000040020abcdeffe3116

读指令:先发读指令,后发1002005C5E16

1、读取数据(例子读取VW10的值,值为FFFF)

先发读取命令:

681B1B6802006C320100000000000E00000401120A10020002000184000050B916(红色或者改为04000100校验也得改)

回复E5

然后发送1002005C5E16

收到数据:

681717680002083203000000000002000600000401FF040010FFFF5D16

读指令的前21位都是相同的。读取长度,数据个数,存储类型,偏移量都与写指令里面的定义一样。

收到数据中的

16位:05表示收到数据用一个字节存储,可能是PLC位,也可能是一个字节;06表示用两个字节存储,即一个字;08双字;0C表示8个字节。

21位:FF

24位:表示读取数值的位数。01表示一位;08八位;10十六位;20三十二位。

25位开始之后几位:要读取的数值。

若回复F9(会产生不同结果,但接受值不变)

收到数据:(关闭串口再打开的不同结果)

DAA1211B9032616640408000000002000600000401FF040010FFFF5D16

B4A1211B1030616640808000000002000600000401FF040010FFFF5D16

4、读取VB10

681B1B6802006C320100000000000E00000401120A10020001000184000050B816

681616680002083203000000000002000500000401FF040008FF5516

5、读取VD10

681B1B6802006C320100000000000E00000401120A10060001000184000050BC16

681919680002083203000000000002000800000401FF040020FFFF00006F16

6、读取VB10后面的8个字节

681B1B6802006C320100000000000E00000401120A10020008000184000050Bf16

681D1D680002083203000000000002000C00000401FF040040FFFF0000000000009316

7、读取V10.0

681B1B6802006C320100000000000E00000401120A10010001000184000050B716

681616680002083203000000000002000500000401FF030001014F16

4、读取Q0.1

发送:681B1B6802006C320100000000000E00000401120A100100010000820000016516

回复:E5

681616680002083203000000000002000500000401FF030001004E16Q0.1为0时

681616680002083203000000000002000500000401FF030001014F16Q0.1为1时

5、读取Q1.3

发送:681B1B6802006C320100000000000E00000401120A1001000100008200000B6516

681616680002083203000000000002000500000401FF030001004E16

6、读取M0.0

发送:681B1B6802006C320100000000000E00000401120A100100010000830000006516

THE END
1.英语词汇“access”的翻译意思用法释义释义 Word family? noun access accessibility ≠ inaccessibility adjective accessible ≠ inaccessible verb access adverb accessibly ≠ inaccessibly Related topics: Lawac·cess1 /kses/ ●●● S2 W1 AWL noun [uncountable] 1? ENTERthe right to enter a place, use something, see someone...http://www.lnxyzz.com/841.html
2.英语词汇point怎么读,是什么意思,单词翻译读音固定搭配用法和...释义 point n 1 [C] (often in compounds 常用以构成复合词) sharp or tapered end of sth; tip (物体的)尖端; 尖儿 the point of a pin, knife, pencil, etc 大头针、 刀子、 铅笔等的尖儿 a pin-point, knife-point, pencil point, etc 针尖儿、 刀尖儿、 铅笔尖儿 The stake had been sharpen...http://ec.newdu.com/25950.html
3.assess单词记忆方法问答中心听说你考上公务员啦,孩子!这是对你过去努力的肯定,也是未... 单词记忆方法是词缀as+词根sess,中文意思是评估常见释义 英[ses] 美[ses] vt. 评估;评定(性质、质量);估算;估定(数量、价值); 例句 We are trying to assess how well the system works. 我们正设法评估这个系统运行得是否顺畅...http://m.gaokaomanfen.com/know/995518.html
4.英语词汇“eclipses”的读音翻译释义用法及例句grog blossom groggery groggier groggiest groggily grogginess groggy纳罕网英语在线翻译词典收录了272682条英语词汇在线翻译词条,基本涵盖了全部常用英语词汇的中英文双语翻译及用法,是英语学习的有利工具。Copyright ? 2000-2024 Nahan.net All Rights Reserved京ICP备2021023879号 更新时间:2024/11/15 8:15:30...http://www.nahan.net/89981.html
5.英语词汇“colts'”的读音翻译释义用法及例句saddlebags saddled saddleless saddlelike saddle-like saddles出国留学网英语在线翻译词典收录了126003条英语词汇在线翻译词条,基本涵盖了全部常用英语词汇的中英文双语翻译及用法,是英语学习的有利工具。Copyright ? 2000-2024 Swcvc.com All Rights Reserved京ICP备2021023879号 更新时间:2024/11/19 5:14:18...http://www.swcvc.com/dictionary/60029.html
6.accesspointnames的翻译是:accesspoint名称中文翻译英文意思...accesspoint 名称 翻译结果4复制译文编辑译文朗读译文返回顶部 接入点名称 翻译结果5复制译文编辑译文朗读译文返回顶部 accesspoint名字 相关内容 aforeign gene( s) expressed lower if compared with that in[translate] a收到了你的来信。 Has received your incoming letter.[translate] ...http://eyu.zaixian-fanyi.com/fan_yi_10997905
7.是否可以使用pyarrow从S3访问点读取镶木地板文件那些遇到...import s3fs import pyarrow.parquet as pq S3_ACCESS_POINT_ARN = "..." s3_filesystem = s3fs.S3FileSystem() s3_file_uri = f"{S3_ACCESS_POINT_ARN}/examples/example1.parquet" example1_df = pq.ParquetDataset(s3_file_uri, s3_filesystem).read_pandas().to_pandas() ...https://qa.1r1g.com/sf/ask/4395472861/
8.ttcn授权和计费 Accounting AP AccessPoint 访问点 API Application Interface应川编程界面 Pro伊amming ASN.1 AbstractNOtation1 SyntaX 抽象语法符号1 BER BasicEncOdeRule 基本编码规则 B舔icService BSS Set 基本服务集 CER C锄onical Rule 规范编码规则 Encoding CD Coding/Decoding 编解码 CORBACommon Broker Object...https://max.book118.com/html/2016/0115/33320415.shtm
9.聊聊openmessaging的MessagingAccessPointMessagingAccessPoint openmessaging-java/openmessaging-api/src/main/java/io/openmessaging/MessagingAccessPoint.java /** * An instance of {@code MessagingAccessPoint} may be obtained from {@link OMS}, which is capable of creating {@code * Producer}, {@code Consumer}, {@code ResourceManager}, and...https://www.jianshu.com/p/88a98a562f33
10.combo是什么意思combo怎么读combo翻译用法发音词组同反义词WLAN COMBO ACCESS POINT DEVICE FOR INTERFACE WITH WIMEDIA UWB BASED WIRELESS USB AND SOFTWARE LAYER STRUCTURE OF COMBO ACCESS POINT ... The stellar masses of 25?000 galaxies at 0.2?$\le$?z?$\le$?1.0 estimated by the COMBO-17 survey ...https://www.koolearn.com/dict/wd_31608.html
1.AmazonS3AccessPoints無論針對資料擷取、轉換、限制讀取存取還是無限存取建立存取點,使用 S3 Access Point 可簡化建立、共用和維護共用 S3 儲存貯體中資料存取的工作。 AWS Data Exchange 如何使用 S3 Access Points? AWS Data Exchange for Amazon S3 透過直接存取資料供應商的 Amazon S3 資料來加快洞察時間。AWS Data Exchange for Ama...http://aws.amazon.com/tw/s3/features/access-points/
2.point是什么意思point怎么读中文意思用法point point是什么意思、point怎么读 读音:英[pnt] 美[pnt] point 基本解释 n. 点;要点;得分;标点 vt. (意思上)指向;削尖;加标点于;指路 vi. 表明;指向 point 网络释义 n. 要点;得分;标点;[机] 尖端 vt. 指向;弄尖;加标点于 vi. 表明;指向 n. (Point)人名;(法)普安...https://danci.gjcha.com/point.html
3.point是什么意思That’s a very interestingpoint..那个观点很有趣。 She made some extremely goodpoints..她提出了一些很不错的观点。 There are three importantpoints we must bear in mind..有三个要点我们必须记住。 This brings me to my nextpoint..这样我就要讲到下一点了。 https://danci.3gifs.com/point/
4.中国移动5G中国移动通信集团公司的第五代无线通信技术AP(Access Point)的角色 在整个系统中,AP(Access Point,即接入点)扮演着至关重要的地位。它负责将用户连接到无线局域网,并管理这些连接以保证效率与安全性。在高速增长的人口密集城市中,每个AP都成了一个小型“服务器”,处理来自数百万用户设备的大量请求,从而保障手机上的各种应用运行顺畅。 https://www.bttol.cn/liu-xue-gong-lve/101539.html
5.mesh组网可以用桥接吗mob6454cc647bdb的技术博客接入点(Access Point,AP): 想象一个无线扩音器,它把声音传播到房子里的每个角落。接入点就像是这个扩音器,把互联网连接变成无线信号,让你可以在家里的任何地方都连上网络。 这三种设备各自扮演着不同的角色,路由器连接不同的网络,交换机连接家里的设备,而接入点则提供无线连接。在现代网络中,它们通常协同工作来构建...https://blog.51cto.com/u_16099186/12554245
6.POINTED的英語發音POINTED的發音。怎麼說POINTED。聽英語音頻發音。了解更多。https://dictionary.cambridge.org/zht/%E7%99%BC%E9%9F%B3/%E8%8B%B1%E8%AA%9E/pointed/
7.points是什麼字體?眾識社區識字體網Helvetica Neue for Target Uni Bold 93% 商用须授权 Helvetica for Target Bold 93% 商用须授权 HelveticaNeue for Target Bold 92.9% 商用须授权 RTGravi-Soft 92.3% 商用须授权 Jio Type Bold 92.2% 商用须授权 NimbusSansNovusDOT-Bol 92% 商用须授权 NimbusSanNovD-Bol 92% 商用须授权 Cabrion...https://hant.m.likefont.com/community/111642881/
8.MySQL:使用POINT类型高效处理地理位置信息在日常开发中很经常需要处理地理位置信息,比如计算两个地点之间的距离、距离排序等。MySQL 提供了多种数据类型来存储地理位置信息,比如POINT、Geometry。本文主要介绍如何使用POINT类型。POINT是Geometry类型的一个子类,用于表示坐标空间中的单一位置。 先来看使用POINT类型常用的建表语句: ...https://blog.csdn.net/lin2ur/article/details/143816581
9.企业级无线局域网络11篇(全文)无线局域网采用公共的电磁波作为载体, 而电磁波能够穿越天花板、玻璃、墙等物体, 因此在一个无线局域网接入点AP (AccessPoint) 的服务区域中, 任何一个无线客户端都可以接收到此接入点的电磁波信号。这样, 未授权的客户端也能接收到信号。也就是说, 由于采用电磁波来传输信号, 未授权用户在无线局域网 (相对于有...https://www.99xueshu.com/w/ikeyuaj2w45i.html
10.s7200通信出现specifiedaccesspointnotfoundSIMATICS7s7-200通信出现specified access point not found自动化系统 驱动技术 数控系统 低压电器 仪器仪表 SIMATIC S7-200 SIMATIC S7-1500系列SIMATICS7-1200系列SIMATIC S7-200 SMARTSIMATIC S7-300(F)/S7-400(F/H/FH)SIMATIC S5通信与网络组件触摸屏WinCC V7/V8WinCC PortalWinCC Unified PCWinCC OA( 原PVSS )SIMAT...https://www.ad.siemens.com.cn/service/answer/solve_242643_1028.html
11.计算机基础知识简答题汇总江阴雨辰互联具体来说无线网卡就是使你的电脑可以利用无线来上网的一个装置,但是有了无线网卡也还需要一个可以连接的无线网络,如果你在家里或者所在地有无线路由器或者无线AP(AccessPoint无线接入点)的覆盖,就可以通过无线网卡以无线的方式连接无线网络可上网。 802.11a :使用5GHz频段,传输速度54Mbps,与802.11b不兼容;...https://www.yc00.com/news/1690833525a440702.html
12.CIMServiceAccessBySAP类[UUID("{714C00BA-DB37-11d2-85FC-0000F8102E5F}"), Abstract, AMENDMENT] class CIM_ServiceAccessBySAP : CIM_Dependency { CIM_ServiceAccessPoint REF Dependent; CIM_Service REF Antecedent; }; 成员 CIM_ServiceAccessBySAP类具有以下类型的成员: ...https://docs.microsoft.com/zh-cn/windows/win32/cimwin32prov/cim-serviceaccessbysap
13.WiFiAp探究实录功能实现与源码分析腾讯云开发者社区———编辑于2017-08-02——— wifi热点说的是wifiAp相关,所以如果源码开发的话,这个WifiAp算是一个搜索代码的关键字,含义是Wifi Access point,wifi接入点。所以下文中的wifi热点统一用WifiAp代替 wifiAp打开方式:设置->更多->移动网络共享->便携式wlan热点。 wifiAp打开条件:任何...https://cloud.tencent.com/developer/article/1028805