上一篇说明了基于nmodbus的rtu的连接,本次来介绍一下TCP实现基于modbus的通信,毕竟以后tcp通过ip地址通信才能更简单。和上一篇差不多。

一、首先放出参考的有价值的NModbus网站

1.modbus tools 全英解释 https://modbustools.com/download.html 官方  详细解释说明

2.Modbus/Nmodbus  中文繁体版  http://www.icpdas.com/products/PAC/i-8000/modbus_c.htm  官方

3.我所用的测试连通的工具

salve  poll https://download.csdn.net/download/lsc_hei/10709595以及

vspd https://download.csdn.net/download/lsc_hei/10729508工具

测试串口连通性工具  https://download.csdn.net/download/lsc_hei/10742111

TCp测试网络是否连通,才测试程序的正确性https://download.csdn.net/download/lsc_hei/10745748

十六进制转float https://download.csdn.net/download/lsc_hei/10742108

4.NModbus api说明文档 即本人根据完成的 https://download.csdn.net/download/lsc_hei/10750678这个人认为很重要

二、实现TCP的通信连接

以本人所使用的VS2013做法示范;
   
  1.首先新建一个工程点击工具下拉菜单找到--管理NuGet程序包(也可能没有少一项,搞搞就出来了,很简单)--然后搜索你需要的包(nmodbus4,记得选择nuget 不然可能找不到)--点击安装即可。安装完成后引入命名控件using Modbus.Deice 然后去创建你的winform就行了,因为我是用winform,其他的类似,请自行比对。

在这里,主站和从站之分便没有了,有的是服务器和客户端之分,我使用的是USR-TCP232-304/RS485 TO ETHERNET CONVERTER 连接从电表分出来的rs485专线口,modbus tcp 没有主站、从站之分,但是有服务器(Server)与客户端(Client)之分:发出数据请求的一方为客户端(Client),做出数据应答的的一方为服务器(Server)。服务器(Server)与客户端(Client)分别类似于modbus rtu从站、主站的作用,但它们之间没有任何关系。modbus tcp协议和modbus协议通过tcp传输其实就是同一回事。

电表连接的那个转换口,可以作为服务器也可以作为客户端。我将端口数据作为服务器端,即将pc段自己做的作为客户端去触发服务器端的监听事件,即服务器端应为slave作为监听,pc端作为master去触发监听得到响应数据。  大家也可以试试把带有电表的那一端作为客户端试试。。。。

*/*和串口差不多,tcp按理说也应该和串口一致,繁体示范上面也区分了 slave和master 只是设置了一个ip地址   我按照串口的方法改到一起,但是不知道什么原因,一直连接不成功,不能正常返回数据,找了半天也没找到原因,master端demo上写的是读到服务器ip 然后建立连接,slave端是获取本地ip然后建立监听进行响应,这样一弄就完全混乱了,我该怎么设置ip等等

源代码贴出,以备后用https://download.csdn.net/download/lsc_hei/10751379

二‘最后百思不得其解,不行转换思路,直接做了一个 TCP IP的客户端,用最简单的方法实现就是客户端发送数据socket,得到服务器的响应数据,连多线程都不用,唯一的就是委托,跨控件而已。

唉 当初学tcp的时候怎么没想到现在竟然能这么简单的用到。。。。

然后对数据进行处理,得到的数据是十进制单位,看返回的有几个字节,就是几个十进制,然后按照自己的需求搞

我所运用示例

txtReceive.Text += "得到的十进制为" + holdingregister[0].ToString() + "和"+ holdingregister[1].ToString() + ";

同时  将得到的十进制转化为16进制然后再转化为float进行输出,看个人需求

string hexString = Convert.ToString(holdingregister[0], 16) + Convert.ToString(holdingregister[1], 16);
    uint num = uint.Parse(hexString, System.Globalization.NumberStyles.AllowHexSpecifier);
                byte[] floatVals = BitConverter.GetBytes(num);
                float f = BitConverter.ToSingle(floatVals, 0);
                txtReceive.Text += "转换成的float数为:" + f;

完成

三、

如图所示的tcp测试连通性软件,将本机作为客户端。

[发送]94 03 00 00 00 02 D9 0E

[接收]94 03 04 3D 8F 5C 29 FB A3

说明:设备地址(1字节)+功能号(1)+寄存器起始地址(2字节)+读取的寄存器数(2)+CRC校验

说明:设备地址(1字节)+功能号(1)+返回的字节数+数据1+数据2+...+等于字节数+CRC校验

返回的字节数=2*读取的寄存器数

四、

哎等有空了 还得仔细研究一下这个,还好网上有这么多人 站在各位前辈的成果之上 感谢。

源代码地址:已完成https://download.csdn.net/download/lsc_hei/10751276

https://download.csdn.net/download/lsc_hei/10750738

对了这是官方示例的demo拿好各位https://download.csdn.net/download/lsc_hei/10750717

基于C#的Modbus的(NModbus)研究(DTS686电表)——实现TCP通信连接(二)相关推荐

  1. C#上位机基础学习_基于SOCKET实现与PLC服务器的TCP通信(二)

    C#上位机基础学习_基于SOCKET实现与PLC服务器的TCP通信(二) 测试软件: TIA PORTAL V15.1 S7-PLCSIM ADVANCED V3.0 Visual Studio 20 ...

  2. pyqt tcp通信_实验十 基于PyQt界面的TCP通信程序(一).doc_学小易找答案

    [简答题]请同学们找一个目前已学的知识点,出一个题目上传,不能是上课讲的程序和上机的题目 [简答题]请拍照模块五完成情况 [简答题]请拍照模块六完成情况 [计算题]书本80页,3-7;3-8;3-9; ...

  3. 浅谈基于PLC和Modbus的配电室现场环境监控系统设计及产品选型

    王兰 安科瑞电气股份有限公司 上海嘉定 201801 摘要:为实现对配电室现场运行环境实时监控,研究设计了一个基于PLC和Modbus的配电室现场环境监控系统.该系统采用PLC处理数字量输入/输出,采 ...

  4. 读“基于深度学习的图像识别技术研究综述”有感

    "基于深度学习的图像识别技术研究综述"总结 现在流行的图像识别技术都是基于深度学习的算法,经过前辈们的探索改进,图像识别技术经历很多阶段,现如今图像识别技术已经广泛的应用于生活的方 ...

  5. 基于MATLAB的数字图像K-L变换,基于DCT变换的图像编码方法研究

    分类号 密级 UDC注l 学 位 论 文 基于DCT变换的图像编码方法研究 (题名和副题名) 朱剑英 (作者姓名 指导教师姓名 副教授 中诱学位级别硕士 沦_义提交日期2004.1 专.业名称 通信与 ...

  6. 基于TerraDeveloper的三维GIS开发研究

    [中文题名]  基于TerraDeveloper的三维GIS开发研究 [英文题名]  Research on the Development of 3D GIS Based on TerraDevel ...

  7. 《中国人工智能学会通讯》——第3章 3.1基于深度学习的网络表示研究进展

    第3章 3.1基于深度学习的网络表示研究进展 网络结构在现实世界中无处不在(如航线网络.通信网络.论文引用网络.世界万维网和社交网络等),在此基础之上的应用和研究问题受到了学术界和工业界的广泛关注,这 ...

  8. 直播预告:基于动态词表的对话生成研究 | PhD Talk #21

    「PhD Talk」是 PaperWeekly 的学术直播间,旨在帮助更多的青年学者宣传其最新科研成果.我们一直认为,单向地输出知识并不是一个最好的方式,而有效地反馈和交流可能会让知识的传播更加有意义 ...

  9. 直播预告:基于动态词表的对话生成研究 | PaperWeekly x 微软亚洲研究院

    「PhD Talk」是 PaperWeekly 的学术直播间,旨在帮助更多的青年学者宣传其最新科研成果.我们一直认为,单向地输出知识并不是一个最好的方式,而有效地反馈和交流可能会让知识的传播更加有意义 ...

最新文章

  1. tensorflow入门(二)
  2. 13岁小孩都跟我抢Python了,完了!
  3. OCIEnvCreate failed with return code -1 but error message text was not available with ODP.net
  4. 关于爬虫的日常复习(8)—— 实战:request+正则爬取猫眼榜单top100
  5. 【链接】调查显示:超20%美国大学生曾花学生贷款投
  6. Tomcat源码分析(九)--Session管理
  7. CIKM 2021 | BH:面向Web级应用的基于二进制码的Hash Embedding
  8. 【经验分享】Hydra(爆破神器)使用方法
  9. 17-比赛2 C - Maze (dfs)
  10. 概率论 方差公式_概率论与数理统计课程教学、学习基本要求和教学建议
  11. Java 算法 传球游戏
  12. [转]远远走来一个绿茶婊
  13. 蓝翔改名变成“技院”了?网友评论炸了:我真的没想歪...
  14. 控制寄存器 cr0,cr2,cr3
  15. 若干个数据首尾相连,构成一个圆环,找到连续的4个数之和最大的一段。
  16. 北美票房:《触不可及》惊喜夺冠
  17. 哪种机械键盘更适合打游戏? 机械键盘5种常用机械轴详细介绍
  18. Norgen提取试剂盒丨血浆/血清循环和核外RNA提取试剂盒
  19. android自定义系统键盘,Android自定义软键盘
  20. 企业研发人员配备比例_一般公司职能结构及人员分布比例配备

热门文章

  1. 阿里无影云电脑磁盘性能测试
  2. MySql CHECK使用方法
  3. Nico的刷题日记(一)
  4. 2021爱智先行者—最全硬件入手体验及介绍
  5. SJA1000+XC7Z030,SJA1000初始化及PS数据读取
  6. javascript jc脚本语言
  7. 数制转换,使用按权展开法将二进制数转换为十进制数,使用短除法除2取余计算十进制数转换为二进制数
  8. 计算机专业本科考教资可以考哪些,高中教师资格证计算机专业考什么内容
  9. 第一次打CF的感受(附A-C题题解) -Codeforces Round #764 (Div. 3)
  10. 记录一下接多盟SDK遇到的问题