NModbus实例资料下载.pdf
《NModbus实例资料下载.pdf》由会员分享,可在线阅读,更多相关《NModbus实例资料下载.pdf(6页珍藏版)》请在冰点文库上搜索。
SimpleModbusserialASCIImasterreadholdingregistersexample.using(SerialPortport=newSerialPort(COM1)/configureserialportport.BaudRate=9600;
/createmodbusmasterIModbusSerialMastermaster=ModbusSerialMaster.CreateAscii(port);
ushortstartAddress=1;
ushortnumRegisters=5;
/readfiveregistersushortregisters=master.ReadHoldingRegisters(slaveID,startAddress,numRegisters);
for(inti=0;
inumRegisters;
i+)Console.WriteLine(Register0=1,startAddress+i,registersi);
/output:
/Register1=0/Register2=0/Register3=0/Register4=0/Register5=0SimpleModbusserialUSBRTUmasterwritemultiplecoilsexample.using(FtdUsbPortport=newFtdUsbPort(0)/configureusbportport.BaudRate=9600;
port.Parity=FtdParity.None;
port.StopBits=FtdStopBits.One;
/writethreecoilsmaster.WriteMultipleCoils(slaveID,startAddress,newbooltrue,false,true);
DonateNModbusisdevelopedandmaintainedonavoluntarybasisandprovidedfreeofcharge.UpcomingFeaturesWPFNModbusMasterMasterConsoleWrapperFTDIUSBSlaveHomeSamplesDownloadsDiscussionIssuesNModbushttp:
/web.archive.org/web/20090601225835/http:
/www.第1页共6页2011/07/069:
49SimpleModbusserialUSBASCIImasterwritemultiplecoilsexample.using(FtdUsbPortport=newFtdUsbPort(0)/configureusbportport.BaudRate=9600;
SimpleModbusTCPmasterreadinputsexample.using(TcpClientclient=newTcpClient(127.0.0.1,502)ModbusIpMastermaster=ModbusIpMaster.CreateTcp(client);
/readfiveinputvaluesushortstartAddress=100;
ushortnumInputs=5;
boolinputs=master.ReadInputs(startAddress,numInputs);
inumInputs;
i+)Console.WriteLine(Input0=1,startAddress+i,inputsi?
1:
0);
/Input100=0/Input101=0/Input102=0/Input103=0/Input104=0SimpleModbusUDPmasterwritecoilsexample.using(UdpClientclient=newUdpClient()IPEndPointendPoint=newIPEndPoint(newIPAddress(newbyte127,0,0,1),502);
client.Connect(endPoint);
ModbusIpMastermaster=ModbusIpMaster.CreateUdp(client);
/writethreecoilsmaster.WriteMultipleCoils(startAddress,newbooltrue,false,true);
SimpleModbusserialRTUslaveexample.using(SerialPortslavePort=newSerialPort(COM2)/configureserialportslavePort.BaudRate=9600;
slavePort.DataBits=8;
slavePort.Parity=Parity.None;
slavePort.StopBits=StopBits.One;
slavePort.Open();
byteunitID=1;
/createmodbusslaveModbusSlaveslave=ModbusSerialSlave.CreateRtu(unitID,slavePort);
slave.DataStore=DataStoreFactory.CreateDefaultDataStore();
slave.Listen();
NModbushttp:
/www.第2页共6页2011/07/069:
49SimpleModbusSerialASCIIslaveexample.using(SerialPortslavePort=newSerialPort(COM2)/configureserialportslavePort.BaudRate=9600;
/createmodbusslaveModbusSlaveslave=ModbusSerialSlave.CreateAscii(unitID,slavePort);
SimpleModbusTCPslaveexample.byteslaveID=1;
intport=502;
IPAddressaddress=newIPAddress(newbyte127,0,0,1);
/createandstarttheTCPslaveTcpListenerslaveTcpListener=newTcpListener(address,port);
slaveTcpListener.Start();
ModbusSlaveslave=ModbusTcpSlave.CreateTcp(slaveID,slaveTcpListener);
/preventthemainthreadfromexitingThread.Sleep(Timeout.Infinite);
SimpleModbusUDPslaveexample.using(UdpClientclient=newUdpClient(502)ModbusUdpSlaveslave=ModbusUdpSlave.CreateUdp(client);
ModbusTCPmasterandslaveexample.byteslaveID=1;
/www.第3页共6页2011/07/069:
49/createandstarttheTCPslaveTcpListenerslaveTcpListener=newTcpListener(address,port);
ThreadslaveThread=newThread(slave.Listen);
slaveThread.Start();
/createthemasterTcpClientmasterTcpClient=newTcpClient(address.ToString(),port);
ModbusIpMastermaster=ModbusIpMaster.CreateTcp(masterTcpClient);
/readfiveregistervaluesushortinputs=master.ReadInputRegisters(startAddress,numInputs);
i+)Console.WriteLine(Register0=1,startAddress+i,inputsi);
/cleanupmasterTcpClient.Close();
slaveTcpListener.Stop();
/output/Register100=0/Register101=0/Register102=0/Register103=0/Register104=0ModbusserialASCIImasterandslaveexample.using(SerialPortmasterPort=newSerialPort(COM1)using(SerialPortslavePort=newSerialPort(COM2)/configureserialportsmasterPort.BaudRate=slavePort.BaudRate=9600;
masterPort.DataBits=slavePort.DataBits=8;
masterPort.Parity=slavePort.Parity=Parity.None;
masterPort.StopBits=slavePort.StopBits=StopBits.One;
masterPort.Open();
/createmodbusslaveonseperatethreadbyteslaveID=1;
ModbusSlaveslave=ModbusSerialSlave.CreateAscii(slaveID,slavePort);
ThreadslaveThread=newThread(newThreadStart(slave.Listen);
/createmodbusmasterModbusSerialMastermaster=ModbusSerialMaster.CreateAscii(masterPort);
master.Transport.Retries=5;
/readfiveregistervaluesushortregisters=master.ReadHoldingRegisters(slaveID,startAddress,numRegisters);
/output/Register100=0/Register101=0/Register102=0/Register103=0/Register104=0WriteandRead32bitvalueexample.uintlargeValue=UInt16.MaxValue+5;
ushortlowOrderValue=BitConverter.ToUInt16(BitConverter.GetBytes(largeValue),0);
ushorthighOrderValue=BitConverter.ToUInt16(BitConverter.GetBytes(largeValue),2);
/writelargevalueintwo16bitchunksmaster.WriteMultipleRegisters(slaveID,startAddress,newushortlowOrderValue,highOrderValue);
/readlargevalueintwo16bitchunksandperformconversionushortregisters=master.ReadHoldingRegisters(slaveID,startAddress,2);
uintvalue=ModbusUtility.GetUInt32(registers1,registers0);
/www.第4页共6页2011/07/069:
49Loggingexample.NModbususeslog4net.YourapplicationcaneasilybeconfiguredtocapturetheNModbuslogstatements,aswellasyourown.Tryaddingthefollowingxmltoyourapplicationsconfigurationsettings.NModbusConsoleAppenderconsumesonlylogstatementsoflevelINFOandhigherwhileNModbusFileAppenderconsumesalllogstatements(outputtoNModbusLog.txt).Toconfigurelog4netbasedonyourapplicationsconfigurationsettingsaddthefollowingline.log4net.Config.XmlConfigurator.Configure();
Examplelog4netappenderoutputforathemodbusserialRTUmasterwriteregistersexample./ConsoleAppenderINFOModbus.IO.ModbusTransportUnicastMessage-TX:
1,16,0,100,0,3,6,0,1,0,2,0,3INFOModbus.IO.ModbusTransportUnicastMessage-RX:
1,16,0,100,0,3/FileAppender(NModbusLog.txt)INFOModbus.IO.ModbusTransportUnicastMessage-TX:
1,16,0,100,0,3,6,0,1,0,2,0,3DEBUGModbus.IO.ModbusRtuTransportRead-Read4bytes.DEBUGModbus.IO.ModbusRtuTransportReadResponse-Framestart1,16,0,100.DEBUGModbus.IO.ModbusRtuTransportRead-Read4bytes.DEBUGModbus.IO.ModbusRtuTransportReadResponse-Frameend0,3,193,215.INFOModbus.IO.ModbusTransportUnicastMessage-RX:
1,16,0,100,0,3Formoreinformationvisitthelog4netprojectpage.Addyourowncustommessages.Soyourdevicehascustommessages?
Notaproblem,NModbusexposesinterfacesIModbusMessageandIModbusMessageWithDatajustforthatreason.SimplyimplementcustomrequestandresponsemessagesandcalltheappropriateModbusMaster.ExecuteCustomMessageoverload.ExamplefromatestdemonstrationgbothExecuteCustomMessageoverloads:
ushorttestAddress=120;
ushorttestValues=newushort10,20,30,40,50;
CustomReadHoldingRegistersRequestreadRequest=newCustomReadHoldingRegistersRequest(3,SlaveAddress,testAddress,(ushort)testValueCustomWriteMultipleRegistersRequestwriteRequest=newCustomWriteMultipleRegistersRequest(16,SlaveAddress,testAddress,newRegisterCoushortoriginalValues=Master.ExecuteCustomMessage(readRequest);
Master.ExecuteCustomMessage(writeRequest);
ushortnewValues=Master.ExecuteCustomMessage(readRequest);
Assert.AreEqual(testValues,newValues);
writeRequest=newCustomWriteMultipleRegistersRequest(16,SlaveAddress,testAddress,newRegisterCollection(originalValues);
Checkouttheseexamplecustommessageimplementations:
CustomReadHoldingRegistersRequestCustomReadH