使用 loTClient
在Nuget内添加
声明
public partial class Form1 : Form
{
ModbusTcpClient PLC;
V_GVL GVL = new V_GVL();
InitializeTimer();//ms循环采集
private void InitializeTimer()
{
// 创建 Timer 实例
timer1 = new System.Windows.Forms.Timer();
timer1.Interval = 100; // 设置定时器间隔为 1000 毫秒(1秒)
timer1.Tick += Timer_Tick; // 绑定 Tick 事件
timer1.Start(); // 启动定时器
}
private async void Timer_Tick(object sender, EventArgs e)
{
// 每次定时器触发时检查 GVL.Runing 的值
if (GVL.PLC_OK)
{
try
{
await LoadPlcD(sender, e); // 正确等待异步方法
}
catch (Exception ex)
{
Console.WriteLine($"加载PLC数据时出错: {ex.Message}");
}
if (GVL.PLC_TestInt >= 1)
{
private async Task LoadPlcD(object sender, EventArgs e)
{
await Task.Run(() => Forfor()); // 在后台线程执行同步操作
}
private void Forfor() //记录数据
{
//UI_Model
string rawString2 = PLC.ReadString("37400", 1, 3, null, 25).Value;
GVL.PLC_Model = SwapStringBytes(rawString2, Encoding.ASCII); // 自定义方法交换字节
UI_Model.Invoke(new Action(() =>
{
UI_Model.Text = GVL.PLC_Model;
}));
GVL.PLC_R = PLC.ReadInt16("5000").Value;//MD2500*2