最近接触到一个项目,是运行在组态王软件中的仪表设备,使用modbus协议通讯。

原以为modbus是一套完整的协议,从网上下载了粗略看了一下。后来拿到竞品的样品,安装了组态王,连接运行了一下,才发现与之前理解有些不同。modbus可以说是一个协议的规范,具体数字代表的意义,是由设备厂商自定的。厂商将这些自定的协议做成驱动(dll),放在组态王的驱动包里,并选择相应的设备名,这样串口的modbus协议经过翻译,成为组态王的标准接口。
modbus协议的框架为:
PC->设备 <Head><Cmd><Address><Data><CRC>
设备->PC  <Head><Cmd><Len><Data...><CRC>

<Head> 命令头,默认是0x3b, 也可以自定义,本协议中是0x60.
<Cmd> 0x03-读寄存器;0x06-写单个寄存器;其余的也可自定义;
<Address> 寄存器地址,双字节,如[00 03]=3
<Data> 双字节。当Cmd为读寄存器时,表示连续读取的个数;当Cmd为写时,表示写入的数据;
<CRC> 双字节校验;
<Len> 数据区字节个数,单字节;

举例说明
PC->主设备,读取从01开始,连续2个寄存器的值:60 03 [00 01] [00 02] [9D BA] 
主设备->PC,回复4个字节数据00: 60 03 [04] [00 00] [00 00] [8A F5]

顺便贴一段crc校验的代码

ushort crcTlb[] = {0x0000, 0xCC01, 0xD801, 0x1400, 0xF001, 0x3C00, 0x2800, 0xE401,
       0xA001, 0x6C00, 0x7800, 0xB401, 0x5000, 0x9C01, 0x8801, 0x4400};
ushort CalcCRC16(byte[] pBuf, int len)
{
   byte i = 0, ch = 0;
   ushort crc = 0xFFFF;
   for (i = 0; i < len; i++)
   {
       ch = pBuf[i];
       crc = (ushort)(crcTlb[(ch ^ crc) & 0x0F] ^ (crc >> 4));
       crc = (ushort)(crcTlb[((ch >> 4) ^ crc) & 0x0F] ^ (crc >> 4));
   }
   crc = (ushort)((crc & 0xFF) << 8 | (crc >> 8));
   return crc;
}

另外还遇到一个组态王的讨厌问题。把原来项目文件换了一个电脑,USB转串口的端口从COM7变成了COM5,但从工程里始终无法修改,提示“不支持预定义的接口”。后来终于在工程文件device.dat的最后一段找到了,把其中的二进制COM7直接改成了COM5,打开软件后跑起来了:)

转载于:https://www.cnblogs.com/chaos77/p/4066227.html

组态王和modbus协议相关推荐

  1. 组态王软件与S7-200SMART无线MODBUS通信

    本方案是组态软件与西门子 S7-200 Smart 进行无线 MODBUS 通信的实现方法.此方案可以作为西门子 S7-200 Smart与组态软件的无线 MODBUS 通信实例.在本方案中采用了西门 ...

  2. 组态王串口服务器虚拟串口,串口服务器USR-N520连接组态王设置步骤

    调试目的: USB-RS232或者USB-RS485串口线接USR-N520串口和电脑USB口,MODBUS SLAVE软件打开COM口,模拟客户串口MODBUS RTU设备.串口服务器USR-N52 ...

  3. 组态王和plc之间如何建立通讯?

    这两者之间可以有很多种通讯方式,比如:PROFIBUS.MPI.以太网.DDE.OPC.MODBUS.自由口等,主要还是要看你的PLC选型,以及组网方式. 现在最常见,也最常用的大概要数RS485,M ...

  4. 基于dde的vb和matlab,基于VB和DDE技术的组态王通信协议转换

    组态王是一种通用的工业监控上位机软件,它界面友好.易学易用.即便是不懂编程的工程人员也能在短时时间内开发出界面精美,符合行业标准且高效的上位机监控程序,因此深受工程师们的喜爱,然而组态王软件的上下位机 ...

  5. 威纶和s7200通讯线_S7-200作为从站用一个通讯口同时与组态王和维纶触摸屏通讯,用PPI协议,可以吗?...

    说明:1.PLC为CPU224XP; 2.两个通讯口,一个要与流量计通讯,走modbus RTU协议 解决方案:1.PPI多主站,组态王和触摸屏都作为主站,PLC作为从站.不知硬件怎么配置,软件怎么配 ...

  6. 通过IoT-Fast平台使用Modbus协议采集电表数据并快速完成组态场景搭建

    导读:IoT-Fast是一款全流程低代码物联网平台,提供了丰富的设备采集控制协议(Modbus RTU 串口.Modbus TCP 网口.通用 OpcUa 通讯协议.西门子 S7 通讯协议.三菱 Fx ...

  7. 组态王如何获取modbus TCP数据?

    组态王如何获取modbus TCP数据? 1.打开KingView 2.打开一个工程 3.新建一个画面 4.新建设备 5.选择PLC->莫迪康->ModbusTCP->TCP 6.给 ...

  8. 组态王能直接读取仪表数据吗_液晶多功能网络电力仪表PD800H

    液晶多功能网络电力仪表PD800H-H44三相三线 多功用电力表面,一般也被称作网络电力表面,它是一种数字化的监控设备,其功用集成了电量测量,情况监控,远程通讯为一体,作业原理上选用了现代核算机技术和 ...

  9. 上位机与1200组态步骤_图解组态王一组态王软件

    奥科远电器点击左上角奥科远电器加关注组态王软件 组态王软件是一种通用的工业监控软件,它将过程控制设计.现场操作以及工厂资源管理融于一体,将一个企业内部的各种生产系统和应用以及信息交流汇集在一起,实现最 ...

最新文章

  1. android interview 1
  2. erlang分布式编程模型
  3. JavaScript权威指南--多媒体和图形编程
  4. 写给MongoDB开发者的50条建议Tip11
  5. .NET 6 Preview 4 已发布,ASP.NET Core 更新内容
  6. mysql df_MySQL主从复制实战
  7. python定时执行脚本实例
  8. STM32之ADC单通道单次例程
  9. ServicePointManager.ServerCertificateValidationCallback 冲突的解决
  10. attr 和 prop 区别
  11. python画曲线图-python画曲线
  12. 计算机桌面文件自动备份取消,设置电脑收银系统自动备份及备份清除功能
  13. 高通三频802.11ac平台:家庭WiFi新体验?
  14. dsp31段最佳调音图_均衡器如何使用_31段均衡器调整方法
  15. windows自带备份驱动
  16. Java项目(SpringBoot+MyBatis-Plus):国内新冠肺炎疫情大数据可视化平台+疫情数据后台管理系统
  17. 坦克世界怎么显示服务器准心,坦克世界8.0环境设置详细教程
  18. 方正BPM开发平台(FIX ES2007)帮助手册+知识库
  19. Markdown 图片居中并添加标题
  20. 微信小说小程序源码-附带采集

热门文章

  1. 普通人怎么样才能存到钱?
  2. 使人无条件相信你的5个策略
  3. 3类兼职渠道,赚钱的方法来了
  4. 大家的第一次创业钱是通过什么方式得到的呢?
  5. 都知道李嘉诚先生是一个有钱人
  6. TCP 粘包、半包 Netty 全搞定
  7. 计算机网络class5(分层结构、协议、接口、服务)
  8. ssrs 生成pdf_在SSRS报告中生成热图的可用选项
  9. 处理页面动态加载数据
  10. 【记录】C++中的类成员调用