简介:这份KingSCADA教程面向工业自动化、电力、交通与水利等领域的SCADA系统初学者及工程技术人员,帮助读者系统掌握组态软件的画面设计与运行监控能力。资源包共1个doc文档,约2.65MB,内容以图文教程形式组织,便于按章节顺序学习与查阅。教程围绕现场画面绘制、动画连接与脚本程序、报警与事件、趋势曲线等核心模块展开,具体涵盖图形编辑器使用、精灵图与图形模型制作、现场流程图搭建、根本动画连接设置、脚本编程、报警与事件记录输出、变量记录属性定义及趋势曲线图素应用等知识点,并延伸至数据库连接与工程安全用户管理。目前已有273人学习,适合需要从零搭建组态工程或对照查漏补缺的读者参考。
1. 从一份 KingSCADA教程.doc 说起:组态软件到底该怎么上手
很多人第一次拿到 KingSCADA教程.doc 这类文档,第一反应是「照着装一遍就会了」,结果装完打开软件,面对工程管理器、设备驱动、实时数据库、画面编辑器一堆入口,反而不知道从哪下手。KingSCADA 是国产组态软件里装机量很大的一款,核心用途是把现场 PLC、仪表、板卡的数据采上来,做实时监控画面、报警、趋势、报表,再往上对接 MES 或数据库。它解决的不是「写一个漂亮界面」,而是「让一台上位机稳定地盯住几百上千个点位,并且出事能追溯」。这份教程真正该带你的路径是:先跑通一个最小工程(一个设备、一个变量、一个画面、一个报警),再逐步加历史库、加冗余、加脚本。适合自动化、电气、设备运维转上位机的工程师,也适合刚接触组态的学生。下面按我实际带人的顺序拆开讲,不按文档目录念。
2. 装完 KingSCADA 先别急着画画面:工程结构与最小闭环
2.1 工程、设备、变量、画面四层关系
KingSCADA 的工程结构是典型的树状:一个工程(Project)下面挂设备(Device)、实时数据库(变量)、画面、报警组、历史库配置。设备负责和 PLC 通信,变量是设备和画面之间的中间层,画面只认变量名,不直接认 PLC 地址。这个分层是很多人翻车的地方——他们直接在画面里绑 PLC 寄存器地址,后期换 PLC 或改点位就要全改。正确做法是:设备里建好连接,变量表里把每个点位定义成变量并映射到设备地址,画面只引用变量名。
我一般建议新手先只做四个东西:一个 Modbus TCP 设备、三个变量(一个开关量、一个模拟量、一个报警位)、一张画面放一个按钮和一个数值显示、一条报警。这个闭环跑通,后面加多少点位都是重复劳动。
2.2 新建工程与设备连接的最小步骤
以 Modbus TCP 为例,假设你手边没有真实 PLC,可以用 Modbus Slave 或 Modbus Poll 在本地模拟一个从站,IP 127.0.0.1,端口 502。步骤如下:
- 打开 KingSCADA 工程管理器,新建工程,选好工程路径(路径不要带中文和空格,这是血泪经验,历史库和日志写入经常在这里出问题)。
- 进入开发环境,在「设备」节点下新建驱动,选 Modbus TCP。
- 配置设备属性:IP、端口、站号、超时时间、采集周期。
设备类型: Modbus TCP IP地址: 127.0.0.1 端口: 502 站号: 1 超时: 1000 ms 采集周期: 500 ms 重连间隔: 5000 ms参数说明:采集周期不是越小越好,500ms 对大多数监控够用,设成 50ms 会让通信线程和界面刷新压力陡增;超时 1000ms 是经验值,现场网络抖动时低于 500ms 会频繁报断线;重连间隔给 5 秒,避免断线后疯狂重连把 PLC 连接数占满。
2.3 变量定义与地址映射
设备建好后,在实时数据库里建变量。变量分几种类型:IO 变量(对应设备地址)、内存变量(中间计算)、系统变量。IO 变量要填设备名和寄存器地址。
| 变量名 | 类型 | 设备 | 地址 | 数据类型 | 说明 |
|---|---|---|---|---|---|
| Motor_Run | IO | ModbusTCP1 | 0x0000 | Bool | 电机运行状态 |
| Tank_Level | IO | ModbusTCP1 | 4x0001 | Float | 液位 |
| Alarm_High | 内存 | - | - | Bool | 高液位报警 |
地址写法各驱动不同,Modbus 常见的是 0x 表示线圈、4x 表示保持寄存器,具体以驱动帮助为准。这里最容易踩的坑是数据类型和字节序:Float 在 Modbus 里有 ABCD、CDAB、BADC、DCBA 四种排列,读出来是乱码数值时,先别怀疑程序,去设备属性里换字节序。
2.4 画面绑定与运行验证
画面编辑器里放一个按钮和一个文本,按钮动画关联 Motor_Run,文本显示关联 Tank_Level。保存后切到运行态,用 Modbus Slave 改寄存器值,看画面是否跟着变。如果不变,按这个顺序查:设备是否显示已连接、变量当前值是否有刷新、画面是否绑定了正确的变量名。这三步能定位九成的「画面不动」问题。
3. 报警、趋势、历史库:让 KingSCADA 真正能追溯
3.1 报警组与报警变量的配置逻辑
报警不是给变量打个勾就完事。KingSCADA 里要先建报警组(比如「液位报警」「电机报警」),再在变量属性里挂到报警组,设置报警类型(高高、高、低、低低)、限值、死区、报警文本。死区(Deadband)是关键参数:液位在 80.0 上下抖动,如果不设死区,会疯狂产生报警和恢复记录,把报警表刷爆。我一般给量程的 1%~2% 作为死区。
报警文本要写清楚「哪个设备、什么点位、什么状态」,比如「1#罐液位高报警,当前值 XX」,不要只写「报警1」。后期查历史的时候,你会感谢自己。
3.2 历史库选型:内置库还是外部数据库
KingSCADA 支持把历史数据存到内置的实时库或外部数据库(SQL Server、MySQL、Oracle 等)。选型看两点:数据量和查询需求。
| 方案 | 适用场景 | 注意点 |
|---|---|---|
| 内置历史库 | 点位数少、保存周期短、单机 | 容量有限,长期存储要定期归档 |
| SQL Server | 中大型项目、要和 MES 对接 | 需要配 ODBC 或专用接口,注意账号权限 |
| MySQL | 中小项目、成本敏感 | 驱动版本要和数据库版本匹配 |
配置历史库的常见步骤:先在数据库里建库和表(或用工具自动建表),再在 KingSCADA 的「历史库配置」里填连接串、测试连接、选择要存的历史变量、设置存储周期和死区。存储周期别设太密,1 秒存几百个点,一个月就是几千万行,查询会明显变慢。
3.3 趋势曲线与报表的落地做法
趋势曲线分实时趋势和历史趋势。实时趋势直接绑变量,历史趋势要绑历史库里的变量并选时间范围。报表一般用 KingSCADA 自带的报表工具或导出到 Excel。这里有个实用技巧:报表查询尽量走数据库的存储过程或视图,不要在画面脚本里拼复杂 SQL,否则画面会卡。
3.4 用脚本做联动:一个按钮启停的完整例子
组态软件的价值一半在脚本。KingSCADA 支持类 Basic 的脚本,分画面脚本、全局脚本、数据改变脚本。下面是一个按钮点击后写值并记录日志的例子:
' 按钮鼠标按下事件 Sub OnLButtonDown() ' 写值到设备变量 SetTagValue "Motor_Cmd", 1 ' 延时确认 Delay 500 If GetTagValue("Motor_Run") = 1 Then ' 记录操作日志到内存变量或数据库 WriteLog "操作员启动电机,成功" Else WriteLog "操作员启动电机,反馈未到位" End If End Sub逻辑说明:先下发命令,延时后读反馈,根据反馈写不同日志。参数上,Delay 不要设太长,500ms 到 1s 够用,太长会阻塞界面线程。WriteLog 如果写数据库,注意加异常处理,数据库断了不能让画面崩。
4. 避坑与排查:KingSCADA 现场最常见的五类翻车
4.1 设备显示已连接但变量不刷新
现象:设备状态是绿色已连接,但变量当前值一直是 0 或问号。原因:地址映射错了,或者寄存器类型选错(把保持寄存器当输入寄存器读)。解决:用 Modbus Poll 单独读同一地址确认从站有数据,再核对驱动里的地址格式和数据类型,重点查字节序。
4.2 历史数据断断续续有缺口
现象:趋势曲线中间断了一截。原因:历史库连接不稳定、存储周期和采集周期不匹配、或者磁盘满了。解决:先看历史库服务是否正常,再看 KingSCADA 的历史库日志;存储周期要大于等于采集周期,磁盘留足空间,长期项目一定要做归档策略。
4.3 报警刷屏停不下来
现象:报警表每秒新增几十条。原因:没设死区,或者变量抖动严重。解决:给模拟量报警加死区,给开关量报警加延时确认(比如持续 3 秒才报),从源头减少抖动。
4.4 工程换电脑后打不开或变量丢失
现象:拷贝工程到另一台电脑,提示驱动缺失或变量表为空。原因:工程依赖的驱动没装、路径变了、或者数据库连接串指向了原机器。解决:换机前先确认驱动版本一致,工程路径用相对路径或重新指定,历史库连接串改成新机器的地址。
4.5 运行一段时间后界面卡顿
现象:刚开始流畅,几天后画面切换变慢。原因:脚本里累积了未释放的对象、历史查询没加时间范围、或者报警缓存太大。解决:检查脚本有没有死循环和频繁创建对象,历史查询必须带时间条件,定期清理报警缓存和日志。
5. 进阶:把 KingSCADA 工程做成可维护、可复制的模板
5.1 用变量模板和画面模板批量复制
点位一多,一个个建变量会疯。KingSCADA 支持变量模板和画面模板。做法是:把一类设备(比如一台水泵)的变量定义成模板,包含运行、故障、手自动、电流等标准点位,新建时直接套模板改前缀。画面也一样,做一张标准设备脸,复制后只改变量前缀。这样一百台泵的工程,工作量能压到十分之一。
5.2 用冗余和看门狗提高可用性
对不能停的场景,配双机冗余:两台机器跑同一工程,一台主一台备,通过心跳线同步数据。关键参数是心跳周期和切换阈值,心跳周期一般 1 秒,连续丢 3 次切备机。另外在脚本里加看门狗,定时写一个递增值到 PLC,PLC 侧判断上位机是否活着,避免上位机死了现场还在盲跑。
5.3 版本管理与交付清单
工程文件要纳入版本管理,至少每次改动前备份一份带日期的副本。交付时给一份清单:工程文件、驱动安装包、数据库脚本、通信参数表、变量点表、操作说明。点表尤其重要,后期维护的人全靠它。
| 交付项 | 内容 | 备注 |
|---|---|---|
| 工程备份 | 完整工程目录 | 含历史库配置 |
| 驱动包 | 对应版本驱动 | 记录版本号 |
| 数据库脚本 | 建库建表语句 | 含账号权限 |
| 变量点表 | 变量名、地址、类型、说明 | Excel 格式 |
| 通信参数表 | IP、端口、站号、协议 | 现场核对用 |
5.4 一个我常用来验证工程健康度的小脚本
在全局脚本里加一个定时任务,每分钟检查设备连接状态和历史库写入状态,异常就写一条系统日志并触发一个系统报警。这样不用一直盯着,出问题有记录。
' 全局周期脚本,周期 60000ms Sub OnCycle() Dim devStatus devStatus = GetDeviceStatus("ModbusTCP1") If devStatus <> 1 Then WriteLog "设备 ModbusTCP1 通信异常,状态码:" & devStatus SetTagValue "Sys_CommAlarm", 1 Else SetTagValue "Sys_CommAlarm", 0 End If End Sub逻辑说明:GetDeviceStatus 返回设备状态,1 表示正常。异常时置系统报警位,画面可以做一个总览指示灯。参数上,周期 60 秒够用,太频繁会增加脚本引擎负担。
我带人做 KingSCADA 项目,最深的教训就是:别一上来就追求大而全,先把一个点位从设备读到画面、再写进历史库、再报一次警,这条链路走通,后面全是复制和参数调整。那份 KingSCADA教程.doc 可以当字典查,但真正的功夫在一次次现场调试里。希望帮到你。
本文还有配套的精品资源,点击获取