- Java锁的逻辑(结合对象头和ObjectMonitor)
- 还在用饼状图?来瞧瞧这些炫酷的百分比可视化新图形(附代码实现)⛵
- 自动注册实体类到EntityFrameworkCore上下文,并适配ABP及ABPVNext
- 基于Sklearn机器学习代码实战
摘要:本文旨在说明面向CodeSYS的数据库连接方案SQL4Automation的使用方法 .
SQL4Automation是一套工业用途的软件解决方案,它主要的功能就是为PLC和机器人控制提供数据库连接,它支持很多类型的PLC,其中也包括CodeSYS软PLC。SQL4Automation for CodeSYS包含一个CodeSYS库以及一套第三方的软件,SQL4Automation的软件部分包含一个服务和一系列的对该服务进行配置的前端软件,我们也可以越过前端软件直接通过配置文件使用它提供的服务.
目前在PLC开发中越来越多的使用到了信息即时入库操作,但是PLC编程体系的数据库使用场景并不如其他编程语言中的广泛,并且PLC编程有着面向厂家的局限性,因此并没像JDBC,MyBatis那样丰富的数据库连接方案即便捷框架,为了做到和数据库的通讯很多情况下需要开发人员自己封装协议然后使用ODBC,SQL4Automation对工业编程连接数据库的一系列操作定制了规范,并提供了相应的功能块和函数,简化了连接数据库的过程,便于程序的开发维护,同时也达到了程序和数据库具体品牌的解耦,只要面向SQL4Automation编程,在之后更换数据库就只是更换其服务配置文件中的ODBC即可,无需修改代码.
另外一方面是SQL4Automation是一个免费的平台,CodeSYS提供一个直接连接MySQL的库,使用这个库能直接让PLC不借助任何第三方服务的状态下自己连接MySQL数据库,但是它收费,价格是七百多,而且它只能连接MySQL数据库,对于一些国企或者重点工厂来说并不能满足项目的需求.
我们首先看一下想要使用SQL4Automation都需要安装些什么东西:
1.CodeSYS中安装的SQL4Automation库 。
2.桌面控制软件 。
3.SQL4Automation服务 。
其中该连接服务是软件中自带的,在安装软件的过程中服务就会被注册,软件安装好后直接启动服务即可.
SQL4Automation的运行模式为:在PLC端通过SQL4Automation提供的库和SQL4Automation的服务通信,和SQL4Automation服务建立一个连接,PLC通过此连接将sql语句发送给服务,服务通过事先配置好的ODBC和数据库建立连接,并将获取到的PLC端服务发送给数据库,获得到数据库的反馈后再将该反馈发送给PLC端。 可见SQL4Automation的服务想当于一个中间人,是一个跳板平台性质的东西,它是PLC和数据库之间的一个中转站,PLC是先将sql语句发送给它,然后SQL4Automation服务再将sql语句发送给数据库,反之亦然 .
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请求:
在数据库中我们也发现了数据确实落库了:
在Linux中我们只能安装服务端,我们在解压完压缩包之后,会发现在目录中存在这样的一个文件:
我们也能从官网中下载Linux版本的其他安装文件,但是总体上的安装方式都是相同的,在解压Linux的压缩包之后,我们会找到这样的一个目录,执行其中的脚本 S4AConnector-inst 就可以直接进行全部的安装.
在Linux中我们同样需要启动这个服务,我们使用指令: systemctl start S4AConnector 启动服务,启动服务之后我们使用指令: systemctl status S4AConnector 查看服务状态,如果如下图所示,则说明启动成功:
需要注意的是在Linux版本中,该解决方案的操控仍然需要前端控制台操作,在Ubuntu或者其他的Linux操作系统中,安装SQL4Automation之后,桌面上都会出现和Windows中一样的三个工具的快捷方式,我们通过快捷方式能够打开一个和Windows中一样的界面,在有图形界面的系统中我们那样使用软件即可,但是在服务器中,我们没有图形用户界面,因此只能在配置文件中添加连接的信息,这个配置文件的默认路径为: /var/log/SQL4automation/config :
我们查看其中的内容为:
理论上我们修改这里的配置信息就可以构建连接了,但是这里的密码等信息都是通过某种方式加密的密文,不能通过明文进行配置,并且当前也缺少服务端配置的资料,因此在服务端启动SQL4Automation还需要深入研究.
最后此篇关于使用SQL4Automation让CodeSYS连接数据库的文章就讲到这里了,如果你想了解更多关于使用SQL4Automation让CodeSYS连接数据库的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我正在尝试创建一个工作流程,使用 Instapaper 将 URL 列表转换为纯文本,然后将文本保存在我机器上的文本文档中。 到目前为止,我已经能够获取 URL 列表、转换它们并保存文本文档。问题是我
有没有办法自动执行这些步骤? 打开 LibreOffice ODT 更新 TOC 和其他字段(例如通过菜单工具|更新|全部更新) 保存并关闭文档 最佳答案 如果您使用的是 Windows,那么使用 A
在 Microsoft Power Automate 中,使用表达式 utcNow() 可以获得当前日期(和时间)。我正在尝试获取昨天的日期。我尝试了 dateadd(utcNow(), -1) 和类
我使用 Power Automate Desktop 创建了一个桌面流程。但我无法安排或让它自动运行。有什么办法吗? 我不希望使用云流和使用网关连接桌面流。我需要在我的台式机本身内自动运行桌面流程。有
列表开始为空。然后,如果满足特定条件,我想为循环中的每次迭代附加一个值。我在变量操作中没有看到附加选项。 最佳答案 您可以使用字符串分割来实现此目的,假设您知道一个永远不会出现在值列表中的分隔符。我使
我使用 Power Automate Desktop 创建了一个桌面流程。但我无法安排或让它自动运行。有什么办法吗? 我不希望使用云流和使用网关连接桌面流。我需要在我的台式机本身内自动运行桌面流程。有
我使用的是 Mac OS X 11.0.1 Big Sur 我使用 Automator 创建了一个“看我做”的 QuickAction。我已经保存了它(似乎默认保存在 ~/Library/Servic
我的问题的历史: 我正在研究 UI automator (2.1.3) 和 Espresso 测试 + 在简单的 Mac Air (2014) 上使用 android studio (3.0.1)。之
有人要求我将 Sharepoint 上的 Excel 在线电子表格中的数据提取到 Power BI 中以创建仪表板 - 没问题,对吧?好吧,“数据点”之一实际上是指示状态的单元格的填充颜色。我进行了一
在 Power Automate 中,我正在调用一个返回此 JSON 的 API: { "status":"200", "Suburbs":[ { "
更新到 Mojave 后,我无法再使用之前使用的 automator 服务,并出现以下警报。 在“安全与隐私”中,我已经选中了 AppleScript Editor。 您发现我的代码有任何问题吗?或者
我在 Windows 7 下使用 Powershell 4,并且我的 cmdlet 定义如下: Function Transfer-File { [CmdletBinding()]
我在 commands.js 中使用这个方法 Cypress.Commands.add( 'iframeLoaded', { prevSubject: 'element' }, ($iframe) =
我正在使用 UI Automation 插件来自动化和测试在 Java 窗口中包含 HTML 对象的应用程序。我已将 UIATable 识别并保存在我的对象存储库中,并且以下方法工作正常: MsgBo
在我的项目中,有一个叫做创建任务的东西。创建任务并关闭页面后,系统会提示我一个警报“您即将关闭此应用程序并保存所有更改......” 然后是 OK 和 Cancel。 使用 F12,我无法检测到警报和
我使用 Cmder 作为我的命令提示符/控制台。 我发现自己每天多次使用相同的命令。例如 git merge --no-ff my-long-branch-name 有什么方法可以将这些命令存储在快捷
我是 Applescript 的新手,目前无法访问提示窗口,要求输入密码。 我正在为我的日常使用应用程序创建一个启动器,我想自动化启动过程。 现在,我只启动了两个应用程序,VirtualHostX 和
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 想改进这个问题?将问题更新为 on-topic对于堆栈溢出。 5年前关闭。 Improve this qu
如何为具有常规安装程序的程序创建自动安装程序,其中包含以下问题: 安装目录, 接受许可, 在桌面上创建图标 等等... 假设我可以为每个我想单独安装的程序构建一个自动安装程序,或者我想将文件放在一个自
如何在预定时间运行我的苹果脚本。我希望它每 45 分钟运行一次,但我不知道该怎么做。我将我的苹果脚本保存为应用程序。我接下来该怎么做? 谢谢 (目前,我正在使用 on idle 函数,但有更好的方法吗
我是一名优秀的程序员,十分优秀!