Program.cs 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. using System.Runtime.CompilerServices;
  2. namespace ConsoleApp1
  3. {
  4. internal class Program
  5. {
  6. static void Main(string[] args)
  7. {
  8. S7.Net.Plc plc = new S7.Net.Plc(S7.Net.CpuType.S71200, "127.0.0.1", 0, 0);
  9. plc.AutoClearCacheInterval = -1;
  10. plc.Open();
  11. plc.Write("DB2.DBX0.7", false);
  12. plc.Write("DB2.DBX1.1", false);
  13. plc.Write("DB2.DBX1.2", false);
  14. plc.Write("DB2.DBX30.2", false);
  15. var val = plc.ReadFloat("DB2.DBD4");
  16. //Console.WriteLine(Unsafe.As<uint, Single>(ref val));
  17. //Console.WriteLine(BitConverter.ToSingle(.Reverse().ToArray()));
  18. Random random = new Random();
  19. //while (true)
  20. {
  21. plc.Write("DB2.DBD4", (Single)(random.NextDouble() * 10));
  22. plc.Write("DB2.DBD8", (Single)(random.NextDouble() * 1000));
  23. plc.Write("DB2.DBD12", (Single)(random.NextDouble() * 100));
  24. Thread.Sleep(1000);
  25. }
  26. plc.Close();
  27. return;
  28. List<string> writeaddrs = new List<string>();
  29. List<string> writeaddrs1 = new List<string>();
  30. List<string> addrs = new List<string>();
  31. for(int i=0;i<0x200;i++)
  32. {
  33. addrs.Add($"DB{1}.DBX{i / 8}.{i % 8}");
  34. writeaddrs1.Add($"DB{1}.DBX{i / 8}.{i % 8}");
  35. addrs.Add($"DB{2}.DBD{i*4}");
  36. writeaddrs.Add($"DB{2}.DBD{i * 4}");
  37. addrs.Add($"DB{3}.DBX{i / 8}.{i % 8}");
  38. writeaddrs1.Add($"DB{3}.DBX{i / 8}.{i % 8}");
  39. }
  40. for(int i=0;i<20;i++)
  41. {
  42. Task.Run(() => ReadTest(plc,addrs));
  43. Task.Run(() => WriteTest(plc, writeaddrs));
  44. Task.Run(() => WriteBoolTest(plc, writeaddrs1));
  45. }
  46. Console.Read();
  47. plc.Close();
  48. Console.WriteLine("Hello, World!");
  49. }
  50. static void ReadTest(S7.Net.Plc plc,List<string> addr)
  51. {
  52. while (true)
  53. {
  54. addr.ForEach(x => plc.Read(x));
  55. }
  56. }
  57. static void WriteTest(S7.Net.Plc plc,List<string> addr)
  58. {
  59. Random random = new Random();
  60. while(true)
  61. {
  62. addr.ForEach(x =>
  63. {
  64. plc.Write(x, (Single)random.NextDouble());
  65. });
  66. }
  67. }
  68. static void WriteBoolTest(S7.Net.Plc plc, List<string> addr)
  69. {
  70. Random random = new Random();
  71. while (true)
  72. {
  73. addr.ForEach(x =>
  74. {
  75. plc.Write(x, random.Next(0,10)>=5);
  76. });
  77. }
  78. }
  79. }
  80. }