PLC按条件查询MySQL/SQLServer/PostgreSQL数据库,将数据写入寄存器

        IGT-DSER智能网关模块,支持各种PLC、智能仪表、远程IO与数据库之间双向通讯,既可以读取设备的数据上报到SQL数据库,也可以从数据库查询数据后写入到设备;     PLC协议转HTTP        PLC协议转MQTT

        本案例是通过一个IGT-DSER智能网关,实现PLC与数据库的双向通讯,根据PLC中的数值查询数据库中的数据,然后将结果返回给PLC,采用的是西门子的PLC和SQLServer数据库;     数据库网关软件与手册         PLC如何将数据写入SQL数据库存入多个数据表


        首先建立数据库Database,然后建立数据表Report1,表结构如下图:

        然后在数据表中填入数据,实现PLC根据barcode字符串查询para1和para2的值,PLC是S7-1500,数据地址对应如下:

        barcode:DB6.DBB40[String],    para1:DB6.DBW0[Int],    para2: DB6.DBD24[Real];

        然后通过网关的参数配置软件设置参数,如下图:

        将参数下载到网关后重启,网关即进入工作状态,然后准备好数据表中的数据,如下图:

        这样网关根据PLC的数值进行实时判断,当PLC的DB6.DBB40的字符串与数据库的barcode相等时,即将该行数据对应的para1的数据写入DB6.DBW0,将para2的数据写入DB6.DBD24。打开PLC的编程软件监控数据如下:

       关于配置表与SQL语言的对应关系,可看这篇文章。 IGT-DSER智能网关同样支持其他品牌的PLC,参数设置方式相似:

        ◆ FX:  三菱FX系列PLC                                    ◆ QL:  三菱Q/L系列PLC

        ◆ AS:  三菱A系列PLC                                      ◆ OM:  欧姆龙全系列PLC

        ◆ S72S:  西门子S7-200/Smart系列PLC          ◆ S734:  西门子S7-300/400系列PLC

        ◆ S71K:  西门子S7-1200/1500系列PLC          ◆ MBS:  施耐德等Modbus兼容PLC

        ◆ DVP:  台达、信捷PLC                                  ◆ NAIS:  松下全系列PLC

        ◆ KVS:  基恩士全系列PLC                               ◆ FTK:  永宏全系列PLC

        ◆ MSK:  LS/LG全系列PLC                               ◆ KOY:  光洋全系列PLC

        ◆ ABM: AB MicroLogix系列PLC                       ◆ ABC: AB Compact/Control系列PLC

相关软件与手册:点击下载

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用Java中的JDBC来实现创建不同数据库类型的数据源。以下是一个示例代码: ``` import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class DataSourceCreator { private static final String MYSQL_DRIVER_CLASS = "com.mysql.jdbc.Driver"; private static final String ORACLE_DRIVER_CLASS = "oracle.jdbc.driver.OracleDriver"; private static final String SQLSERVER_DRIVER_CLASS = "com.microsoft.sqlserver.jdbc.SQLServerDriver"; private static final String POSTGRESQL_DRIVER_CLASS = "org.postgresql.Driver"; private static final String MYSQL_URL = "jdbc:mysql://localhost:3306/mydatabase"; private static final String ORACLE_URL = "jdbc:oracle:thin:@localhost:1521:mydatabase"; private static final String SQLSERVER_URL = "jdbc:sqlserver://localhost:1433;databaseName=mydatabase"; private static final String POSTGRESQL_URL = "jdbc:postgresql://localhost:5432/mydatabase"; private static final String MYSQL_USERNAME = "myusername"; private static final String ORACLE_USERNAME = "myusername"; private static final String SQLSERVER_USERNAME = "myusername"; private static final String POSTGRESQL_USERNAME = "myusername"; private static final String MYSQL_PASSWORD = "mypassword"; private static final String ORACLE_PASSWORD = "mypassword"; private static final String SQLSERVER_PASSWORD = "mypassword"; private static final String POSTGRESQL_PASSWORD = "mypassword"; public static Connection createDataSource(String databaseType) throws SQLException, ClassNotFoundException { String driverClass; String url; String username; String password; switch (databaseType) { case "mysql": driverClass = MYSQL_DRIVER_CLASS; url = MYSQL_URL; username = MYSQL_USERNAME; password = MYSQL_PASSWORD; break; case "oracle": driverClass = ORACLE_DRIVER_CLASS; url = ORACLE_URL; username = ORACLE_USERNAME; password = ORACLE_PASSWORD; break; case "sqlserver": driverClass = SQLSERVER_DRIVER_CLASS; url = SQLSERVER_URL; username = SQLSERVER_USERNAME; password = SQLSERVER_PASSWORD; break; case "postgresql": driverClass = POSTGRESQL_DRIVER_CLASS; url = POSTGRESQL_URL; username = POSTGRESQL_USERNAME; password = POSTGRESQL_PASSWORD; break; default: throw new IllegalArgumentException("Invalid database type: " + databaseType); } Class.forName(driverClass); Connection connection = DriverManager.getConnection(url, username, password); return connection; } } ``` 以上代码会根据传入的参数 `databaseType` 来创建对应数据库类型的数据源,并返回一个 `Connection` 对象。可以通过以下代码来调用: ``` try { Connection connection = DataSourceCreator.createDataSource("mysql"); // Do something with the connection... } catch (SQLException | ClassNotFoundException e) { e.printStackTrace(); } ``` 需要注意的是,以上代码仅仅是创建了一个数据源,还需要根据具体需求使用该数据源来进行数据库操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值