基于C#的Modbus的(NModbus)研究(DTS686电表)——实现TCP通信连接(二)
上一篇说明了基于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通信连接(二)相关推荐
- C#上位机基础学习_基于SOCKET实现与PLC服务器的TCP通信(二)
C#上位机基础学习_基于SOCKET实现与PLC服务器的TCP通信(二) 测试软件: TIA PORTAL V15.1 S7-PLCSIM ADVANCED V3.0 Visual Studio 20 ...
- pyqt tcp通信_实验十 基于PyQt界面的TCP通信程序(一).doc_学小易找答案
[简答题]请同学们找一个目前已学的知识点,出一个题目上传,不能是上课讲的程序和上机的题目 [简答题]请拍照模块五完成情况 [简答题]请拍照模块六完成情况 [计算题]书本80页,3-7;3-8;3-9; ...
- 浅谈基于PLC和Modbus的配电室现场环境监控系统设计及产品选型
王兰 安科瑞电气股份有限公司 上海嘉定 201801 摘要:为实现对配电室现场运行环境实时监控,研究设计了一个基于PLC和Modbus的配电室现场环境监控系统.该系统采用PLC处理数字量输入/输出,采 ...
- 读“基于深度学习的图像识别技术研究综述”有感
"基于深度学习的图像识别技术研究综述"总结 现在流行的图像识别技术都是基于深度学习的算法,经过前辈们的探索改进,图像识别技术经历很多阶段,现如今图像识别技术已经广泛的应用于生活的方 ...
- 基于MATLAB的数字图像K-L变换,基于DCT变换的图像编码方法研究
分类号 密级 UDC注l 学 位 论 文 基于DCT变换的图像编码方法研究 (题名和副题名) 朱剑英 (作者姓名 指导教师姓名 副教授 中诱学位级别硕士 沦_义提交日期2004.1 专.业名称 通信与 ...
- 基于TerraDeveloper的三维GIS开发研究
[中文题名] 基于TerraDeveloper的三维GIS开发研究 [英文题名] Research on the Development of 3D GIS Based on TerraDevel ...
- 《中国人工智能学会通讯》——第3章 3.1基于深度学习的网络表示研究进展
第3章 3.1基于深度学习的网络表示研究进展 网络结构在现实世界中无处不在(如航线网络.通信网络.论文引用网络.世界万维网和社交网络等),在此基础之上的应用和研究问题受到了学术界和工业界的广泛关注,这 ...
- 直播预告:基于动态词表的对话生成研究 | PhD Talk #21
「PhD Talk」是 PaperWeekly 的学术直播间,旨在帮助更多的青年学者宣传其最新科研成果.我们一直认为,单向地输出知识并不是一个最好的方式,而有效地反馈和交流可能会让知识的传播更加有意义 ...
- 直播预告:基于动态词表的对话生成研究 | PaperWeekly x 微软亚洲研究院
「PhD Talk」是 PaperWeekly 的学术直播间,旨在帮助更多的青年学者宣传其最新科研成果.我们一直认为,单向地输出知识并不是一个最好的方式,而有效地反馈和交流可能会让知识的传播更加有意义 ...
最新文章
- tensorflow入门(二)
- 13岁小孩都跟我抢Python了,完了!
- OCIEnvCreate failed with return code -1 but error message text was not available with ODP.net
- 关于爬虫的日常复习(8)—— 实战:request+正则爬取猫眼榜单top100
- 【链接】调查显示:超20%美国大学生曾花学生贷款投
- Tomcat源码分析(九)--Session管理
- CIKM 2021 | BH:面向Web级应用的基于二进制码的Hash Embedding
- 【经验分享】Hydra(爆破神器)使用方法
- 17-比赛2 C - Maze (dfs)
- 概率论 方差公式_概率论与数理统计课程教学、学习基本要求和教学建议
- Java 算法 传球游戏
- [转]远远走来一个绿茶婊
- 蓝翔改名变成“技院”了?网友评论炸了:我真的没想歪...
- 控制寄存器 cr0,cr2,cr3
- 若干个数据首尾相连,构成一个圆环,找到连续的4个数之和最大的一段。
- 北美票房:《触不可及》惊喜夺冠
- 哪种机械键盘更适合打游戏? 机械键盘5种常用机械轴详细介绍
- Norgen提取试剂盒丨血浆/血清循环和核外RNA提取试剂盒
- android自定义系统键盘,Android自定义软键盘
- 企业研发人员配备比例_一般公司职能结构及人员分布比例配备
热门文章
- 阿里无影云电脑磁盘性能测试
- MySql CHECK使用方法
- Nico的刷题日记(一)
- 2021爱智先行者—最全硬件入手体验及介绍
- SJA1000+XC7Z030,SJA1000初始化及PS数据读取
- javascript jc脚本语言
- 数制转换,使用按权展开法将二进制数转换为十进制数,使用短除法除2取余计算十进制数转换为二进制数
- 计算机专业本科考教资可以考哪些,高中教师资格证计算机专业考什么内容
- 第一次打CF的感受(附A-C题题解) -Codeforces Round #764 (Div. 3)
- 记录一下接多盟SDK遇到的问题