Пример #1
0
        static void Main(string[] args)
        {
            IDNP3Manager mgr = DNP3ManagerFactory.CreateManager();

            mgr.AddLogHandler(PrintingLogAdapter.Instance); //this is optional
            var channel = mgr.AddTCPServer("server", LogLevel.INFO, 5000, "127.0.0.1", 20000);

            //optionally, add a listener for the channel state
            channel.AddStateListener(state => Console.WriteLine("Server state: " + state));

            var config     = new SlaveStackConfig();
            var outstation = channel.AddOutstation("outstation", LogLevel.INFO, RejectingCommandHandler.Instance, config);

            //optionally, add a listener for the stack state
            outstation.AddStateListener(state => Console.WriteLine("Outstation state: " + state));

            Console.WriteLine("Press <Enter> to randomly change a value");
            var    publisher = outstation.GetDataObserver();
            Random r         = new Random();

            while (true)
            {
                Console.ReadLine();
                int value = r.Next(UInt16.MaxValue);
                System.Console.WriteLine("Change Analog 0 to: " + value);
                publisher.Start();
                publisher.Update(new Analog(value, 1, DateTime.Now), 0);
                publisher.End();
            }
        }
Пример #2
0
        static int Main(string[] args)
        {
            IDNP3Manager mgr = DNP3ManagerFactory.CreateManager(1, new PrintingLogAdapter());
            //一個管理者
            var channel = mgr.AddTCPServer("server", LogLevels.NORMAL, ServerAcceptMode.CloseExisting, new IPEndpoint("127.0.0.1", 20000), ChannelListener.Print());
            //創造一個Channel
            var config = new OutstationStackConfig();

            // configure the various measurements in our database     創造資料量測點
            config.databaseTemplate.binary.Add(3, new BinaryConfig());
            config.databaseTemplate.binary.Add(7, new BinaryConfig());
            config.databaseTemplate.analog.Add(0, new AnalogConfig());
            // ....           允許自動送資料
            config.outstation.config.allowUnsolicited = true;

            // Optional: setup your stack configuration here設定本地地址,遠端地址
            config.link.localAddr  = 10; // outstation ip
            config.link.remoteAddr = 1;  //master addr

            var outstation = channel.AddOutstation("outstation", RejectingCommandHandler.Instance, DefaultOutstationApplication.Instance, config);

            //把設定檔丟到Channel物件裡面
            outstation.Enable(); // enable communications

            Console.WriteLine("Press <Enter> to change a value");
            //要放進去暫存器的數值
            bool   binaryValue = false;
            double analogValue = 0;

            while (true)
            { //按下 Enter 會改變二元值 跟增加類比數值
                switch (Console.ReadLine())
                {
                case ("x"):
                    return(0);

                default:
                {
                    binaryValue = !binaryValue;
                    ++analogValue;

                    // create a changeset and load it
                    var changeset = new ChangeSet();

                    var binaryFlags = new Flags();
                    binaryFlags.Set(BinaryQuality.ONLINE);

                    var analogFlags = new Flags();
                    analogFlags.Set(AnalogQuality.ONLINE);

                    //更新暫存器的數值
                    changeset.Update(new Binary(binaryValue, binaryFlags, new DNPTime(DateTime.UtcNow)), 3);
                    changeset.Update(new Analog(analogValue, analogFlags, DNPTime.Now), 0);
                    outstation.Load(changeset);
                }
                break;
                }
            }
        }
Пример #3
0
        static int Main(string[] args)
        {
            IDNP3Manager mgr = DNP3ManagerFactory.CreateManager(1, new PrintingLogAdapter());

            var channel = mgr.AddTCPServer("server", LogLevels.NORMAL, ChannelRetry.Default, "0.0.0.0", 20000);

            // Optional: add a listener for the channel state
            channel.AddStateListener(state => Console.WriteLine("channel state: " + state));

            var config = new OutstationStackConfig();

            // configure the various measurements in our database
            config.databaseTemplate = new DatabaseTemplate(4, 1, 1, 1, 1, 1, 1, 0);
            config.databaseTemplate.binaries[0].clazz = PointClass.Class2;
            // ....
            config.outstation.config.allowUnsolicited = true;

            // Optional: setup your stack configuration here
            config.link.localAddr  = 10;
            config.link.remoteAddr = 1;

            var outstation = channel.AddOutstation("outstation", RejectingCommandHandler.Instance, DefaultOutstationApplication.Instance, config);

            outstation.Enable(); // enable communications

            Console.WriteLine("Press <Enter> to change a value");
            bool   binaryValue = false;
            double analogValue = 0;

            while (true)
            {
                switch (Console.ReadLine())
                {
                case ("x"):
                    return(0);

                default:
                {
                    binaryValue = !binaryValue;
                    ++analogValue;
                    System.Console.WriteLine("Change Binary 0 to: " + binaryValue);
                    System.Console.WriteLine("Change Analog 9 to: " + analogValue);

                    // create a changeset and load it
                    var changeset = new ChangeSet();
                    changeset.Update(new Binary(binaryValue, 1, DateTime.Now), 0);
                    changeset.Update(new Analog(analogValue, 1, DateTime.Now), 0);
                    outstation.Load(changeset);
                }
                break;
                }
            }
        }
Пример #4
0
        static void Main(string[] args)
        {
            IDNP3Manager mgr = DNP3ManagerFactory.CreateManager();

            mgr.AddLogHandler(PrintingLogAdapter.Instance); //this is optional
            var channel = mgr.AddTCPServer("server", LogLevels.NORMAL, TimeSpan.FromSeconds(5), TimeSpan.FromSeconds(5), "0.0.0.0", 20000);

            // Optional: add a listener for the channel state
            channel.AddStateListener(state => Console.WriteLine("channel state: " + state));

            var config = new OutstationStackConfig();

            // configure the various measurements in our database
            config.databaseTemplate = new DatabaseTemplate(4, 1, 1, 1, 1, 1, 1);
            config.databaseTemplate.binaries[0].pointClass = PointClass.Class2;
            // ....

            // Optional: overide the default reporting variations
            config.outstation.eventConfig.binary  = EventBinaryResponse.Group2Var2;
            config.outstation.staticConfig.analog = StaticAnalogResponse.Group30Var5;

            // Optional: setup your stack configuration here
            config.link.localAddr  = 10;
            config.link.remoteAddr = 1;

            var outstation = channel.AddOutstation("outstation", RejectingCommandHandler.Instance, DefaultOutstationApplication.Instance, config);

            outstation.Enable(); // enable communications

            Console.WriteLine("Press <Enter> to randomly change a value");
            var  database = outstation.GetDatabase();
            bool value    = false;

            while (true)
            {
                Console.ReadLine();
                value = !value;
                System.Console.WriteLine("Change Binary 1 to: " + value);
                database.Start();
                database.Update(new Binary(value, 1, DateTime.Now), 0);
                database.End();
            }
        }
Пример #5
0
 public void InitChannel()
 {
     channel = manager.AddTCPServer("server", LogLevels.NORMAL, ChannelRetry.Default, "0.0.0.0", 20000);
 }