public PlcService(IConfiguration configuration) { Console.WriteLine("Initializing plc service..."); server = new S7Server(); var usedPlcPort = 102; if (configuration.GetChildren().Any(item => item.Key.Equals("plcPort"))) { UInt16 plcPort; var parsed = UInt16.TryParse(configuration["plcPort"], out plcPort); if (parsed) { server.SetParam(S7Consts.p_u16_LocalPort, ref plcPort); } usedPlcPort = plcPort; } var error = server.Start(); serverRunning = error == 0; if (serverRunning) { Console.WriteLine($"plc server started on port {usedPlcPort}!"); } else { Console.WriteLine($"plc server error {error}"); } ReadDataBlocks(); }
static void Main(string[] args) { Server = new S7Server(); Client = new S7Client(); Server.RegisterArea(S7Server.srvAreaDB, 1, DB1, DB1.Length); Server.RegisterArea(S7Server.srvAreaDB, 2, DB2, DB2.Length); Server.RegisterArea(S7Server.srvAreaDB, 3, DB3, DB2.Length); int errorcode = Server.Start(); Client.SetConnectionParams("127.0.0.1", 0, 2); Client.Connect(); Client.DBWrite(2, 0, 4, new byte[] { 1, 2, 3, 4 }); byte[] b = new byte[4]; S7Client.S7CpuInfo info = new S7Client.S7CpuInfo(); Client.GetCpuInfo(ref info); Console.WriteLine(info.ASName); Console.WriteLine(Client.Connected()); Console.WriteLine(errorcode); byte[] buffer = new byte[4]; int i = Client.DBRead(2, 0, 4, buffer); Console.ReadLine(); }
static void Main(string[] args) { try { Server = new S7Server(); Server.SetEventsCallBack(new S7Server.TSrvCallback(EventCallback), IntPtr.Zero); int Error = Server.Start(); System.Console.WriteLine("Started:" + Error); var dbs = ConfigurationManager.AppSettings["dbs"]; if (!string.IsNullOrEmpty(dbs)) { foreach (var cmd in dbs.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries)) { Reg(cmd); } } while (true) { var cmd = System.Console.ReadLine(); Reg(cmd); } } catch (Exception ex) { Log.Logger.ExceptionLog(ex); Console.ReadKey(); } }
public static void Main(string[] args) { DB1 [0] = 0xff; DB2 [0] = 0xff; DB3 [0] = 0xff; Server = new S7Server(); Server.RegisterArea(S7Server.srvAreaDB, 1, ref DB1, DB1.Length); Server.RegisterArea(S7Server.srvAreaDB, 2, ref DB2, DB2.Length); Server.RegisterArea(S7Server.srvAreaDB, 3, ref DB3, DB3.Length); TheEventCallBack = new S7Server.TSrvCallback(EventCallBack); //TheReadCallBack = new S7Server.TSrvCallback (ReadCallBack); // Server.EventMask = ~S7Server.evcDataRead; Server.SetEventsCallBack(TheEventCallBack, IntPtr.Zero); // Server.SetReadEventsCallBack (TheReadCallBack, IntPtr.Zero); int Error = Server.Start(); if (Error == 0) { Console.ReadKey(); Server.Stop(); } else { Console.WriteLine(Server.ErrorText(Error)); } }
public static void Start(short port) { Server = new S7Server(); // Share some resources with our virtual PLC Server.RegisterArea(S7Server.srvAreaDB, // We are registering a DB 1, // Its number is 1 (DB1) DB1, // Our buffer for DB1 DB1.Length); // Its size // Do the same for DB2, DB3, and DB4 Server.RegisterArea(S7Server.srvAreaDB, 2, DB2, DB2.Length); Server.RegisterArea(S7Server.srvAreaDB, 3, DB3, DB3.Length); Server.RegisterArea(S7Server.srvAreaDB, 4, DB4, DB4.Length); // Exclude read event to avoid the double report // Set the callbacks (using the static var to avoid the garbage collect) TheEventCallBack = new S7Server.TSrvCallback(EventCallback); TheReadCallBack = new S7Server.TSrvCallback(ReadEventCallback); Server.EventMask = ~S7Server.evcDataRead; Server.SetEventsCallBack(TheEventCallBack, IntPtr.Zero); Server.SetReadEventsCallBack(TheReadCallBack, IntPtr.Zero); // Uncomment next line if you don't want to see wrapped messages // (Note : Doesn't work in Mono 2.10) // Console.SetBufferSize(100, Int16.MaxValue - 1); // Start the server onto the default adapter. // To select an adapter we have to use Server->StartTo("192.168.x.y"). // Start() is the same of StartTo("0.0.0.0"); Server.SetParam(S7Consts.p_u16_LocalPort, ref port); int Error = Server.Start(); if (Error != 0) { throw new Exception($"Error starting Snap7 server: {Server.ErrorText(Error)}"); } //if (Error == 0) //{ // // Now the server is running ... wait a key to terminate // //Console.ReadKey(); // Server.Stop(); //} //else // Console.WriteLine(Server.ErrorText(Error)); // If you got a start error: // Windows - most likely you ar running the server in a pc on wich is // installed step 7 : open a command prompt and type // "net stop s7oiehsx" (Win32) or // "net stop s7oiehsx64" (Win64) // And after this test : // "net start s7oiehsx" (Win32) or // "net start s7oiehsx64" (Win64) // Unix - you need root rights :-( because the isotcp port (102) is // low and so it's considered "privileged". }
static void Main(string[] args) { Server = new S7Server(); // Set the callbacks (using the static var to avoid the garbage collect) TheEventCallBack = new S7Server.TSrvCallback(EventCallback); TheRWAreaCallBack = new S7Server.TSrvRWAreaCallback(SrvRWAreaCallback); // Filter a bit of noise Server.EventMask = 0x3ff; Server.SetEventsCallBack(TheEventCallBack, IntPtr.Zero); Server.SetRWAreaCallBack(TheRWAreaCallBack, IntPtr.Zero); // Uncomment next line if you don't want to see wrapped messages // (Note : Doesn't work in Mono 2.10) Console.SetBufferSize(100, Int16.MaxValue - 1); // Start the server onto the default adapter. // To select an adapter we have to use Server->StartTo("192.168.x.y"). // Start() is the same of StartTo("0.0.0.0"); int Error = Server.Start(); if (Error == 0) { // Now the server is running ... wait a key to terminate Console.ReadKey(); Server.Stop(); } else { Console.WriteLine(Server.ErrorText(Error)); } // If you got a start error: // Windows - most likely you ar running the server in a pc on wich is // installed step 7 : open a command prompt and type // "net stop s7oiehsx" (Win32) or // "net stop s7oiehsx64" (Win64) // And after this test : // "net start s7oiehsx" (Win32) or // "net start s7oiehsx64" (Win64) // Unix - you need root rights :-( because the isotcp port (102) is // low and so it's considered "privileged". }
public MainForm() { InitializeComponent(); Server = new S7Server(); Event = new S7Server.USrvEvent(); // Share some resources with our virtual PLC Server.RegisterArea(S7Server.srvAreaTM, // We are registering a DB 1, // Its number is 1 (DB1) ref DB1, // Our buffer for DB1 DB1.Length); // Its size // Do the same for DB2 and DB3 Server.RegisterArea(S7Server.srvAreaDB, 2, ref DB2, DB2.Length); Server.RegisterArea(S7Server.srvAreaDB, 3, ref DB3, DB3.Length); HexDump(DB1_Box, DB1, DB1.Length); HexDump(DB2_Box, DB2, DB2.Length); HexDump(DB3_Box, DB3, DB3.Length); LogTimer.Enabled = true; }
private void Form1_Load(object sender, EventArgs e) { Server = new S7Server(); TheEventCallBack = new S7Server.TSrvCallback(EventCallback); Server.SetEventsCallBack(TheEventCallBack, IntPtr.Zero); int Error = Server.Start(); showMsg("Start:" + Error); var dbs = ConfigurationManager.AppSettings["dbs"]; if (!string.IsNullOrEmpty(dbs)) { foreach (var cmd in dbs.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries)) { Reg(cmd); } } }
static void Main(string[] args) { System.Console.Out.WriteLine("S7 Server starting up"); Event = new S7Server.USrvEvent(); Srv = new S7Server(); Srv.RegisterArea(S7Server.srvAreaDB, // We are registering a DB 1, // Its number is 1 (DB1) DB1, // Our buffer for DB1 DB1.Length); // Its size TheEventCallBack = new S7Server.TSrvCallback(EventCallback); TheReadCallBack = new S7Server.TSrvCallback(ReadEventCallback); Srv.SetEventsCallBack(TheEventCallBack, IntPtr.Zero); Srv.SetReadEventsCallBack(TheReadCallBack, IntPtr.Zero); Srv.EventMask = Srv.EventMask & 1; // Mask 00000000 Srv.EventMask = Srv.EventMask | S7Server.evcDataRead; Srv.EventMask = Srv.EventMask | S7Server.evcDataWrite; int Error = Srv.Start(); if (Error == 0) { Console.WriteLine("Press ESC to stop"); do { while (!Console.KeyAvailable) { while (Srv.PickEvent(ref Event)) { Console.Out.WriteLine(Srv.EventText(ref Event)); } } } while (Console.ReadKey(true).Key != ConsoleKey.Escape); Srv.Stop(); } System.Console.Out.WriteLine("Enter any key to quit"); System.Console.ReadKey(); }
public Simulator() { InitializeComponent(); server = new S7Server(); ServerEvent = new S7Server.USrvEvent(); Action <string, int, int, int> add_ctrl = (name, db_nr, index, unit_nr) => { var ctrl = new SingleController() { Name = name, DbNumber = db_nr, DBxx = DBxx[index] }; ctrl.Dock = DockStyle.Fill; ctrl.UnitNumber = unit_nr; ctrl.NewLogLine += (s, e) => AddLogLine(e); ctrl.CarrierMoves = (cnr, bridge, xval) => { foreach (Control ctl in tabs.Controls) { SingleController sc = (SingleController)ctl.Controls[0]; sc.NewCarrierPos(cnr, bridge, xval); } }; ctrl.TrolleyMoves = (tnr, trolley, lift, yval, active) => { foreach (Control ctl in tabs.Controls) { SingleController sc = (SingleController)ctl.Controls[0]; sc.NewTrolleyPos(tnr, trolley, lift, yval, active); } }; ctrl.SendMessageToMain = (message, msg, br, tr, li, te) => { foreach (Control ctl in tabs.Controls) { SingleController sc = (SingleController)ctl.Controls[0]; sc.MessageFromOtherUnit(ctrl.Name, message, msg, br, tr, li, te); } }; server.RegisterArea(S7Server.srvAreaDB, db_nr, ref DBxx[index], DBxx[index].Length); TabPage tp = new TabPage() { Text = name }; tp.Controls.Add(ctrl); tabs.Controls.Add(tp); ctrl.Init(); }; add_ctrl("Main cabinet", 159, 9, 10); add_ctrl("Carrier 1", 150, 0, 31); add_ctrl("Carrier 2", 151, 1, 32); add_ctrl("Trolley 1", 152, 2, 21); add_ctrl("Trolley 2", 153, 3, 22); add_ctrl("Trolley 3", 154, 4, 23); add_ctrl("IO table 1", 155, 5, 11); add_ctrl("IO table 2", 156, 6, 12); add_ctrl("IO table 3", 157, 7, 13); EventTimer.Enabled = true; TxtIP.Text = GetDefaultIp(); StartBtn_Click(this, null); btnFaster_Click(this, null); btnFaster_Click(this, null); }