新闻详情

新闻详情

首页 / 资讯中心 / 详情

CITECT数据库说明:SCADA实时库、标签归档与SQL Server对接实战

发布时间:2026/9/25 6:32:08来源:尧图网络
CITECT数据库说明:SCADA实时库、标签归档与SQL Server对接实战
简介这份文档资料聚焦CitectSCADA Reports内嵌历史数据库面向自动化、SCADA系统集成与工业数据管理方向的工程师及运维人员帮助理解如何借助冗余SCADA连接器与MS SQL Server 2005构建高可靠的历史数据存储方案。资源包内仅1个doc文件约1.42MB内容围绕历史数据采集、存储、安全与主动数据交换展开涵盖逢变则存、死区过滤、100纳秒时间戳、OPC质量标识、每秒十万点变化记录等关键机制并说明与InTouch、Fix32、IFix等SCADA系统及MS SQL、Oracle等企业数据库的接口方式。文档还涉及磁盘空间计算器、性能计数器、SQL审计与用户权限管理等运维要点以及ETL数据提取转换加载和ActiveX脚本通知等扩展能力。目前已有311人学习适合需要快速掌握Citect历史库配置思路、数据精度保障与系统集成方法的读者参考。1. CITECT 数据库说明从一份文档到一套能落地的 SCADA 数据方案很多人第一次拿到「CITECT数据库说明.doc」这类文档时第一反应是找里面的表结构、字段清单结果翻完发现全是配置项和名词解释根本不知道从哪下手。CITECT 是施耐德旗下的一套 SCADA 组态软件它的「数据库」不是我们平时说的 MySQL、SQL Server 那种独立数据库而是组态工程内部的实时数据库也叫标签库、点表再加上可选的趋势归档和历史存储。换句话说这份说明文档真正要解决的是SCADA 系统里成千上万个点位怎么定义、怎么读写、怎么和历史库对接、怎么让上层 SQL Server 或报表系统拿到数据。适合正在做中控 SCADA、国产 SCADA 替代选型、或者需要把 CITECT 接入 OPC 和关系库的一线工程师。下面按「概念先立住、再动手复现、最后讲坑」的顺序拆开讲。2. CITECT 的「数据库」到底是什么实时库、标签与归档的三层结构2.1 实时数据库不是关系库别拿 SQL 思维套CITECT 的核心是一个内存实时数据库每个点位叫一个「标签」Tag标签有名字、类型、工程单位、量程、死区、初始值这些属性。它和 SQL Server 最大的区别是实时库按扫描周期刷新读写走的是内部变量引用不是 SQL 语句。你在画面上放一个数值显示对象背后绑的就是某个标签名而不是一条 SELECT。理解这一点很关键因为后面所有「数据库说明」里的配置项本质都是在描述标签怎么定义、怎么被驱动写入、怎么被归档。常见做法是先规划点表把现场设备PLC、仪表、OPC 服务器的地址和 CITECT 标签一一对应再决定哪些点需要归档、哪些只需要实时显示。点表规划不好后面改起来就是血泪经验——改一个标签名画面上十几个引用全断。2.2 标签类型与驱动配置从 PLC 地址到 CITECT 变量CITECT 支持多种驱动常见的有 Modbus、西门子 S7、OPC DA、OPC UA。以 OPC 为例你需要先装 OPC Core Components再在 CITECT 的 IO Server 里配置通道、设备、点位。每个点位在 CITECT 侧对应一个标签标签的地址格式取决于驱动比如 Modbus 是40001这种寄存器地址S7 是DB1.DBD0这种。下面是一个典型的标签定义示例用 CITECT 的变量声明语法Cicode 里引用变量// CITECT 标签定义示例在变量标签数据库中 // 标签名: Pump1_Flow // 类型: Real // 工程单位: m3/h // 量程: 0 ~ 500 // 死区: 0.5 // 驱动地址: Modbus 40001 // 归档: 是周期 60 秒 // 在 Cicode 中读取该标签 REAL flow; flow Pump1_Flow; // 直接引用标签名 IF flow 400 THEN AlarmMsg(泵1流量高); END逻辑说明CITECT 的标签名在 Cicode 里就是变量名不需要额外声明类型转换。参数说明死区决定什么时候触发更新设太小会导致频繁刷新设太大会丢小变化归档周期决定历史库的采样间隔太密会撑大历史文件太疏会丢趋势细节。我一般把死区设成量程的 0.1%~0.5%归档周期按工艺需要设 10~60 秒。2.3 历史归档与外部关系库的边界CITECT 自带趋势归档数据存在工程目录下的历史文件里格式是私有格式不是直接可查的 SQL 表。如果你需要让 SQL Server 或报表工具读历史数据常见做法有两种一是用 CITECT 的 ODBC 接口把归档数据导出二是通过 OPC 或 Cicode 定时把数据写到外部 SQL Server。第二种更灵活但要注意写入频率和事务控制。-- 外部 SQL Server 历史表结构示例 CREATE TABLE CitectHistory ( TagName NVARCHAR(64) NOT NULL, Value FLOAT NOT NULL, Quality INT NOT NULL, Timestamp DATETIME2 NOT NULL, PRIMARY KEY (TagName, Timestamp) );这个表结构里Quality 字段对应 OPC 的质量码0 表示好值非 0 表示坏值或不确定。很多人在做报表时忽略 Quality结果把坏值当正常值统计数据对不上就是踩坑。写入时建议用批量插入不要每个点一条 INSERT否则 SQL Server 压力很大。3. 把 CITECT 数据接到 SQL Server 和 OPC可复现的配置路径3.1 用 OPC 做中间层CITECT 与第三方系统的解耦CITECT 本身可以作为 OPC DA 服务器也可以作为 OPC 客户端去连别的 OPC 服务器。如果你要让第三方系统比如 MES、报表平台拿 CITECT 的数据最稳的方式是让 CITECT 对外暴露 OPC DA 或 OPC UA第三方通过 OPC 客户端读。这样 CITECT 内部点表不用动第三方也不用装 CITECT。配置步骤在 CITECT 的 IO Server 里启用 OPC 服务记下 ProgID比如Citect.OPC.1然后在第三方机器上用 OPC 客户端工具如 UaExpert 或 OPC Quick Client连接。注意 OPC DA 依赖 DCOM 配置跨机器时权限和防火墙很容易翻车能上 OPC UA 就上 OPC UA。# 检查 OPC 服务是否注册Windows 命令行 reg query HKCR\Citect.OPC.1 # 如果返回空说明 OPC 服务没注册需要重新运行 CITECT 安装目录下的 OPC 注册脚本参数说明Citect.OPC.1是常见 ProgID具体以你安装的 CITECT 版本为准。注册脚本一般在Citect\Bin目录下名字类似OPCRegister.bat。这一步不做第三方连不上就是必然。3.2 用 Cicode 定时写 SQL Server最直接的历史数据落地如果你不想走 OPC也可以在 CITECT 里用 Cicode 直接连 SQL Server。CITECT 提供SQLConnect、SQLExec等函数可以执行 INSERT。下面是一个定时写数据的例子// CITECT Cicode 定时写 SQL Server 示例 INT hSQL; STRING sSQL; FUNCTION WriteToSQL() hSQL SQLConnect(DSNCitectHistory;UIDsa;PWDyourpassword); IF hSQL 0 THEN sSQL INSERT INTO CitectHistory (TagName, Value, Quality, Timestamp) VALUES (Pump1_Flow, Pump1_Flow , 0, GETDATE()); SQLExec(hSQL, sSQL); SQLDisconnect(hSQL); END END // 在任务里每 60 秒调用一次逻辑说明SQLConnect返回连接句柄非 0 表示成功。SQLExec执行 SQL 语句字符串拼接时注意数值转字符串的格式浮点数要用FloatToStr并指定小数位否则可能因为区域设置导致小数点变逗号。参数说明DSN 需要在 Windows 的 ODBC 数据源里提前配好指向你的 SQL Server。密码明文写在 Cicode 里不安全常见做法是放到 CITECT 的加密配置文件里或者用 Windows 集成认证。3.3 点表批量导入导出别手动一个个敲CITECT 的标签数据库支持导出为 CSV也支持从 CSV 导入。实际项目里点表动辄几千点手动敲就是灾难。常见做法是在 Excel 里按 CITECT 的变量导出格式整理好再导入。导出格式一般包含 TagName、Type、Address、Comment 等列。列名含义示例TagName标签名Pump1_FlowType数据类型RealAddress驱动地址40001EngUnits工程单位m3/hRawZero原始零值0RawFull原始满值32767EngZero工程零值0EngFull工程满值500Comment描述泵1出口流量导入前一定要备份原工程导入时注意地址格式和驱动匹配。我见过因为 Address 列多了一个空格导致几百个点全部通讯失败的情况排查了半天才发现是 CSV 里的隐藏字符。4. 避坑与排查CITECT 数据库配置里最容易翻车的 5 个点4.1 现象标签值不刷新画面上一直是 0原因驱动地址配错或者 IO Server 没启动。CITECT 的 IO Server 是独立进程如果没起来标签就是死值。解决先看 CITECT 的 IO Server 窗口有没有报错再用 OPC 客户端直接读同一个地址确认是驱动问题还是 CITECT 配置问题。如果是 Modbus检查寄存器地址是 0-based 还是 1-based很多 PLC 手册写 40001实际驱动要填 0。4.2 现象历史趋势断断续续有数据但时间戳跳变原因归档周期和系统时间不同步或者归档文件写满后没滚动。CITECT 的历史文件默认有大小限制满了之后如果没配置滚动就会停止归档。解决在工程配置里把历史文件大小调大启用自动滚动并确保 Windows 时间同步服务正常。另外如果用了外部 SQL 写入检查 SQL Server 的 Timestamp 字段是不是用了GETDATE()这个取的是 SQL 服务器时间不是 CITECT 机器时间跨机器时会有偏差。4.3 现象OPC 连接报「拒绝访问」或 DCOM 错误原因OPC DA 依赖 DCOM跨机器时默认权限不允许匿名访问。解决在 OPC 服务器和客户端机器上都运行dcomcnfg在组件服务里找到 OPC 相关组件把身份验证级别设为「无」访问权限加上 Everyone。如果还是不行检查防火墙有没有放行 135 端口和动态端口范围。能换 OPC UA 就换UA 只需要一个端口配置简单得多。4.4 现象Cicode 写 SQL 时报「驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接」原因SQL Server 强制加密而 ODBC 驱动版本太老不支持。解决升级 ODBC Driver 到 17 或 18或者在连接字符串里加Encryptno仅内网可信环境。更稳的做法是升级驱动别关加密。这个报错在 SQL Server 2016 以后很常见尤其是用旧版 CITECT 自带 ODBC 的时候。4.5 现象导入 CSV 后标签类型全变成字符串原因CSV 里 Type 列的值和 CITECT 要求的枚举不匹配比如写了REAL但 CITECT 要Real大小写敏感。解决导出一次现有标签作为模板照着模板的格式填。导入前先用文本编辑器检查有没有 BOM 头UTF-8 with BOM 会导致第一列列名解析失败。5. 进阶用 C# 通过 OPC UA 读 CITECT 数据并写入 SQL Server如果你不想在 CITECT 里写 Cicode也不想用 OPC DA 的 DCOM那用 C# 走 OPC UA 是最干净的方案。CITECT 较新版本支持 OPC UA 服务器第三方用 C# 的 OPC UA 客户端库比如Opc.Ua.Client订阅标签收到数据后批量写 SQL Server。// C# OPC UA 客户端订阅 CITECT 标签并写 SQL Server 示例 using Opc.Ua.Client; using System.Data.SqlClient; var endpoint opc.tcp://citect-server:4840; var session await Session.CreateAsync(...); var subscription new Subscription(session.DefaultSubscription) { PublishingInterval 1000 }; var item new MonitoredItem(subscription.DefaultItem) { StartNodeId ns2;sPump1_Flow, AttributeId Attributes.Value }; item.Notification (monitoredItem, args) { var value (double)monitoredItem.LastValue.Value; using var conn new SqlConnection(Serversqlserver;DatabaseScada;Integrated Securitytrue;); conn.Open(); using var cmd new SqlCommand(INSERT INTO CitectHistory VALUES (tag, val, 0, GETDATE()), conn); cmd.Parameters.AddWithValue(tag, Pump1_Flow); cmd.Parameters.AddWithValue(val, value); cmd.ExecuteNonQuery(); }; subscription.AddItem(item); await subscription.ApplyChangesAsync();逻辑说明MonitoredItem的StartNodeId是 OPC UA 节点 IDCITECT 的标签一般映射到ns2;s标签名具体要看 CITECT 的 UA 服务器配置。Notification事件里拿到值后直接写库这里为了简洁每次新建连接实际项目应该用连接池或批量写入。参数说明PublishingInterval是订阅周期设 1000 毫秒对大多数 SCADA 场景够用再快就要考虑 SQL Server 的写入压力。Integrated Securitytrue用 Windows 认证避免密码明文。验证方法先跑起来看 SQL Server 里有没有数据再用 SQL 查最近 10 条确认时间戳和值都对。如果值不对检查 OPC UA 节点的数据类型和 C# 里的强制转换是否匹配。如果连接不上先用 UaExpert 连一下确认节点 ID 和权限没问题。我自己的习惯是任何 SCADA 数据落地项目先跑通一个点的端到端链路再批量复制。一个点通了后面就是体力活一个点不通后面全是坑。希望帮到你。本文还有配套的精品资源点击获取
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

Apache DataFusion 51.0.0 升级指南:Arrow 57 基线与 API 重构的完整迁移手册 2026/9/25 7:08:03

Apache DataFusion 51.0.0 升级指南:Arrow 57 基线与 API 重构的完整迁移手册

大数据数据分析后端 【免费下载链接】datafusion Apache DataFusion SQL Query Engine 项目地址: https://gitcode.com/gh_mirrors/datafu/datafusion 点击查看 免费下载 本文以 Apache DataFusion 官方 51.0.0 版本升级指南为主线,系统梳理该版本的全部…

阅读更多 →
SpringBoot+Vue构建中小学生成长档案管理系统实践 2026/9/25 7:08:03

SpringBoot+Vue构建中小学生成长档案管理系统实践

1. 项目背景与核心价值中小学生成长档案管理系统是当前教育信息化进程中的重要工具。作为一名长期从事教育管理系统开发的工程师,我深刻理解这类系统在实际教学场景中的价值。传统纸质档案存在易丢失、难查询、无法综合分析等问题,而这个基于SpringBoot的…

阅读更多 →
一文解读小白怎么用 TaoToken 快速搭建一个基于 MCP 协议的 AI agent 应用 2026/9/25 7:07:57

一文解读小白怎么用 TaoToken 快速搭建一个基于 MCP 协议的 AI agent 应用

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
B站内容生态的逆向生长与社区治理创新 2026/9/25 7:07:57

B站内容生态的逆向生长与社区治理创新

1. 内容生态的逆向生长现象最近两年,B站出现了一个有趣的现象:当其他平台都在追求算法推荐和流量变现时,它却开始强调"内容价值观"和"社区氛围"。这种看似与行业趋势背道而驰的发展路径,我称之为"反向突…

阅读更多 →
游戏盾SDK安全加速实战指南:架构、配置与踩坑复盘 2026/9/25 7:07:50

游戏盾SDK安全加速实战指南:架构、配置与踩坑复盘

游戏上线第一周就被打爆服务器、渠道包被破解、模拟器上全是脚本机器人、玩家反馈进游戏就掉线——这些场景,做游戏的兄弟应该都不陌生。传统高防IP买了一堆,结果攻击一来照样穿透,更别提客户端被逆向、协议被脱机挂滥用这类光靠服务器防火墙…

阅读更多 →
基于预训练 HuBERT 的 LibriSpeech 100 小时微调:PaddleSpeech ASR4 完整实战指南 2026/9/25 7:07:50

基于预训练 HuBERT 的 LibriSpeech 100 小时微调:PaddleSpeech ASR4 完整实战指南

人工智能语音音频NLP媒体生成 【免费下载链接】PaddleSpeech Easy-to-use Speech Toolkit including Self-Supervised Learning model, SOTA/Streaming ASR with punctuation, Streaming TTS with text frontend, Speaker Verification System, End-to-End Speech Translation …

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉