Program.cs 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. using ModbusSimulationProtocol.Interface;
  2. using ModbusSimulationProtocol.Services;
  3. using ModBusTcp;
  4. using NModbus;
  5. using ProtocalGeneral;
  6. using System.Net.Sockets;
  7. namespace ModbusMasterSlaveSim;
  8. internal class Program
  9. {
  10. static void Main(string[] args)
  11. {
  12. IModbusLogger logger =new ModbusLogger();
  13. IModbusSlaveService modbusSlaveService =new ModbusSlaveService(logger);
  14. modbusSlaveService.Initialize("127.0.0.1", 1502, 1);
  15. modbusSlaveService.Open();
  16. var coilDiscretes = modbusSlaveService.SlaveDataStore.CoilDiscretes;
  17. modbusSlaveService.TryWriteValues(coilDiscretes, 0, [true, false, true, true]);
  18. modbusSlaveService.TryReadValues(coilDiscretes,0,5,out var outPoints);
  19. if (outPoints is not null)
  20. {
  21. foreach (var point in outPoints)
  22. {
  23. Console.WriteLine(point);
  24. }
  25. }
  26. //TcpClient masterTcpClient = new TcpClient("127.0.0.1", 1502);
  27. //var factory = new ModbusFactory();
  28. //var master = factory.CreateMaster(masterTcpClient);
  29. //Task.Factory.StartNew(async () =>
  30. //{
  31. // Console.WriteLine("Waiting for 3s...");
  32. // await Task.Delay(3000);
  33. // master.WriteSingleCoil(1, 10, true);
  34. // var rst = master.ReadCoils(1, 10, 2);
  35. // if (rst is not null)
  36. // {
  37. // foreach (var point in rst)
  38. // {
  39. // Console.WriteLine(point);
  40. // }
  41. // }
  42. //});
  43. Modbus_Tcp modbus_Tcp=new Modbus_Tcp();
  44. modbus_Tcp.Initialize("Master", new ConnectionNotify());
  45. modbus_Tcp.Open("127.0.0.1", 1502);
  46. modbus_Tcp.SetValue(10, 100);
  47. Task.Delay(3000).Wait();
  48. modbusSlaveService.TryReadValues(modbusSlaveService.SlaveDataStore.HoldingRegisters, 10, 5, out var outPoints2);
  49. Task.Delay(Timeout.Infinite).GetAwaiter().GetResult();
  50. }
  51. }
  52. public class ConnectionNotify : ITcpConnectNority
  53. {
  54. public void Connect(string ip, int port)
  55. {
  56. }
  57. public void DisConnect(string ip, int port)
  58. {
  59. }
  60. }