PPI协议分析.doc
上传人:sy****28 上传时间:2024-09-13 格式:DOC 页数:10 大小:48KB 金币:14 举报 版权申诉
预览加载中,请您耐心等待几秒...

PPI协议分析.doc

PPI协议分析.doc

预览

在线预览结束,喜欢就下载吧,查找使用更方便

14 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

:通过数据监视,分析的方法,找出了PPI协议的关键报文格式,可用于上位机、现场设备与S7-200CPU之间通讯。:PLC,PPI,协议西门子S7-200PLC之间或者PLC与PC之间通信有很多种方式:自由口,PPI方式,MPI方式,Profibus方式。使用自由口方式进行编程时,在上位机和PLC中都要编写数据通信程序。使用PPI协议进行通信时,PLC可以不用编程,而且可读写所有数据区,快捷方便。但是西门子公司没有公布PPI协议的格式。用户如果想使用PPI协议监控,必须购买其监控产品或第三方厂家的组态软件。这样给用户自主开发带来一定困难,特别是自行开发的现场设备就不能通过PPI协议接入PLC。其它通讯方式编程也存在编程复杂,需要购买软件和授权等局限性(1)。通过数据监视、分析的方法,我们找出了PPI协议的关键报文格式,可用于上位机、现场设备与S7-200CPU之间通讯。西门子的Step7Micro/Win32是用于S7-200系列PLC的开发工具,它使用PC机上的COM口通过一条PC/PPI编程电缆连到PLC的编程口上。这说明,PC实际上是可以通过串口同S7-200CPU通讯。只是我们不知道通讯协议而已。通过截获PC机串口上的收发数据,对照Step7软件发出的指令,我们就有可能分析出有关指令的报文和通讯方式;然后,直接通过串口向PLC发送报文,以验证这些指令报文是否正确。本着这一思想,我们采用以下步骤获得这些报文。首先制作一个串口的分支器,COM1的RX、TX分别接到COM2的TX、RX,即交叉接线,使得COM1发的数据COM2能收到。PC/PPI编程电缆接在COM1上,这样,Step7Micro/Win32发给PLC的报文就可以在COM2上接收了。我们按S7-200系统手册设置好两个串口,参数要一样,均为9600,8,偶校验,1位停止位。然后设置好Step7软件,使之能与S7-200CPU正常通讯。从Step7软件中发出一个明确指令,COM2上的监视软件就能显示这条报文了(用16进制显示)。通过与Profibus标准的类比(2)我们就可以得到一些关键的报文了。这种方法比分析PLC中NETR,NETW指令要直接、全面(3)。PC与PLC采用主从方式通讯,PC按如下的格式发读写指令,PLC作出接收正确的响应(返回应答数据E5H或F9H见下文分析),上位机接到此响应则发出确认命令10025C5E16,PLC再返回给上位机相应数据。SDLELErSDDASAFCDSAPSSAPDUFCSEDSD:开始符(68H)LE、Ler:长度(从DA到DU)DA:目的地址SA:源地址FC:功能码(6CH)DSAP:目的服务存取点SSAP:源服务存取点DU:数据单元FCS:校验和ED:结束符(16H)一次读一条数据对于一次读取一个数据,读命令都是33个字节。前面的0—21字节是相同的,为:681B1B6802006C320100000000000E00000401120A10因为是PC上发的读PLC数据的命令,SA=00,DA=02,如果有多个站,DA要改成相应的站号。读命令中从DA到DU的长度为1B即27个字节。从22字节开始根据读取数据的类型、位置不同而不同。表一是读不同存储器命令的Byte22—32。字节2223242526272829303132功能读取长度数据个数*存储器类型偏移量校验结束读q0.00100010000820000006416读m0.00100010000830000006516读M0.10100010000830000016616读SMB34020001000005000110F916读VB1000200010001840003208B16读VW1000400010001840003208D16读vd1000600010001840003208F16读i0.50100010000810000056816"读i0.70100010000810000076A16"表一读命令的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存储器偏移