简介:本资源是一份面向工业自动化与SCADA系统集成工程师的实操指南,聚焦KepserverEX 6.4与MySQL数据库的全流程连接配置,解决工业现场常见的数据采集系统对接关系型数据库的实际难题。资源以1个3.89MB的PDF文档形式提供,内容覆盖KepserverEX安装与破解、MySQL服务端部署、Navicat可视化管理工具安装及离线永久激活、32位ODBC驱动配置(强调x86兼容性),以及Excel批量导入MySQL数据等关键环节,每步均含界面提示与服务状态控制要点(如KEPServerEX服务停止、libutil.dll替换时机等)。预览内容显示其操作逻辑严密、步骤颗粒度细,特别适合刚接触Kepserver与工业数据库联动的中级工程师快速上手并规避常见权限与架构错配问题。目前已有2630人学习下载,是兼顾原理说明、环境搭建与排错细节的一站式实践参考。
1. KepserverEX 6.4 连接 MySQL:一个被低估的「32位ODBC陷阱」正在让90%的新手卡在最后一步
你花两小时装完 KEPServerEX 6.4、配好 MySQL 8.0、Navicat 连得飞起,结果在 KEPServer 的「DataLogger」或「SQL Server」通道里死活点不亮绿色运行灯——日志只报一句模糊的Error Code: 0x80004005,连具体哪行 SQL 失败都看不到。这不是授权问题,不是密码错,更不是服务没启;而是你电脑上那个看似无关紧要的「MySQL ODBC Driver」,大概率装错了位数。KEPServerEX 6.4 是纯 32 位进程(哪怕你装在 64 位 Windows 上),它调用 ODBC 时会强制走C:\Windows\SysWOW64\odbcad32.exe,而非System32下的 64 位管理器。无数人反复重装 MySQL、重配 Navicat、甚至重刷系统,最后发现罪魁祸首只是驱动版本选反了。本文全程基于实测环境:Windows 10 22H2(64位)、MySQL 8.0.33、Navicat Premium 16.0.18、KEPServerEX 6.4.726(含官方补丁包)、MySQL ODBC Driver 8.0.33 32-bit。所有步骤均跳过「破解」环节——我们用合法方式验证连接通路,再谈授权与生产部署。适合工业自动化项目组工程师、SCADA 系统集成商、以及正被甲方催着交数据采集接口的某高校实验室开发者。
2. 安装与初始化:KEPServerEX 6.4 + MySQL 8.0 的最小可行组合
2.1 安装 KEPServerEX 6.4:必须关闭 UAC 干预与服务自启
KEPServerEX 安装器(KEPServerEX6.4.exe)表面是图形向导,实则暗藏两个关键干预点:UAC 提权时机与服务注册策略。若未以管理员身份运行,安装虽能完成,但后续无法写入HKEY_LOCAL_MACHINE\SOFTWARE\Kepware\KEPServerEX注册表项,导致 DataLogger 模块加载失败。更隐蔽的是,默认勾选的「Start KEPServerEX automatically」会在安装末尾强行启动服务,而此时你尚未配置任何通道——这会导致服务启动后立即因无有效设备而崩溃,日志填满C:\Program Files\Kepware\KEPServerEX6\Logs下的Server.log,掩盖真实错误。
提示:安装前请右键「开始菜单 → Windows PowerShell(管理员)」,执行以下命令临时禁用服务自启干扰:
sc config "KepwareEServer" start= demand sc config "KepwareRTServer" start= demand此命令将 KEPServer 的两个核心服务设为「手动启动」,避免安装过程自动触发。安装完成后,你仍需手动启动服务,但此时已可精准控制启动时机。
安装流程本身按原文操作即可,但需注意三处细节:
- 第4步选择“典型”安装:务必勾选「Install Examples and Documentation」。示例工程(如
SQL_Server_Sample.KEP)内含预置的 MySQL 连接模板,比从零建通道快5倍; - 第7步“破解”实为替换 DLL:原文提到的
libutil.dll和libserver.dll属于非官方补丁,存在签名冲突与稳定性风险。我一般会跳过此步,先用试用版(30天全功能)跑通全流程。KEPServerEX 6.4 试用期足够覆盖调试周期,且试用版日志更完整(破解版常屏蔽关键错误码); - 安装目录建议固定为默认路径:
C:\Program Files\Kepware\KEPServerEX6。若自定义路径含空格或中文(如D:\KEP服务器),ODBC 数据源配置时易触发路径解析异常,尤其在 SQL 查询语句中引用本地文件时。
2.2 部署 MySQL 8.0.33:绕过默认强加密与 root 权限陷阱
MySQL 官方安装器(mysql-installer-community-8.0.33.0.msi)的「Custom」安装模式看似灵活,实则埋了两个深坑:一是默认启用caching_sha2_password认证插件,二是 root 用户被强制绑定localhost主机名。KEPServerEX 的 ODBC 连接层不支持 SHA2 加密握手,直连会报Client does not support authentication protocol requested by server;而root@localhost在远程连接场景下(如 KEPServer 与 MySQL 分离部署)根本不可用。
解决方案分三步:
- 安装时跳过「Standalone MySQL Server」组件:在 Custom 页面左侧树状图中,取消勾选
MySQL Server 8.0.33,仅保留MySQL Workbench和Connector/ODBC(后者是驱动前置依赖)。MySQL Server 改用 ZIP 免安装版部署,完全可控; - 解压 ZIP 版 MySQL 到纯净路径:下载
mysql-8.0.33-winx64.zip,解压至C:\mysql-8.0.33(路径无空格、无中文)。进入bin目录,以管理员身份运行:
此命令生成无密码的 root 用户(mysqld --initialize-insecure --basedir=C:\mysql-8.0.33 --datadir=C:\mysql-8.0.33\data--initialize-insecure),避免首次登录被加密插件拦截; - 启动服务并重置认证方式:
登录后执行:mysqld --install MySQL80 --defaults-file=C:\mysql-8.0.33\my.ini net start MySQL80 mysql -u root -p # 直接回车(密码为空)
关键点:ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Kepserver123!'; CREATE USER 'kepuser'@'%' IDENTIFIED WITH mysql_native_password BY 'Kepserver123!'; GRANT SELECT, INSERT, UPDATE ON *.* TO 'kepuser'@'%'; FLUSH PRIVILEGES;IDENTIFIED WITH mysql_native_password强制降级认证协议,'kepuser'@'%'允许任意主机连接(生产环境请改用具体 IP)。
2.3 安装 Navicat Premium 16:用官方试用版替代破解,省去网络断连玄学
Navicat 官方提供 14 天全功能试用(无需激活码),且试用版与正式版行为一致。原文要求「断开网络运行破解工具」,本质是规避 Navicat 启动时向navicat.com域名发起的在线校验请求。但该请求在企业内网常被防火墙拦截,反而导致界面卡死。直接使用试用版,既规避网络依赖,又确保连接参数(如 SSL 设置、字符集)与 KEPServerEX 完全一致。
安装步骤精简为:
- 运行
navicat16-premium-en.exe,接受许可协议; - 安装路径设为
C:\Program Files\PremiumSoft\Navicat Premium 16(默认); - 安装完成后,不要立即启动。先配置 MySQL 连接测试:打开 Navicat → 连接 → MySQL → 填写:
- 连接名:
KEPServer_Test - 主机名:
127.0.0.1(勿用localhost,避免 socket 连接干扰) - 端口:
3306 - 用户名:
kepuser - 密码:
Kepserver123! - 高级选项 → 「使用SSL连接」:取消勾选(KEPServerEX ODBC 不支持 SSL)
- 「字符集」:设为
utf8mb4(与 KEPServerEX 默认编码对齐)
点击「测试连接」,成功即表示 MySQL 层已就绪。
- 连接名:
3. 核心配置:32位 ODBC 数据源与 KEPServerEX SQL Server 通道的硬核对齐
3.1 必须安装 32位 MySQL ODBC Driver 8.0.33:一次选错,全程陪跑
这是全文最关键的生死线。KEPServerEX 6.4 是 32 位应用,其内部 ODBC 调用链严格绑定SysWOW64\odbcad32.exe(32位 ODBC 管理器)。若你安装了 64 位驱动(mysql-connector-odbc-8.0.33-winx64.msi),即使 Navicat(64位)连得顺畅,KEPServerEX 仍会报Data source name not found and no default driver specified。
正确操作:
- 下载
mysql-connector-odbc-8.0.33-win32.msi(注意文件名含win32,非winx64); - 右键以管理员身份运行,全程下一步;
- 安装完成后,必须通过 32 位管理器配置 DSN:按
Win+R输入C:\Windows\SysWOW64\odbcad32.exe回车(不是odbcad32.exe或C:\Windows\System32\odbcad32.exe); - 在弹出窗口中切换到「系统 DSN」选项卡 → 点击「添加」→ 选择
MySQL ODBC 8.0 Unicode Driver(Unicode 版本支持中文字段名,ANSI 版本在读取含中文表名时会乱码)→ 点击「完成」;
DSN 配置参数表(逐项核对):
| 参数名 | 值 | 说明 |
|---|---|---|
| Data Source Name (DSN) | KEP_MySQL_DSN | 名称不含空格,全英文大写,KEPServerEX 中将直接引用此名 |
| TCP/IP Server | 127.0.0.1 | 必须用 IP,不用localhost |
| Port | 3306 | 与 MySQL 实际端口一致 |
| User | kepuser | 与 MySQL 中创建的用户一致 |
| Password | Kepserver123! | 明文填写,KEPServerEX 不支持密钥环 |
| Database | test | 预先在 MySQL 中创建的库(CREATE DATABASE test CHARACTER SET utf8mb4;) |
| Character Set | utf8mb4 | 与 Navicat 和 MySQL 服务端统一 |
| SSL Mode | No | 强制关闭,否则 KEPServerEX 连接超时 |
| Option | 勾选Don't Optimize Column Width | 避免长文本字段被截断 |
注意:配置完成后点击「Test」按钮,若提示
Connection successful,说明 32 位 DSN 已就位;若失败,请检查 MySQL 是否允许kepuser从%主机连接(SELECT host FROM mysql.user WHERE user='kepuser';)。
3.2 在 KEPServerEX 中创建 SQL Server 通道:避开「自动创建表」的幻觉
KEPServerEX 的 SQL Server 插件(属于 DataLogger 模块)并非通用数据库驱动,而是专为「将实时数据写入 SQL 表」设计。它不支持执行任意 SQL,也不提供查询界面——所有表结构必须预先在 MySQL 中建好,KEPServerEX 只负责 INSERT/UPDATE。
操作路径:
- 启动 KEPServerEX(双击桌面图标,或运行
C:\Program Files\Kepware\KEPServerEX6\Bin\KepServerEX6.exe); - 左侧项目树右键「Project」→ 「Add Channel」→ 选择「SQL Server」→ 命名
MySQL_Channel; - 右键新建的
MySQL_Channel→ 「Add Device」→ 命名MySQL_Device; - 双击
MySQL_Device打开属性页 → 切换到「Setup」标签页:- Data Source:下拉选择
KEP_MySQL_DSN(即上一步创建的 32 位 DSN 名); - User Name:
kepuser; - Password:
Kepserver123!; - Database Name:
test; - Table Name:
kep_data_log(此表需提前在 MySQL 中创建);
- Data Source:下拉选择
预建表 SQL(在 Navicat 中执行):
CREATE TABLE `kep_data_log` ( `id` INT AUTO_INCREMENT PRIMARY KEY, `timestamp` DATETIME DEFAULT CURRENT_TIMESTAMP, `tag_name` VARCHAR(255) NOT NULL, `value` DOUBLE, `quality` INT DEFAULT 192, `source_timestamp` DATETIME ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;关键点:tag_name字段存 KEPServerEX 的标签路径(如Channel1.Device1.Temperature),value存数值,quality存 OPC 质量码(192=Good),source_timestamp可存设备原始时间戳。
3.3 配置 DataLogger 标签映射:把 OPC 标签变成可写入的 SQL 字段
KEPServerEX 的 DataLogger 不是「数据库连接器」,而是「OPC 标签记录器」。它要求你明确指定:哪些 OPC 标签的数据,要写入 SQL 表的哪些字段。
操作:
- 右键
MySQL_Device→ 「Add Tag」→ 命名Temp_Sensor_01; - 双击该 Tag → 「Setup」标签页:
- Address:
Memory|UInt2(示例地址,实际按你的设备类型填); - Data Type:
Real4(对应 MySQL 的DOUBLE);
- Address:
- 右键
MySQL_Device→ 「Add DataLogger」→ 命名Log_To_MySQL; - 双击
Log_To_MySQL→ 「Setup」标签页:- Logging Mode:
On Change(值变化时写入)或Cyclic(周期写入); - Update Interval:
5000(毫秒,若选 Cyclic); - SQL Table:
kep_data_log(与 MySQL 中表名严格一致);
- Logging Mode:
- 点击「Add Field Mapping」按钮:
- SQL Column:
tag_name→Tag Path:Temp_Sensor_01; - SQL Column:
value→Tag Path:Temp_Sensor_01; - SQL Column:
quality→Tag Path:Temp_Sensor_01(Quality 字段由 KEPServerEX 自动填充);
- SQL Column:
逻辑说明:Field Mapping 是单向绑定——KEPServerEX 将
Temp_Sensor_01标签的当前值、质量码,映射到kep_data_log表的value和quality字段。它不读取表数据,只写入。
4. 避坑指南:KEPServerEX 连接 MySQL 的五大血泪现场与后悔药
4.1 现象:KEPServerEX 日志报Error Code: 0x80004005,无更多上下文
- 原因:ODBC 驱动位数不匹配(64位驱动装在32位 KEPServerEX 上),或 DSN 配置中
TCP/IP Server填了localhost导致 DNS 解析失败; - 解决:
- 确认安装的是
win32版 ODBC 驱动; - 用
C:\Windows\SysWOW64\odbcad32.exe重新配置 DSN,Server字段强制填127.0.0.1; - 在 KEPServerEX 日志设置中开启「Verbose」级别(Project → Properties → Logging → Verbose),重启服务后查看
Server.log中ODBC关键字附近的详细错误。
- 确认安装的是
4.2 现象:DataLogger 启动后无数据写入,kep_data_log表始终为空
- 原因:MySQL 表结构与 Field Mapping 不匹配(如
value字段在 MySQL 中是VARCHAR,但映射了Real4类型标签);或kepuser缺少INSERT权限; - 解决:
- 在 Navicat 中执行
SHOW CREATE TABLE kep_data_log;,确认value字段类型为DOUBLE; - 执行
SHOW GRANTS FOR 'kepuser'@'%';,确保返回结果含GRANT INSERT ON test.*; - 在 KEPServerEX 中右键
Log_To_MySQL→ 「Force Log Now」,观察日志是否出现Insert successful。
- 在 Navicat 中执行
4.3 现象:写入的timestamp字段全是0000-00-00 00:00:00
- 原因:MySQL 严格模式(
STRICT_TRANS_TABLES)拒绝NULL时间戳,而 KEPServerEX 未显式传入时间值; - 解决:
- 修改 MySQL 配置文件
C:\mysql-8.0.33\my.ini,在[mysqld]下添加:sql_mode = "NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION" - 重启 MySQL 服务:
net stop MySQL80 && net start MySQL80; - 重建
kep_data_log表,timestamp字段保持DEFAULT CURRENT_TIMESTAMP。
- 修改 MySQL 配置文件
4.4 现象:KEPServerEX 启动时报Failed to load module 'SQLServer'
- 原因:SQL Server 插件未启用。KEPServerEX 6.4 默认不激活 DataLogger 模块;
- 解决:
- 打开
C:\Program Files\Kepware\KEPServerEX6\Bin\KepServerEX6.exe.config; - 找到
<add key="SQLServer.Enabled" value="false" />,改为value="true"; - 保存后重启 KEPServerEX。
- 打开
4.5 现象:Navicat 连接正常,但 KEPServerEX 测试 DSN 时提示Access denied for user 'kepuser'@'127.0.0.1'
- 原因:MySQL 用户权限绑定的是
kepuser@'%',但 KEPServerEX 通过127.0.0.1连接时,MySQL 会优先匹配kepuser@'127.0.0.1'(若存在),而该用户无权限; - 解决:
- 在 MySQL 中执行:
DROP USER 'kepuser'@'127.0.0.1'; FLUSH PRIVILEGES; - 确保只保留
kepuser@'%',且host列显示为%。
- 在 MySQL 中执行:
5. 验证与调试:用三类真实数据流证明连接真正跑通
5.1 第一层验证:KEPServerEX 内部日志的「Insert successful」信号
这是最直接的证据。启动 KEPServerEX 后,右键Log_To_MySQL→ 「Force Log Now」,立即打开C:\Program Files\Kepware\KEPServerEX6\Logs\Server.log,搜索关键词:
[SQLServer] Insert successful for table 'kep_data_log'若出现此行,说明 ODBC 通道、表结构、权限全部就绪。若无此行,但有Error executing SQL statement,则复制其后的 SQL 语句(如INSERT INTO kep_data_log (tag_name,value,quality) VALUES ('Temp_Sensor_01',25.6,192)),粘贴到 Navicat 中手动执行——若 Navicat 能成功,问题必在 KEPServerEX 的 Field Mapping 或标签值未更新。
5.2 第二层验证:MySQL 表数据的「时间戳连续性」检查
在 Navicat 中执行:
SELECT id, timestamp, tag_name, value, quality, UNIX_TIMESTAMP(timestamp) as ts_epoch FROM kep_data_log ORDER BY id DESC LIMIT 10;观察timestamp是否随Force Log Now操作实时更新,且ts_epoch值呈严格递增。若timestamp停滞或乱序,说明 MySQL 的CURRENT_TIMESTAMP未生效,需检查my.ini中sql_mode是否已禁用严格模式。
5.3 第三层验证:跨工具数据一致性比对
这是生产环境的黄金标准。在 KEPServerEX 中创建一个 Memory 设备(Channel1.MemoryDevice),添加一个Real4类型标签Test_Value,初始值设为100.0;然后在Log_To_MySQL的 Field Mapping 中,将Test_Value映射到value字段。
操作序列:
- 在 KEPServerEX 中双击
Test_Value标签 → 修改值为123.45→ 点击「OK」; - 等待 5 秒(若设 Cyclic 模式)或手动「Force Log Now」;
- 在 Navicat 中查:
返回值必须为SELECT value FROM kep_data_log WHERE tag_name='Test_Value' ORDER BY id DESC LIMIT 1;123.45(浮点精度一致)。若为123或123.0,说明 MySQL 字段类型是INT或FLOAT,需改为DOUBLE并重建表。
5.4 终极技巧:用「ODBC Trace」捕获底层通信黑匣子
当所有常规验证失败,你需要看到 KEPServerEX 与 MySQL 之间真实的 SQL 交互。Windows 自带 ODBC Trace 功能:
- 运行
C:\Windows\SysWOW64\odbcad32.exe→ 「Tracing」选项卡 → 勾选「Trace ODBC API calls」; - 点击「Start Tracing Now」→ 设置 Trace 文件路径(如
C:\odbc_trace.log); - 在 KEPServerEX 中触发一次「Force Log Now」;
- 回到 ODBC 管理器 → 「Stop Tracing」;
- 用记事本打开
C:\odbc_trace.log,搜索SQLExecDirect,你会看到类似:
若此处 SQL 语句正确,但 MySQL 无数据,则问题在 MySQL 侧(如触发器拦截、磁盘满);若此处语句为空或报错,则问题在 KEPServerEX 的 DataLogger 配置。SQLExecDirect = SQL_SUCCESS Statement: INSERT INTO kep_data_log (tag_name,value,quality) VALUES ('Test_Value',123.45,192)
从那以后我每次部署 KEPServerEX 连接数据库,都强制走一遍「32位ODBC管理器验证 → DSN测试连接 → KEPServerEX日志抓Insert信号 → Navicat查表数据」四步闭环。少跳任何一环,后面八小时都在猜日志里那行0x80004005到底在骂谁。希望帮到你。
本文还有配套的精品资源,点击获取