20090524西门子ppi协议分析

西门子ppi协议分析:

西门子s7-200 plc之间或者plc与pc之间通信有很多种方式:自由口,ppi方式,mpi方式,profibus方式。使用自由口方式进行编程时,在上位机和plc 中都要编写数据通信程序。使用ppi协议进行通信时,plc可以不用编程,而且可读写所有数据区,快捷方便。但是西门子公司没有公布ppi协议的格式。用户如果想使用ppi协议监控,必须购买其监控产品或第三方厂家的组态软件。这样给用户自主开发带来一定困难,特别是自行开发的现场设备就不能通过ppi 协议接入plc。其它通讯方式编程也存在编程复杂,需要购买软件和授权等局限性(1)。通过数据监视、分析的方法,我们找出了ppi协议的关键报文格式,可用于上位机、现场设备与s7-200 cpu之间通讯。

pc与plc采用主从方式通讯,pc按如下的格式发读写指令,plc作出接收正确的响应(返回应答数据e5h或f9h见下文分析),上位机接到此响应则发出确认命令(10 02 5c 5e 16),plc再返回给上位机相应数据。

一般上位机要连接plc就要先发送如下数据 10 02 00 49 4b 16 你可以理解为我们常用的对讲机通话模式:00呼叫02,听到请回答 10起始符 02是之上位机要联系的下位级的地址站号 00就是上位级本本身自己的站号 49寻呼指令 16终止符其中4b为校验码,是这样得来的:02+00+49的最后两位就是校验码,这就是所说的偶校验或称和校验。计算器在16进制计算时公式(02+00+49)mod 100得出的数就是校验码,你计算一下是不是等于4b啊!其他的所有ppi 协议校验都是如此。假如02站号的plc收到寻呼信号那么会回答: 10 00 02 00 02 16 意思是:报告00 ,02收到,请指示这样的解释是不是有意思啊!你有更好的解释吗?

我们先来看看西门子老型号的plc的读密码指令:

请用串口软件以16进制发送,端口设置9600;e;8;1

送: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 意思:要求传送系统存储区05e0位开始的8个字符。

如果通讯无误,plc会返回 e5,意思:已经收到

那么这时上位机再次发送指令 10 02 00 5c 5e 16 意思:请执行命令。那么这时plc就真的执行命令了返回如下字符:68 1d 1d 68 00 02 08 32 03 00 00 00 00 00 02 00 0c 00 00 04 01 ff 04 00 40 9b 98 02 06 9d 9a 00 76 7d 16

好了,说到这里就此停止,大家看看密码是多少啊!你多做实验一定能得出结果的。

cn plc中鲜为人知的二次加密:

上面是plc所返回的密码,但是已经加密了,你如果不懂解码,还是算不出密码来。其实新版的plc不光cn一种,所有02版的plc在加密的时候都改动了密码,密码在传输的过程中进行了再加密!这就是鲜为人知的二次加密!看下面我做的通过串口监视截获的数据:

我下载程序,当软件要求我输入下载密码的时候,我输入密码:22222222,可是截获的竟然是一组这样的数据:68 21 21 68 02 00 7c 32 07 00 00 00 19 00 08 00 0c 00 01 12 04 11 45 01 00 ff 09 00 08 67 67 00 00 67 67 00 00 fe 16

提示: 67 67 00 00 67 67 00 00 其实就是我刚才输入的8个2的密码,在这里加密了。。。。

下面呢我公布一下二次加密的代码。大家来算一下,这个数据是怎么得来的。密码代码:无大小写区分

0=65 1=64 2=67 3=66 4=61 5=60 6=63 7=62 8=6d 9=6c a=14 b=17 c=16 d=11 e=10 f=13 g=12 h=1d i=1c j=1f k=1e l=19 m=18 n=1b o=1a p=05 q=04 r=07 s=06 t=01 x= 0d y=0c z=0f

怎样读取plc的版本号:

我们在***中首先要确定的是plc的版本号。就是要看看是老版本还是02版的,也好做出加***方案。他的通讯源码是这样的:68 1b 1b 68 02 00 7c 32 01 00 00 00 00 00 0e 00 00 04 01 12 0a 10 02 00 14 00 00 03 00 00 00 09 16

发送完上面数据plc返回e5.再次发送确认指令:10 02 00 5c 5e 16 这时plc 的版本号就返回来了。看下面:

68 29 29 68 00 02 08 32 03 00 00 00 00 00 02 00 18 00 00 04 01 ff 04 00 a0 43 50 55 20 32 32 36 20 43 4e 20 20 20 20 20 20 30 32 30 31 d 7 16

你看这一段:43 50 55 20 32 32 36 20 43 4e 20 20 20 20 20 20 30 32 30 31就是plc 版本号的ascii码。用asc方式显示就会看的更明白上面数据是:c p u sp 2 2 6 sp c n 0 2 0 1 (sp就是空格)

读取密码保护位(保护等级)指令

68 1b 1b 68 02 00 6c 32 01 00 00 00 00 00 0e 00 00 04 01 12 0a 10 02 00 01 00 00 03 00 05 d8 c3 16

全部清空plc指令:

68 21 21 68 02 00 7c 32 07 00 00 00 24 00 08 00 0c 00 01 12 04 11 45 01 00 ff 09 00 08 16 19 06 0d 01 08 18 1e ee 16

读命令分析

一次读一条数据

对于一次读取一个数据,读命令都是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

68 1b 1b 68 02 00 6c 32 01 00 00 00 00 00 0e 00 00 04 01 12 0a 10

开始符长度长度开始符站号源地址功能码

sd le ler sd da sa fc

0 1 2 3 4 5 6 7 8 9 10

Sd le ler sd da sa fc dsap du fcs ed

22 23 24 25 26 27 28 29 30 31 32

读取长度数据个数存储器类型偏移量校验结束

02 00 08 00 00 03 00 05 e0 d2 16

因为是pc上发的读plc数据的命令,sa=00,da=02,如果有b多个站,da要改成相应的站号。读命令中从da到du的长度为1b即27个字节。从22字节开始根据读取数据的类型、位置不同而不同。表一是读不同存储器命令的byte22—32

字节 22 23 24 25 26 27 28 29 30 31 32

功能读取长度数据个数存储器类型偏移量校验结束

读q0.0 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 01 10 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

表一读命令的byte22-32

从表中我们可以得出以下结果:

byte 22 读取数据的长度

01:1 bit 02:1 byte 04:1 word 06:double word

byte 24数据个数,这里是01 ,一次读多个数据时见下面的说明。

byte 26 存储器类型,01:v存储器00:其它

byte 27 存储器类型

04:s 05:sm 06:ai 07:aq 1e: c 81:I 82:q 83:m 84:v 1f:t byte 28,29,30存储器偏移量指针(存储器地址*8),如:vb100,存储器地址为100,偏移量指针为800,转换成16进制就是320h,则byte 28—29这三个字节就是:00 03 20。

byte 31 校验和,前面已说到这是从(da+sa+dsap+ssap+du) mod 256 。

一次读多条数据

对于一次读多个数据的情况,前21byte与上面相似只是长度ld,ldr及byte 14不同:

byte 14 数据块占位字节,它指明数据块占用的字节数。与数据块数量有关,长度=4+数据块数*10,如:一条数据时为4+10=0e(h);同时读m,v,q三个不同的数据块时为4+3*10=22(h)。

byte 22 总是02 即以byte为单位。

byte 24 以字节为单位,连续读取的字节数。如读2个vd则byte24=8

byte 19---30 按上述一次读一个数据的格式依次列出,

byte 31---42 另一类型的数据,也是按上述格式给出。

以此类推,一次最多读取222个字节的数据。

写命令分析

一次写一个double word类型的数据,写命令是40个字节,其余为38个字节。

写一个double word类型的数据,前面的0—21字节为:

68 23 23 68 02 00 6c 32 01 00 00 00 00 00 0e 00 00 04 01 12 0a 10

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

68 21 21 68 02 00 6c 32 01 00 00 00 00 00 0e 00 00 04 01 12 0a 10

从22字节开始根据写入数据的值和位置不同而变化。表二是几个写命令的byte22—40。

字节 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40

写入位置及值长度个数类型偏移量位数值、校验码、结束符

m0.0=1 01 00 01 00 00 82 00 00 00 00 03 00 01 01 00 71 16

m0.0=0 01 00 01 00 00 83 00 00 00 00 03 00 01 00 00 70 16

m0.1=1 01 00 01 00 00 83 00 00 01 00 03 00 01 01 00 72 16

vb100=10 02 00 01 00 01 84 00 03 20 00 04 00 08 10 00 ae 16

vb100=ff 02 00 01 00 01 84 00 03 20 00 04 00 08 ff 00 9d 16

vw100=ffff 04 00 01 00 01 84 00 03 20 00 04 00 10 ff ff a6 16

vd100=ffffffff 06 00 01 00 01 84 00 03 20 00 04 00 20 ff ff ff ff b8 16

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21

开始符长度长度开始符站号源地址功能码

00 05 05 01 12 0a 10

68 21 21 68 02 00 7c 32 01 00 00 00 00 00 0e 00 00 04 01 12 0a 10

68 20 20 68 2 0 7c 32 1 0 0 0 0 0 e 0 5 5 1 12 a 10

2 0 1 0 1 84 0 32 00 4 0 8 c b9 16

22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37

数据长度数据个数存储类型偏移量数据形式数据位数写入值校验码结束

02 00 01 00 01 84 00 03 20 00 04 00 08 0c b9 16

01 00 01 00 00 82 00 00 00 00 03 00 01 01 79 16

表二写命令的byte22—40

经分析我们可以得出以下结果:

byte 22-- byte 30 写入数据的长度、存储器类型、存储器偏移量与读命令相同。t,c等不能用写命令写入。

byte 32 如果写入的是位数据这一字节为03,其它则为04

byte 34 写入数据的位数

01: 1 bit 08: 1 byte 10h: 1 word 20h: 1 double word

byte 35--40值、校验码、结束符

如果写入的是位、字节数据,byte35就是写入的值,byte36=00,byte37=检验码,byte38=16h,结束。如果写个的是字数据(双字节),byte35,byte36就是写入的值, byte37=检验码,byte38=16h,结束。如果写个的是双字数据(四字节),byte35—38就是写入的值, byte39=检验码,byte40=16h,结束。

1、报文数据长度和重复数据长度为自da至du的数据长度,校验码为da至du数据的和校验,只取其中的末字节值。其中蓝色的da应为sa,即从第二个其始符68h后一个字节到校验码前一个字节。2“68 1b 1b 68 2 0 6c 32 1 0 0 0 0 0 e 0 0 4 1 12 a 10 2 0 1 0 1 84 0 3 20 8b 16

plc返回数据 e5 后,确认读取命令,发送以下数据:

10 2 0 5c 5e 16

然后上位机vb程序接受到以下数据:

68 16 16 68 0 2 8 32 3 0 0 0 0 0 2 0 5 0 0 4 1 ff 4 0 8 22 78 16

首先识别目标地址和源地址,确认是这次申请的返回数据,然后经过校验检查,正确后解析出第26号数据(&h22)即为vb100字节的数据。”用这个格式可以读s7-200中v变量的连续字节,从1个到222个(未验证,采用原文数据)。

对于上位机发出第一次指令中红色数据在读数时会改变,意义如下:

红色1表示的是读的字节数,可从1到222。

红色84为数据类型,参见上文。

红色03 20表示读的字节数的起始地址指针,从该地址开始连续读1到222个字节。

红色8b是校验码。

上位机接收到e5后发出的确认命令在读v变量是不会改变,一直是该几个字符。

下位机最后发送的字符串中红色数据的意义如下:

红色16是报文长度,在这里也有规律,即读一个字节为16,读两个字节为17,n个字节为16+n—1。红色0 8表示读的字节数,以8为单位,一个字节为8,两个字节为10,采用16进制,8个字节为40,依此类推。

红色22的这个位置在读n个字节时可以有n个数据,数据从起始字节地址开始依次排列。

红色78为校验码。

关于西门子PLC的PPI通信协议的研究

关于西门子PLC的PPI通信协议的研究 摘要:本文结合西门子PLC的PPI通信协议的相关理论,主要研究了PPI协议的 通信过程、通信协议模型,并对PLC网络通信模式的构建进行了实例分析。 关键词:西门子PLC;PPI通信协议;通信程序 前言 PPI通信协议是一种特殊的通信协议,其协议本身是不公开的,只有西门子 S7-200的设备支持它。但掌握它也很重要,有时s7-200系列的设备之间只能通过PPI协议通信,例如上位机STEP7-Micro/WIN与S7-200PLC之间的基本通信;有 时只要通过一根电缆就可以实现S7-200PLC之间的简单通信,非常适用。但由于PPI通信协议不是公开的协议,因此一般现场设备是不支持的,限制了其作为标 准现场总线的应用,由此还需对协议内容、功能实现进行研究和分析。 1西门子PLC的PPI通信协议概述 1.1通信过程 在PPI网上,计算机与PLC通信,是采用主从方式,通信总是由计算机发起,PLC予以响应。具体过程如下: 1)计算机按通信任务,用一定格式,向PLC发送通信命令。 2)PLC收到命令后,进行命令校验,如校验后正确无误,则向计算机返回数 据E5H或F9H,作出初步应答。 3)计算机收到初步应答后,再向PLC发送SD(开始定界字符,为10H)、 DA(目标地址,即PLC地址02H)、SA(源地址,即计算机地址00H)、FC(功 能码,取5CH)、FCS(SA、DA、FC和的256余数,为5EH)、ED(结束分界符)确认命令。 如按以上设定的计算机及PLC地址,则发送10、02、00、5C、5E及16,6个字节的十六进制数据,以确认所发命令。 4)PLC收到此确认后,执行计算机所发送的通信命令,并向计算机返回相应 数据。 需要注意的是:如为读命令,情况将如上所述。但如为写或控制命令,PLC 收到后,经校验,如无误,一方面向计算机发送数据E5H,作出初步应答;另一 方面不需计算机确认,也将执行所发命令。但当收到计算机确认信息命令后,会 返回有关执行情况的信息代码[1]。 1.2 PPI协议模型 PPI通信协议的模型以OSI模型为基础,将其中的物理层、数据链路层和应用 层构成现场总线通信的三层模型,如表1所示。 其中PPI的应用层是通信模型的最高层,负责进行应用数据的读写操作。应用层是在数 据链路层之上的,接收数据链路层上传的数据,用来更新本站点的相关数据。当应用层需要 发送数据时,它只要将发送数据的目的站点、数据类型和数据本身等信息下载给数据链路层,由数据链路层去实现数据的发送。 PPI的数据链路层是位于通信模型的第2层,它介于物理层与应用层之间。一方面,它要 执行应用层的数据发送任务,生成数据和控制帧,并将这些帧下载给物理层,通过物理层实 现帧的发送;另一方面,数据链路层还要接收物理层的帧,根据帧进行校验等操作,若是数 据帧,则将其中的数据从帧中读出,上传给应用层。 一次数据写出操作的步骤包括:首先由本站(主站)向从站发出写入请求,从站作出正确接

S7200_PPI通信协议

S7-200 PPI通信协议 PPI通信协议是一种主从式的通信协议,上位机即PC机为主,PLC为从。通信开始由计算机发起,PLC予以响应。 1)、计算机按通信任务,用一定格式,向PLC发送通信命令。 2)、PLC收到命令后,进行命令校验,如无误,则向计算机发送数据E5H或F9H,作出初步应答。 3)、计算机收到初步应答后,再向PLC发送SD DA SA FC FCS 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 LE LER SD DA SA FC DASP SSAP DU FCS ED SD:(Start Delimiter)开始定界符,占1字节,为68H LE:(Length)报文数据长度,占1字节,标明报文以字节计,从DA到DU的长度; LER:(Repeated Length)重复数据长度,同LE SD: (Start Delimiter)开始定界符(68H) DA:(Destination Address)目标地址,占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)数据单元,占多个字节

Siemens PPI协议分析

Siemens PPI协议分析 大家好:我是山东临沂的郝金红,由于前段时间的疯狂的研究西门子PPI协议解密之故,所以无心插柳的研究出了较实用的西门子S7-200 PPI协议,今天奉献大家。我们经常要用于上位机、现场设备与S7-200CPU之间的通讯,但是西门子公司没有公布PPI协议的格式,用户如果想使用PPI协议监控,必须购买其监控产品或第三方厂家的组态软件。大家要知道国内的组态王、紫金桥、力控等等组态公司是花了多少钱才得到的PPI的深层协议吗?其实西门子工控产品的超高价垄断掠夺行为已经引起了我们国家及业内人士的抵制和抗议,他们的什么软件都需要授权且对于系统的霸道性是有目共睹的。 这样给用户自主开发就带来了一定的困难,特别是想用VB、VC等语言自行开发,根本没办法接入PLC,要么你大把掏钱给他们。洋为中用,最近在国外网站得到一个串口监视软件,带协议分析的相当不错,你吧!我就是通过此软件的数据监视、分析方法,找出了PPI协议的关键报文格式所在。 其实西门子S7-200 PLC之间或者PLC与PC之间通信有很多种方式:自由口,PPI方式,MPI方式,Profibus方式。使用自由口方式进行编程时,在上位机和PLC 中都要编写数据通信程序。使用PPI协议进行通信时,PLC可以不用编程,而且可读写所有数据区,快捷方便。这也是我们之所以要研究、找出PPI协议的源动力! 下面我们就要说说分析的方法了! 西门子的STEP 7 MicroWIN 是用于S7-200系列PLC的开发工具,它使用PC机上的COM口通过一条PC/PPI编程电缆连到PLC的编程口上。这说明,PC实际上是可以通过串口同S7-200 CPU通讯。只是我们不知道通讯协议而已。通过截获PC机串口上的收发数据,对照Step 7软件发出的指令,我们就有可能分析出有关指令的报文和通讯方式;然后,直接通过串口向PLC发送报文,以验证这些指令报文是否正确。本着这一思想,我们采用以下步骤获得这些报文。

MPI协议和PPI协议有什么不同

竭诚为您提供优质文档/双击可除MPI协议和PPI协议有什么不同 篇一:通讯不同点 请教下大虾们,常说的总线有profibus、can、modbus、FF、devicenet等,这些是不是以走什么协议来命名的?那 我可以说:“它走can协议吗?”而常见的串口通信modbus,mpi, 据校验和。 在波特率一致、各站地址不同的情况下,ppi,mpi和pRoFibus可以同时在一个网络上运行,并且互不干扰。 这就是说如果一个网络上有s7-300、s7-200,s7-300 之间可以通过mpi或pRoFibus通信,而在同时在同一个网 络上的tp170如果在一个通信网络上存在其他主站(如td200,或者上位计算机等),同时需要进行micro/win的编程、监控,这就是多主站网络编程。 使用西门子的下列设备可以实现micro/win的多主站编程: micro触摸屏可以与一个s7-200cpu通信。 使用智能多主站电缆和micro/winV3.2sp4以上版本。

新电缆可以在网络上传递令牌,因而自动支持多主站网络编程。 如果使用cp卡,如cp5511/cp5512(笔记本电脑pcmcia 卡)、cp5611(台式机pci卡),能够支持多主站编程通信。 如果通过cp卡编程时,选择了mpi协议,注意mpi主站不能访问作为ppi主站的cpu。如果有第三方的产品要连接到多主站网络上,用户需要咨询第三方产品提供商以了解是否支持西门子的s7-200多主站网络。要进行多主站编程,不但编程计算机要支持,网上的其他设备也要有多主站通信能力。 早期的多主站连接依赖于计算机硬件和windows操作系统。随着计算机技术的发展,多数情况下已经不能做到多主站编程通信。建议用户使用西门子的多主站编程电缆或者cp 卡配合micro/win实现多主站编程通信。 4.mpi(multipointinterface)是simatics7多点通信的接口,是一种适用于少数站点间通信的网络,多用于连接上位机和少量plc之间近距离通信。 通过pRoFibus电缆和接头,将控制器s7-300或s7-400的cpu自带的mpi编程口及s7-200cpu自带的ppi通信口相互连接,以及与上位机网卡的编程口(mpi/dp口)通过pRoFibus或mpi电缆连接即可实现。网络中当然也可以不包括pc机而只包括plc。

西门子PPI通讯协议

?西门子PPI通讯协议!看看吧! S7-200?PLC之PPI协议? ????通过硬件和软件侦听的方法,分析PLC内部固有的PPI通讯协议,然后上位机采用VB 编程,遵循PPI通讯协议,读写PLC数据,实现人机操作任务。这种通讯方法,与一般的自由通讯协议相比,省略了PLC的通讯程序编写,只需编写上位机的通讯程序资源 S7-226的编程口物理层为RS-485结构,SIEMENS提供MicroWin软件,采用的是PPI(Point?to?Point)协议,可以用来传输、调试PLC程序。在现场应用中,当需要PLC与上位机通讯时,较多的使用自定义协议与上位机通讯。在这种通讯方式中,需要编程者首先定义自己的自由通讯格式,在PLC中编写代码,利用中断方式控制通讯端口的数据收发。采用这种方式,PLC编程调试较为烦琐,占用PLC的软件中断和代码资源,而且当PLC的通讯口定义为自由通讯口时,PLC的编程软件无法对PLC进行监控,给PLC程序调试带来不便。SIEMENS?S7-200PLC的编程通讯接口,内部固化的通讯协议为PPI协议,如果上位机遵循PPI 协议来读写PLC,就可以省略编写PLC的通讯代码。如何获得PPI协议?可以在PLC的编程软件读写PLC数据时,利用第三个串口侦听PLC的通讯数据,或者利用软件方法,截取已经打开且正在通讯的端口的数据,然后归纳总结,解析出PPI协议的数据读写报文。这样,上位机遵循PPI协议,就可以便利的读写PLC内部的数据,实现上位机的人机操作功能。 软件设计 ?系统中测控任务由SIEMENS?S7-226PLC完成,PLC采用循环扫描方式工作,当定时时间到时,执行数据采集或PID控制任务,完成现场的信号控制。计算机的监控软件采用VB编制,利用MSComm控件完成串口数据通讯,通讯遵循的协议为PPI协议。 ?PPI协议 西门子的PPI(Point?to?Point)通讯协议采用主从式的通讯方式,一次读写操作的步骤包括:首先上位机发出读写命令,PLC作出接收正确的响应,上位机接到此响应则发出确认申请命令,PLC则完成正确的读写响应,回应给上位机数据。这样收发两次数据,完成一次数据的读写[5]。 其通讯数据报文格式大致有以下几类: 1、读写申请的数据格式如下: ? SD?LE?LER?SD?DA?SA?FC?DASP?SSAP?DU?FCS?ED?? SD:(Start?Delimiter)开始定界符(68H) LE:(Length)报文数据长度 LER:(Repeated?Length)重复数据长度 SD:?(Start?Delimiter)开始定界符(68H) SA:(Source?Address)源地址,指该地址的指针,为地址值乘以8 DA:(Destination?Address)目标地址,指该地址的指针,为地址值乘以8 FC:(Function?Code)功能码 DSAP:(Destination?Service?Access?Point)目的服务存取点 SSAP:(Source?Service?Access?Point)源服务存取点 DU:(Data?Unit)数据单元 FCS:(Frame?Check?Sequence)校验码 ED:(End?Delimiter)结束分界符(16H) 报文数据长度和重复数据长度为自DA至DU的数据长度,校验码为DA至DU数据的和校验,只取其中的末字节值。 在读写PLC的变量数据中,读数据的功能码为?6CH,写数据的功能码为?7CH。

SiemensPPI协议分析

编号:_______________本资料为word版本,可以直接编辑和打印,感谢您的下载 SiemensPPI协议分析 甲方:___________________ 乙方:___________________ 日期:___________________

大家好:我是山东临沂的郝金红,由丁前段时间的疯狂的研究西门子PPI协议解密之故,所以无心插柳的研究出了较实用的西门子S7-200 PPI协议,今天奉献大家。我们经常要用丁上位机、现场设备与S7-200CP比问的通讯,但是西门子公司没有公布PPI协议的格式,用户如果想使用PPI协议监控,必须购买其监控产品或第三方厂家的组态软件。大家要知道国内的组态王、紫金桥、力控等等组态公司是花了多少钱才得到的PPI的深层协议吗?其实西门子工控产品的超高价垄断掠夺行为已经引起了我们国家及业内人士的抵制和抗议,他们的什么软件都 需要授权且对丁系统的霸道性是有目共睹的。 这样给用户自主开发就带来了一定的困难,特别是想用VB VCC?语言自行开发,根本没办法接入PLC要么你大把掏钱给他们。洋为中用,最近在国外网站得到一个申口监视软件,带协议分析的相当不错,你'下裁吧!我就是通过此软件的数据监视、分析方法,找出了PPI协议的关键报文格式所在。 其实西门子S7-200 PLC之间或者PL必P&问通信有很多种方式:自由口, PPI方式,MP方式,Profibus方式。使用自由口方式进行编程时,在上位机和PLC 中都要编写数据通信程序。使用PPI协议进行通信时,PLW以不用编程,而且可读写所有数据区,快捷方便。这也是我们之所以要研究、找出PPI协议的源动力! 卜面我们就要说说分析的方法了! 西门子的STEP 7 MicroWIN是用丁S7-200系列PLC勺开发工具,它使用PCL上的COI^通过一条PC/PPI编程电缆连到PLC勺编程口上。这说明,PCS际上是可以通过申口同S7-200 CPIffl讯。只是我们不知道通讯协议而已。通过截获PO申口上的收发数据,对照Step 7软件发出的指令,我们就有可能分析出有关指令的报文和通讯方式;然后,直接通过申口向PLCCc送报文,以验证这些指令报文是否正确。本着这一思想,我们采用以下步骤获得这些报文。 你首先下载上面那个英文的申口监控软件,英文不好的网友可以使用我们为你汉化的汉化包,替换原文件即可,你必须使用这个软件,因为我先前使用过很多的监控软件,在收发数据很多的情况下都有死机现象,造成数据丢失,容易给

PPI MPI Profibus 通信协议详解

1、MPI是Multi-Point Interface,适用于PLC 200/300/400、操作面板TP/OP及上位机MPI/PROFIBUS通信卡,MPI网络的通信速率为网络才支持12Mbit/s的通信速率。MPI网络最多可以连接32个接节点,最大通信距离为50m,但是可以通过中继器来扩展长度。PPI协议是专门为S7-200开发的通信协议。S7-200 CPU的通信口(Port0、Port1)支持PPI通信协议,S7-200的一些通信模块也支持PPI协议。Micro/WIN与CPU进行编程通信也通过PPI协议。PPI是一种主从协议,主站、从站在一个令牌网。在一个PPI网络中,与一个从站通信的主站的个数并没有限制,但是一个网络中主站的个数不能超过32个。主站既可以读写从站的数据,也可以读写主站的数据。也就是说,S7-200作为PPI主站时,仍然可以作为从站响应其他主站的数据请求。 MPI是主站之间的通信;PPI可以是多台主站与从站之间通信。 2、MPI协议:西门子内部协议,不公开; PROFIBUS-DP协议:标准协议,公开。 3、MODBUS 是MODICON公司最先倡导的一种软的通讯规约,经过大多数公司的实际应用,逐渐被认可,成为一种标准的通讯规约,只要按照这种规约进行数据通讯或传输,不同的系统就可以通讯。目前,在RS232/RS485通讯过程中,更是广泛采用这种规约。 常用的MODBUS 通讯规约有两种,一种是MODBUS ASCII,一种是MODBUS RTU。 一般来说,通讯数据量少而且主要是文本的通讯则采用MODBUS ASCII规约,通讯数据数据量大而且是二进制数值时,多采用MODBUS RTU规约。 在实际的应用过程中,为了解决某一个特殊问题,人们喜欢自己修改MODBUS规约来满足自己的需要(事实上,人们经常使用自己定义的规约来通讯,这样能解决问题,但不太规范)。更为普通的用法是,少量修改规约,但将规约格式附在软件说明书一起,或直接放在帮助中,这样就方便了用户的通讯。 3. PPI,MPI和PROFIBUS都是基于OSI(开放系统互联)的七层网络结构模型,符合欧洲标准EN50170所定义的PROFIBUS标准,基于令牌的的网络通信协议。这些协议是非同步的(串行的)基于字符的通信协议,字符格式包括一个起始位、8个数据位、一个偶校验位和一个停止位。其通信帧包括特定的起始和结束字符、源和目的站的地址、帧长度和数据校验和。 在波特率一致、各站地址不同的情况下,PPI,MPI和PROFIBUS可以同时在一个网络上运行,并且互不干扰。 这就是说如果一个网络上有S7-300、S7-200,S7-300之间可以通过MPI或PROFIBUS 通信,而在同时在同一个网络上的TP170 如果在一个通信网络上存在其他主站(如TD 200,或者上位计算机等),同时需要进行Micro/WIN的编程、监控,这就是多主站网络编程。 使用西门子的下列设备可以实现Micro/WIN的多主站编程: micro触摸屏可以与一个S7-200 CPU通信。 使用智能多主站电缆和Micro/WIN V3.2 SP4以上版本。新电缆可以在网络上传递令牌,因而自动支持多主站网络编程。 如果使用CP卡,如CP5511/CP5512(笔记本电脑PCMCIA卡)、CP5611(台式机PCI

S7-200PPI通讯协议

S7-200 PLC之PPI协议 S7-200 PLC之PPI协议 通过硬件和软件侦听的方法,分析PLC内部固有的PPI通讯协议,然后上位机采用VB编程,遵循PPI通讯协议,读写PLC数据,实现人机操作任务。这种通讯方法,与一般的自由通讯协议相比,省略了PLC的通讯程序编写,只需 编写上位机的通讯程序资源 S7-226的编程口物理层为RS-485结构,SIEMENS提供MicroWin软件,采用的是PPI(Point to Point)协议,可以用来传输、调试PLC程序。在现场应用中,当需要PLC与上位机通讯时,较多的使用自定义协议与上位机通讯。在这种通讯方式中,需要编程者首先定义自己的自由通讯格式,在PLC中编写代码,利用中断方式控制通讯端口的数据收发[4]。采用这种方式,PLC编程调试较为烦琐,占用PLC的软件中断和代码资源,而且当PLC的通讯口定义为自由通讯口时,PLC的编程软件无法对PLC进行监控,给PLC程序调试带来不便。 SIEMENS S7-200PLC的编程通讯接口,内部固化的通讯协议为PPI协议,如果上位机遵循PPI协议来读写PLC,就可以省略编写PLC的通讯代码。如何获得PPI协议?可以在PLC的编程软件读写PLC数据时,利用第三个串口侦听PLC 的通讯数据,或者利用软件方法,截取已经打开且正在通讯的端口的数据,然后归纳总结,解析出PPI协议的数据读写报文。这样,上位机遵循PPI协议,就可以便利的读写PLC内部的数据,实现上位机的人机操作功能。 软件设计 系统中测控任务由SIEMENS S7-226PLC完成,PLC采用循环扫描方式工作,当定时时间到时,执行数据采集或PID控制任务,完成现场的信号控制。计算机的监控软件采用VB编制,利用MSComm控件完成串口数据通讯,通讯遵循的协议为PPI协议[2]。 PPI协议 西门子的PPI(Point to Point)通讯协议采用主从式的通讯方式,一次读写操作的步骤包括:首先上位机发出读写命令,PLC作出接收正确的响应,上位机接到此响应则发出确认申请命令,PLC则完成正确的读写响应,回应给上位机数据。这样收发两次数据,完成一次数据的读写[5]。 其通讯数据报文格式大致有以下几类: 1、读写申请的数据格式如下:

西门子S7-200 PLC之PPI通讯协议

西門子S7-200 PLC之PPI通訊協議 西門子PPI通訊協議S7-200 PLC之PPI協議通過硬件和軟件偵聽的方法,分析PLC內部固有的PPI通訊協議,然後上位機采用VB編程,遵循PPI通訊協議,讀寫PLC數據,實現人機操作任務。這種通訊方法,與一般的自由通訊協議相比,省略了PLC的通訊程序編寫,隻需編寫上位機的通訊程序資源S7-226的編程口物理層為RS-485結構,SIEMENS提供MicroWin軟件,采用的是PPI(Point to Point)協議,可以用來傳輸、調試PLC程序。在現場應用中,當需要PLC與上位機通訊時,較多的使用自定義協議與上位機通訊。在這種通訊方式中,需要編程者首先定義自己的自由通訊格式,在PLC中編寫代碼,利用中斷方式控製通訊端口的數據收發。采用這種方式,PLC編程調試較為煩瑣,占用PLC 的軟件中斷和代碼資源,而且當PLC的通訊口定義為自由通訊口時,PLC的編程軟件無法對PLC進行監控,給PLC程序調試帶來不便。 SIEMENS S7-200PLC的編程通訊接口,內部固化的

通訊協議為PPI協議,如果上位機遵循PPI協議來讀寫PLC,就可以省略編寫PLC的通訊代碼。如何獲得PPI協議?可以在PLC的編程軟件讀寫PLC數據時,利用第三個串口偵聽PLC的通訊數據,或者利用軟件方法,截取已經打開且正在通訊的端口的數據,然後歸納總結,解析出PPI協議的數據讀寫報文。這樣,上位機遵循PPI協議,就可以便利的讀寫PLC 內部的數據,實現上位機的人機操作功能。 軟件設計 係統中測控任務由SIEMENS S7-226PLC完成,PLC采用循環掃描方式工作,當定時時間到時,執行數據采集或PID控製任務,完成現場的信號控製。計算機的監控軟件采用VB編製,利用MSComm控件完成串口數據通訊,通訊遵循的協議為PPI協議。PPI協議 西門子的PPI(Point to Point)通訊協議采用主從式的通訊方式,一次讀寫操作的步驟包括:首先上位機發出讀寫命令,PLC作出接收正確的響應,上位機接到此響應則發出確認申請命令,PLC則完成正確的讀寫響應,回應給上位機數據。這樣收發兩次數據,完成一次數據的讀寫[5]。 其通訊數據報文格式大致有以下幾類:

西门子PPI通讯协议

西门子PPI通讯协议 通过硬件和软件侦听的方法,分析PLC内部固有的PPI通讯协议,然后上位机采用VB编程,遵循PPI通讯协议,读写PLC数据,实现人机操作任务。这种通讯方法,与一般的自由通讯协议相比,省略了PLC的通讯程序编写,只需编写上位机的通讯程序资源S7-226的编程口物理层为RS-485结构,SIEMENS提供MicroWin软件,采用的是PPI(Point to Point)协议,可以用来传输、调试PLC程序。在现场应用中,当需要PLC与上位机通讯时,较多的使用自定义协议与上位机通讯。在这种通讯方式中,需要编程者首先定义自己的自由通讯格式,在PLC中编写代码,利用中断方式控制通讯端口的数据收发。采用这种方式,PLC编程调试较为烦琐,占用PLC的软件中断和代码资源,而且当PLC的通讯口定义为自由通讯口时,PLC的编程软件无法对PLC进行监控,给PLC程序调试带来不便。SIEMENS S7-200PLC的编程通讯接口,内部固化的通讯协议为PPI协议,如果上位机遵循PPI协议来读写PLC,就可以省略编写PL C的通讯代码。如何获得PPI协议?可以在PLC的编程软件读写PLC数据时,利用第三个串口侦听PLC的通讯数据,或者利用软件方法,截取已经打开且正在通讯的端口的数据,然后归纳总结,解析出PPI协议的数据读写报文。这样,上位机遵循PPI协议,就可以便利的读写PLC内部的数据,实现上位机的人机操作功能。 软件设计 系统中测控任务由SIEMENS S7-226PLC完成,PLC采用循环扫描方式工作,当定时时间到时,执行数据采集或PID控制任务,完成现场的信号控制。计算机的监控软件采用VB编制,利用MSComm控件完成串口数据通讯,通讯遵循的协议为PPI协议。 PPI协议 西门子的PPI(Point to Point)通讯协议采用主从式的通讯方式,一次读写操作的步骤包括:首先上位机发出读写命令,PLC作出接收正确的响应,上位机接到此响应则发出确认申请命令,PLC则完成正确的读写响应,回应给上位机数据。这样收发两次数据,完成一次数据的读写[5]。 其通讯数据报文格式大致有以下几类: 1、读写申请的数据格式如下:

20090524西门子ppi协议分析

西门子ppi协议分析: 西门子s7-200 plc之间或者plc与pc之间通信有很多种方式:自由口,ppi方式,mpi方式,profibus方式。使用自由口方式进行编程时,在上位机和plc 中都要编写数据通信程序。使用ppi协议进行通信时,plc可以不用编程,而且可读写所有数据区,快捷方便。但是西门子公司没有公布ppi协议的格式。用户如果想使用ppi协议监控,必须购买其监控产品或第三方厂家的组态软件。这样给用户自主开发带来一定困难,特别是自行开发的现场设备就不能通过ppi 协议接入plc。其它通讯方式编程也存在编程复杂,需要购买软件和授权等局限性(1)。通过数据监视、分析的方法,我们找出了ppi协议的关键报文格式,可用于上位机、现场设备与s7-200 cpu之间通讯。 pc与plc采用主从方式通讯,pc按如下的格式发读写指令,plc作出接收正确的响应(返回应答数据e5h或f9h见下文分析),上位机接到此响应则发出确认命令(10 02 5c 5e 16),plc再返回给上位机相应数据。 一般上位机要连接plc就要先发送如下数据 10 02 00 49 4b 16 你可以理解为我们常用的对讲机通话模式:00呼叫02,听到请回答 10起始符 02是之上位机要联系的下位级的地址站号 00就是上位级本本身自己的站号 49寻呼指令 16终止符其中4b为校验码,是这样得来的:02+00+49的最后两位就是校验码,这就是所说的偶校验或称和校验。计算器在16进制计算时公式(02+00+49)mod 100得出的数就是校验码,你计算一下是不是等于4b啊!其他的所有ppi 协议校验都是如此。假如02站号的plc收到寻呼信号那么会回答: 10 00 02 00 02 16 意思是:报告00 ,02收到,请指示这样的解释是不是有意思啊!你有更好的解释吗?

相关文档
最新文档