s7-1200跟mysql_让西门子S7-1200直接连接MySQL数据库!!!

最近项目上有个需求,要把采集的数据存储到数据库中,当前西门子有很多方法,必读IDB,还有通过WINCC的脚本,第三方的软件等等,但是随着发展,有些需求希望设备直接到数据库,比如云端的RDS,可能现场不会有专门的电脑或者触摸屏用来运行脚本或者程序。那就需要PLC直接写入数据库。

家里搭建了一套S7-1200,在电脑上装了个MySQL的数据库,经调试,已经完成SHA1校验、MySQL三次握手、切换数据库、写入数据库这几个功能,上图:

cdba63fbd7c913a061e3f859e1f728d2.png

d56a57a803289cc1a0d7d9378a1f78a3.png

4b89b1d0e8f2447968ac90d1fa2adb75.png

222b576b3b9d78475c18d5c16e2d0ca6.png

68f131a31bc3ebd76d638cb560115f67.png

因为通信还有点问题,待后续完善一下之后会把源文件共享给大家,希望做成一个开源的库文件,供大家使用。

最近出图纸,还没时间完善,先打了个包,给大家发出来,可以到Github上拉代码。

更新了一个自认为可以使用的版本,可以到Git上下载,论坛附件上传不了,先贴几个图

47fb8a77f32cdd065f55f437c78817f5.png

34b28d525fb46a666c76689229b1f3c1.png

811fd54269aa186dd26d933c36b4bc45.png

bdf3a2d9239517cd5d961d20d5b4cbdd.png

原文件超出大小,各位到Git上下载,或者联系我微信索取,

13952850491  华文博。

已经测试过S7-1500可用,S7-1200可用,1500实际项目中在用,马上发现有什么问题再告知大家!

2020年10月9日

最近更新了一下版本:

1、修正了初次连接后再次连接失败的部分情况

2、增加了数据库字段中有中文的问题

3、源文件中增加了测试程序、测试程序附带数据库备份、说明文件等。

更新的文件太大无法上传,可以找我要或者到GitHub下载,地址不变

2020年10月12日

有人反馈Git下载比较慢,放到百度网盘,链接给大家

链接:https://pan.baidu.com/s/11Gxb5X7E_TUp0wBBcE6XZw

提取码:mrit

  • 5
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个Java通过Snap7库从S7-1200 PLC读取数据的示例代码,并将数据整理后存储到MySQL数据库中: ```java import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.SQLException; import com.snap7.client.S7Client; public class Snap7Example { public static void main(String[] args) { // 连接PLC S7Client client = new S7Client(); int result = client.ConnectTo("192.168.0.1", 0, 1); if (result != 0) { System.out.println("连接PLC失败"); return; } // 读取数据 byte[] data = new byte[20]; result = client.DBRead(1, 0, 20, data); if (result != 0) { System.out.println("读取数据失败"); return; } // 解析数据 int value1 = S7Client.DBX(1, 0, 0, data); int value2 = S7Client.DBW(1, 2, data); float value3 = S7Client.DBD(1, 4, data); // 存储数据到数据库 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连接 client.Disconnect(); } } ``` 在以上示例代码中,我们首先连接PLC,然后使用`DBRead`方法读取指定DB块的数据。接着,我们使用`S7Client`提供的方法解析数据,并将数据存储到MySQL数据库中。最后,我们断开与PLC的连接。需要注意的是,以上示例代码仅供参考,实际应用中需要根据具体需求进行修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值