← 返回 互动展项与传感器互动

展项与中控联动:纳入全馆统一调度的完整配置

最后更新 2026-06-22
s5 · 互动展项与传感器互动 🟡 涉接线/工业配置
你将学到
  • 理解互动展项纳入全馆中控调度的架构:单展项 vs 全馆统一管理的差别
  • 掌握SoftControl里配置展项节点、状态监听、联动规则的完整流程
  • 学会实现一键开馆时序启动、闭馆安全关闭、展项状态上报、故障告警
  • 了解展项与讲解动线配合的配置思路(动线触发展项、展项配合讲解节奏)
  • 拿到完整的故障排查表,能分段定位联动配置问题

一个展项能自己跑,和一个展项能被全馆中控管好,是两件完全不同的事。

只会自己跑的展项,在正式开馆环境里会暴露一堆问题:早上开馆需要运维人员逐个展项跑一遍手动开机;有一台展项卡死了,要走到跟前才能发现;讲解员带队走到某个区域,展项还没准备好……这些不是偶发bug,是没有把展项纳入全馆调度体系的必然结果。

这一节的目标就是把互动展项真正接进SoftControl的全馆管理体系里,让一键开馆能顺序启动所有展项,闭馆能安全关闭,故障能自动告警,讲解动线到了哪里展项就配合哪里。

R2 实战内容,涉及设备配置和联动逻辑。SoftControl具体菜单和配置项以软件实际版本界面为准;科星/有人设备参数以对应型号手册为准(见文末来源)。下面的IP、端口号为示范值,按实际项目替换。


全馆调度的架构:把每个展项变成可管理的节点

没有全馆调度时,展厅的状态是这样的:

工控机A(展项1,独立运行)
工控机B(展项2,独立运行)
工控机C(展项3,独立运行)
科星IO节点1(展项1感应)
科星IO节点2(展项2感应)
...

每个节点各自为政,中控看不到状态,也无法统一控制。

接入全馆调度后:

SoftControl 全馆中控主机
    │
    ├─ 展项1(工控机A)─ 状态上报、指令接收
    ├─ 展项2(工控机B)─ 状态上报、指令接收
    ├─ 展项3(工控机C)─ 状态上报、指令接收
    ├─ 科星IO节点1(展项1感应区)
    ├─ 科星IO节点2(展项2感应区)
    ├─ 灯光控制(DMX/继电器)
    └─ 音频矩阵、投影等被控设备

每个展项工控机和SoftControl之间建立双向通信:

  • SoftControl → 展项:开机/关机/切换内容/重置指令
  • 展项 → SoftControl:当前运行状态(运行中/待机/故障)、互动事件上报

这是"全馆管理"的基础:每个节点都可见、可控。


第一步:在SoftControl里注册展项节点

在SoftControl里,每个互动展项注册为一台"被管设备"或"内容节点",配置如下:

  1. 新建设备,类型选TCP/UDP通信设备(展项工控机走自定义协议)或选SoftControl支持的内容机节点类型
  2. 填入展项工控机的IP(如192.168.1.50)和约定端口(如9002,展项工控机监听)
  3. 定义指令集(或用SoftControl预置指令):

指令定义示例(JSON格式,发给展项工控机):

指令名 发送内容 触发场景
展项启动 {"cmd":"start"} 开馆时序、手动开启
展项关机 {"cmd":"shutdown"} 闭馆时序、手动关闭
展项重置 {"cmd":"reset"} 故障恢复、内容复位
切换场景A {"cmd":"scene","id":"A"} 动线触发特定内容
  1. 定义状态反馈(展项工控机主动上报到SoftControl的端口,如9003):
{"status":"running","scene":"idle","uptime":3600}
{"status":"error","code":"E001","msg":"内容引擎无响应"}
💡 提示

展项工控机上的内容引擎(Unity/H5/TD)需要实现两个功能:1)监听一个端口接收SoftControl的指令;2)定时向SoftControl上报自己的状态。这两个接口在内容开发阶段就要一起做,不是上线前才加。把接口约定文档和内容需求文档一起给内容开发团队。


第二步:一键开馆时序启动

展馆每天开馆的流程通常是:8点半运维人员到达,在中控电脑上点"一键开馆",所有设备按顺序启动。

为什么要按顺序而不是同时启动?因为:

  • 网络设备(交换机)要先启动,展项工控机才能接入网络
  • 某些展项的内容引擎启动需要几十秒到几分钟(Unity加载场景)
  • 投影需要暖机时间(通常30~120秒),开机指令发完要等待才能播内容
  • 音频矩阵上电后要稳定一两秒再发切换指令,否则会有噪音

典型时序配置(在SoftControl的"场景/任务"功能里配置):

[0s]   发送:交换机上电(如果有网络控制UPS)
[10s]  发送:工控机A(中控主机/交换机)WOL或电源上电
[30s]  发送:各展项工控机上电(WOL唤醒或科星继电器控制电源)
[60s]  发送:展项1 {"cmd":"start"}
[65s]  发送:展项2 {"cmd":"start"}
[70s]  发送:展项3 {"cmd":"start"}
[90s]  发送:投影1 开机指令(PJLink %1POWR 1)
[90s]  发送:投影2 开机指令
[180s] 检查:所有展项状态是否上报"running"
[180s] 发送:背景音乐矩阵切换到"开馆背景音"
💡 提示

时序里每个等待时间根据你实际设备的响应时间来定,上面的数值是参考区间。第一次配置完成后,现场实测一次完整的开馆流程,记录每个设备实际响应的时间,再回来微调时序。不要靠估算的数值就交付。

你应该看到什么(开馆时序)

点击"开馆"后:

  • SoftControl日志按时序显示每条指令发送记录
  • 30秒后各展项工控机显示器亮屏
  • 60~90秒后各展项内容引擎画面就位(能在内容机屏幕上看到待机画面)
  • 投影灯开始亮起(暖机中)
  • 180秒左右,SoftControl状态面板所有展项节点显示绿色(运行正常)

如果某个节点在预计时间后仍未上线,说明那个环节有问题,需要单独排查。


第三步:闭馆安全关闭

闭馆不能直接断电,展项需要正常关闭,原因:

  • Unity/UE内容引擎直接断电可能导致数据文件损坏
  • 投影灯泡直接断电会损坏灯泡(需要冷却风扇走完冷却程序才能断电)
  • 工控机需要正常关机(SSD也有关机时写入缓存的需要)

闭馆时序配置

[0s]   发送:展项1 {"cmd":"shutdown"}(通知内容引擎正常退出)
[0s]   发送:展项2 {"cmd":"shutdown"}
[0s]   发送:展项3 {"cmd":"shutdown"}
[10s]  发送:所有投影 关机指令(PJLink %1POWR 0)
[10s]  发送:背景音乐停止/切换到"无声"
[60s]  发送:音频矩阵断电(科星继电器断开)
[120s] 发送:展项工控机关机(WOL关机命令/或科星继电器关电源—在系统确认已关机后)
[180s] 发送:投影电源断电(确认投影风扇已停转后再断,以投影手册为准)
[200s] 所有电源归位
⚠️ 安全

投影的断电时序要特别注意:大多数投影机手册明确要求"关机后风扇停转才能断电",否则灯泡损坏。SoftControl的时序里给投影足够的冷却时间(通常2~5分钟,以你所用投影型号手册为准)再发断电指令。不遵守这条,灯泡寿命会明显缩短,换灯泡的成本会比省那点时间贵得多。


第四步:展项状态上报与监控

全馆管理的核心能力之一:在中控电脑上,不用离开就能知道每个展项的状态。

展项内容机需要实现的状态上报

# 示例:展项工控机上的Python状态上报脚本(供参考,具体用内容引擎的语言实现)
# 每30秒向SoftControl发送一次状态心跳
import socket
import json
import time

SOFTCONTROL_IP = "192.168.1.10"   # 中控IP
SOFTCONTROL_PORT = 9003            # 中控监听展项上报的端口
REPORT_INTERVAL = 30               # 每30秒上报一次

def get_current_status():
    # 实际项目里从内容引擎获取真实状态
    return {
        "node_id": "exhibit_A",
        "status": "running",    # running / idle / error
        "scene": "main_idle",
        "uptime": int(time.time()),
        "ts": int(time.time())
    }

sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
while True:
    status = get_current_status()
    msg = json.dumps(status).encode('utf-8')
    sock.sendto(msg, (SOFTCONTROL_IP, SOFTCONTROL_PORT))
    time.sleep(REPORT_INTERVAL)

在SoftControl里配置"展项状态监听":接收各展项上报的状态消息,更新状态面板显示,并配置告警规则:

  • 某展项超过60秒没有收到心跳 → 触发告警(可能是内容机崩了)
  • 收到 status:"error" 消息 → 触发告警+通知
  • 状态长时间停在 idle(不进待机动画也不进互动)→ 可能内容卡住了,触发重置

你应该看到什么(状态监控)

SoftControl的状态面板:

  • 各展项节点显示绿色(运行中)或黄色(待机)
  • 故意拔掉一台展项工控机的网线 → 60秒后对应节点变红,告警提示
  • 重新接上网线 → 展项工控机恢复上报后,节点变回绿色

第五步:展项与讲解动线配合

大型展馆里,讲解员带队参观时,往往需要展项跟着动线走:讲解员走到某个区域,对应展项的内容切换到"讲解配合模式"(比如屏幕切换到和讲解内容对应的章节);讲解结束,展项复位到普通待机。

实现方式一:RFID讲解员卡触发

讲解员持有RFID腕带,展项区域入口安装科星网络读卡器,读到讲解员卡时:

科星读卡器(读到特定卡号)→ SoftControl
  → 判断:卡号 = 讲解员A
  → 发送:向该区域所有展项发送{"cmd":"scene","id":"guide_mode"}
  → 该区域展项切换到"讲解配合场景"
讲解员离开(读卡器感应到讲解员卡离场,或超时N分钟后)→ 发送复位指令

实现方式二:中控手动控制

讲解员通过手机/平板上的中控App(或SoftControl的远程界面)手动点击"开始讲解-区域A",中控批量向该区域展项发送场景切换指令。

实现方式三:声音/按钮触发

讲解区域的实体按钮(连接科星IO的DI输入)按下 → 中控识别触发 → 批量切换展项场景。

💡 提示

三种方式各有适用场景。RFID方式最"智能"但布线和卡片管理有成本;手机App方式最灵活但依赖讲解员主动操作;实体按钮方式最可靠但安装位置有约束。中大型展馆常用方式二(App控制)作主要方案,方式一(RFID)作高端场景增配。选哪个在项目方案阶段就要和甲方确认,不要等到施工阶段再改。


第六步:故障告警与自动处理

故障在展厅里一定会发生,差别在于发现得快不快、处理得好不好。

常见故障告警配置

告警触发条件 告警动作 自动处理
展项心跳超时(60s无上报) 状态面板变红+发告警推送 向展项发重启指令;N秒后未恢复再次告警
展项上报error状态 面板告警+记录日志 视error类型:E001(内容引擎崩溃)→ 发重启;E002(感应无响应)→ 告警待人工处理
传感器DI持续1小时处于触发状态 告警(可能传感器卡死) 人工核查
开馆后30分钟内某展项未上报 告警(开馆未启动成功) 人工检查对应展项工控机
投影关机后2分钟内断电(冷却不足) 记录(非实时告警,供维护统计)

自动重启的前提:展项工控机的内容程序配置了看门狗(开机自启+崩溃自动重启)。Windows任务计划 + 批处理脚本实现基本的看门狗:

@echo off
:loop
start /wait "" "C:\Exhibit\ExhibitA\ExhibitA.exe"
REM 程序退出后(无论正常退出还是崩溃)自动重启
echo 程序退出,3秒后重启...
timeout /t 3 /nobreak >nul
goto loop

这个批处理脚本要配置为开机自启(Windows任务计划-系统启动时运行)。让内容引擎崩溃后自动恢复,而不是等运维人员发现后手动重启。


第七步:已发布展项的接入

如果展厅里已有发布的自研展项(如签到、答题、翻书、魔墙等),这些展项的接入逻辑和上面一样:

  • 签到展项(/guide/中的签到实战):RFID读卡 → 科星读卡器 → SoftControl → 签到结果推送到中控状态面板
  • 答题展项:答题完成事件上报中控(可触发联动:答题正确 → 某个展区亮起,游戏化动线)
  • 翻书展项:翻到特定章节 → 上报中控 → 联动对应展区的灯光或声音
  • 魔墙/树形图:互动状态上报 + 接受中控的重置/切换指令

以上展项的具体实战指导参见:展项开发实战(签到/答题/翻书/魔墙等)

联调时序配置的详细实战,参考已发布章节:展厅全链路联调实战


故障排查表

现象 最可能位置 可能原因 排查方法
开馆时序跑完,某展项没启动 展项工控机 工控机未收到WOL或继电器没通电/网络启动太慢 检查对应工控机是否上电;延长时序等待时间;手动测试WOL
展项状态面板一直显示红色 网络/展项工控机 展项工控机IP配错/心跳上报端口错/内容程序未启动 ping展项工控机IP;telnet测试心跳端口;检查内容程序是否在运行
发了开馆指令,展项没响应 中控→展项段 指令端口错/消息格式不对/防火墙 检查SoftControl发送目标IP和端口;展项工控机抓包确认收没收到;关闭防火墙测试
展项响应了,但场景没切换 展项内容引擎 指令解析错误/cmd字段不匹配 在内容机上打印收到的原始消息;检查cmd值是否和代码里完全一致
闭馆后投影没关机 投影控制段 PJLink指令没发出/投影IP变了/RS232线断 SoftControl日志确认指令是否发送;ping投影IP;检查RS232连接
讲解模式触发后,展项没切换 RFID读卡器/中控逻辑 卡号没在SoftControl里注册/触发规则配置问题 在SoftControl的读卡器状态里确认是否收到卡号读取事件;检查触发规则条件
展项自动重启后,状态面板没更新 心跳上报 重启后心跳上报有延时(内容程序加载时间) 等待内容程序加载完成后(通常30~120秒)再观察状态;如仍未更新检查心跳程序是否在重启后自动运行

分段排查原则

  1. 先确认中控能不能ping到展项工控机(网络通不通)
  2. 再确认中控发出的指令展项有没有收到(网络工具抓包)
  3. 最后确认展项收到指令后有没有正确执行(日志/串口输出)

三段分开确认,永远比"改了一大堆不知道改好没有"效率高。


进阶:多展项动线联动

大型展馆里,讲解动线可以驱动跨展项的联动效果。例如:

讲解员持RFID腕带走到"展区C入口"
    ↓ 科星读卡器读到腕带
    ↓ SoftControl
    → 展区C展项1:切换为"讲解配合模式"(内容聚焦本节主题)
    → 展区C展项2:灯光切换为"重点照明"(科星网络继电器控制灯光回路)
    → 展区C展项3:背景音乐切换到"展区C专属音乐"
    → 展区B展项:调暗(讲解结束了B区)
    → 全馆状态面板:标注当前讲解位置

这个效果在SoftControl里通过"条件组合触发规则"实现:读到讲解员腕带 → 批量向对应展区所有展项发场景切换指令 + 向灯光控制发调光指令。一条触发规则,多个联动动作并发执行。


学会之后你能做出什么——效果与应用场景

前面六步走完,你手里就不再是"一个能自己跑的展项",而是"一个能被全馆中控管起来的节点"。这俩差距有多大?举个最直白的画面:以前早上开馆,运维得拎着钥匙串挨个展项跑一遍手动开机、半小时才弄利索;现在中控电脑上点一下"一键开馆",交换机、工控机、投影、灯光、音频按你排好的时序一层层醒过来,180秒后状态面板一排绿灯——人还没走到第一个展项跟前,全馆已经就绪了。

把本节能落地的东西拆开看,每一样都对应前面某一步的配置:

你能做出的效果 靠本节哪一步实现
一键开馆:所有展项/投影/灯光/音频按序自动启动 第二步开馆时序(交换机→工控机→内容引擎→投影暖机→音频)
一键闭馆:内容引擎正常退出、投影冷却后再断电、工控机安全关机 第三步闭馆安全时序(先 shutdown 后断电,投影等风扇停转)
坐在中控前就看清全馆每个展项是活是死 第四步状态上报+状态面板(绿=运行/黄=待机/红=离线)
展项崩了60秒内自动告警、能配自动重启 第四步心跳超时告警 + 第六步看门狗自愈
讲解员走到哪、那片展区的展项/灯光/音乐就配合到哪 第五步动线配合(RFID腕带/App/实体按钮三选一)
一张卡触发一整片展区的联动(内容+灯光+背景音同时切) 进阶「条件组合触发规则」,一条规则并发多个动作
已上线的签到/答题/翻书/魔墙展项无缝纳管 第七步已发布展项接入(同一套指令+上报接口)

用在哪些展厅场景:

  • 大型综合馆 / 科技馆:展项几十上百个,靠人挨个开关根本不现实,一键开闭馆 + 状态大屏是刚需;哪台内容机夜里崩了,早上告警日志一目了然。
  • 政企主题馆 / 党建馆:讲解带队是主要参观方式,动线配合让展项跟着讲解节奏切章节,讲到哪演到哪,参观体验立刻上一个档次。
  • 企业展厅 / 品牌馆:接待客户时用平板 App 手动调度某片展区进"讲解配合模式",讲完复位,全程不用运维在后台盯。
  • 无人值守 / 错峰运营的展馆:定时任务自动开闭馆、看门狗自动拉起崩溃的内容程序,把"必须有人在现场兜底"的运维成本压下来。

迁移价值:这套"节点化 + 时序调度 + 状态上报 + 告警自愈"的思路,不只用在展厅。你把它搬到会议室中控、指挥中心大屏、连锁门店的数字设备统一管理,底层是同一回事——把一堆各自为政的设备,变成一个中控能看得见、管得住、出事能自己兜底的整体。展厅这套练熟了,换个甲方、换套设备,架构照搬,改的只是指令集和IP。


动手挑战

  1. 把你负责的一个展项(或模拟一个展项节点)接入SoftControl,完成开馆时序和闭馆时序的配置,实测一次完整的开馆流程——记录每个设备从发指令到响应的实际时间,调整时序直到稳定流畅。
  2. 故意让展项的心跳上报停止(关掉上报脚本或断网),观察SoftControl的告警触发时间是否与配置的超时时间(60秒)吻合——这是验证告警机制有效性的最直接方法。

本节学到的知识

  • 展项接入全馆调度的本质,是把每个展项从独立运行的孤岛变成双向通信的可管理节点:中控能下指令、展项能报状态。
  • 展项在SoftControl里注册为TCP/UDP通信设备,填工控机IP + 约定端口(如指令口 9002),指令走 JSON({"cmd":"start"} / shutdown / reset / scene)。
  • 状态上报走另一个端口(如 9003),展项工控机每30秒发一次心跳,内容里带 status(running/idle/error)、sceneuptime
  • 内容引擎(Unity/H5/TD)必须实现两件事:收指令的监听端口 + 定时上报状态,这俩要在内容开发阶段就一起做,不是上线前补。
  • 开馆要按顺序而非同时启动:交换机→工控机→内容引擎→投影→音频,因为网络要先通、Unity加载要几十秒、投影要暖机、音频上电要稳一两秒再切。
  • 闭馆不能直接断电:先发 shutdown 让内容引擎正常退出,投影必须等风扇停转(约2~5分钟冷却)再断电,否则灯泡损坏;工控机要走正常关机。
  • 状态监控告警规则:心跳超时60秒判定内容机离线变红告警,收到 error 状态告警,长时间卡 idle 可触发自动重置。
  • 展项配合讲解动线有三种触发方式:RFID讲解员卡(读卡器读到→发 scene:guide_mode)、手机/平板App手动实体按钮(科星DI);中大型馆常用App作主、RFID作高端增配。
  • 自动重启的前提是内容程序配了看门狗(Windows任务计划 + 批处理 start /wait 死循环,崩溃后自动拉起),实现开机自启+崩溃自愈。
  • 联动信号流的标准链路:感应/触发源 → SoftControl → 批量下发场景/灯光/音频指令,一条「条件组合触发规则」可并发驱动多个展项+灯光+背景音同时切。
  • 排障铁律是分三段:先 ping 通不通 → 再抓包看指令展项收没收到 → 最后看展项收到后执行对没对,比一把梭改一堆强得多。

小结 · 你掌握了什么

  • 你理解了展项纳入全馆中控调度的架构:每个展项是双向通信的可管理节点,而不是独立运行的孤岛。
  • 你掌握了SoftControl里配置开馆时序、闭馆安全关闭、展项状态上报和监控、故障告警的完整流程。
  • 你了解了展项与讲解动线配合的三种实现方式(RFID腕带、App控制、实体按钮),以及各自的适用场景。
  • 你拿到了展项中控联动的故障排查表,知道怎么分段定位联动配置问题。

展厅全馆联调是把所有展项、中控、感应节点整合起来的最终一步,详细联调实战见展厅全链路联调实战

把全馆的展项联动、感应调度、时序管理都统一交给 SoftControl 展厅中控系统——它就是做这件事的:一个面板管所有展项,一套规则调全馆联动。

📄 来源 / 自校链接

本文为公开资料整理,非亲测。关键参数与代码请结合实物与下列官方来源验证。

内容有错、看不懂、或想看下一期?告诉我们 →

本文为公开资料的学习整理,非亲测。涉接线/花钱/合规的步骤请结合实物与官方最新资料验证,风险自负。见免责声明

本教程对应产品

查看产品详情 →

需要展厅软硬件方案或定制开发?