using System.Runtime.CompilerServices; namespace ConsoleApp1 { internal class Program { static void Main(string[] args) { S7.Net.Plc plc = new S7.Net.Plc(S7.Net.CpuType.S71200, "127.0.0.1", 0, 0); plc.AutoClearCacheInterval = -1; plc.Open(); plc.Write("DB2.DBX0.7", false); plc.Write("DB2.DBX1.1", false); plc.Write("DB2.DBX1.2", false); plc.Write("DB2.DBX30.2", false); var val = plc.ReadFloat("DB2.DBD4"); //Console.WriteLine(Unsafe.As(ref val)); //Console.WriteLine(BitConverter.ToSingle(.Reverse().ToArray())); Random random = new Random(); //while (true) { plc.Write("DB2.DBD4", (Single)(random.NextDouble() * 10)); plc.Write("DB2.DBD8", (Single)(random.NextDouble() * 1000)); plc.Write("DB2.DBD12", (Single)(random.NextDouble() * 100)); Thread.Sleep(1000); } plc.Close(); return; List writeaddrs = new List(); List writeaddrs1 = new List(); List addrs = new List(); for(int i=0;i<0x200;i++) { addrs.Add($"DB{1}.DBX{i / 8}.{i % 8}"); writeaddrs1.Add($"DB{1}.DBX{i / 8}.{i % 8}"); addrs.Add($"DB{2}.DBD{i*4}"); writeaddrs.Add($"DB{2}.DBD{i * 4}"); addrs.Add($"DB{3}.DBX{i / 8}.{i % 8}"); writeaddrs1.Add($"DB{3}.DBX{i / 8}.{i % 8}"); } for(int i=0;i<20;i++) { Task.Run(() => ReadTest(plc,addrs)); Task.Run(() => WriteTest(plc, writeaddrs)); Task.Run(() => WriteBoolTest(plc, writeaddrs1)); } Console.Read(); plc.Close(); Console.WriteLine("Hello, World!"); } static void ReadTest(S7.Net.Plc plc,List addr) { while (true) { addr.ForEach(x => plc.Read(x)); } } static void WriteTest(S7.Net.Plc plc,List addr) { Random random = new Random(); while(true) { addr.ForEach(x => { plc.Write(x, (Single)random.NextDouble()); }); } } static void WriteBoolTest(S7.Net.Plc plc, List addr) { Random random = new Random(); while (true) { addr.ForEach(x => { plc.Write(x, random.Next(0,10)>=5); }); } } } }