近期,老板指派了一项任务,要求我通过西门子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", 0, 1); // 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数据库的功能。
id | temperature | create_time |
---|---|---|
1 | 22.5 | 2024-11-01 05:00:00 |
2 | 22.7 | 2024-11-01 05:01:00 |
3 | 22.6 | 2024-11-01 05:02:00 |
4 | 22.8 | 2024-11-01 05:03:00 |
5 | 23.0 | 2024-11-01 05:04:00 |
6 | 22.9 | 2024-11-01 05:05:00 |
7 | 23.1 | 2024-11-01 05:06:00 |
8 | 23.2 | 2024-11-01 05:07:00 |
9 | 23.3 | 2024-11-01 05:08:00 |
10 | 23.4 | 2024-11-01 05:09:00 |
看到了数据库的数据。终于终于可以松一口气了。
近期热文:
PLC网口危机 !!! 怎么破?看这里 !!! 逆天 !!! 485跑进光纤 小白速看 !!! PLC主从站揭秘 逆天 !!! 敢说DCS和PLC是一回事 ??? |