我如何使用 C# 从 PLC S7 获取和显示图形高频数据点?

How would I get and show graph high frequency data point from PLC S7 with c#?

  1. 我的项目必须以高采样率(大约 1000 个样本/秒)进行监控。我使用 S7_communication 协议。我没有理想得到它(1000 样本/秒)。 也许我想我会创建一个定时器 1ms 以每秒获取 1 个样本。但是有2000个样本,我不知道怎么做。
  2. 实时显示图表。我想展示我从 PLC 得到的所有观点。并用高样本(1000 样本/秒)显示图表(自动滚动)。

你能给我一些概念吗? 我使用 s7.net lib 在 PLC 和 myPC 之间进行通信

Plc plc = null;

plc = new Plc(CpuType.S71200, "192.168.0.1", 0, 1);
public initPLC()
{
    try
    {
        plc.Open();
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
}


public void setTimer(double value)
{
    aTimer = new System.Timers.Timer(value);
    aTimer.Elapsed += OnTimedEvent;
    aTimer.AutoReset = true;
    aTimer.Enabled = true;
}

private void OnTimedEvent(Object source, ElapsedEventArgs e)
{
    if (plc.IsConnected)
    {
        RefreshValue();
    }
}
 
 
 private void RefreshValue()
{
    ushort value1 = 0;
    ushort value2 = 0;

    bool[] tagArr = { false, false, false, false };

    try
    {
        value1 = (ushort)plc.Read("DB4.DBW0"); //value1
        tagArr[0] = true;
    }
    catch (Exception)
    {
        tagArr[0] = false;
    }
    //func
    try
    {
        value2 = (ushort)plc.Read("DB4.DBW2"); //value2
        tagArr[1] = true;
    }
    catch (Exception)
    {
        tagArr[1] = false;
    }
    try
    {
        bool _bit = (bool)plc.Read(DataType.Input, 0, 0, VarType.Bit, 1);
    }
    catch (Exception)
    {

    }

}

让我告诉你,通过直接读取你的 plc 是不可能达到这种数据速率的。我认为您可以通过 PLC 直接读取的最佳速率约为 10~20ms。 对于高速监控数据,必须要有特定的DAQ模块。