最近做個項目,需要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); } }
接下來完成所有的指令并測試,都可以成功。
新聞熱點
疑難解答