C# modbus 协议命令怎么写?

我在做一个课题,用Modbus协议的电能采集模块与GPRS模块连接,发送数据给计算机,要用C#编程上位机软件,向采集模块发送命令,如何实现,求代码?

第1个回答  2012-07-11
大家好,小弟近来有个项目是关于访问RTU(支持Modbus TCP协议)数据采集的,我利用C#写的程序,因为涉及到好五个RTU站,地方分散,采用光纤通信,因此在程序里边利用定时器(System.Timers)触发程序访问。现在的问题是:程序运行一段时间就会与RTU断掉,连接不上,大约过几秒钟 长的时候会十几分钟就会再次连接上,各个RTU访问频率为500ms,RTU为北京易控的ST511,按照说明说该型号RTU最大支持三个Modbus TCP连接,我这里一共两台服务器运行采集程序,我需要在网络通的情况下 不能够断掉,另网络状况基本良好,是与其他系统共用的。请问该怎么解决〉?这与用C#写和用VC写有什么区别么?
第2个回答  2012-07-13
你可以用MODBUS协议的读取软件先读下采集模块的数据传输格式,再看看怎么去写程序吧,代码还是要根据格式去写的。本回答被提问者和网友采纳

C#的modbus的代码怎么写?
其中LogHelper代码这里就不写,因为与主题无关,如果想运行上面代码的话,注释就行了,这里IP和端口号都是由设备方提供的。真实程序一般都把这两个参数写配置文件中。设备连上以后,下一步当然就是读取数据。Modbus的基本原理就是程序向设备请求,需要读取哪个数据,设备就会返回相应的数据。

【零基础】5分钟开发一个简单的ModBus TCP主站上位机(附源码)
安装完成后,新建一个Windows窗体应用项目,命名为"ModbusMaster"。接下来,安装Easy ModbusTcp库,它是基于.NET Framework的Modbus通信库,支持多种协议和编程语言,便于设备通信和数据采集。在代码编写部分,你需要设计界面,然后引入EasyModbus库,编写关键功能如连接设备、读写Modbus报文的函数。例如,`btn_...

关于modbus tcp,通过modbus tcp协议给用户界面传数据
sendBuf[12]=0;\/\/写数据寄存器起始地址高字节 \/\/sendBuf[13]=atoi(argv[6]) & 0xff; \/\/写数据寄存器起始地址低字节 sendBuf[13]=200 & 0xff; \/\/写数据寄存器起始地址低字节 \/\/PLC中INT型占16位数,即一个字两个字节。所以argv[7]中为写入的指令字 \/\/sendBuf[14]=atoi(argv[7]) >>...

如何利用C#的Nmodbus库控制ACS510变频器?
步骤1:连接变频器。使用串口线缆将变频器RS-485接口连接至计算机串口。步骤2:安装Nmodbus4库。在Visual Studio新建C#项目,通过NuGet包管理器安装Nmodbus4库,或直接下载并手动安装。步骤3:创建串口对象。编写代码创建SerialPort对象,设置串口号、波特率、校验位、数据位与停止位。示例代码创建名为“port...

C# modbus tcp 怎么向下位机写float类型的数据!!!还望详解!
这要看采用RTU模式还是ASCII模式传送1)采用ASCII模式传送 float v = 1.2345f; string sv = v.ToString(); byte[] bv = Encoding.ASCII.GetBytes(sv); \/\/按字节发送bv 2)采用RTU模式传送 float v = 1.2345f; byte[] bv = BitConverter.GetBytes(v); \/\/按字节发送bv ...

我需要利用Modbus协议读取电能表的数据,请问该怎么读呢? 语言是c#
1.电脑要有485转232的转换器 2.你要看懂DLT_645—1997规约的通讯协议,现在大多电能表厂都会遵行这个通讯协议,DLT_645—1997规约不是最新的通讯协议.就看电表的使用什么通讯协议.3.要知道电能能的通讯地址,不知道也没关系,可以单表通讯,用12个9当地址.就可以读出来.4.用mscomm32.ocx控件访问串口; ...

...读写三菱PLC???读写是否需要先发送读写的指令???
正好我前段时间做过三菱Modbus协议电表监控开发。我只是通过自己的摸索,用C#来做监控。因为我不是专门做硬件开发的,所以可能给你的回答不是很准确,硬件监控是实时的,通过TCP、UDP什么的我还真不知道有没有这一说,我这个电表的协议是Modbus。读写电表需要发送读写的命令,一般是 “地址 命令 个数...

哪位大神有C#Rs485通讯代码?
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.IO.Ports;namespace serial{ public class ModBus { \/\/\/ \/\/\/ modbus状态 \/\/\/ public static string modbusStatus; \/\/\/ \/\/\/ 定义SerialPort变量 \/\/\/ public st...

c#编程下串口数据的发送问题(modbus下的ASCII模式)
: 的 ASCII码 不就是 3A嘛?其实,发送串“:010100050001F9”然后尾部加上 0d 0a 2 个字符就可以了,当然,也可以转换为 byte数组,存放 这个串对应的 ASCII码,再发送 一样!祝你顺利

Modbus Master如何读取从站的数据
使用这个方法可以直接读取设备寄存器地址里面的数据,再把数据对应的高低位、百位组合一下就可以显示出下位机屏幕上的数据,但前提是你要有你的设备的寄存器地址详细说明,至于Modbus引用之类的,去网上搜一下NModbus Sample可以下载到Modbus协议在编程里面的详细使用方法,祝你好运!

相似回答