固原市西门子授权代理商,西门子PLC,变频器,伺服电机授权代理商
- 供应商
- 广东湘恒智能科技有限公司
- 认证
- 西门子一级代理商
- 触摸屏
- 变频器
- 伺服电机
- 西门子PLC
- 直流调速器
- 联系电话
- 18126392341
- 手机号
- 15267534595
- 联系人
- 梁涛
- 所在地
- 惠州大亚湾澳头石化大道中480号太东天地花园2栋二单元9层01号房(仅限办公)(注册地址)
- 更新时间
- 2024-11-27 09:10
西门子s7-200自由口与ppi通讯协议的区别
1、ppi协议是专门为西门子s7-200plc开发的通信协议。
西门子s7-200cpu的通信口(port0、port1)支持ppi通信协议,西门子s7-200的一些通信模块也支持ppi协议。
micro/win与cpu进行编程通信也通过ppi协议。
编程时西门子ppi电缆使用方法
进入 step7 micro/win 编程软件中的“设置 pg/pc 接口”,选中“ pc/ppi cable ( ppi)”条目后点击“ properties… ”按钮。
在“ local connection ”的下拉框中选中“ usb ”选项。
在“ ppi ”的 station parameters 设置中进行如下设置: address : 0 , timeout :1s
在“ ppi ”的 network parameters 设置中根据你的需要可选择以下通信协议的任何一个:
** ppi :勾选 advanced ppi 复选框;
多主站 ppi :勾选 multiple master network 复选框;
普通 ppi :不勾选以上二个复选框,这是默认的选项。
注:要与西门子*新推出的 s7-200cn cpu 正常编程通信,必须满足以下条件:
(1) 、使用编程软件 step 7-micro/win v4.0 sp3 以上版本
(2)、将编程软件的工作环境设置为中文状态
s7-200cpu的ppi网络通信是建立在rs-485网络的硬件基础上,因此其连接属性和需要的网络硬件设备是与其他rs-485网络一致的。
s7-200 cpu之间的ppi网络通信只需要两条简单的指令,它们是网络读(netr)和网络写(netw)指令。
ppi协议是西门子的专用协议,其具体详情是不公开的,一般用于西门子设备之间的通讯。
s7-200 plc之ppi协议
通过硬件和软件侦听的方法,分析plc内部固有的ppi通讯协议,然后上位机采用vb编程,遵循ppi通讯协议,读写plc数据,实现人机操作任务。这种通讯方法,与一般的自由通讯协议相比,省略了plc的通讯程序编写,只需编写上位机的通讯程序资源
s7-226的编程口物理层为rs-485结构,siemens提供microwin软件,采用的是ppi(point topoint)协议,可以用来传输、调试plc程序。
在现场应用中,当需要plc与上位机通讯时,较多的使用自定义协议与上位机通讯。在这种通讯方式中,需要编程者首先定义自己的自由通讯格式,在plc中编写代码,利用中断方式控制通讯端口的数据收发。
采用这种方式,plc编程调试较为烦琐,占用plc的软件中断和代码资源,而且当plc的通讯口定义为自由通讯口时,plc的编程软件无法对plc进行监控,给plc程序调试带来不便。
siemenss7-200plc的编程通讯接口,内部固化的通讯协议为ppi协议,如果上位机遵循ppi协议来读写plc,就可以省略编写plc的通讯代码。如何获得ppi协议?可以在plc的编程软件读写plc数据时,利用第三个串口侦听plc的通讯数据,或者利用软件方法,截取已经打开且正在通讯的端口的数据,然后归纳总结,解析出ppi协议的数据读写报文。这样,上位机遵循ppi协议,就可以便利的读写plc内部的数据,实现上位机的人机操作功能。
软件设计
系统中测控任务由siemenss7-226plc完成,plc采用循环扫描方式工作,当定时时间到时,执行数据采集或pid控制任务,完成现场的信号控制。计算机的监控软件采用vb编制,利用mscomm控件完成串口数据通讯,通讯遵循的协议为ppi协议。
ppi协议
西门子的ppi(point topoint)通讯协议采用主从式的通讯方式,一次读写操作的步骤包括:首先上位机发出读写命令,plc作出接收正确的响应,上位机接到此响应则发出确认申请命令,plc则完成正确的读写响应,回应给上位机数据。这样收发两次数据,完成一次数据的读写[5]。
其通讯数据报文格式有以下几类:
1、读写申请的数据格式如下:
sd le ler sd da sa fc dasp ssap du fcs ed
sd:(start delimiter)开始定界符(68h)
le:(length)报文数据长度
ler:(repeated length)重复数据长度
sd: (start delimiter)开始定界符(68h)
sa:(source address)源地址,指该地址的指针,为地址值乘以8
da:(destination address)目标地址,指该地址的指针,为地址值乘以8
fc:(function code)功能码
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。
2、plc接收到读写命令,校验后正确,返回的数据格式为 e5h
3、确认读写命令的数据格式为:
sd sa da fc fcs ed
其中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 = 0
mscomm1.rthreshold = 1
mscomm1.inputmode = cominputmodebinary
ppi协议定义串口为以二进制形式收发数据,这样报文的通讯效率比ascii码高。
2、串口读取数据程序,以读取vb100数据单元为例:
dim str_read(0 to 32) ‘定义发送的数据为字节为元素的数组。
str_ read (32) = &h16 ‘相应的数组元素赋值,按照以下格式:
str_ read (29) = (100*8) \ 256 ‘地址为指针值,先取高位地址指针
str_ read (30) = (100*8) mod 256 ‘取低位地址指针
str_ read (24) = 1 ‘读取的数据长度(byte的个数)
for i=4 to 30
temp_fcs = temp_fcs + str_read(i)
next i
str_read(31)= temp_fcs mod 256 ‘计算fcs校验码,其它数组元素赋值省略。
68 1b 1b 68 2 0 6c 32 1 0 0 0 0 0 e 0 0 4 1 12 a 10 2 0 1 0 1 84 03 20 8b 16
plc返回数据 e5 后,确认读取命令,发送以下数据:
10 2 0 5c 5e 16
然后,上位机vb程序接受到以下数据:
68 16 16 68 0 2 8 32 3 0 0 0 0 0 2 0 5 0 0 4 1 ff 4 0 8 22 7816
首先识别目标地址和源地址,确认是这次申请的返回数据,然后经过校验检查,正确后解析出第26号数据(&h22)即为vb100字节的数据。
3、串口写入数据程序,以写vb100数据单元为例:
dim str_write(0 to 37) ‘定义发送的数据为字节为元素的数组。
str_write (37) = &h16 ‘相应的数组元素赋值,按照以下格式
str_write (35) = &h10 ‘要写入的数据值
68 20 20 68 2 0 7c 32 1 0 0 0 0 0 e 0 5 5 1 12 a 10 2 0 1 0 1 84 03 20 0 4 0 8 c b9 16
plc返回数据 e5 后,确认写入命令,发送以下数据:
10 2 0 5c 5e 16
然后,上位机vb程序接受到以下数据:
68 12 12 68 0 2 8 32 3 0 0 0 0 0 2 0 1 0 0 5 1 ff 47 16
这是plc正确接收并写入信息的返回数据。
4、串口接收程序:
在数据接收程序中,利用vb中mscomm控件,一次接收缓冲区中的全部数据,存放到数组形式的暂存单元中,然后分析每个元素的值,得到读写的数据。
dim rcv_array() as byte
dim dis_array as string
dim rcv_len as long
rcv_array = mscomm1.input ‘取出串口接收缓冲器的数据。
rcv_len = ubound(rcv_array)
redim temp(0 to ubound(rcv_array))
for i = 0 to rcv_len
dis_array = dis_array & hex(rcv_array (i)) & " "
next i
text1.text = dis_array ‘接收到的数据送显示。
在程序的读写过程中,一次*大可以读写222个字节,目前给出的数据读写为整数格式。
数据类型 str_ read(27)
s 04h
sm 05h
i 81h
q 82h
m 83h
v 84h
以上程序,是以读写plc的v变量区为例,利用ppi协议还可以读写s7-200plc中的各种类型数据,包括i、q、sm、m、v、t、c、s等数据类型,能够直接读出以上变量中的位、字节、字、双字等,其中读位变量时,是读取该位所在的字节值,然后上位机自动识别出该位的值。按照读写的数据类型,其中str_read(27)的值各不同:
在控制系统中,plc与上位计算机的通讯,采用了ppi通讯协议,上位机每0.5秒循环读写一次plc。plc编程时,将要读取的检测值、输出值等数据,存放在plc的一个连续的变量区中,当上位机读取plc的数据时,就可以一次读出这组连续的数据,减少数据的分次频繁读取。当修改设定值等数据时,进行写数据的通讯操作
2、自由口:
s7-200cpu的通信口可以设置为自由口模式。选择自由口模式后,用户程序就可以完全控制通信端口的操作,通信协议也完全受用户程序控制。
s7-200 cpu上的通信口在电气上是标准的rs-485半双工串行通信口。此串行字符通信的格式可以包括:
一个起始位
7或8位字符(数据字节)
一个奇/偶校验位,或者没有校验位
一个停止位
自由口通信速波特率可以设置为1200、2400、4800、9600、或112500。
凡是符合这些格式的串行通信设备,理论上都可以和s7-200 cpu通信。
自由口模式可以灵活应用。micro/win的两个指令库(uss和modbus rtu)就是使用自由口模式编程实现的。