S7-200 PPI通信协议

S7-200 PPI通信协议

PPI通信协议是一种主从式的通信协议,上位机即PC机为主,PLC为从。通信开始由计算机发起,PLC予以响应。

1)、计算机按通信任务,用一定格式,向PLC发送通信命令。

2)、PLC收到命令后,进行命令校验,如无误,则向计算机发送数据E5HF9H,作出初步应答。

3)、计算机收到初步应答后,再向PLC发送SD DA SA FC FCS ED确认命令。

这里,SD为起始字符,为10HDA为目的,即PLC地址02HSA为数据源,即计算机地址00HFC为功能码,取5CHFCSSADAFC和的256余数,为5EH;末字节ED为结束符,也是16H。如按以上设定的计算机及PLC地址,则发送1002005C5E、及166个字节的十六进制数据,以确认所发命令。

4)、PLC收到此确认后,执行计算机所发送的通信命令,并向计算机返回相应数据。它的通信过程要往复两次才完成一次的通信,比较麻烦,但较严谨,不易出错。

SD  LE  LER  SD  DA  SA  FC  DASP  SSAP  DU  FCS  ED

SD:(Start Delimiter)开始定界符,占1字节,为68H

LE:Length)报文数据长度,占1字节,标明报文以字节计,从DADU的长度;

LER:Repeated Length)重复数据长度,同LE

SD: (Start Delimiter)开始定界符(68H)

DA:Destination Address)目标地址,占1字节,指PLCPPI上地址,一台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 Check Sequence)占1字节,从DADU之间的校验和的256余数;

ED:End Delimiter)结束分界符,占1字节,为16H

命令类型

1)读命令  读命令长度都是33个字节。字节021,都是相同的,为:“68 1B 1B 68 02 00 6C 32 01 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;为07AQ;为1E时,C;为81时,I;为82时,Q;为83时,M;为84时,V;为1F时,T

字节282930,软器件偏移量指针(存储器地址乘8),如:VB100,存储器地址为100,偏移量为800,转换成十六进制就是320H,则字节2830这三个字节就是0003、及20.

字节3132FCSED

 

返回数据  与发送命令格式数据相同,但包含一条数据。具体是:

SD  LE  LER  SD  DA  SA  FC  DASP  SSAP  DU  FCS  ED

这里的SDLELerSDSAFC与命令含义相同。但SDPLC地址,DA为计算机地址。此外:

字节16:数据块占用的字节数,即从字节21到校验和前的字节数。一条数据时:字,为06;双字,为08;其它为05.

字节22:数据类型,读字节为04.

字节2324:读字节时,为数据个数,单位以位计,1个字节为082个字节为1016进制计),余类推。

字节25及其后至校验和之前,为返回所读值。

如读VB100开始3个字节,其命令码为:

68 1B 1B 68 02 00 6C 32 01 00 00 00 00 00 0E 00 00 04 01 12 0A 10 02 00 03 00 01 84 00 03 20 8D 16(红色02为字节为单位,03为读3个字节)

返回码:

68 18 18 68 00 02 08 32 03 00 00 00 00 00 02 00 07 00 00 04 01 FF 04 00 18 99 34 56 8B 16

(这里红色993456分别为VB100VB101VB102的值)

2)写命令  写一个字节,命令长为38个字节,字节0~字节21为:

68 20 20 68 02 00 6C 32 01 00 00 00 00 00 0E 00 00 04 01 12 0A 10

写一个字,命令长为39个字节,字节0~字节21为:

68 21 21 68 02 00 6C 32 01 00 00 00 00 00 0E 00 00 04 01 12 0A 10

写一个双字数据,命令长为41个字节,字节021为:

68 23 23 68 02 00 6C 32 01 00 00 00 00 00 0E 00 00 04 01 12 0A 10

字节22~字节30,为写入数据的长、存储器类型、存储器类型、存储器偏移量。这些与读数据的命令相同。字节32如果是写入的是位数据,这一字节为03,,其它则为04.

字节34写入数据的位数:011位,081字节,10H1字,20H1双字。

字节35~字节40为校验码、结束符。

如果写入的是位、字节数据,字节35就是写入的值,字节3600,字节37为校验码,字节3816H、结束码。如果写入的是字数据(双字节),字节35、字节36就是写入的值,字节37为校验码,字节3816H、结束码.如果写入的是双字数据(4字节),字节35~字节38就是写入的值,字节39为校验码,字节4016H、结束码。

如写入QB0=FF,其命令为:

68 20 20 68 02 00 7C 32 01 00 00 00 00 00 0E 00 05 05 01 12 0A 10 02 00 01 00 00 82 00 00 00 00 04 00 08 FF 86 16

如写入VB100=12,其命令如下:

68 20 20 68 02 00 7C 32 01 00 00 00 00 00 0E 00 05 05 01 12 0A 10 02 00 01 00 01 84 00 03 20 00 04 00 08 12 BF16

如写入VW100=1234,其命令如下:

68 21 21 68 02 00 7C 32 01 00 00 00 00 00 0E 00 06 05 01 12 0A 10 04 00 01 00 01 84 00 03 20 00 04 00 10 12 34 FE 16

请注意以上红体字的含义。

以上命令如执行成功,则返回

68 12 12 68 00 02 08 32 03 00 00 00 00 00 02 00 01 00 00 05 01 FF 47 16

否则返回:

68 0F 0F 68 00 02 08 32 02 00 00 00 00 00 00 00 00 85 00 C3 16

3STOP命令  stop命令使得S7-200CPUrun状态转换到stop状态(此时cpu模块上的模式开关应处于runterm位置)。计算机发出如下命令:

68 1D 1D 68 02 00 6C 32 01 00 00 00 00 00 10 00 00 29 00 00 00 00 00 09 50 5F 50 52 4F 47 52 41 4D AA 16

PLC返回:E9,同时PLC即转为stop状态。

但计算机再发确认报文(10 02 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

到此,才算完成这个通信过程。

4RUN命令  run命令使得S7-200 cpustop状态转换到run状态(此时cpu模块上的模式开关应处于runterm位置)。PC机发出如下命令:

68 21 21 68 02 00 6C 32 01 00 00 00 00 00 14 00 00 28 00 00 00 00 00 00 FD 00 00 09 50 5F 50 52 4F 47 52 41 4D AA 16

PLC返回:E9,同时PLC即转为RUN状态。

但计算机再发确认报文(10 02 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

至此,才算完成这个通信过程。

注:以上介绍的不是西门子发布的正式通信协议,还有其它内容。但多带有一些猜测的成分。建议结合些通信的例子来进行测试。

 

 

 

 

你可能感兴趣的:(S7-200 PPI通信协议)