西门子S71200/1500CPU对MySQL数据库的操作实现方法分享

       本次分享本人实现西门子S7-1200/1500CPU对MySQL数据库的操作实现方法,哦当然了也许可能西门子新版PLC程序库已经可以直连数据库了这个我不清楚了,实现的方式也有很多种,别问我为什么要连数据库,这得问你们信息部门咯,我来分享一下我是如何实现这一功能的!

 

思路:设计一个中间件程序用于协议转换实现互通,当然也可以叫它代理服务。
         首先要定义一个通讯协议,也就是我们说的数据报文格式,PLC端和中间件的报文遵循这一格式。PLC程序通过开放式TCP连接中间件(python脚本),中间件(python脚本)为服务器端,PLC主动连接中间件服务器,中间件服务器通过解析通讯格式转换成MYSQL语句再用pymysql库对SQL数据库进行操作,返回数据再转发到PLC完成,协议转换(如下图所示)。实现对数据库的,库新建、删除,数据表的新建删除、数据记录的插入、修改、查询等操作。

西门子S71200/1500CPU对MySQL数据库的操作实现方法分享


问为什么用python脚本来写中间件呢,→ 教程多、部署简单、跨平台!

没有打广告的意思只是说了句实话)

本人已经定义了一个通讯格式,本次上传的是编译后的可执行文件。PLC到中间件的协议格式如下:

(调试阶段可以用PC端TCP测试工具模拟连接测试)!

说明:(字段名、库名、表名要以字母开头数字或下划线连接,不能是数字开头也不能有除了下划线外其他符号限制20个字符内)

1,新建库名为Test
@,Ndb,Test

2、新建表格
逗号分隔
在数据库DB121新建表格tb1,后面的’dt,d1,d2,d3‘是表头,第一列为字符串格式20字符串,后面的字段是浮点数格式.
@,Ntb,DB121,tb1,dt,d1,d2,d3

3、新插入数据记录
插入数据库名为Test数据表为tb,dt=12-13,d1=9578.4,d2=45.0,d2=445.7)字段名和值 一一对应,逗号分隔 。
@,Nda,Test,tb,#dt,d1,d2,d3#,&12-13,23.4,45.0,445.7&

4、更新修改数据
更新数据库名为Test数据表tb,dt=12-11的行,d1=9578.4,d2=45.0,d3=445.7....)字段名和值 一一对应,逗号分隔 可以整行更新,或单个。
@,Uda,Test,tb,dt,12-11,#d1,d2,d3#,&9578.4,45.0,445.7&

5、查看某库某表第一行数据
查看库为Test表为tb的第一条记录
@,Qntd,Test,tb

6、看某库某表某行数据
查询Test表为tb的dt行为12-14的记录,存在就整行返回数据
@,Qlda,Test,tb,dt,12-14

7、查询某库某表是否存在
@,Jwdbtb,Test,tb4

8、查询某库有几张表
@,JwdbHtb,Test

9、删除某库某表某记记录
@,Dda,Test,tb1,dt,12-13

10、删除某表格
@,Dtb,Test,tb

11、删除某库
@,Ddb,Test

开始部署(本次以window为例)

部署环境需要一点点耐心,急躁者飘过。

中间件部署:(电脑必须联网)
window10 64位 或 window7 64位 
并安装了:python-3.8.10及以上版本,安装后先安装PIP库(为了安装以下的MYsql库做准备)
1、win键+R  输入CMD 回车键调出命令窗口(黑框)

2、输入命令:python -m pip install --upgrade pip   等待PIP下载安装完毕

西门子S71200/1500CPU对MySQL数据库的操作实现方法分享

西门子S71200/1500CPU对MySQL数据库的操作实现方法分享

3、PIP安装完毕后开始安装PyMySQL库 输入命令:pip install PyMySQL 等待安装完毕。

西门子S71200/1500CPU对MySQL数据库的操作实现方法分享

MYSQL数据库可以自己下载window版的安装,可以在VM虚拟机里部署,至于部署方法请参考教程链接    利用WampServer 搭建服务器后正确新建MYSQL用户方法利用WampServer 搭建服务器后正确新建MYSQL用户方法西门子S71200/1500CPU对MySQL数据库的操作实现方法分享https://blog.csdn.net/heng748/article/details/122560339

部署方式可以是以下两种:

部署方式1

西门子S71200/1500CPU对MySQL数据库的操作实现方法分享

部署方式2:

西门子S71200/1500CPU对MySQL数据库的操作实现方法分享

 本例使用了分布式部署进行测试:

将我编译出来的文件如下图文件放入同一个文件夹中。

西门子S71200/1500CPU对MySQL数据库的操作实现方法分享

      使用前必须先配置好数据库IP和登录名和以及密码并定义好中间件的端口号,一如既往的使用带VBA脚本编写 ‘配置生成.xlsm“来生成配置文件“config.json”;不要问为什么1、因为PLC作为客户端连接中间件要知道端口号,当然了IP地址就是部署本机的IP地址。2、可能MYSQL数据库可能部署在不同的电脑上。

西门子S71200/1500CPU对MySQL数据库的操作实现方法分享

中间件环境部署完毕后双击启动,脚本程序无窗口,只能在进程中看到它。

西门子S71200/1500CPU对MySQL数据库的操作实现方法分享

 把我编写好的PLC程序下载到PLC中,西门子S7-1200/及1500 都可以,s7-300或400部分指令不兼容无法使用,注意设置中间件的IP地址及端口号。监控连接情况如图

西门子S71200/1500CPU对MySQL数据库的操作实现方法分享

 由于PLC本身不支持多线程并发,所已所有有关的MYSQL_XXX的程序同时只能接通一条,请使用是做相关联锁。

注意:每个指令程序段有这个指令有关的返回值以及用法。

先来测试一下连接:

测试PLC与中间件以及中间件到MYSQL的联通性,此处注意必须授权登录用户访问数据库中的数据库名为mysql的库,因为数据库连接指令需要填写要连接的库名称,在不知道数据库有什么库的情况下没办法连接,但是mysql这个库名是系统自带的所以先连接它才能新建其他数据库,本次指令测试连接也是连接这个库,假如授权的登录名没有授权访问这个库就会返回错误。

西门子S71200/1500CPU对MySQL数据库的操作实现方法分享

新建一个数据库:

西门子S71200/1500CPU对MySQL数据库的操作实现方法分享

 新建个表:

西门子S71200/1500CPU对MySQL数据库的操作实现方法分享

插入一条记录: 

西门子S71200/1500CPU对MySQL数据库的操作实现方法分享

 修改一条记录:(可以改其中某个或多个或全部) 

只需要

西门子S71200/1500CPU对MySQL数据库的操作实现方法分享

读取某条数据记录:

西门子S71200/1500CPU对MySQL数据库的操作实现方法分享

 删除某条记录:

西门子S71200/1500CPU对MySQL数据库的操作实现方法分享

以上介绍的是主要的命令,还有其他命令比如查询某库有几张表,某表是否存在、某表是否存在、删除某库、删除某表等等,详细见PLC程序内相关例程。

特别说明:本PLC程序是借助中间件与数据库取得双向通讯!注意不是直连mysql!

以上程序测试时局域网操作响应速度<100ms,已连续测试7*24小时无故障运行。程序资料欢迎下载交流学习!

下载链接:

链接:https://pan.baidu.com/s/18fwhgXHnNbQG8r3xP4t-Bw 
提取码:zfa9

需要源代码,请留言邮箱!

上一篇:JFC系列1之添加背景图片


下一篇:什么是PLC顺序控制法设计?