PPI协议详解 ppi通讯协议 ppi通信协议 vb与ppi协议通讯.docx

上传人:b****6 文档编号:3380464 上传时间:2022-11-22 格式:DOCX 页数:19 大小:28.60KB
下载 相关 举报
PPI协议详解 ppi通讯协议 ppi通信协议 vb与ppi协议通讯.docx_第1页
第1页 / 共19页
PPI协议详解 ppi通讯协议 ppi通信协议 vb与ppi协议通讯.docx_第2页
第2页 / 共19页
PPI协议详解 ppi通讯协议 ppi通信协议 vb与ppi协议通讯.docx_第3页
第3页 / 共19页
PPI协议详解 ppi通讯协议 ppi通信协议 vb与ppi协议通讯.docx_第4页
第4页 / 共19页
PPI协议详解 ppi通讯协议 ppi通信协议 vb与ppi协议通讯.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

PPI协议详解 ppi通讯协议 ppi通信协议 vb与ppi协议通讯.docx

《PPI协议详解 ppi通讯协议 ppi通信协议 vb与ppi协议通讯.docx》由会员分享,可在线阅读,更多相关《PPI协议详解 ppi通讯协议 ppi通信协议 vb与ppi协议通讯.docx(19页珍藏版)》请在冰豆网上搜索。

PPI协议详解 ppi通讯协议 ppi通信协议 vb与ppi协议通讯.docx

PPI协议详解ppi通讯协议ppi通信协议vb与ppi协议通讯

PPI协议详解ppi通讯协议ppi通信协议vb与ppi协议通讯

分类:

编程之外2012-06-1318:

32451人阅读评论(0)收藏举报

vb通讯byte存储cservice

PPI协议详解ppi通讯协议 ppi通信协议 vb与ppi协议通讯

PPI协议详解ppi通讯协议 ppi通信协议 vb与ppi协议通讯

我们提供PPI协议的官方文档,协议更新时间为2005年,下面是我们根据文档解析的PPI读取变量返回数据,网上的文献大部分都是讲解如何发送的,对于接收提的很少,其中接收有很多控制位,下面的表格都一一列出,如果想做可靠的工控必须对这些位进行解析,对照官方文档才能做出可靠的工控产品西门官方PPI协议下载

说明

PPI帧头

PPI数据载荷区

PPI帧尾

数据头

参数1

参数2

变量1

起始

长度(重复)

起始

目的地址

源地址

功能码

PPI协议ID

远程操作

冗余识别

16位

默认0

数据参

考码

16位

参数个数

16位

数据长度

错误

标志

错误码

服务ID

变量个数

访问结果

数据类型

数据位数(bit个数)

数据区

校验+结束符

字节序

0

1

2

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

读VB0返回

68

16

16

68

00

02

08

32

03

00

00

00

00

00

02

00

05

00

00

04

01

ff

04

00

08

7f

d5

16

 

 

 

读VW0返回

68

17

17

68

00

02

08

32

03

00

00

00

00

00

02

00

06

00

00

04

01

ff

04

00

10

7f

ff

dd

16

 

 

读VW1返回

68

17

17

68

00

02

08

32

03

00

00

00

00

00

02

00

06

00

00

04

01

ff

04

00

10

ff

ff

5d

16

 

 

读VD0返回

68

19

19

68

00

02

08

32

03

00

00

00

00

00

02

00

08

00

00

04

01

ff

04

00

20

7f

ff

ff

ff

ed

16

读M0返回

68

16

16

68

00

02

08

32

03

00

00

00

00

00

02

00

05

00

00

04

01

ff

04

00

08

08

5e

16

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

S7-200PPI通信协议

 

PPI通信协议是一种主从式的通信协议,上位机即PC机为主,PLC为从。

通信开始由计算机发起,PLC予以响应。

 

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

 

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

 

3)、计算机收到初步应答后,再向PLC发送SDDASAFCFCSED确认命令。

 

这里,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:

(StartDelimiter)开始定界符,占1字节,为68H

 

LE:

(Length)报文数据长度,占1字节,标明报文以字节计,从DA到DU的长度;

 

LER:

(RepeatedLength)重复数据长度,同LE

 

SD:

(StartDelimiter)开始定界符(68H)

 

DA:

(DestinationAddress)目标地址,占1字节,指PLC在PPI上地址,一台PLC时,一般为02,多台PLC时,则各有各的地址;

 

SA:

(SourceAddress)源地址,占1字节,指计算机在PPI上地址,一般为00;

 

FC:

(FunctionCode)功能码,占1字节,6CH一般为读数据,7CH一般为写数据

 

DSAP:

(DestinationServiceAccessPoint)目的服务存取点,占多个字节

 

SSAP:

(SourceServiceAccessPoint)源服务存取点,占多个字节

 

DU:

(DataUnit)数据单元,占多个字节

 

FCS:

(FrameCheckSequence)占1字节,从DA到DU之间的校验和的256余数;

 

ED:

(EndDelimiter)结束分界符,占1字节,为16H

 

命令类型

 

1)读命令 读命令长度都是33个字节。

字节0~21,都是相同的,为:

“681B1B6802006C320100000000000E00000401120A10”。

而从字节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;为07时AQ;为1E时,C;为81时,I;为82时,Q;为83时,M;为84时,V;为1F时,T。

 

字节28、29及30,软器件偏移量指针(存储器地址乘8),如:

VB100,存储器地址为100,偏移量为800,转换成十六进制就是320H,则字节28到30这三个字节就是00、03、及20.

 

字节31、32为FCS和ED。

 

 

 

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

具体是:

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

 

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

 

这里的SD、LE、Ler、SD、SA及FC与命令含义相同。

但SD为PLC地址,DA为计算机地址。

此外:

 

字节16:

数据块占用的字节数,即从字节21到校验和前的字节数。

一条数据时:

字,为06;双字,为08;其它为05.

 

字节22:

数据类型,读字节为04.

 

字节23、24:

读字节时,为数据个数,单位以位计,1个字节为08;2个字节为10(16进制计),余类推。

 

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

 

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

 

681B1B6802006C320100000000000E00000401120A100200030001840003208D16(红色02为字节为单位,03为读3个字节)

 

681B1B6802006C320100000000000E00000401120A10040001000184000D088416

 

返回码:

 

681818680002083203000000000002000700000401FF0400189934568B16

 

(这里红色99、34、56分别为VB100、VB101、VB102的值)

 

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

 

6820206802006C320100000000000E00000401120A10

 

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

 

6821216802006C320100000000000E00000401120A10

 

写一个双字数据,命令长为41个字节,字节0~21为:

 

6823236802006C320100000000000E00000401120A10

 

 

字节22~字节30,为写入数据的长、存储器类型、存储器类型、存储器偏移量。

这些与读数据的命令相同。

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

 

字节34写入数据的位数:

01:

1位,08:

1字节,10H:

1字,20H:

1双字。

 

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

 

如果写入的是位、字节数据,字节35就是写入的值,字节36为00,字节37为校验码,字节38为16H、结束码。

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

 

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

 

6820206802007C320100000000000E00050501120A1002000100008200000000040008FF8616

 

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

6820206802007C320100000000000E00050501120A100200010001840003200004000812BF16

PLC返回数据E5后,确认写入命令,发送以下数据:

1002005C5E16

PLC返回数据E5后,写入成功。

 

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

6821216802007C320100000000000E00060501120A10040001000184000320000400101234FE16

PLC返回数据E5后,确认写入命令,发送以下数据:

1002005C5E16

PLC返回数据E5后,写入成功。

 

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

 

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

 

681212680002083203000000000002000100000501FF4716

 

否则返回:

 

680F0F68000208320200000000000000008500C316

 

3)STOP命令 stop命令使得S7-200CPU从run状态转换到stop状态(此时cpu模块上的模式开关应处于run或term位置)。

计算机发出如下命令:

 

681D1D6802006C3201000000000010000029000000000009505F50524F4752414DAA16

 

PLC返回:

E5,同时PLC即转为stop状态。

 

但计算机再发确认报文(1002005C5E16)

 

PLC将返回:

68101068000208320300000000000100000000296916

 

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

 

4)RUN命令 run命令使得S7-200cpu从stop状态转换到run状态(此时cpu模块上的模式开关应处于run或term位置)。

PC机发出如下命令:

 

6821216802006C3201000000000014000028000000000000FD000009505F50524F4752414DAA16

 

PLC返回:

E5,同时PLC即转为RUN状态。

 

但计算机再发确认报文(1002005C5E16)

 

PLC将返回:

68101068000208320300000000000100000000296916

 

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

 

注:

以上介绍的不是西门子发布的正式通信协议,还有其它内容。

 

建议结合些通信的例子来进行测试。

 

  PC与PLC采用主从方式通讯,PC按如下文的格式发读写指令,PLC作出接收正确的响应(返回应答数据E5H或F9H见下文分析),上位机接到此响应则发出确认命令(10025C5E16),PLC再返回给上位机相应数据。

一般上位机要连接PLC就要先发送如下寻呼数据100200494B16同志们呐!

我们可都是有血、有肉、有思想、有灵感的高级动物啊,面对这么多枯燥、无味、复杂、混乱的机器数字你怎么记呢?

反正我是记不住啊!

(^_^开始洗脑)这时你可以闭上眼睛,安静、静、再静。

想一想战争时期的战地对讲机通话模式,那么这个指令(100200494B16)就可以理解为:

00呼叫02,听到请回答。

10起始符02是上位机要联系的下位级的地址站号,就是要找的人00就是上位级本本身自己的站号49寻呼指令16终止符其中4B为校验码,是这样得来的:

02+00+49的最后两位就是校验码,这就是所说的偶校验或称和校验也称余校验,因为取的是余数。

计算器在16进制计算时公式(02+00+49)mod100得出的数就是校验码,你计算一下是不是等于4B啊!

其他的所有PPI协议校验都是如此。

假如02站号的PLC收到寻呼信号那么会回答:

100002000216 意思是:

报告00,02收到,请指示 这样的解释是不是有意思啊!

你有更好的解释吗?

接下来呢,找到了要寻呼的人PC就是司令啦就可以发号施令了,发号施令后PLC正确接收后就会发送E5字符,意思是:

“02洞两明白”。

其实啊,说到这里PLC只说他明白,他已经明白了上位机PC的指示,但并没有执行命令,那么要怎么他才执行命令呢?

就是上位机PC发出确认命令后才执行。

这时上位机会发出(10025C5E16),意思是:

“请立即执行”。

然后PLC就干他应当干的工作了啊!

原来PLC也不容易啊,怪不得叫下位机呢!

 说了这么多乱不乱呐!

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

读命令分析:

一次读一条数据

SDLELERSDDASAFCDASPSSAPDUFCSED

SD:

(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

SD

DA

SA

FC

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

开始符

长度

长度

开始符

站号

源地址

功能码

协议识别

远程控制

冗余识别

冗余识别

协议数据

单元参考

参数长度

参数长度

数据长度

数据长度

04读05写

变量地址数

 

 

默认ID

68

1B

1B

68

02

00

6C

32

01

00

00

00

00

00

0E

00

00

04

01

12

0A

10

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

681B1B6802006C320100000000000E00000401120A100200080000030005E0D216

22

23

24

25

26

27

28

29

30

31

32

 

 

 

 

 

 

 

 

DU

FCS

DE

读取长度

数据个数

存储器类型

偏移量

校验码

结束符

02

00

08

00

00

03

00

05

E0

D2

16

因为是PC上发的读PLC数据的命令,SA=00,DA=02,如果有多个站,DA要改成相应的站号。

读命令中从DA到DU的长度为1B即27个字节。

从22字节开始根据读取数据的类型、位置不同而不同。

上表是读不同存储器命令的Byte22—32。

字节

22

23

24

25

26

27

28

29

30

31

32

功能

读取长度16位小端

数据个数16位小端

存储器类型

偏移量

校验码

结束符

读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

上表读命令的Byte22-32从表中我们可以得出以下结果:

Byte22读取数据的长度

01:

1Bit02:

1Byte

04:

1Word06:

DoubleWord

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

Byte26存储器类型,01:

V存储器00:

其它

Byte27存储器类型

04:

S05:

SM06:

AI07:

AQ1E:

C

81:

I82:

Q83:

M84:

V1F:

T

Byte28,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=8

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

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

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

写命令分析:

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

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

0

1

2

3

4

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 临床医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1