最近做个项目,需要PC机通过局域网读取多台威纶人机中的数据,于是找到了Nmodbus库。
环境:win10+vs2010 C# Nmodbus下载:这里
step 1.将Nmodbus中的modbus作为一个类项目直接加载到我们自己的项目中,直接右键编译,会出错,因为它还关联了其它一些库。
step2 :将目录下tools复制到上面出错提示的路径,再次编译上面的类,编译成功。
step3:修改编译路径直接将动态库编译到自己项目的debug下面,并且在引用里添加它。
step4:在需要的CS头部添加using Modbus.Device;
step5:调用方法,这里我使用的modbus TCP/IP所以按以下调用。
ModbusIpMaster master;
master下面有很多函数可以通讯,针对不同的modbus控制指令。下面我按照master.WriteSingleRegiste写了个函数,直接可以写字符串,改变人机数据。
public void Writestringtosingleregister(byte slaveadress, string startadress, string data, string ip)
{
using (TcpClient client = new TcpClient(ip, 8000))
{
client.Client.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.KeepAlive, true);
master = ModbusIpMaster.CreateIp(client);
ushort startadresstemp = ushort.Parse(startadress);//直接转成数据
ushort datatemp = ushort.Parse(data);//转成ascii 字符
master.WriteSingleRegister(slaveadress, startadresstemp, datatemp);
}
}
接下来完成所有的指令并测试,都可以成功。