TwinCAT 3配合MySQL数据库实现ms级数据存储

MySQL安装

版本选择

本次实验使用的MySQL版本如下:

1、Server版本(LTS):mysql-8.4.3-winx64.msi

2、Workbench:mysql-workbench-community-8.0.46-winx64.msi

本次实验所使用的安装包均为文末提供下载链接。

安装流程

Server安装

安装过程略去,安装完毕后默认会启动配置器,直接Next>


设置root用户的密码,同时增加两个用户user1和user2,user1和user2的用户权限如下图所示。user1用来进行数据库的连接,创建,数据插入等操作,user2用来查阅数据。






点击 Next,最后Finish完成MySQL Server的初始化配置。

Workbench安装

在Server安装完毕后,既可开始Workbench的安装,安装Workbench可以用来可视化数据库的管理,安装过程略去,安装完毕后会启动如下界面。

点击OK,填入root密码,登录界面提示可以忽略,点击Continue Anyway

进入到管理界面如下图所示,root用户已经可以正常连入数据库。

测试user1用户的连接,也可以正常连接到数据库。

新建一个数据库(schema),名称为 new_schema。

点击 Apply

点击Apply,切换到Schemas选项卡查看新建的数据库。

同样建立user2用户的连接信息,进行连接测试

至此,所有用户的连接都测试通过,没有问题。

TF6420安装

版本选择

1、TF6420版本:TF6420-Database-Server.exe (Full Version 3.4.37.3)

安装流程

本次实验使用 TwinCAT 3.1.4024.67 XAR,使用管理员权限安装即可,安装过程略去。

PLC项目配置

使用倍福官方的 《Fast logging with data buffer》例程进行测试,在项目中新建一个名称为DBRecorder_MySQL的TwinCAT Connectivity项目,配置Target NetId为目标控制器的NetId(因为MySQL服务安装在目标控制器上)。

在TcDbServer节点下新建一个DB,其配置如下图所示。

添加完毕后使用 Check 按钮验证连接成功即可。

在PLC项目中,修改Task的周期为1ms

修改代码中的配置如下图所示,其中 sNetID为MySQL安装的控制器的AMSNetID,nDBID为项目中DB节点下的ID号

激活并运行程序,bRecord置true即可。

存储验证

在Workbench中打开相应的schema查看已经新建成功table,并且写入了数值,其中Timestamp间隔为 10000 ∗ 100 n s = 1 m s 10000*100ns=1ms 10000∗100ns=1ms

FAQ

报错信息

在本次调试过程中遇到如下报错信息

复制代码
Severity Code Description Project File Line Suppression State Error 3/13/2026 7:59:33 PM 582 ms | 'MAIN.fbRecord_tbl_Signals.fbPLCDBCreate.Table()': Invalid catalog name

原因是未在DB中配置Database参数,即执行代码时找不到相应的数据库名(schema),需要在此处填入新建的 new_schema 数据库名称后激活数据库配置即可。

第二个报错信息

复制代码
Severity	Code	Description	Project	File	Line	Suppression State
Error		3/13/2026 8:18:00 PM 569 ms | 'MAIN.fbRecord_tbl_Signals.fbPLCDBCmd.Execute()': Syntax error or access violation		

原因是官方例程中的SQL语句的测试对象是 MS SQL数据库,在使用MySQL数据库时需要将

复制代码
sCmd2 := ' ([Timestamp],[AM],[Peak],[Pulse],[Sawtooth],[Sine],[Square,Stairs],[Triangular]) VALUES({time},{am},{peak},{pulse},{sawtooth},{sine},{square},{stairs},{triangular});';

修改为

复制代码
sCmd2 := ' (Timestamp,AM,Peak,Pulse,Sawtooth,Sine,Square,Stairs,Triangular) VALUES({time},{am},{peak},{pulse},{sawtooth},{sine},{square},{stairs},{triangular});';
相关推荐
IT成长日记2 小时前
国产数据库DM8实战手册:静默安装部署全教程
数据库·dm8·国产数据库·静默安装·部署教程
HAPPY酷2 小时前
Ubuntu 中如何启用 root 账户?—— 从 “su: 认证失败” 到成功切换 root 的完整指南
服务器·数据库·ubuntu
熊哈哈O_o2 小时前
基于代价模型的复杂查询连接条件下推技术实践——以金仓数据库为例
数据库
Elastic 中国社区官方博客2 小时前
Elasticsearch Serverless 的无状态架构
大数据·数据库·elasticsearch·搜索引擎·云原生·架构·serverless
happymaker06262 小时前
JDBC(MySQL)——DAY02
android·数据库·mysql
十月南城2 小时前
实时数据平台的价值链——数据采集、加工、存储、查询与消费的协同效应与ROI评估
数据库·数据仓库·hive·hadoop·spark
有梦想的小何2 小时前
从结算需求出发:基于库存日快照与分区的结算报表的Java实践
java·数据库·mysql
Yungoal2 小时前
SQL基础0
数据库·sql
韩立学长2 小时前
基于Springboot的商品库存管理系统369jr3t9(程序、源码、数据库、调试部署方案及开发环境)系统界面展示及获取方式置于文档末尾,可供参考。
java·数据库·spring boot·后端