糟了 !!! 老板要我连夜采集温度

文摘   2024-11-03 21:01   湖北  

近期,老板指派了一项任务,要求我通过西门子1200PLC采集温度传感器的数据,并将其保存到MySQL数据库中,以便后续分析和监控。幸亏我懂一点点,不然要GG了

1200PLC的特点

西门子S7-1200PLC是一款紧凑型的可编程逻辑控制器,以其模块化设计、强大的工艺功能和集成通信接口而著称。它适用于多种自动化场景,能够满足广泛的自动化需求。

  • 实时时钟保持:能够在断电情况下保持时间,最长可达20天。
  • 数据断电保持:设置了断电保持的数据理论上可以无限期保持。
  • 工作存储器和装载存储器:提供足够的存储空间,满足不同应用需求。
  • 额定电压:支持宽幅电压输入,适应不同的电源环境。
  • 通信功能:集成PROFINET接口,支持与多种设备的通信。

如何采集

步骤1:连接PLC

首先,我们需要使用C#通过S7.Net库与西门子1200PLC建立连接。S7.Net是一个开源库,支持与西门子PLC的通信。

Install-Package S7.Net
Install-Package MySql.Data
var plc = new Plc(CpuType.S71200, "192.168.0.1"01); // IP地址、机架号、插槽号
plc.Open();

步骤2:读取数据

使用C#读取PLC中的温度数据。温度数据存储在DB10中。

if (plc.IsConnected)
{
    var temperature = plc.Read("DB10"); // 读取温度数据
}

步骤3:连接MySQL数据库

使用C#连接MySQL数据库,并将读取的数据保存。

string connectionString = "server=localhost;database=temperature_data;user=root;password=yourpassword";
using (var connection = new MySqlConnection(connectionString))
{
    connection.Open();
    using (var command = new MySqlCommand("INSERT INTO temperature_values (value, timestamp) VALUES (@value, NOW())", connection))
    {
        command.Parameters.AddWithValue("@value", temperature);
        command.ExecuteNonQuery();
    }
}

步骤4:定时任务

使用C#的定时任务每分钟执行上述读取和保存操作。

while (true)
{
    Thread.Sleep(60000); // 等待60秒
    // 读取和保存数据的代码
}

通过上述步骤,我们成功实现了使用C#从西门子1200PLC采集温度传感器数据,并将其保存到MySQL数据库的功能。

idtemperaturecreate_time
122.52024-11-01 05:00:00
222.72024-11-01 05:01:00
322.62024-11-01 05:02:00
422.82024-11-01 05:03:00
523.02024-11-01 05:04:00
622.92024-11-01 05:05:00
723.12024-11-01 05:06:00
823.22024-11-01 05:07:00
923.32024-11-01 05:08:00
1023.42024-11-01 05:09:00

看到了数据库的数据。终于终于可以松一口气了。

近期热文:

PLC网口危机 !!!  怎么破?看这里 !!!
逆天  !!! 485跑进光纤
小白速看 !!! PLC主从站揭秘
逆天 !!! 敢说DCS和PLC是一回事 ???

开源日记
分享10k+Star的优质开源项目。
 最新文章