PPI协议详解 ppi通讯协议 ppi通信协议 vb与ppi协议通讯_第1页
PPI协议详解 ppi通讯协议 ppi通信协议 vb与ppi协议通讯_第2页
PPI协议详解 ppi通讯协议 ppi通信协议 vb与ppi协议通讯_第3页
PPI协议详解 ppi通讯协议 ppi通信协议 vb与ppi协议通讯_第4页
PPI协议详解 ppi通讯协议 ppi通信协议 vb与ppi协议通讯_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、PPI协议详解ppi通讯协议ppi通信协议vb与ppi协议通讯分类:编程之外2012-06-1318:32451人阅读评论(0)收藏举报vb通讯byte存储cservicePPI协议详解ppi通讯协议ppi通信协议vb与ppi协议通讯PPI协议详解ppi通讯协议ppi通信协议vb与ppi协议通讯我们提供PPI协议的官方文档,协议更新时间为2005年,下面是我们根据文档解析的PPI读取变量返回数据,网上的文献大部分都是讲解如何发送的,对于接收提的很少,其中接收有很多控制位,下面的表格都一一列出,如果想做可靠的工控必须对这些位进行解析,对照官方文档才能做出可靠的工控产品西门官方PPI协议下载S7-

2、20OPPI通信协议PPI通信协议是一种主从式的通信协议,上位机即PC机为主,PLC为从。通信开始由计算机发起,PLC予以响应1)、计算机按通信任务,用一定格式,向PLC发送通信命令2)、PLC收到命令后,进行命令校验,如无误,则向计算机发送数据E5H或F9H,作出初步应答3)、计算机收到初步应答后,再向PLC发送SDDASAFCFCSED确认命令这里,SD为起始字符,为10H;DA为目的,即PLC地址02H;SA为数据源,即计算机地址OOH;FC为功能码,取5CH;FCS为SA、DA、FC和的256余数,为5EH;末字节ED为结束符,也是16H。如按以上设定的计算机及PLC地址,则发送10、

3、02、00、5C、5E、及16,6个字节的十六进制数据,以确认所发命令。4)、PLC收到此确认后,执行计算机所发送的通信命令,并向计算机返回相应数据。它的通信过程要往复两次才完成一次的通信,比较麻烦,但较严谨,不易出错。SDLELERSDDASAFCDASPSSAPDUFCSEDSD:(StartDelimiter)开始定界符,占1字节,为68HLE:(Length)报文数据长度,占1字节,标明报文以字节计,从DA到DU的长度LER:(RepeatedLength)重复数据长度,同LESD:(StartDelimiter)开始定界符(68H)DA:(DestinationAddress)目标地

4、址,占1字节,指PLC在PPI上地址,一台PLC时,一般为02,多台PLC时,则各有各的地址SA:(SourceAddress)源地址,占1字节,指计算机在PPI上地址,一般为00FC:(FunctionCode)功能码,占1字节,6CH一般为读数据,7CH一般为写数据DSAP:(DestinationServiceAccessPoint)目的服务存取点,占多个字节SSAP:(SourceServiceAccessPoint)源服务存取点,占多个字节DU:(DataUnit)数据单元,占多个字节FCS:(FrameCheckSequence)占1字节,从DA到DU之间的校验和的256余数;ED

5、:(EndDelimiter)结束分界符,占1字节,为16H命令类型1)读命令读命令长度都是33个字节。字节021,都是相同的,为:“681B1B680006C320100000000000E00000401120A10而从字节22开始,将根据读取数据的软器件类型及地址的不同而不同。字节22,表示读取数据的单位。为01时,1bit;为02时,1字节;为04时,1字;为06时,双字字节23,恒0字节24,表示数据个数。01,表示一次读一个数据。如为读字节,最多可读208个字节,即可设为DEH字节25,恒0字节26,表示软器件类型。为01时,V存储器;为00时,其它字节27,也表示软器件类型。为0

6、4时,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返回数据与发送命令格式数据相同,但包含一条数据。具体是681818680002083203000000000002000700000401FF0400189934568B16SDLELERSDDASAFCDASPSSAPDUFCSEDSDLEL

7、ERSDDASAFCDASPSSAPDUFCSED这里的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个字节,其命令码为681B1B6802006C320100000000000E00000401120A100200030001840003208

8、D16(红色02为字节为单位,03为读3个字节)681B1B6802006C320100000000000E00000401120A10040001000184000D088416返回码(这里红色99、34、56分别为VB100、VB101、VB102的值)2)写命令写一个字节,命令长为38个字节,字节0字节21为:6820206802006C320100000000000E00000401120A10写一个字,命令长为39个字节,字节0字节21为6821216802006C320100000000000E00000401120A10写一个双字数据,命令长为41个字节,字节021为682323

9、6802006C320100000000000E00000401120A10字节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字节3

10、8就是写入的值,字节39为校验码,字节40为16H、结束码。681212680002083203000000000002000100000501FF4716如写入QBO=FF,其命令为6820206802007C320100000000000E00050501120A1002000100008200000000040008FF8616如写入VB100=12,其命令如下6820206802007C320100000000000E00050501120A100200010001840003200004000812BF16PLC返回数据E5后,确认写入命令,发送以下数据1002005C5E16PLC

11、返回数据E5后,写入成功如写入VW100=1234,其命令如下6821216802007C320100000000000E00060501120A10040001000184000320000400101234FE16PLC返回数据E5后,确认写入命令,发送以下数据1002005C5E16PLC返回数据E5后,写入成功请注意以上红体字的含义以上命令如执行成功,则返回否则返回但计算机再发确认报文(1002005C5E16)68OFOF68000208320200000000000000008500C3163)STOP命令stop命令使得S7-200CPU从run状态转换到stop状态(此时cpu

12、模块上的模式开关应处于run或term位置)。计算机发出如下命令;681D1D6802006C3201000000000010000029000000000009505F50524F4752414DAA16PLC返回:E5,同时PLC即转为stop状态但计算机再发确认报文(1002005C5E16)PLC将返回:68101068000208320300000000000100000000296916到此,才算完成这个通信过程4)RUN命令run命令使得S7-200cpu从stop状态转换到run状态(此时cpu模块上的模式开关应处于run或term位置)。PC机发出如下命令6821216802

13、006C3201000000000014000028000000000000FD000009505F50524F4752414DAA16PLC返回:E5,同时PLC即转为RUN状态PLC将返回:68101068000208320300000000000100000000296916至此,才算完成这个通信过程。注:以上介绍的不是西门子发布的正式通信协议,还有其它内容。建议结合些通信的例子来进行测试。PC与PLC采用主从方式通讯,PC按如下文的格式发读写指令,PLC作出接收正确的响应(返回应答数据E5H或F9H见下文分析),上位机接到此响应则发出确认命令(10025C5E16),PLC再返回给上位

14、机相应数据。一般上位机要连接PLC就要先发送如下寻呼数据100200494B16同志们呐!我们可都是有血、有肉、有思想、有灵感的高级动物啊,面对这么多枯燥、无味、复杂、混乱的机器数字你怎么记呢?反正我是记不住啊!0_人开始洗脑)这时你可以闭上眼睛,安静、静、再静。想一想战争时期的战地对讲机通话模式,那么这个指令(100200494B16)就可以理解为:00呼叫02,听到请回答。10起始符02是上位机要联系的下位级的地址站号,就是要找的人00就是上位级本本身自己的站号49寻呼指令16终止符其中4B为校验码,是这样得来的:02+00+49的最后两位就是校验码,这就是所说的偶校验或称和校验也称余校验

15、,因为取的是余数。计算器在16进制计算时公式(02+00+49)mod100得出的数就是校验码,你计算一下是不是等于4B啊!其他的所有PPI协议校验都是如此。假如02站号的PLC收到寻呼信号那么会回答:100002000216意思是:报告00,02收到,请指示这样的解释是不是有意思啊!你有更好的解释吗?接下来呢,找到了要寻呼的人PC就是司令啦就可以发号施令了,发号施令后PLC正确接收后就会发送E5字符,意思是:02洞两明白”。其实啊,说到这里PLC只说他明白,他己经明白了上位机PC的指示,但并没有执行命令,那么要怎么他才执行命令呢?就是上位机PC发出确认命令后才执行。这时上位机会发出(1002

16、5C5E16),意思是:请立即执行。然后PLC就干他应当干的工作了啊!原来PLC也不容易啊,怪不得叫下位机呢!说了这么多乱不乱呐!目的就是要理清上下级关系、主从关系,指令的顺序,用一个好的记忆方法记住枯燥无味的机器码。读命令分析:一次读一条数据SDLELERSDDASAFCDASPSSAPDUFCSEDSD:(StartDelimiter)开始定界符(68H)LE:(Length)报文数据长度LER:(RepeatedLength)重复数据长度SD:(StartDelimiter)开始定界符(68H)SA:(SourceAddress)目标地址,指该地址的值,就是PLC的地址DA:(Desti

17、nationAddress)本地地址,指该地址的指针,就是上位机自己的地址FC:(FunctionCode)功能码,5CH为交替周期触发,6CH为首次信息周期触发,7CH为交替周期触发。DSAP:(DestinationServiceAccessPoint)目的服务存取点SSAP:(SourceServiceAccessPoint)源服务存取点DU:(DataUnit)数据单元FCS:(FrameCheckSequence)校验码ED:(EndDelimiter)结束分界符(16H)报文数据长度和重复数据长度为自DA至DU的数据长度,校验码为DA至DU数据的和校验,只取其中的末字节值关于这个校

18、验码的计算方法同上面说明。在读写PLC的变量数据中,读数据的功能码为6CH,写数据的功能码为7CH。对于一次读取一个数据,读命令都是33个字节。前面的021字节是相同的,为下面我们列表分析读取PLC密码的指令:681B1B6802006C320100000000000E00000401120A100200080000030005E0D2162223242526272829303132nnaFCSDE取长数据个数存储器类型偏移量校验码结束符0200080000030005E0D216因为是PC上发的读PLC数据的命令,SA=00,DA=02,如果有多个站,DA要改成相应的站号。读命令中从DA到D

19、U的长度为1B即27个字节。从22字节开始根据读取数据的类型、位置不同而不同。上表是读不同存储器命令的Byte2232。上表读命令的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存储器偏移量指针(存储器地址*8),如:VB100,存储器地址为100,偏移量指

20、针为800,转换成16进制就是320H,则Byte2829这三个字节就是: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=8Byt

21、e19-30按上述一次读一个数据的格式依次列岀,Byte31-42另一类型的数据,也是按上述格式给岀。以此类推,一次最多读取222个字节的数据。写命令分析:一次写一个DoubleWord类型的数据,写命令是40个字节,其余为38个字节。写一个DoubleWord类型的数据,前面的021字节为:0123456789I10LI12131415(16(1718192021开始符长度长度开始符6821216802007C320100000000000E00000401120A106823236802006C320100000000000E00000401120A10写一个其它类型的数据,前面的021字

22、节为:(与上面比较,只是长度字节发生变化)6821216802006C320100000000000E00000401120A10从22字节开始根据写入数据的值和位置不同而变化。上表是几个写命令的Byte22T0。字节22232425262728293031323334353637383940写入位置及值长度个数类型偏移量位数值、校验码、结束符M0.0=10100010000830000000003000101007116M0.0=00100010000830000000003000100007016M0.1=10100010000830000010003000101007216vb100=1

23、0020001000184000320000400081000AE16vb100=FF02000100018400032000040008FF009D16VW100=FFFF04000100018400032000040010FFFFA616VD100=FFFFFFFF06000100018400032000040020FFFFFFFFB816写命令的Byte22最后,经分析我们可以得岀以下结果:Byte22-Byte30写入数据的长度、存储器类型、存储器偏移量与读命令相同。T,C等不能用写命令写入。Byte32如果写入的是位数据这一字节为03,其它则为04Byte34写入数据的位数01:1B

24、it08:1Byte10H:1Word20H:1DoubleWordByte35-40值、校验码、结束符如果写入的是位、字节数据,Byte35就是写入的值,Byte36=00,Byte37=检验码,Byte38=16H,结束。如果写个的是字数据(双字节),Byte35,Byte36就是写入的值,Byte37=检验码,Byte38=16H,结束。如果写个的是双字数据(四字节),Byte3538就是写入的值,Byte39=检验码,Byte40=16H,结束。看完上面的指令分析我们现在就举例几个常用的PPI协议来分析一下:PC寻呼:100200494B16PLC返回:100002020416PC发送

25、:1002005C5E16PLC返回:E5我们先来看看西门子S7-200PLC的读取密码指令:请用串口软件以16进制发送,端口设置9600;e;81发送:681B1B6802006C320100000000000E00000401120A100200080000030005E0D216意思:要求传送系统存储区05E0位开始的8个字符(这就是8个密码数值)。如果通讯无误,PLC会返回E5,意思:己经收到那么这时上位机再次发送指令1002005C5E16意思:请执行命令。(说到这里打住一下,PLC返回E5指令后上位机PC要在很短的时间内发送确认指令,晚了刚才的指令就无效了具体多长时间我也没测准,反

26、正1、2秒时间是没有问题的。)那么这时PLC就真的执行命令了返回如下字符:681D1D680002083203000000000002000C00000401FF0400409B9802069D9A00767D16写指令:先发1002005C5E16后发写指令1、写一位M区(例子M0.0)先发1002005C5E16收到E5后发6820206802007C320100000000000E00050501120A1001000100008300000000030001018016收到E5说明写入完成(只要报文长度,跟校验码对了,就会回复E5)报文长度为:目标地址到倒数第二位的校验位前面的字节长度

27、(根据写入值不通报文长度不同)功能码:7C表示写入;6C表示读取。17位:05表示写入;04表示读取。16位:16位的05表示写入的是位或者字节(即用一个字节存储)06表示字;08表示双字(4个字节);0C表示8个字节数据长度(22位):01位;02字节;04字;06双字数据个数:0100表示一个;0200表示连续的两个;0400连续的4个存储类型:26位:01V区;00其他27位:04S区;05SM区;06AI;07AQ;1EC;81I;82Q;83M;84V;1FT偏移量:000000000000000000000XXX(XXX表示位)例如:10.3=1010.011即000053数据形式

28、:03表示位;04表示其他数据位数:即写入数据多少位。01一位;08八位;10十六位;20三十二位写入值:写入位,字节均用一个字节存储;写入双字得用四个字节校验码:即报文的偶校验(所有之和Mod100H)终止符:16H若M10.3=1写入,00005301D3(校验码D3是从开头第五个02到倒数第三个01的所有数字的偶校验(算术和)因为01010.011(10.3)为000053即:6820206802007C320100000000000E00050501120A100100010000830000530003000101D316M10.3=0即:6820206802007C32010000

29、0000000E00050501120A102、写V区一个字节(例子VB100=10H)先发1002005C5E16收到E5后发:6820206802007C320100000000000E00050501120A100100010000830000530003000100D2160200010001840003200004000810bd16发:6821216802007C320100000000000E00060501120A1004000100018400032000040010abcd3016发:6823236802007C320100000000000E00080501120A100

30、6000100018400032000040020abcdeffe31163、写V区一个字(双字)读指令:先发读指令,后发1002005C5E161、读取数据(例子读取VW10的值,值为FFFF)先发读取命令:681B1B6802006C320100000000000E00000401120A10020002000184000050B916(红色或者改为04000100校验也得改)回复E5然后发送1002005C5E16收到数据:681717680002083203000000000002000600000401FFO40010FFFF5D16读指令的前21位都是相同的。读取长度,数据个数,存

31、储类型,偏移量都与写指令里面的定义一样。收到数据中的16位:05表示收到数据用一个字节存储,可能是PLC位,也可能是一个字节;06表示用两个字节存储,即一个字;08双字;0C表示8个字节。22位:数据形式,03表示位;04表示其他。(主要针对C,T可能是位也可能是计数值,计数时间)24位:表示读取数值的位数。01表示一位;08八位;10十六位;20三十二位。25位之后几位:要读取的数值。若回复F9(会产生不同结果,但接受值不变)然后发送1002005C5E16收到数据:(关闭串口再打开的不同结果)DAA1211B9032616640408000000002000600000401FF040010FFFF5D16B4A1211B1030616640808000000002000600000401FF040010FFFF5D16681717680002083203000000000002000600000401FF040010FFFF

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论