【发布时间】:2015-08-29 13:02:54
【问题描述】:
我想在 Visual Studio 2012 中使用多个计时器从 PLC(可编程逻辑控制器,电子产品)中的多个寄存器读取数据。当我只使用一个计时器来读取一个寄存器时,我得到了正确的数据,但是当我想读取另一个寄存器时,没有正确显示接收到的数据(它从 0 波动到实际值)。我使用朋友的图书馆来实现这一目标。所以我不知道图书馆.. 代码如下:
Imports Communication
Public Class Form1
Dim plc As PLCEthernetReadWrite
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
plc = New PLCEthernetReadWrite("192.168.1.5")
Timer1.Start()
Timer2.Start()
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Label1.Text = plc.ReadWord("404507") 'Where 404507 is register no.
Label4.Text = Val(Label1.Text) / 100
End Sub
Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick
Label1.Text = plc.ReadWord("002071") 'Where 002071 is register no.
Label4.Text = Val(Label1.Text) / 100
End Sub
End Class
如果我只使用一个计时器(timer1 或 timer2),那么我会得到正确的值。但我想显示来自多个寄存器的多个值。
【问题讨论】:
-
为什么你不能将代码从一个计时器移动到另一个并同时读取两者?
-
嗯,没有理由假设您没有得到实际价值。简单 PLC 的一个常见问题是主机接口与逻辑扫描不同步。所以你会观察到中间值。如果时间有点偏,那么你会看到别的东西。使用电话,打电话给任何了解“PLCEthernetReadWrite”的程序员。
标签: .net vb.net visual-studio visual-studio-2012