使用SQL4Automation让CodeSYS连接数据库
摘要:本文旨在说明面向CodeSYS的数据库连接方案SQL4Automation的使用方法。
1.SQL4Automation简介
1.1.什么是SQL4Automation
SQL4Automation是一套工业用途的软件解决方案,它主要的功能就是为PLC和机器人控制提供数据库连接,它支持很多类型的PLC,其中也包括CodeSYS软PLC。SQL4Automation for CodeSYS包含一个CodeSYS库以及一套第三方的软件,SQL4Automation的软件部分包含一个服务和一系列的对该服务进行配置的前端软件,我们也可以越过前端软件直接通过配置文件使用它提供的服务。
1.2.为何使用SQL4Automation
目前在PLC开发中越来越多的使用到了信息即时入库操作,但是PLC编程体系的数据库使用场景并不如其他编程语言中的广泛,并且PLC编程有着面向厂家的局限性,因此并没像JDBC,MyBatis那样丰富的数据库连接方案即便捷框架,为了做到和数据库的通讯很多情况下需要开发人员自己封装协议然后使用ODBC,SQL4Automation对工业编程连接数据库的一系列操作定制了规范,并提供了相应的功能块和函数,简化了连接数据库的过程,便于程序的开发维护,同时也达到了程序和数据库具体品牌的解耦,只要面向SQL4Automation编程,在之后更换数据库就只是更换其服务配置文件中的ODBC即可,无需修改代码。
另外一方面是SQL4Automation是一个免费的平台,CodeSYS提供一个直接连接MySQL的库,使用这个库能直接让PLC不借助任何第三方服务的状态下自己连接MySQL数据库,但是它收费,价格是七百多,而且它只能连接MySQL数据库,对于一些国企或者重点工厂来说并不能满足项目的需求。
1.3.SQL4Automation的运行原理
我们首先看一下想要使用SQL4Automation都需要安装些什么东西:
1.CodeSYS中安装的SQL4Automation库
2.桌面控制软件
3.SQL4Automation服务
其中该连接服务是软件中自带的,在安装软件的过程中服务就会被注册,软件安装好后直接启动服务即可。
1.4.SQL4Automation运行结构
SQL4Automation的运行模式为:在PLC端通过SQL4Automation提供的库和SQL4Automation的服务通信,和SQL4Automation服务建立一个连接,PLC通过此连接将sql语句发送给服务,服务通过事先配置好的ODBC和数据库建立连接,并将获取到的PLC端服务发送给数据库,获得到数据库的反馈后再将该反馈发送给PLC端。可见SQL4Automation的服务想当于一个中间人,是一个跳板平台性质的东西,它是PLC和数据库之间的一个中转站,PLC是先将sql语句发送给它,然后SQL4Automation服务再将sql语句发送给数据库,反之亦然。
2.在SQL4Automation的安装和使用
1.Windows中的安装
1.进入SQL4Automation官网:https://www.sql4automation.com/en/home/
2.下拉到页面最下面点击下载
3.选择安装版本信息及个人信息
在这些内容填写完成之后就可以启动下载了。
4.安装
解压下载到的压缩包之后我们继续解压这个Windows的安装文件:
进入解压后的目录,我们根据自己的系统选择安装程序:
运行安装完毕之后,系统中就会自动出现该软件的连接服务以及上文中提到的三个软件。
5.为S4Connector服务配置目标数据库连接
打开桌面中的软件:S4A Config,进入到如下界面
如果系统中的服务处于运行状态的话,该前端控制台右上角标红的地方的Connect是可点击的,如果发现该按钮是灰色不可点击,请检查任务管理器中的服务,寻找S4Connector,将该服务打开即可。
之后我们点击Connect,界面左边的连接管理栏便可以使用了,我们点击New新建一个连接:
新建连接的界面如图所示:
需要我们手动配置的地方是图中用红框和蓝框标记的地方,其中红框标记的是该服务自身的IP端口信息,包括Ip信息和端口信息以及连接超时时间,在CodeSYS中设置这个IP和端口便可以连接到这个服务,而蓝色框标记的地方是配置数据库信息的地方,其中需要填写数据源,用户名和密码三项,数据源就是ODBC,如果当前系统中没有我们需要的数据源,我们可以直接点击右下角的ODBC admin进行配置。
6.配置数据源
点击ODBC admin之后我们会进入到系统的ODBC安装配置界面,需要注意的是ODBC我们需要提前准备好,ODBC是开放数据库连接,我们通过配置ODBC可以建立一个和数据库的连接,ODBC就是访问数据库的工具,我们可以理解为它是一种访问数据库的驱动。
进入到OBDC管理页面之后我们点击系统DSN,然后在该栏目下新增一个自己的ODBC。
点击添加后,就会立刻进入到ODBC选择的界面中,我们根据自己想要连接的数据库进行ODBC的选择,需要注意的是这里需要我们提前下载和安装ODBC,为了节约篇幅暂不介绍在系统中安装ODBC的方法:
选择好ODBC之后我们就会进入到一个配置ODBC连接的界面,填写好数据库的用户信息之后就制作好一个数据源了:
制作好的数据源会自动显示在Data source中,我们选择即可:
填写好下边的用户名和密码之后,即使不连接PLC,使用当前服务也可以直接从服务端连接数据库了,该软件提供一个测试工具用来测试服务和数据库的连通,就是这个之前下载好的这个软件:
需要注意的是在S4A Config中也能进入到这个软件中去,接下来我们测试数据库的连通性:
7.测试服务和数据库的连通性
首先点击License,为当前的连接获取证书:
在成功获取证书之后就可以连接数据库了:
在正式使用数据库做通信之前我们可以先检测一下数据库的连通性,在点击左下角的Test之后如果弹出了如图所示的弹窗,说明数据库连接确实可以用了,接下来我们可以放心测试:
点击Tools按钮下的S4AQuertTool或者直接从桌面图标进入测试工具:
测试工具如图所示,主要分为两个区域,一是书写SQL语句的区域,一是获取返回结果的区域:
我书写了一个测试用的SQL语句,点击Send之后成功获取到了返回,测试成功:
8.使用CodeSYS连接服务
我们首先需要为项目导入SQL4Automation为CodeSYS提供的服务连接库,在之前我们下载的安装包里已经提供了,如图所示:
解压之后我们就能够找到,将这个库安装到CodeSYS,然后添加到项目下即可:
想要使用CodeSYS连接服务我们首先需要实例化一个服务连接代码块,该对象在SQL4Automation提供的官方库中已经给出,名为fbSQL4Codesys
,实例化这个代码块时候我们便可以通过它连接数据库了,如图所示:
我们将其实例化并将其分配给一个任务:
之后我们书写它的调用逻辑,在如下代码中,会向数据库插入一条语句,我们运行起来测试一下:
我们向如图所示的库中插入数据,目前可见该库中没有任何数据:
向结构体中填充测试数据并触发程序执行:
在触发提交后我们点开服务的前端控制软件,会发现它已经接收到了我们的SQL请求:
在数据库中我们也发现了数据确实落库了:
2.Linux中的安装
在Linux中我们只能安装服务端,我们在解压完压缩包之后,会发现在目录中存在这样的一个文件:
我们也能从官网中下载Linux版本的其他安装文件,但是总体上的安装方式都是相同的,在解压Linux的压缩包之后,我们会找到这样的一个目录,执行其中的脚本S4AConnector-inst
就可以直接进行全部的安装。
在Linux中我们同样需要启动这个服务,我们使用指令:systemctl start S4AConnector
启动服务,启动服务之后我们使用指令:systemctl status S4AConnector
查看服务状态,如果如下图所示,则说明启动成功:
重点注意事项
需要注意的是在Linux版本中,该解决方案的操控仍然需要前端控制台操作,在Ubuntu或者其他的Linux操作系统中,安装SQL4Automation之后,桌面上都会出现和Windows中一样的三个工具的快捷方式,我们通过快捷方式能够打开一个和Windows中一样的界面,在有图形界面的系统中我们那样使用软件即可,但是在服务器中,我们没有图形用户界面,因此只能在配置文件中添加连接的信息,这个配置文件的默认路径为:/var/log/SQL4automation/config
:
我们查看其中的内容为:
理论上我们修改这里的配置信息就可以构建连接了,但是这里的密码等信息都是通过某种方式加密的密文,不能通过明文进行配置,并且当前也缺少服务端配置的资料,因此在服务端启动SQL4Automation还需要深入研究。