labview解析S7协议

本文章借鉴了博主一杯清酒邀明月和加油小林哥和听风的内容,作为学习笔记。

前面用了labview连接PLC的三种方式,一是通过VIPM上安装的S7.COM进行通讯,二是通过胡工科技的hsl进行通讯,三是通过OPC进行通讯。这里介绍通过TCP协议来手搓S7协议与西门子的plc进行通信。

S7Communication是西门子专有的协议,是西门子S7通讯协议簇里面的一种。

S7通讯协议是西门子S7系列PLC内部集成的一种通讯协议,是S7系列PLC的精髓所在。他是一种运行在传输层之上的,经过特殊优化的通讯协议,其信息传输可以基于MPI网络,PROFIBUS网络或者以太网

S7在TCP连接上后还需要进行两次握手

S7协议的TCP/IP实现依赖于面向块的ISO传输服务。S7协议被封装在TPK和ISO-COTP协议中,这使得PDU能够通过TCP传送。

第一次握手

当PDU类型为0x0E的时候报文格式为

TPKT协议结构

COTP连接包的结构

第一次握手发送返回字节格式

支持PUD类型

参数代码TPDU-SIZE

对应到labview中在建立连接时进行两次握手操作,第一次握手操作,对应可以看到相应的指令集对应上表中的指令说明。和平常的tcp通讯一样,只需要发送相应的指令集即可。

第二次握手发送返回字节格式

ROSCTR类型

同样第二次握手也同上次一样,发送相应的指令集。

数据读取/写入报文发送返回字节格式

S7协议的地址是按照位来运算的,因此需要地址值乘以8。地址的三个范围为0x000000~0x08FFFF。比如M30000,实际地址就是30000*8=240000,然后转化为三个字节。

240000=0x03A980,对应三个字节 03,A9,80比如DB21234.40000其中DB号为21234为0x52F2,,DB编号对应两个字节52 ,F2,偏移量40000乘以8就是320000,也就是0x04E200,对应三个字节 04,E2,00。

写入数据,更改相应功能码,编写要写入的数据。

读取数据

故障代码

PUT和GET指令TABLE参数的错误代码:

功能码

区域类型

SyntaxID类型

PLC区域类型块

CPU的地址区

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值