目的:

寻找S7-1200作为服务端与计算机ModbusTCP通讯的具体方式,为PC端APP提供通讯依据。

需要准备的工具

S7-1200 CPU1212 DC/ DC/ DC一台,网线,24VDC电源, ProfiNet口通过交换机与PC连接。PC端用Modbus Poll客户端(目的是验证数据正确性)

协议说明

modbus tcp数据报文结构
请求:00 00 00 00 00 06 09 03 00 00 00 01
响应:00 00 00 00 00 05 09 03 02 00 00
一次modbus tcp读取保持寄存器的通信分析(省略了ip/tcp头):从左向右分析该数据报文:
请求:
00 00传输标志,两个字节长度,表示Modbus询问/应答的传输,默认是00 00;
00 00协议标识,两个字节长度,0表示Modbus,1表示UNI-TE,一般默认为00 00;
00 06数据长度,用来指示接下来数据的长度,单位字节;
09地址码,用以标识连接在串行线或者网络上的远程服务端的地址;
03功能码,此时代码03为读取保持寄存器数据;
00 00寄存器地址;
00 01寄存器数量;

响应:
00 00为此次通信事务处理标识符,应答报文要求与先前对应的请求保持一致;
00 00为协议标识符,与先前对应的请求保持一致;
00 05为数据长度,用来指示接下来数据的长度,单位字节;
09为设备地址,应答报文要求与先前对应的请求保持一致;
03为功能码,正常情况下应答报文要求与先前对应的请求保持一致,如果出错则返回80h+先前的功能码;
02指示接下来数据的字节长度;
00 00为被读取的保持寄存器中的数据值,即要求被读取的地址为00 00的保持寄存器中的数值为00 00。

其他命令码测试

a) 01 Read Coils(0x)读取输出Q地址
发送:00 09 00 00 00 06 01 01 00 00 00 01
含义:报文头00 09 00 00 00 06;00 09每帧递增;00 00 ModbusTCP;00 06是后面还有6字节数据。报文内容是读取站号01地址00 00开始的1个位地址。
回收:00 09 00 00 00 04 01 01 01 00

b) 02 Read Discrete Inputs(1x) 读取输入I地址
发送:00 09 00 00 00 06 01 02 00 00 00 01
含义:报文头00 09 00 00 00 06,00 09每帧递增,00 00ModbusTCP专属,00 06是后面还有6字节数据。报文内容是读取站号01地址00 00开始的1个输入位地址。
回收:00 09 00 00 00 04 01 02 01 00
含义:报文头00 09 00 00 00 04同上,报文内容是站号01读1个输入位地址(对应到S7-1200地址偏移范围可知是I区)返回了1个字节,结果是01。也就是I0.0是true。

发送:00 09 00 00 00 06 01 02 00 00 00 0A
回收:00 10 00 00 00 05 01 02 02 00 00
c) 03 Read Holding Registers(4x)
发送:00 09 00 00 00 06 01 03 00 00 00 01
回收:00 09 00 00 00 04 01 03 02 00 00
读取设定DataBlock的偏移为0的1个数据,返回结果是0x0000。经验证与PLC监控值相同。

#附录一
源代码资源地址,如果有问题可以给我发邮件jacky20sx@163.com,我会及时回复,互相学习
https://download.csdn.net/download/u011383812/10755005

ModbusTCP协议,上位机通讯测试实例分享相关推荐

  1. C# 机器视觉工控通讯------西门子PLC之S7协议上位机通讯

    C# 机器视觉工控通讯------西门子PLC之S7协议上位机通讯 使用步骤 1.引入库 项目添加应用HslCommunication.dll和代码代码如下(示例): dll官方支持网站> us ...

  2. c语言tcp硬时事通讯程序代码,使用C语言编写基于TCP协议的Socket通讯程序实例分享...

    tcp客户端示例 #include #include #include #include #include #include #include #include #include #include # ...

  3. modbus通讯协议编程实例_三菱PLC CC-LINK通讯编程实例分享,看完你就会了

    前言:小蓝上次分享了三菱PLC编程指令文章,有一位粉丝说还有标签,FB模块,以太网通讯,MODBUS,TCP通讯这些有的学的.所以今天就给大家带来CC-LINK通讯编程实例.如果看完还是不太明白怎么办 ...

  4. 西门子1200程序V15版本实例,设备已经运行生产,博图V15以上可打开 包含上位机通讯,modbus485

    西门子1200程序V15版本实例,设备已经运行生产,博图V15以上可打开 包含上位机通讯,modbus485,伺服等 西门子1214C控制4台步进电机: 西门子1214C与4台MS300变频器modb ...

  5. 物联网云平台DTU Modbus协议 上位机 下位机 源码 源代码 程序

    物联网云平台DTU Modbus协议 上位机 下位机 源码 源代码 程序 一.源码的使用基本说明: 1.1 编译语言: 下位机使用C语言:上位机使用C#语言 标准Modbus Slave通信下位机源码 ...

  6. STM32 MPU6050与匿名上位机通讯(V2.6版)

    0.系列目录 STM32 软件模拟IIC STM32 使用DMP库处理MPU6050数据 STM32 MPU6050与匿名上位机通讯(V2.6版) 1.简介 在四轴的调试中,经常要使用地面站与飞控之间 ...

  7. proteus中使用虚拟串口实现单片机和上位机通讯

    祝大家身体健康哈,肺炎愈来愈多,希望看到这篇文章的旁友都能健健康康! 今天写一下proteus里如何使用虚拟串口仿真单片机和上位机通讯,所需要的软件有:(1)Virtual Serial Port D ...

  8. 欧姆龙PLC码垛程序 电机:四个雷塞闭环步进电机,四个汇川伺服电机,总共八个电机。 PLC:CP1H-EX40DT-D,八个轴就用了两个PLC,还有跟上位机通讯

    欧姆龙PLC码垛程序(某上市公司设备),电机:四个雷塞闭环步进电机,四个汇川伺服电机,总共八个电机. PLC:CP1H-EX40DT-D,八个轴就用了两个PLC,还有跟上位机通讯. 图四是机台俯视图 ...

  9. 【代码】邮件群发机PHP实现实例分享

    原理: 第一申请大量的邮箱帐号 腾讯的 126的 163的 新浪的 雅虎的 谷歌的 等等提供smtp服务的 第二:收集你要发送邮件的邮件列表 第三:遍历邮件列表,每一个邮件发送邮件 第四:用linux ...

  10. AS608与单片机握手失败、与上位机通讯失败

    简言:本人在使用AS608模块时遇到了握手失败.通讯失败的问题,尝试网上各种方法未果后,换了一个AS608模块,问题解决. 一.与单片机握手失败 检查代码中的波特率是否为9600,再通过上位机将AS6 ...

最新文章

  1. RHEL6 PXE+KickStart全自动安装配置指南
  2. 我的WCF之旅 (11): 再谈WCF的双向通讯-基于Http的双向通讯 V.S. 基于TCP的双向通讯...
  3. 解决某东对ip限制若兰(nolanjdc)无法获取短信验问题
  4. python画饼图-python画饼图的多种方式
  5. Vue-cli3.0Mock数据使用
  6. 出去旅行带上这些常用日语就够啦!
  7. html的head中的常见元素
  8. 谷歌浏览器 自动保存数据后input的黄色背景 解决办法
  9. 数据虚拟化工具已进入IT战略领域
  10. 答应我不要问TCP三次握手四次挥手
  11. python脚本打包成exe可执行文件
  12. 一起来学Spring Cloud | 第一章 :如何搭建一个多模块的springcloud项目
  13. ESP8285+WS2812+MAX9814制作的音乐律动氛围灯
  14. tomcat配置前台访问日志记录
  15. 简化“复杂”的层级管理,实现团队作战式的目标协同
  16. 银行会计学3(特点、核算的前提假设、对象和标准)
  17. 新媒体运营胡耀文教程:短视频+怎么变现?一文读懂4大商业模式
  18. 美食杰(个人主页编辑资料)
  19. 再论VS.NET中的安装部署文件
  20. Yolov5进阶之一摄像头实时采集识别

热门文章

  1. 精准目标群体,精确博客选择——谈feedsky经典博客Market力作
  2. c语言且或者是优先级,C语言笔试题
  3. 如何显示 word 左侧目录大纲
  4. 用python发邮件为什么接收不了_如何使用python发送邮件和接收邮件?
  5. Git拉取远程最新代码,并与当前分支合并
  6. 妇产科护理学复习重点归纳、试题及答案
  7. 《当时只道是寻常》——安意如——品纳兰容若《饮水词》
  8. 填空什么的月牙_“一( )月牙”填什么量词
  9. cd40系列芯片_CD40系列芯片大全
  10. 每年都要调两次时间,美国人已经烦透了