Siemens_PPI_串口通讯协议分析
西门子S7-200PPI通信协议

西门子S7-200PPI通信协议PPI通信协议是一种主从式的通信协议,上位机即PC机为主,PLC为从。
通信开始由计算机发起,PLC予以响应。
1)、计算机按通信任务,用一定格式,向PLC发送通信命令。
2)、PLC收到命令后,进行命令校验,如无误,则向计算机发送数据E5H或F9H,作出初步应答。
3)、计算机收到初步应答后,再向PLC发送SD DA SA FCFCS ED确认命令。
这里,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 EDSD:(Start Delimiter)开始定界符,占1字节,为68HLE:(Length)报文数据长度,占1字节,标明报文以字节计,从DA到DU的长度;LER:(Repeated Length)重复数据长度,同LESD: (Start Delimiter)开始定界符(68H)DA:(DestinationAddress)目标地址,占1字节,指PLC在PPI 上地址,一台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 CheckSequence)占1字节,从DA到DU之间的校验和的256余数;ED:(End Delimiter)结束分界符,占1字节,为16H命令类型1)读命令读命令长度都是33个字节。
西门子USB-PPI,USB-PPI使用指南

西门子USB-PPI+,USB-PPI电缆通信说明
1、打开你电脑的设备管理器,正常情况下安装好驱动,会生成一个新的串口,请记下生成的串口,如下图所示:
2、打开西门子编程软件,如果你的200系列PLC是带CN的请将软件改成中文版的,并且软件的版本需要在V4.0 SP3以上,以上两条件缺一不可。
如果不是CN,这两点除外。
3、点击软件里的
,出现以下窗口。
4、点击
,出现以下窗口,
5、选择“PC/PPI cable(PPI)”后。
点属性,
6、这一步非常重要,这里的端口一定要选择电缆安装好驱动生成的串口一至(端口在设备管理器里看到)切记!否则无法通信。
7、切换到”PPI”选项夹,“地址”默认的是0,“网络参数”里两个选项请不要打钩。
否则无法通信的。
“传输率”可根据PLC的实际情况来选择。
8、设定好这些后。
一路确定下去。
然后回到通信界面,双击“刷新”即可找到PLC的型号,即可上下载程序。
双击这里就可以找到PLC的型号,确认即可上下载程序。
9. 点连接成功。
SiemensPLC的PPI通信协议的解析与应用

+, 引言
’()*)+, 提供的 5(6789(+ 软件, 采用的是 --0 ( -8(+: :8 -8(+: ) 协 议, 仅 仅 可 以 用 来 传 输、 调试 -./ 程序, 不知是出于保密还是其它原因, 并不向 外界公布源代码。在现场应用中, 当需要 -./ 与 上位机通信时, 普遍使用自定义协议与上位机通 信。在这种通信方式中, 需要编程者首先定义自 己的自由通信格式, 在 -./ 中编写代码, 利用中断 方式控制通信端口的数据收发。采用这种方式, -./ 编程调试较为烦琐, 占用 -./ 的软件中断和 代码资源, 而且当 -./ 的通信口定义为自由通信 口时, -./ 的 编 程 软 件 无 法 对 -./ 进 行 监 控, 给 -./ 程序调试带来不便。 利用 --0 协议实现通信, 可以大大简化控制 程序的编写难度。’()*)+, ’;<"&&-./ 的编程通信 接口, 内部固化 --0 通信协议, 如果上位机利用编 程通信口遵循 --0 协议来读写 -./ , 就可以省略编 写自定义模式下的 -./ 的通信代码, 可通过读写 的方式实现数据和控制命令的通信。
格式发读写指令, -./ 作出接收正确的响应返回 应答数据 =%? 或 @!?, 上位机接到此响应则发出 确认命令 ( $& &" %/ %= $3 ) , -./ 再返回给上位机 相应数据。 数据的组成格式是: ’A .= .=7 ’A AB ’B @/ A’B- ’’B- AC @/’ =A。 其 中: ’A 为 开 始 符 ( 3D?) ; .= , .=7 为数据长度 ( 从 AB 到 AC ) ; AB 为目的地址; ’B 为源地址; @/ 为功能码 ( 3/? ) ; A’B- 为目的服务存取点; ’’B- 为源服务存取点; AC 为 数 据 单 元; @/’ 为 校 验 和; =A 为 结 束 符 ( $3?) 。 -. -, 读命令分析 $4 $4 $E 一次读一条数据 对于一次读取一个数据, 读命令都是 >> 个字 节。前面的 & F "$ 字节是相同的, 为 :3D $2 $2 3D &" && 3/ >" &$ && && && && && &= && && &# &$ $" &B $& 。因为是 -/ 上发的读 -./ 数据的命令, 所以 ’B G && , AB G &" , 如果有多个站, AB 要改成 相应的站号。读命令中从 AB 到 AC 的长度为 $2 即 "; 个字节。 从 "" 字节开始根据读取数据的类型、 位置不 同而不同, 如表 $ 所示。 表中 2H:) "" 为读取数据 的 长 度: &$ 表 示 $ 2(:, &" 表示 $ 2H:), &# 表示 $ 987I , &3 表示 A8JKL) 987I ; 表中 2H:) "# 为数据个数: 这里是 &$ , 一次 读一个数据; 表中 2H:) "3 为存储器类别: &$ 表示 1 存储器, && 表示其它;表中 2H:) "; 为存储器型 号: &# 表示 ’,&% 表示 ’5,&3 表示 B0,&; 表示 BM, $= 表示 / , D$ 表示 0 , D" 表示 M, D> 表示 5,
Siemens MPI协议解析

Siemens MPI协议解析nono95599nono@摘要:在使用上位机和西门子s7300系列PLC实现自动化过程控制当中,选择MPI协议进行通信时,PLC可以不用编程,而且可读写所有数据区,快捷方便。
但是西门子公司没有公布MPI协议的格式,用户如果想使用MPI协议监控,就必须购买其监控产品或第三方厂家的组态软件。
这样给用户自主开发带来一定困难,特别是自行开发的现场设备就不能通过MPI协议接入PLC。
而采用其它通讯方式也存在编程复杂,需要购买软件和授权等局限性。
本文通过数据监视、采集、分析的方法,解析出了MPI协议的关键报文格式,可用于实现上位机、现场设备与支持MPI协议的CPU之间通讯,从而提供了一种高效率低成本的通信方式。
关键字:MPI协议前言工业的现代化,很大程度体现在工业生产过程的自动化,其中信息的传输,数据的交换也成为评价工业自动化水平高低的标准。
网络通迅方式的多样化和通迅速率的高速化,使信息交换领域从设备控制层延伸到企业管理层。
信息技术的飞速发展,促进了自动化系统结构的变革,以网络为主干的分布式控制系统已成为当今自动化系统的主流趋势。
因此,网络通迅的实时性和可靠性,以及网络故障的诊断和排除都成为工业网络通信关注的焦点。
MPI网络是西门子工业控制系统中经常用到的一种通迅方式,使用RS485物理接口进行数据传输。
下面主要阐述西门子MPI协议的解析方法以及关键报文格式。
MPI协议概述MPI协议,其英文全名为Multi-point-Interface。
在PLC之间可组态为主/主协议或主/从协议.如何操作依赖于设备类型:如果控制站都是s7—300/400系列PLC,那么就建立主/主连接关系,因为MPI协议支持多主站通讯,所有的s7—300 CPU都可配置为网络主站,通过主/主协议可以实现PLC之间的数据交换。
如果某些控制站是s7—200系列PLC,则可以建立主/从连接关系,因为s7—200 CPU是从站,用户可以通过网络指令实现s7—300 CPU对s7200 CPU的数据读写操作。
Siemens PPI协议分析

Siemens PPI协议分析大家好:我是山东临沂的郝金红,由于前段时间的疯狂的研究西门子PPI协议解密之故,所以无心插柳的研究出了较实用的西门子S7-200 PPI协议,今天奉献大家。
我们经常要用于上位机、现场设备与S7-200CPU之间的通讯,但是西门子公司没有公布PPI协议的格式,用户如果想使用PPI协议监控,必须购买其监控产品或第三方厂家的组态软件。
大家要知道国内的组态王、紫金桥、力控等等组态公司是花了多少钱才得到的PPI的深层协议吗?其实西门子工控产品的超高价垄断掠夺行为已经引起了我们国家及业内人士的抵制和抗议,他们的什么软件都需要授权且对于系统的霸道性是有目共睹的。
这样给用户自主开发就带来了一定的困难,特别是想用VB、VC等语言自行开发,根本没办法接入PLC,要么你大把掏钱给他们。
洋为中用,最近在国外网站得到一个串口监视软件,带协议分析的相当不错,你吧!我就是通过此软件的数据监视、分析方法,找出了PPI协议的关键报文格式所在。
其实西门子S7-200 PLC之间或者PLC与PC之间通信有很多种方式:自由口,PPI方式,MPI方式,Profibus方式。
使用自由口方式进行编程时,在上位机和PLC 中都要编写数据通信程序。
使用PPI协议进行通信时,PLC可以不用编程,而且可读写所有数据区,快捷方便。
这也是我们之所以要研究、找出PPI协议的源动力!下面我们就要说说分析的方法了!西门子的STEP 7 MicroWIN 是用于S7-200系列PLC的开发工具,它使用PC机上的COM口通过一条PC/PPI编程电缆连到PLC的编程口上。
这说明,PC实际上是可以通过串口同S7-200 CPU通讯。
只是我们不知道通讯协议而已。
通过截获PC机串口上的收发数据,对照Step 7软件发出的指令,我们就有可能分析出有关指令的报文和通讯方式;然后,直接通过串口向PLC发送报文,以验证这些指令报文是否正确。
本着这一思想,我们采用以下步骤获得这些报文。
PPI协议详解 ppi通讯协议 ppi通信协议 vb与ppi协议通讯

PPI协议详解 ppi通讯协议 ppi通信协议vb与ppi协议通讯PPI协议详解一、引言PPI(Point-to-Point Interface)是一种用于工业自动化领域的通信协议,用于实现PLC(Programmable Logic Controller)与外部设备之间的数据交换。
本文将详细介绍PPI协议的基本原理、通信方式以及相关参数设置。
二、协议概述1. PPI协议是一种点对点的通信协议,即一台PC机与一台PLC之间建立一对一的通信连接。
2. PPI协议采用串行通信方式,使用RS485物理层接口进行数据传输。
3. PPI协议支持数据的读取和写入操作,可以实现PLC与PC机之间的双向数据交换。
三、通信协议1. 物理层接口:PPI协议使用RS485物理层接口,通过两根数据线(D+和D-)进行数据传输。
2. 通信速率:PPI协议支持多种通信速率,常见的有9.6Kbps、19.2Kbps、187.5Kbps等。
3. 数据帧格式:PPI协议的数据帧由起始位、数据位、校验位和停止位组成,其中校验位可以选择奇校验、偶校验或无校验。
4. 通信模式:PPI协议支持主从模式和从从模式两种通信模式。
在主从模式下,PC机作为主站发送指令,PLC作为从站接收指令并返回响应;在从从模式下,PC机和PLC都可以发送指令和接收响应。
四、通信过程1. 主站发送指令:PC机作为主站发送指令到PLC。
指令包括命令码、数据和校验位等信息。
2. 从站接收指令:PLC作为从站接收主站发送的指令,并进行校验。
3. 从站执行指令:PLC根据接收到的指令进行相应的操作,如读取数据、写入数据等。
4. 从站返回响应:PLC将执行结果返回给主站,包括数据、状态信息等。
5. 主站接收响应:PC机作为主站接收从站返回的响应,并进行校验。
6. 数据处理:PC机对接收到的数据进行解析和处理,如显示在界面上、保存到文件中等。
五、参数设置1. 通信地址:PLC和PC机之间需要设置通信地址,确保能够正确建立通信连接。
PPI协议详解 ppi通讯协议 ppi通信协议 vb与ppi协议通讯

PPI协议详解 ppi通讯协议 ppi通信协议vb与ppi协议通讯PPI协议详解1. 介绍PPI(Point-to-Point Interface)是一种用于工业自动化系统的通信协议,用于连接编程设备(如PC)与可编程逻辑控制器(PLC)之间的通信。
本协议旨在提供高效可靠的数据传输,使得编程设备能够与PLC进行数据交换和远程控制。
2. 协议结构PPI协议采用点对点的通信方式,分为物理层和数据链路层两部分。
2.1 物理层PPI协议使用RS485总线作为物理层传输介质,具有抗干扰能力强、传输距离远等特点。
编程设备和PLC通过RS485接口进行连接,其中编程设备作为主站,PLC作为从站。
2.2 数据链路层数据链路层负责数据的传输和错误检测。
PPI协议将数据分为帧进行传输,每帧由起始符、地址、数据、校验和等字段组成。
2.2.1 帧结构PPI协议的帧结构如下:起始符 | 地址 | 数据 | 校验和起始符:用于标识一帧数据的开始,通常为0x68。
地址:指定PLC的地址,用于区分不同的PLC。
数据:包含要发送或接收的数据。
校验和:用于检测数据传输过程中是否出现错误。
2.2.2 数据传输编程设备通过发送帧给PLC来传输数据,PLC接收到帧后进行处理,并可以返回响应帧给编程设备。
数据传输的过程中,编程设备和PLC通过交替发送和接收帧的方式进行通信。
3. PPI通讯协议PPI通讯协议定义了编程设备与PLC之间的通信规则和消息格式,包括数据读写、寄存器访问、程序控制等功能。
3.1 数据读写编程设备可以通过PPI通讯协议向PLC写入数据或读取数据。
写入数据时,编程设备发送写入命令帧给PLC,并携带要写入的数据。
读取数据时,编程设备发送读取命令帧给PLC,并等待PLC返回响应帧,响应帧中包含要读取的数据。
3.2 寄存器访问PPI通讯协议定义了一系列寄存器,用于存储和访问PLC的状态信息、输入输出信号等。
编程设备可以通过读写命令访问这些寄存器,实现对PLC的状态监测和控制。
西门子PPI通讯协议

?西门子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?to?Point)通讯协议采用主从式的通讯方式,一次读写操作的步骤包括:首先上位机发出读写命令,PLC作出接收正确的响应,上位机接到此响应则发出确认申请命令,PLC则完成正确的读写响应,回应给上位机数据。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Siemens PPI协议分析大家好:我是山东临沂的郝金红,PLC解密网是我的个人网站。
由于前段时间的疯狂的研究西门子PPI协议解密之故,所以无心插柳的研究出了较实用的西门子S7-200 PPI协议,今天奉献大家。
我们经常要用于上位机、现场设备与S7-200CPU之间的通讯,但是西门子公司没有公布PPI协议的格式,用户如果想使用PPI协议监控,必须购买其监控产品或第三方厂家的组态软件。
大家要知道国内的组态王、紫金桥、力控等等组态公司是花了多少钱才得到的PPI的深层协议吗?其实西门子工控产品的超高价垄断掠夺行为已经引起了我们国家及业内人士的抵制和抗议,他们的什么软件都需要授权且对于系统的霸道性是有目共睹的,而且我是深受其害的。
^_^我最近弄了个WINCC,装了一个星期还没装上,网友告诉我要重做系统才可以,悲哀啊。
这样给用户自主开发就带来了一定的困难,特别是想用VB、VC等语言自行开发,根本没办法接入PLC,要么你大把掏钱给他们。
洋为中用,最近在国外网站得到一个串口监视软件,带协议分析的相当不错,你吧!我就是通过此软件的数据监视、分析方法,找出了PPI协议的关键报文格式所在。
其实西门子S7-200 PLC之间或者PLC与PC之间通信有很多种方式:自由口,PPI方式,MPI方式,Profibus方式。
使用自由口方式进行编程时,在上位机和PLC中都要编写数据通信程序。
使用PPI协议进行通信时,PLC可以不用编程,而且可读写所有数据区,快捷方便。
这也是我们之所以要研究、找出PPI协议的源动力!下面我们就要说说分析的方法了!西门子的STEP 7 MicroWIN 是用于S7-200系列PLC的开发工具,它使用PC 机上的COM口通过一条PC/PPI编程电缆连到PLC的编程口上。
这说明,PC实际上是可以通过串口同S7-200 CPU通讯。
只是我们不知道通讯协议而已。
通过截获PC机串口上的收发数据,对照Step 7软件发出的指令,我们就有可能分析出有关指令的报文和通讯方式;然后,直接通过串口向PLC发送报文,以验证这些指令报文是否正确。
本着这一思想,我们采用以下步骤获得这些报文。
首先你这个英文的串口监控软件,英文不好的网友可以用金山快译翻译一下,你必须使用这个软件,因为我先前使用过很多的监控软件,在收发数据很多的情况下都有死机现象,造成数据丢失,容易给我们错误分析。
接下来你先打开这个软件,新建、选择端口COM1,然后再将PC/PPI编程电缆接在COM1上,这样,Step7 Micro/Win发给PLC的报文就可以在监视软件上完全裸露的展现在你的面前了。
我们按S7-200系统手册设置好串口参数:9600,8,E偶校验,1位停止位。
然后设置好Step7软件,使之能与S7-200 CPU正常通讯。
从Step7软件中发出一个明确指令,监视软件就能显示这条报文了(用16进制显示,ASCII 码的只能看到几个版本号之类的,其他都没有意义)。
我们的破解策略就是通过软件监视的方法,分析PLC内部固有的PPI通讯协议,然后上位机采用VB编程,遵循PPI通讯协议,读写PLC数据,实现人机操作任务。
这种通讯方法,与一般的自由通讯协议相比,省略了PLC的通讯程序编写,只需编写上位机的通讯程序资源。
S7-200的编程口物理层为RS-485结构,SIEMENS提供MicroWin软件,采用的是PPI(Point to Point)协议,关于232串口转485你可以采用我们网站开发研制的自制PPI电缆,效果倍好哦!还是自己动手,丰衣足食啊!不能光说不练啊!下面我们就说说西门子PLC到底是怎么通讯的。
PC与PLC采用主从方式通讯,PC按如下文的格式发读写指令,PLC作出接收正确的响应(返回应答数据E5H或F9H见下文分析),上位机接到此响应则发出确认命令(10 02 5C 5E 16),PLC再返回给上位机相应数据。
一般上位机要连接PLC就要先发送如下寻呼数据 10 02 00 49 4B 16 同志们呐!我们可都是有血、有肉、有思想、有灵感的高级动物啊,面对这么多枯燥、无味、复杂、混乱的机器数字你怎么记呢?反正我是记不住啊!(^_^开始洗脑)这时你可以闭上眼睛,安静、静、再静。
想一想战争时期的战地对讲机通话模式,那么这个指令(10 02 00 49 4B 16)就可以理解为:00呼叫02,听到请回答。
现在我们来简单的分析一下这个指令的具体含义: 10起始符 02是上位机要联系的下位机的地址站号,就是要找的人 00就是上位级本身自己的站号 49寻呼指令 16终止符其中4B为校验码,是这样得来的:02+00+49的最后两位就是校验码,这就是所说的偶校验或称和校验也称余校验,因为取的是余数。
计算器在16进制计算时公式(02+00+49)mod 100得出的数就是校验码,你计算一下是不是等于4B啊!其他的所有PPI协议校验都是如此。
假如02站号的PLC收到寻呼信号那么会回答: 10 00 02 00 02 16 意思是:报告00 ,02收到,请指示这样的解释是不是很好理解啊!你有更好的解释吗?接下来呢,找到了要寻呼的人PC上位机,就是司令啦!就可以发号施令了,发号施令后PLC正确接收后就会发送 E5 字符,意思是:“02洞两明白”。
其实啊,说到这里PLC只说他明白,他已经明白了上位机PC的指示,但并没有执行命令,那么要怎么他才执行命令呢?就是上位机PC发出确认命令后才执行。
这时上位机会发出确认指令(10 02 5C 5E 16),意思是:“请立即执行”。
然后PLC就干他应当干的工作了!原来PLC也不容易啊,怪不得叫下位机呢!说了这么多乱不乱呐?目的就是要理清上下级关系、主从关系,指令的顺序,用一个好的记忆方法记住枯燥无味的机器码。
下面我们列表分析读取PLC密码的指令:68 1B 1B 68 02 00 6C 32 01 00 00 00 00 00 0E 00 00 04 01 12 0A 10 02 00 08 00 00 03 00 05 E0 D2 16读命令分析:一次读一条数据SD LE LER SD DA SA FC DASP SSAP DU FCS EDSD:(Start Delimiter)开始定界符(68H)LE:(Length)报文数据长度LER:(Repeated Length)重复数据长度SD: (Start Delimiter)开始定界符(68H)SA:(Source Address)目标地址,指该地址的值,就是PLC的地址DA:(Destination Address)本地地址,指该地址的指针,就是上位机自己的地址FC:(Function Code)功能码,5CH为交替周期触发,6CH为首次信息周期触发,7CH为交替周期触发。
DSAP:(Destination Service Access Point)目的服务存取点SSAP:(Source Service Access Point)源服务存取点DU:(Data Unit)数据单元FCS:(Frame Check Sequence)校验码ED:(End Delimiter)结束分界符(16H)报文数据长度和重复数据长度为自DA至DU的数据长度,校验码为DA至DU数据的和校验,只取其中的末字节值关于这个校验码的计算方法同上面说明。
在读写PLC的变量数据中,读数据的功能码为 6CH,写数据的功能码为 7CH。
对于一次读取一个数据,读命令都是33个字节。
前面的0—21字节是相同的,为读取PLC密码的指令:68 1B 1B 68 02 00 6C 32 01 00 00 00 00 00 0E 00 00 04 01 12 0A 10 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。
上表读命令的Byte22-32从表中我们可以得出以下结果:Byte 22 读取数据的长度01:1 Bit 02:1 Byte04:1 Word 06:Double WordByte 24数据个数,这里是01 ,一次读多个数据时见下面的说明。
Byte 26 存储器类型,01:V存储器 00:其它Byte 27 存储器类型04:S 05:SM 06:AI 07:AQ 1E: C81:I 82:Q 83:M 84:V 1F: TByte 28,29,30存储器偏移量指针(存储器地址*8),如:VB100,存储器地址为100,偏移量指针为800,转换成16进制就是320H,则Byte 28—29这三个字节就是: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个字节的数据。
写命令分析:一次写一个Double Word类型的数据,写命令是40个字节,其余为38个字节。
写一个Double Word类型的数据,前面的0—21字节为:68 23 23 68 02 00 6C 32 01 00 00 00 00 00 0E 00 00 04 01 12 0A 10写一个其它类型的数据,前面的0—21字节为:(与上面比较,只是长度字节发生变化)68 21 21 68 02 00 6C 32 01 00 00 00 00 00 0E 00 00 04 01 12 0A 10从22字节开始根据写入数据的值和位置不同而变化。
上表是几个写命令的Byte22—40。
字节 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40写入位置及值长度个数类型偏移量位数值、校验码、结束符M0.0=1 01 00 01 00 00 82 00 00 00 00 03 00 01 01 00 71 16M0.0=0 01 00 01 00 00 83 00 00 00 00 03 00 01 00 00 70 16M0.1=1 01 00 01 00 00 83 00 00 01 00 03 00 01 01 00 72 16vb100=10 02 00 01 00 01 84 00 03 20 00 04 00 08 10 00 AE 16vb100=FF 02 00 01 00 01 84 00 03 20 00 04 00 08 FF 00 9D 16VW100=FFFF 04 00 01 00 01 84 00 03 20 00 04 00 10 FF FF A6 16VD100=FFFFFFFF 06 0001 0001 8400 03 2000 0400 20 FF FF FF FF B8 16写命令的Byte22—最后,经分析我们可以得出以下结果:Byte 22-- Byte 30 写入数据的长度、存储器类型、存储器偏移量与读命令相同。