Siemens PPI协议分析Word格式文档下载.docx
- 文档编号:19412283
- 上传时间:2023-01-06
- 格式:DOCX
- 页数:15
- 大小:63.42KB
Siemens PPI协议分析Word格式文档下载.docx
《Siemens PPI协议分析Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《Siemens PPI协议分析Word格式文档下载.docx(15页珍藏版)》请在冰豆网上搜索。
功能码(6CH)DSAP:
目的服务存取点
SSAP:
源服务存取点DU:
数据单元
FCS:
校验和ED:
结束符(16H)
3.1读命令分析
一次读一条数据
对于一次读取一个数据,读命令都是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:
1Byte
04:
1Word06:
DoubleWord
Byte24数据个数,这里是01,一次读多个数据时见下面的说明。
Byte26存储器类型,01:
V存储器00:
其它
Byte27存储器类型
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个字节的数据。
3.2写命令分析
一次写一个DoubleWord类型的数据,写命令是40个字节,其余为38个字节。
写一个DoubleWord类型的数据,前面的0—21字节为:
6823236802006C320100000000000E00000401120A10
写一个其它类型的数据,前面的0—21字节为:
(与上面比较,只是长度字节发生变化)
6821216802006C320100000000000E00000401120A10
从22字节开始根据写入数据的值和位置不同而变化。
表二是几个写命令的Byte22—40。
字节22232425262728293031323334353637383940
写入位置及值长度个数类型偏移量位数值、校验码、结束符
M0.0=10100010000830000000003000101007116
M0.0=00100010000830000000003000100007016
M0.1=10100010000830000010003000101007216
vb100=10020001000184000320000400081000AE16
vb100=FF02000100018400032000040008FF009D16
VW100=FFFF04000100018400032000040010FFFFA616
VD100=FFFFFFFF06000100018400032000040020FFFFFFFFB816
表二写命令的Byte22—40
经分析我们可以得出以下结果:
Byte22--Byte30写入数据的长度、存储器类型、存储器偏移量与读命令相同。
T,C等不能用写命令写入。
Byte32如果写入的是位数据这一字节为03,其它则为04
Byte34写入数据的位数
01:
1Bit08:
1Byte10H:
1Word20H:
1DoubleWord
Byte35--40值、校验码、结束符
如果写入的是位、字节数据,Byte35就是写入的值,Byte36=00,Byte37=检验码,Byte38=16H,结束。
如果写个的是字数据(双字节),Byte35,Byte36就是写入的值,Byte37=检验码,Byte38=16H,结束。
如果写个的是双字数据(四字节),Byte35—38就是写入的值,Byte39=检验码,Byte40=16H,结束。
3.3其它命令分析
强制写入
I、Q、S等不能使用上述的写命令写入数据,只能用强制写入的方式。
前0—35字节值如下(长度字段要根据实际情况而定),需要注意的是Byte8=07,
682B2B6802006C320700000000000C00120001120812480B0000000000FF09000E000110
后面的内容如下:
Byte32占位字节,从下一字节开始到校验和前的字节数。
说明同读数据的Byte14.
Byte36强制写入数据的长度
Byte38数据个数,这里是01,一次强制写多个数据时见下面的说明。
Byte40存储器类型
Byte41存储器类型,见读命令的说明。
Byte42、43、44存储器偏移量指针(存储器地址*8)
Byte45、46、47、48值、校验码、结束符
取消强制写
强制写入I、Q等后,这些值就不能被程序改变,除非使用”取消强制命令”。
取消强制命令的格式与强制写入相似,变化的有以下几点:
(1)是没有”值”这一段,即没有Byte45—48。
这影响到长度字节LE,LEr;
占位字节Byte32.
(2)Byte16=10H,(3)Byte32=0CH,也就是第一条,没有”值”这一段,数据块长度变短了。
对于一次强制写入或取消多个数据的情况可以参照写入命令写出相应的报文,这里不再给出。
STOP命令
STOP命令使得S7-200CPU从RUN状态转换到STOP状态(此时CPU模块上的模式开关开应打在RUN或TERM位置)。
PC发出如下命令,PLC返回F9,此时PLC已进入等待状态,PC再发确认报文(10025C5E16),完成一个命令过程。
681D1D6802006C3201000000000010000029000000000009505F50524F4752414DAA16
RUN命令
RUN命令使得S7-200CPU从STOP状态转换到RUN状态(此时CPU模块上的模式开关开应打在RUN或TERM位置)。
PC发出下命令,PLC返回F9,此时PLC已进入运行状态,PC再发确认报文(10025C5E16),完成一个命令过程。
6821216802006C3201000000000014000028000000000000FD000009505F50524F4752414DAA16
3.4读出数据分析
一次读出一条数据
PLC响应的数据也是用PPI封装的。
如果用一次读一条数据命令,响应的报文中就只包含一条数据,此响应报文的Byte16<
=8。
Byte04:
DA=00Byte05:
SA=02即从02PLC站发往PC。
Byte16:
数据块占位字节,从Byte21到校验和前的字节数。
一条数据时:
Word=06DoubleWord=08其它为05。
Byte22:
数据类型,位=3,其它=4。
Byte24:
数据宽度,Bit=01,Byte=08,Word=10H,DoubleWord=20H
Byte25—28:
值。
如果网络上只可能有一个站会发回响应报文,那么可以简单的根据LE长度字节判断返回值的位置:
LE=16H,返回值是字节,或位类型的值,响应报文的Byte25即是返回值;
LE=17H,返回值是字(双字节)类型的值,响应报文的Byte25,26即是返回值;
LE=19H,返回值是双字(四字节)类型的值,响应报文的Byte25—28即是返回值。
更准确的方式是要根据返回报文的SA,DA,及存储器位置等信息识别目标地址和源地址,确认是这次申请的返回数据,然后经过校验检查,得到正确的数据。
一次读出多条数据
如果用的是一次读多条数据的命令,响应的报文中就包含有多条数据。
这些数据只有类型参数,没有偏移量参数,所以要注意根据读命令的顺序将其一一对应起来。
数据块占位字节,从Byte21到校验和前的字节数,与数据块数量和类型有关。
Byte20:
数据块的个数。
Byte21开始为数据块,每一个数据块都以FF04开始,接下来的两个字节表示这一数据块的长度,以位计算,然后依次是连续的数据。
下一个数据块也是以FF04开始,重复上述格式,直到结束。
4应用
PC与与PLC通讯
在采用PC机与PLC通讯时,计算机采用PPI电缆或普通的485串口卡与PLC的编程口连接,PC机采用VB编程,遵循PPI协议,主从式的通讯方式,一次读写操作的步骤包括:
首先上位机发出读写命令,PLC作出接收正确的响应(返回应答数据E5H),上位机接到此响应则发出确认命令(10025C5E16),PLC完成正确的读写响应,返回给上位机相应数据。
这样收发两次数据,完成一次数据的读写。
那么我们就可以利用上述PPI协议,读写S7-200PLC中的各种类型数据,包括I、Q、SM、M、V、T、C、S等数据类型,能够直接读出以上变量中的位、字节、字、双字等,(其中读位变量时,实际是读取该位所在的字节值)。
可以改变PLC的运行状态(RUN/STOP)。
在编程时,最好将读取的检测值、输出值等数据,存放在PLC的一个连续的变量区中,当上位机读取PLC的数据时,就可以一次读出这组连续的数据,减少数据的分次频繁读取。
当修改设定值等数据时,进行写数据的通讯操作。
现场设备与PLC通讯
利用PPI协议除了能与上位机(PC)通讯外,更重要的是为现场设备与S7-200CPU之间的通讯提供了捷径。
自行开发的设备可以方便的利用PPI协议通过485/232接口接入S7-200CPU,联入PLC的网络,包括控制面板,采集器等。
5总结
通过分析STEP7Micro/win32软件与S7-200CPU的通讯数据,我们得到了西门子PPI协议的关键报文格式,这一结果对工程实践具有较高的参考价值。
在不使用西门子或其它组态软件的情况下,利用分析得到的PPI协议实现了上位机对PLC的监控。
现场设备与PLC通讯方面的工作正在进行中。
另外这种对通讯端口进行监测、分析的方法也对一些未知协议的测定和通讯错误的检查具有指导意义。
参考资料
1.周晓平,姜建芳,苏少钰,陈迅.S7-200系列PLC与监控计算机通信实现的研究.微计算机信息2004;
1.
2.SIEMENS.SIMATICS7-200可编程序控制器系统手册.02ed,2000.
3.郝莉,王东兴.PROFIBUS从站与S7-200PLC的通讯研究.北京机械工业学院学报(综合版)2000;
15
西门子PPI通讯协议
2.
西门子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
Point)通讯协议采用主从式的通讯方式,一次读写操作的步骤包括:
首先上位机发出读写命令,PLC作出接收正确的响应,上位机接到此响应则发出确认申请命令,PLC则完成正确的读写响应,回应给上位机数据。
这样收发两次数据,完成一次数据的读写[5]。
其通讯数据报文格式大致有以下几类:
1、读写申请的数据格式如下:
SD
LE
LER
DA
SA
FC
DASP
SSAP
DU
FCS
ED
(Start
Delimiter)开始定界符(68H)
LE:
(Length)报文数据长度
LER:
(Repeated
Length)重复数据长度
SA:
(Source
Address)源地址,指该地址的指针,为地址值乘以8
DA:
(Destination
Address)目标地址,指该地址的指针,为地址值乘以8
FC:
(Function
Code)功能码
DSAP:
Service
Access
Point)目的服务存取点
SSAP:
Point)源服务存取点
DU:
(Data
Unit)数据单元
FCS:
(Frame
Check
Sequence)校验码
ED:
(End
Delimiter)结束分界符(16H)
报文数据长度和重复数据长度为自DA至DU的数据长度,校验码为DA至DU数据的和校验,只取其中的末字节值。
在读写PLC的变量数据中,读数据的功能码为
6CH,写数据的功能码为
7CH。
2、PLC接收到读写命令,校验后正确,返回的数据格式为
E5H
3、确认读写命令的数据格式为:
其中SD为起始符,为10H
SA为数据源地址
DA为目的地址
FC为功能码,取5CH
FCS为SA+DA+FC的和的末字节
ED为结束符,取16H
PPI协议的软件编制
在采用上位机与PLC通讯时,上位机采用VB编程,计算机采用PPI电缆或普通的485串口卡与PLC的编程口连接,通讯系统采用主从结构,上位机遵循PPI协议格式,发出读写申请,PLC返回相应的数据。
程序实现如下:
1、串口初始化程序:
MSComm1.CommPort
=
1
MSComm1.Settings
"
9600,e,8,1"
MSComm1.InputLen
MSComm1.RThreshold
MSComm1.InputMode
comInputModeBinary
PPI协议定义串口为以二进制形式收发数据,这样报文的通讯效率比ASCII码高。
2、串口读取数据程序,以读取VB100数据单元为例:
Dim
Str_Read(0
To
32)
‘定义发送的数据为字节为元素的数组。
Str_
Read
(32)
&
H16
‘相应的数组元素赋值,按照以下格式:
(29)
(100*8)
\
256
‘地址为指针值,先取高位地址指针
(30)
Mod
‘取低位地址指针
(24)
1
‘读取的数据长度(Byte的个数)
For
I=4
30
Temp_FCS
+
Str_Read(i)
Next
I
Str_Read(31)=
‘计算FCS校验码,其它数组元素赋值省略。
68
1B
2
0
6C
32
E
4
12
A
10
84
3
20
8B
16
PLC返回数据
E5
后,确认读取命令,发送以下数据:
5C
5E
16
然后上位机VB程序接受到以下数据:
8
5
FF
22
78
首先识别目标地址和源地址,确认是这次申请的返回数据,然后经过校验检查,正确后解析出第26号数据(&
H22)即为VB100字节的数据。
3、串口写入数据程序,以写VB100数据单元为例:
Str_Write(0
37)
Str_Write
(37)
‘相应的数组元素赋值,按照以下格式
(35)
H10
‘要写入的数据值
7C
C
B9
后,确认写入命令,发送以下数据:
47
这是PLC正确接收并写入信息的返回数据。
4、串口接收程序:
在数据接收程序中,利用VB中MSComm控件,一次接收缓冲
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Siemens PPI协议分析 PPI 协议 分析