如何在应用程序福彩12选5走势图且后台福彩12选5走势图时检索数据

已加入
2020年8月16日
留言内容
8
编程经验
Beginner
亲爱的大家,
在我的项目中,我需要连接到S7 PLC,并以每100ms的周期读取数据,然后更新变量并将其放入数据库中。基于UWP的应用程序,我需要知道的是如何在所有代码背后使用PLC中的所有更新值,
我的问题最好的方法是什么?
这是代码的简单部分:

code in page1:
       Plc plc = new Plc(CpuType.S7300, "192.168.0.10", 0, 2); // connection to PLC
       DispatcherTimer dispatcherTimer; // Timer to work on cycle
        public void DispatcherTimerSetup()
        {
            dispatcherTimer = new DispatcherTimer();
            dispatcherTimer.Tick += dispatcherTimer_Tick;
            dispatcherTimer.Interval = new TimeSpan(1000000);
            dispatcherTimer.Start();
        }
        void dispatcherTimer_Tick(object sender, object e)
        {
            updateDb5();
        }
        private void Page_Loaded(object sender, RoutedEventArgs e)
        {
            plc.Open(); // start connection to PLC it could be starts with page load or a button
        }

        bool value1; // the value which is necessary to access in all pages 
        private void updateDb5()
        {
            var db5 = new Db5(); // DB5 in PLC
            plc.ReadClass(db5, 5);
            value1 = db5.oneSecBlink; // An example bool in PLC DB
        }

在代码中,我需要访问项目中所有页面中的value1并将其存储在SQL数据库中,而且有必要在应用程序在后台福彩12选5走势图时保持连接处于活动状态。
提前致谢
 

跳伞

工作人员
已加入
2019年4月6日
留言内容
2,500
地点
弗吉尼亚州切萨皮克
编程经验
10+
您是否真的必须每秒​​10次从PLC提取数据?如果是这样,您确定可以在100毫秒内完成从PLC读取所有数据,写入数据库以及更新UI的所有操作吗?即使UWP DispatchTimer比WinForms计时器更好,但我不确定它是否可以为您提供这种精度保证,即使您可以在不到100ms的时间内完成所有工作。如果还有其他事情将另一个任务添加到调度计时器中并且该任务花费了100毫秒以上的时间怎么办?

My recommendation is doing the UI updates in the UI thread with the dispatch at a more reasonable human reaction rate of about every 300ms. Do you PLC reads and database updates in tight loop running in a dedicated thread where you either use Task.Delay() or do a busy wait where the amount of time you delay or busy wait is based against the current clock or a stopwatch instance.
 
已加入
2020年8月16日
留言内容
8
编程经验
Beginner
您是否真的必须每秒​​10次从PLC提取数据?如果是这样,您确定可以在100毫秒内完成从PLC读取所有数据,写入数据库以及更新UI的所有操作吗?即使UWP DispatchTimer比WinForms计时器更好,但我不确定它是否可以为您提供这种精度保证,即使您可以在不到100ms的时间内完成所有工作。如果还有其他事情将另一个任务添加到调度计时器中并且该任务花费了100毫秒以上的时间怎么办?

My recommendation is doing the UI updates in the UI thread with the dispatch at a more reasonable human reaction rate of about every 300ms. Do you PLC reads and database updates in tight loop running in a dedicated thread where you either use Task.Delay() or do a busy wait where the amount of time you delay or busy wait is based against the current clock or a stopwatch instance.
亲爱的跳伞运动员,
正如您真正提到的那样,每秒提取10次数据不是一个好主意,我在此之前进行了测试,但仍在工作,但是在我的测试中没有数据库更新。最后,我将计时器设置为500ms,所以我认为更新PLC和数据库中的值不会有太大问题。每次读取时都不得将数据放入数据库中。 100ms只是一个例子。其实我没有任务,我需要添加一些异步方法。关于UI线程中的UI更新,请举个例子,因为我是初学者,不知道如何将其放入代码中。真的谢谢。
 
最佳 底部