Java使用S7Connector工具类从西门子PLC(S7-1200 、S7-1500)读取数据,整理存库示例
时间: 2024-02-17 13:04:51 浏览: 194
基于S7.net一次性读取西门子PLC-S7-1200大量数据并显示在控件上(源代码+注释).zip
5星 · 资源好评率100%
以下是一个Java通过S7Connector工具类从S7-1200 PLC读取数据的示例代码,并将数据整理后存储到MySQL数据库中:
```java
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Map;
import com.github.s7connector.api.DaveArea;
import com.github.s7connector.api.S7Connector;
import com.github.s7connector.api.S7ConnectorOptions;
public class S7ConnectorExample {
public static void main(String[] args) {
// 连接PLC
S7ConnectorOptions options = new S7ConnectorOptions();
options.setHost("192.168.0.1");
options.setRack(0);
options.setSlot(1);
S7Connector connector = S7Connector.newDefault(options);
// 读取数据
Map<String, Object> data = connector.readAll(DaveArea.DB, 1, 0, 20);
// 解析数据
int value1 = (int) data.get("DB1.DBX0.0");
int value2 = (int) data.get("DB1.DBW2");
float value3 = (float) data.get("DB1.DBD4");
// 存储数据到数据库
try (Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb", "root", "password")) {
PreparedStatement stmt = conn.prepareStatement("INSERT INTO mytable (value1, value2, value3) VALUES (?, ?, ?)");
stmt.setInt(1, value1);
stmt.setInt(2, value2);
stmt.setFloat(3, value3);
stmt.executeUpdate();
} catch (SQLException e) {
System.out.println("存储数据到数据库失败:" + e.getMessage());
}
// 断开PLC连接
connector.close();
}
}
```
在以上示例代码中,我们首先使用S7Connector工具类连接PLC,然后使用`readAll`方法读取指定DB块的数据。接着,我们解析数据,并将数据存储到MySQL数据库中。最后,我们断开与PLC的连接。需要注意的是,以上示例代码仅供参考,实际应用中需要根据具体需求进行修改。
阅读全文