




免费预览已结束,剩余1页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
.Siemens PPI协议分析摘 要:通过数据监视,分析的方法,找出了PPI协议的关键报文格式,可用于上位机、现场设备与S7-200 CPU之间通讯。关键字:PLC ,PPI ,协议1 前言西门子S7-200 PLC之间或者PLC与PC之间通信有很多种方式:自由口,PPI方式,MPI方式,Profibus方式。使用自由口方式进行编程时,在上位机和PLC中都要编写数据通信程序。使用PPI协议进行通信时,PLC可以不用编程,而且可读写所有数据区,快捷方便。但是西门子公司没有公布PPI协议的格式。用户如果想使用PPI协议监控,必须购买其监控产品或第三方厂家的组态软件。这样给用户自主开发带来一定困难,特别是自行开发的现场设备就不能通过PPI协议接入PLC。其它通讯方式编程也存在编程复杂,需要购买软件和授权等局限性(1)。通过数据监视、分析的方法,我们找出了PPI协议的关键报文格式,可用于上位机、现场设备与S7-200 CPU之间通讯。2 分析方法西门子的Step 7 Micro/Win32 是用于S7-200系列PLC的开发工具,它使用PC机上的COM口通过一条PC/PPI编程电缆连到PLC的编程口上。这说明,PC实际上是可以通过串口同S7-200 CPU通讯。只是我们不知道通讯协议而已。通过截获PC机串口上的收发数据,对照Step 7软件发出的指令,我们就有可能分析出有关指令的报文和通讯方式;然后,直接通过串口向PLC发送报文,以验证这些指令报文是否正确。本着这一思想,我们采用以下步骤获得这些报文。首先制作一个串口的分支器,COM1的RX、TX分别接到COM2的TX、RX,即交叉接线,使得COM1发的数据COM2能收到。PC/PPI编程电缆接在COM1上,这样,Step7 Micro/Win32发给PLC的报文就可以在COM2上接收了。我们按S7-200系统手册设置好两个串口,参数要一样,均为9600,8,偶校验,1位停止位。然后设置好Step7软件,使之能与S7-200 CPU正常通讯。从Step7软件中发出一个明确指令,COM2上的监视软件就能显示这条报文了(用16进制显示)。通过与Profibus标准的类比(2)我们就可以得到一些关键的报文了。这种方法比分析PLC中NETR,NETW指令要直接、全面(3)。3 PPI协议分析PC与PLC采用主从方式通讯,PC按如下的格式发读写指令,PLC作出接收正确的响应(返回应答数据E5H或F9H见下文分析),上位机接到此响应则发出确认命令(10 02 5C 5E 16),PLC再返回给上位机相应数据。SDLELErSDDASAFCDSAPSSAPDUFCSEDSD:开始符(68H)LE、Ler:长度(从DA到DU)DA:目的地址SA:源地址FC:功能码 (6CH)DSAP:目的服务存取点SSAP:源服务存取点DU:数据单元FCS:校验和ED:结束符(16H)3.1 读命令分析一次读一条数据对于一次读取一个数据,读命令都是33个字节。前面的021字节是相同的,为 :0 1468 1B 1B 68 02 00 6C 32 01 00 00 00 00 00 0E 00 00 04 01 12 0A 10因为是PC上发的读PLC数据的命令,SA=00,DA=02,如果有多个站,DA要改成相应的站号。读命令中从DA到DU的长度为1B即27个字节。从22字节开始根据读取数据的类型、位置不同而不同。表一是读不同存储器命令的Byte2232。字节2223242526272829303132功能读取长度数据个数*存储器类型偏移量校验结束读q0.00100010000820000006416读m0.00100010000830000006516读M0.10100010000830000016616读SMB34020001000005000110F916读VB1000200010001840003208B16读VW1000400010001840003208D16读vd1000600010001840003208F16读i0.50100010000810000056816读i0.70100010000810000076A16表 一 读命令的Byte22-32从表中我们可以得出以下结果:Byte 22 读取数据的长度01:1 Bit02:1 Byte 04:1 Word06:Double WordByte 24数据个数,这里是01 ,一次读多个数据时见下面的说明。Byte 26 存储器类型,01:V存储器 00:其它Byte 27 存储器类型04:S05:SM 06:AI07:AQ1E: C81:I82:Q83:M84:V1F: TByte 28,29,30存储器偏移量指针(存储器地址*8),如:VB100,存储器地址为100,偏移量指针为800,转换成16进制就是320H,则Byte 2829这三个字节就是: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=8Byte 19-30 按上述一次读一个数据的格式依次列出,Byte 31-42 另一类型的数据,也是按上述格式给出。以此类推,一次最多读取222个字节的数据。3.2 写命令分析一次写一个Double Word类型的数据,写命令是40个字节,其余为38个字节。写一个Double Word类型的数据,前面的021字节为 :68 23 23 68 02 00 6C 32 01 00 00 00 00 00 0E 00 00 04 01 12 0A 10写一个其它类型的数据,前面的021字节为 :(与上面比较,只是长度字节发生变化)68 21 21 68 02 00 6C 32 01 00 00 00 00 00 0E 00 00 04 01 12 0A 10从22字节开始根据写入数据的值和位置不同而变化。表二是几个写命令的Byte2240。字 节22232425262728293031323334353637383940写入位置及值长度个数类型偏移量位数值、校验码、结束符M0.0=10100010000830000000003000101007116M0.0=00100010000830000000003000100007016M0.1=10100010000830000010003000101007216vb100=10020001000184000320000400081000AE16vb100=FF02000100018400032000040008FF009D16VW100=FFFF04000100018400032000040010FFFFA616VD100=FFFFFFFF06000100018400032000040020FFFFFFFFB816表二 写命令的Byte2240经分析我们可以得出以下结果:Byte 22- Byte 30 写入数据的长度、存储器类型、存储器偏移量与读命令相同。T,C等不能用写命令写入。Byte 32 如果写入的是位数据这一字节为03,其它则为04Byte 34 写入数据的位数01: 1 Bit08: 1 Byte10H: 1 Word 20H: 1 Double Word Byte 35-40值、校验码、结束符如果写入的是位、字节数据,Byte35就是写入的值,Byte36=00,Byte37=检验码,Byte38=16H,结束。如果写个的是字数据(双字节),Byte35,Byte36就是写入的值, Byte37=检验码,Byte38=16H,结束。如果写个的是双字数据(四字节),Byte3538就是写入的值, Byte39=检验码,Byte40=16H,结束。3.3 其它命令分析强制写入I、Q、S 等不能使用上述的写命令写入数据,只能用强制写入的方式。前035字节值如下(长度字段要根据实际情况而定),需要注意的是Byte8=07,68 2B 2B 68 02 00 6C 32 07 00 00 00 00 00 0C 00 12 00 01 12 08 12 48 0B 00 00 00 00 00 FF 09 00 0E 00 01 10 后面的内容如下:Byte 32 占位字节,从下一字节开始到校验和前的字节数。说明同读数据的Byte 14.Byte 36 强制写入数据的长度01:1 Bit02:1 Byte 04:1 Word06:Double WordByte 38 数据个数,这里是01 ,一次强制写多个数据时见下面的说明。Byte 40 存储器类型Byte 41 存储器类型,见读命令的说明。Byte 42、43、44存储器偏移量指针(存储器地址*8)Byte 45、46、47、48 值、校验码、结束符取消强制写强制写入I、Q 等后,这些值就不能被程序改变,除非使用”取消强制命令”。 取消强制命令的格式与强制写入相似,变化的有以下几点:(1)是没有”值”这一段,即没有Byte4548。这影响到长度字节LE,LEr;占位字节Byte 32.(2)Byte16=10H, (3) Byte32=0CH,也就是第一条,没有”值”这一段,数据块长度变短了。对于一次强制写入或取消多个数据的情况可以参照写入命令写出相应的报文,这里不再给出。STOP命令STOP命令使得S7-200 CPU从RUN状态转换到STOP状态(此时CPU模块上的模式开关开应打在RUN或TERM位置)。PC发出如下命令,PLC返回F9,此时PLC已进入等待状态,PC再发确认报文(10 02 5C 5E 16),完成一个命令过程。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 16RUN 命令RUN命令使得S7-200 CPU从STOP状态转换到RUN状态(此时CPU模块上的模式开关开应打在RUN或TERM位置)。PC发出下命令,PLC返回F9,此时PLC已进入运行状态,PC再发确认报文(10 02 5C 5E 16),完成一个命令过程。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 3.4 读出数据分析一次读出一条数据PLC响应的数据也是用PPI封装的。如果用一次读一条数据命令,响应的报文中就只包含一条数据,此响应报文的Byte16=8。 Byte 04:DA=00 Byte 05:SA=02 即从02 PLC站发往PC。Byte 16:数据块占位字节,从Byte21到校验和前的字节数。一条数据时:Word=06 Double Word=08 其它为 05。Byte 22:数据类型,位=3,其它=4。Byte 24:数据宽度,Bit=01,Byte=08,Word=10H,Double Word=20HByte 2528:值。如果网络上只可能有一个站会发回响应报文,那么可以简单的根据LE长度字节判断返回值的位置:LE=16H,返回值是字节,或位类型的值,响应报文的Byte 25即是返回值;LE=17H,返回值是字(双字节)类型的值,响应报文的Byte 25,26即是返回值;LE=19H,返回值是双字(四字节)类型的值,响应报文的Byte 2528即是返回值。更准确的方式是要根据返回报文的SA,DA,及存储器位置等信息识别目标地址和源地址,确认是这次申请的返回数据,然后经过校验检查,得到正确的数据。一次读出多条数据如果用的是一次读多条数据的命令,响应的报文中就包含有多条数据。这些数据只有类型参数,没有偏移量参数,所以要注意根据读命令的顺序将其一一对应起来。Byte 16:数据块占位字节,从Byte21到校验和前的字节数,与数据块数量和类型有关。Byte 20:数据块的个数。Byte 21 开始为数据块,每一个数据块都以FF 04开始,接下来的两个字节表示这一数据块的长度,以位计算,然后依次是连续的数据。下一个数据块也是以FF 04开始,重复上述格式,直到结束。4 应用PC与与PLC通讯在采用PC机与PLC通讯时,计算机采用PPI电缆或普通的485串口卡与PLC的编程口连接, PC机采用VB编程,遵循PPI协议,主从式的通讯方式,一次读写操作的步骤包括:首先上位机发出读写命令,PLC作出接收正确的响应(返回应答数据E5H),上位机接到此响应则发出确认命令(10 02 5C 5E 16),PLC完成正确的读写响应,返回给上位机相应数据。这样收发两次数据,完成一次数据的读写。那么我们就可以利用上述PPI协议,读写S7-200PLC中的各种类型数据,包括I、Q、SM、M、V、T、C、S等数据类型,能够直接读出以上变量中的位、字节、字、双字等,(其中读位变量时,实际是读取该位所在的字节值)。可以改变PLC的运行状态(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 安徽外国语学院《教育数字化》2023-2024学年第二学期期末试卷
- 浙江树人学院《GNSS原理与应用A》2023-2024学年第二学期期末试卷
- 贵州建设职业技术学院《国际知识产权法(B)》2023-2024学年第二学期期末试卷
- 吉林师范大学博达学院《不动产测绘与建库》2023-2024学年第二学期期末试卷
- 四川航天职业技术学院《计算机图形设计(二)》2023-2024学年第二学期期末试卷
- 包头轻工职业技术学院《劳动实践》2023-2024学年第二学期期末试卷
- 运城学院《发酵食品与工艺》2023-2024学年第二学期期末试卷
- 吉林农业科技学院《电视播音与主持》2023-2024学年第二学期期末试卷
- 山东第一医科大学《大学英语(英语演讲入门技巧与实践)》2023-2024学年第二学期期末试卷
- 商厨厨房设计方案
- 维修安全协议书合同
- 2025年江苏省苏州市姑苏区中考数学一模试卷
- 2025年中考时事政治100题(附答案解析)
- 中考体育前家长会课件
- 2024年中国工程院战略咨询中心劳动人员招聘真题
- 2024年烟台龙口市卫生健康局所属事业单位招聘工作人员真题
- 2025福建漳州漳浦金瑞集团招聘20人笔试参考题库附带答案详解
- 地下综合管廊建设PPP项目施工组织设计
- 二零二五版官方离婚协议书
- 山东铁投集团招聘招聘笔试真题2024
- 天猫公司转让合同协议
评论
0/150
提交评论