简介《中国铁塔中兴力维综合监控FSU入网操作指引》面向中国铁塔动环监控运维与FSU实施人员针对综合监控前端设备接入网管系统时流程不统一、配置项繁杂的问题给出标准化的入网操作参考适合具备一定动环监控基础的读者按步骤核对与实施。压缩包共1个doc文件约12.09MB内容以V0.2试行版指引为主体围绕账号基础信息、信号量字典表、资源信息配置展开并细化站点、铁塔、机房、FSU、蓄电池、开关电源、外市电接入及交直流配电设备等对象的录入要求。目录还延伸到变压器/调压器、空调、油机、摄像头、红外、烟感、温感、水浸、门磁等监控点便于读者理解设备数据采集与中央管理系统的对接关系。已有5485人学习可作为入网配置、资源核查和故障排查时的对照材料帮助运维人员快速熟悉FSU接入链路与关键参数设置。1. 综合监控 FSU 入网卡住进度的往往不是设备而是那张没人认真填的字段清单去年跟一个地市的站点接入厂家把综合监控 FSU 装好、上电、链路也通了平台侧却连着三天看不到一条完整数据。设备没问题问题出在站址编码没生成、点位名和现场实际点位对不上。这类活真正耗时间的从来不是拧螺丝而是配置项之间的依赖顺序。这份综合监控 FSU 入网操作指引做的就是把这条链路固化下来账号权限怎么开、信号量字典表怎么对、十几类资源对象按什么顺序录、上线之后拿哪几项指标验收、割接当晚出问题从哪查。它面向的不是写方案的人而是真正要在一个个菜单里点完几百条记录、还得保证第二天早上巡检不出事的现场工程师和厂家交付人员。2. 账号与权限三级结构没搭对后面全是重复劳动账号是整个入网流程的第一道闸门也是最容易被当成「随便开个号」的一步。指引里把账号分成两块运维人员配置和帐号信息配置路径都落在「系统管理—组织管理」下面一个走「新增用户」一个走「新增部门」再「新增用户」。看着简单但顺序错了后面所有资源录入的归属都会跟着错返工量能把人拖到半夜。2.1 组织树先画后建运营方、厂家、账号是三个层级正确做法是先建组织结构再往节点下面挂用户而不是图省事直接在根节点下建账号。常见的组织树大致长这样层级节点内容建法承担的作用一级运营方总部节点系统初始化全局数据范围二级地市/区域分公司新增部门划定数据权限边界三级厂家名称节点新增部门部门类型选「部门」隔离不同厂家的数据四级厂家具体账号新增用户实际登录使用的身份为什么非得有厂家这一层部门节点因为权限继承是按部门走的。厂家账号建在厂家部门下不单独分配权限时会默认继承部门权限如果把厂家账号直接挂在地市节点下这个号天然就能看到该地市全部站点的数据等于权限一开始就漏了。我在一个项目上见过厂家交付人员能看到隔壁厂家的设备清单查下来就是部门节点建错位置账号跟着继承了不该有的数据范围。组织树还有一个隐性要求地市节点不要随意改名或挪动。节点 ID 一旦被资源数据引用改名只是显示变化但挪动父节点会导致已有账号的数据范围重新计算历史工单的归属也可能跟着变。真要做组织调整宁可新建节点把旧节点冻结也别直接拖拽。2.2 运维人员和厂家账号字段差在哪权限继承怎么算两类账号的建法路径一样但字段和权限来源完全不同。把差异列成一张表建号的时候照着对比事后一个个查要省事字段运维人员厂家账号填错的后果用户名填内部工号对应的姓名填厂家联系人姓名告警派单找不到人登录账号工号或统一命名厂家缩写加序号唯一性冲突登录失败用户类型内部运维人员第三方供应商维护人员默认权限模板不匹配所属部门所属地市节点所属厂家节点数据范围越界操作权限按岗位分配不分配则继承部门能改不能改说不清几个实操上的细节值得单独拎出来说。第一厂家账号的用户类型必须选「第三方供应商维护人员」这个枚举值决定了他能看到哪些菜单、能对哪些设备下发控制指令选错了后面靠手工补权限非常麻烦。第二运维人员的操作权限要按岗位走值班岗只需要看告警和派单不需要资源编辑权限给了反而是风险。第三账号停用不要删删了之后历史工单里的处理人字段会变成空值追溯的时候是黑匣子正确做法是置为停用状态。权限分配完之后一定要做验证别信「保存成功」四个字。我一般必测三个场景拿厂家 A 的账号登录搜厂家 B 的站点名称搜不到才算过拿只读岗账号点一次控制类操作被拦住才算过把某个账号停用后立刻用另一个浏览器登录登录被拒才算过。这三个动作五分钟能做完能挡掉后面八成扯皮。2.3 账号清单先用脚本过一遍再录入菜单里一条条点账号几十个还能忍上百个就必须先整理成清单再批量导入。整理阶段最容易出的问题是登录账号重复、用户类型写成自造词、部门路径缺层级。这些用一段脚本十几秒就能查出来比在系统里被一条条报错拦住舒服得多。# account_check.py # 用途录入前校验账号清单提前暴露重复、枚举非法、命名不规范三类问题 import csv import re import sys from collections import Counter REQUIRED [login, user_name, user_type, dept_path] VALID_TYPES {内部运维人员, 第三方供应商维护人员} # 厂家账号命名规范厂家缩写(2-6位小写字母) 序号(3-6位数字) PATTERN re.compile(r^[a-z]{2,6}[0-9]{3,6}$) def load(path): # utf-8-sig 是为了兼容表格软件导出的带 BOM 的 CSV with open(path, newline, encodingutf-8-sig) as f: return list(csv.DictReader(f)) def check(rows): errs [] logins Counter((r.get(login) or ).strip().lower() for r in rows) for i, r in enumerate(rows, start2): # start2 对应表格里的真实行号 for key in REQUIRED: if not (r.get(key) or ).strip(): errs.append(f第{i}行字段 {key} 为空) utype (r.get(user_type) or ).strip() if utype not in VALID_TYPES: errs.append(f第{i}行用户类型「{utype}」不在允许枚举内) login (r.get(login) or ).strip() if utype 第三方供应商维护人员 and not PATTERN.match(login): errs.append(f第{i}行厂家账号「{login}」不符合命名规范) # 部门路径必须带层级分隔只有一级说明账号挂错位置了 if / not in (r.get(dept_path) or ): errs.append(f第{i}行部门路径「{r.get(dept_path)}」缺少层级) for login, n in logins.items(): if login and n 1: errs.append(f登录账号「{login}」重复出现 {n} 次) return errs if __name__ __main__: rows load(sys.argv[1]) errs check(rows) print(\n.join(errs) if errs else f校验通过共 {len(rows)} 条账号)这段代码的逻辑很直白先按必填字段扫一遍空值再核对用户类型枚举然后对厂家账号做命名正则匹配最后用计数器找重复登录账号。dept_path这个字段要求写成「地市/厂家」这样的斜杠路径只有一级就说明账号挂到了地市节点下正是上一节说的权限越界隐患脚本在这里顺便做了拦截。参数上唯一需要按项目调整的是PATTERN不同项目对厂家账号命名约定不一样有的要求带厂家代码前缀有的要求带地市缩写改正则即可别改判断顺序。脚本输出的行号是 CSV 里的真实行号表头算第 1 行拿着行号直接回表里改不用二次搜索。3. 信号量字典表点位名对不齐数据上来也是废的字典表是整份指引里最容易被跳过的一节因为它只是一句「信号量字典表见附件」。但实际干过的人都知道FSU 上送的数据能不能被平台正确解析全看这张表。设备侧一个点位叫「1 路市电电压」平台侧字典里叫「外电A相电压」名字对不上、编码对不上数据就算传上来了曲线也是空的告警也是哑的。3.1 字典表到底规定了什么四类信号与命名规则把字典表拆开看它规定的其实只有四件事点位编码、信号名称、信号类型、量纲与阈值。信号类型通常分四类处理方式完全不同信号类型典型例子平台侧处理方式最容易出的问题模拟量电压、电流、温度、湿度存历史曲线按上下限判越限量纲不统一阈值失效状态量开关电源运行状态、门磁开合存状态变更记录0/1 含义与现场相反告警量市电中断、水浸、烟感触发告警并进入派单流程未定义告警级别无法派单控制量远程复位、空调开关下发指令需权限校验未做权限隔离误操作命名规则上我的习惯是「设备类型 部位 物理量」三段式比如「开关电源-整流模块1-输出电压」中间用固定分隔符。好处是后期做批量映射时可以用字符串切分自动归类不用一个个肉眼认。分隔符一旦定下来就别改改了历史点位全要重映射。量纲这块要特别较真。同一个「电池电压」有的是单体的 2V 级有的是整组的 48V 级字典表里不写清楚量纲和量程平台侧只能按默认值判越限结果就是整组电压正常、单体已经亏电了还在报平安。常见做法是在字典表里强制加「下限/上限」两列模拟量必填填不出来说明这个点位还没想清楚怎么用。3.2 从设备点位到平台点位映射表怎么建真正落地的动作是建一张映射表左边是 FSU 侧的实际点位厂家配置工具里看到的名字或地址右边是平台字典里的标准点位。这张表不要用脑子记用表格列出来四列就够厂家点位标识、厂家点位名称、平台点位编码、映射状态。建表顺序建议按设备类型分批走先做供电类市电、开关电源、蓄电池再做环境类温湿度、水浸、烟感最后做视频和门禁。原因是供电类点位直接关联告警派单优先级最高环境类点位数量多但逻辑简单视频和门禁往往涉及独立子系统联调周期长放最后不至于卡住整体进度。映射状态这一列别省建议只填三种值已映射、待确认、无对应。第三种最容易被忽略——现场有些点位平台字典里根本没有对应项硬凑一个上去后面告警语义就乱了。老老实实标「无对应」写进割接遗留问题清单比强行映射强。3.3 用脚本给字典表做体检字典表通常是 Excel 交付的几百上千行人工核对不现实。用 openpyxl 读出来跑一遍规则校验能提前发现八成问题。# dict_check.py # 用途校验信号量字典表的枚举、量程、告警级别与点位编码唯一性 import sys from collections import Counter from openpyxl import load_workbook SHEET 信号字典 COLS [点位编码, 信号名称, 信号类型, 量纲, 下限, 上限, 告警级别] TYPES {模拟量, 状态量, 告警量, 控制量} wb load_workbook(sys.argv[1], data_onlyTrue) ws wb[SHEET] header [str(c.value).strip() if c.value else for c in ws[1]] idx {name: header.index(name) for name in COLS} errs, codes [], [] for row_no, row in enumerate(ws.iter_rows(min_row2, values_onlyTrue), start2): rec {k: row[i] for k, i in idx.items()} code str(rec[点位编码]).strip() if rec[点位编码] else if not code: continue # 空行跳过 codes.append(code) stype rec[信号类型] if stype not in TYPES: errs.append(f第{row_no}行信号类型「{stype}」非法) # 模拟量必须有上下限且下限必须小于上限 if stype 模拟量: if rec[下限] is None or rec[上限] is None: errs.append(f第{row_no}行模拟量缺少上下限) elif float(rec[下限]) float(rec[上限]): errs.append(f第{row_no}行下限大于等于上限) # 告警量必须定级别否则派单流程走不下去 if stype 告警量 and not rec[告警级别]: errs.append(f第{row_no}行告警量未定义告警级别) for code, n in Counter(codes).items(): if n 1: errs.append(f点位编码「{code}」重复 {n} 次) print(\n.join(errs) if errs else f字典表校验通过有效点位 {len(codes)} 条)逻辑上分三组枚举校验保证信号类型不出现自造词量程校验保证模拟量可判越限唯一性校验保证点位编码不冲突。SHEET和COLS两个常量按实际表结构调整列名必须和表头完全一致含空格这是最容易翻车的地方——表头写成「 点位编码」带个前导空格index()就找不到。建议先打印header看一眼再跑。告警级别那一项很多厂家交付的字典表里是空的理由通常是「平台侧统一配」。实际做法还是要填因为不同告警的派单时限不一样市电中断和温感轻微超限不可能一个响应速度。级别枚举建议控制在三到四档太多档位现场根本记不住。4. 资源信息配置十几类对象的录入顺序和编码规则资源信息配置是整个入网流程里工作量最大的部分也是最讲究顺序的部分。指引里列了站址、杆塔、机房、FSU、蓄电池、开关电源、市电引入、交流配电、直流配电、变压器、空调、油机、摄像头、红外、烟感、温感、水浸、门磁、门禁、智能电表这么一长串。这些对象不是平行的有明确的父子依赖。4.1 依赖顺序站址打底杆塔机房其次FSU 和设备最后正确的录入顺序是一条树站址是根杆塔和机房挂在站址下FSU 挂在机房下蓄电池、开关电源、空调这些设备挂在机房或 FSU 下。乱序录入的直接后果是下拉框选不到父对象只能先存草稿再回头补补的时候又容易漏。顺序对象依赖的父对象保存后自动生成1站址无需先有区域站址编码2杆塔站址杆塔编码3机房站址机房编码4FSU机房设备编码5蓄电池 / 开关电源 / 配电设备机房设备编码6空调 / 油机 / 智能电表机房设备编码7摄像头 / 红外 / 烟感 / 温感 / 水浸 / 门磁 / 门禁机房或 FSU设备编码「市电引入」「变压器/调压器」在指引里标了可选判断标准很简单这个站有没有独立报装的市电引入点、有没有专用变压器。没有就跳过不要为了「填满」硬建一条后面告警跟着这条假数据跑排查时能把人绕晕。4.2 关键字段和自动编码哪些能改哪些别碰几乎所有资源对象保存后都会自动生成编码这是给 FSU 配置用的。自动生成的编码有两类字段要区分开一类是名称系统会按「站址类型」自动拼一个允许人工修改另一类是编码本身一旦生成就别动。改名称只影响展示改编码等于换了个设备身份历史数据、告警记录、工单关联全部对不上。拿机房举例必填的关键字段是名称、类型、等级、楼层、列数、行数、所属杆塔、所属机楼编码自动生成。这里面「等级」和「楼层」看着像可填可不填实际会影响后续的巡检策略和告警分级建议全部填实。FSU 的字段更特殊一些除了名称、类型、所属杆塔还要填经纬度、厂家信息、长宽高、功率、接口数——经纬度决定地图落点长宽高和功率决定机位规划接口数决定后续能挂多少设备这些都是后面要用的数据别留空。蓄电池和开关电源有一批「现场核查类」字段比如是否漏液、电池支撑部位有无坍塌变形、连接铜排有无腐蚀、整流模块型号、剩余槽位数、能否二次下电、告警指示灯状态。这些字段的性质和纯配置字段不一样它们记录的是安装验收那一刻的现场状态填的时候要真的看一眼设备别照抄模板。我在一个项目上见过一批蓄电池的「连接铜排有无腐蚀」全填了「无」三个月后巡检发现两组已经明显氧化回头查录入记录是交付人员批量复制的。4.3 FSU 本体信息经纬度、尺寸和接口数怎么填才不返工FSU 这一条单独拿出来说因为它是唯一同时连接「平台」和「现场」的对象。经纬度建议用现场实测值精度保留到小数点后六位别用站址的近似坐标凑。平台上地图落点偏差超过几十米巡检人员导航过去就找不到塔这是纯体力浪费。接口数这个字段容易被填成设备铭牌上的物理口数量但实际配置时应该填「本期实际使用的接口数」。原因很简单平台侧排设备挂载时会按这个数校验填成物理总量但实际只用了三分之一后续想加设备就会提示超额还得回来改。常见做法是填本期规划数剩余口数单独记在割接文档里。FSU 名称一般由机房信息自动带出允许修改但我建议保持系统生成的默认值只在后面加个序号区分同机房多台 FSU。原因是名称参与地图和拓扑的排序自定义命名如果没有统一规则拓扑树上会乱成一团。4.4 用脚本生成录入清单模板手工一条条录几百个站点的资源出错率极高。更现实的做法是先用脚本生成结构化的录入清单按对象类型和依赖顺序排好填完之后再批量导入或者照着录。# build_resource_template.py # 用途按依赖顺序生成资源录入清单模板避免乱序录入导致父对象选不到 import csv # 顺序即依赖顺序前面的对象必须先存在 ORDER [ (站址, [站址名称, 站址类型, 所属区域, 基站状态]), (杆塔, [杆塔名称, 所属站址, 杆塔类型]), (机房, [机房名称, 所属站址, 机房类型, 等级, 楼层, 行数, 列数]), (FSU, [FSU名称, 所属机房, 经度, 纬度, 厂家, 长, 宽, 高, 功率, 接口数]), (蓄电池, [蓄电池名称, 所属机房, 型号, 单组额定容量, 单体个数, 单体电压等级]), (开关电源, [开关电源名称, 所属机房, 型号, 整流模块总数, 剩余槽位数, 能否二次下电]), (空调, [空调名称, 所属机房, 型号, 类型]), (烟感, [烟感名称, 所属机房, 安装位置]), (水浸, [水浸名称, 所属机房, 安装位置]), ] with open(resource_template.csv, w, newline, encodingutf-8-sig) as f: w csv.writer(f) w.writerow([对象类型, 字段名, 是否必填, 填写值, 备注]) for obj, fields in ORDER: for field in fields: # 所属类字段统一标必填父对象不存在时导入必然失败 required 是 if field.startswith(所属) or 名称 in field else 否 w.writerow([obj, field, required, , ]) print(模板已生成resource_template.csv)这段脚本的价值不在于生成文件本身而在于把依赖顺序显式写进了ORDER列表。填表的人拿到模板就能看出「杆塔必须在站址之后填」不用靠口头交代。required的判断用了一个简化规则以「所属」开头的和带「名称」的字段标必填其他标选填。实际项目里可以按平台侧的必填校验规则再细化比如 FSU 的经纬度在很多平台上是必填项加进规则即可。生成的 CSV 用带 BOM 的 UTF-8 保存是为了让常用表格软件双击打开不乱码。如果走接口批量导入记得把 BOM 去掉部分接口对首行 BOM 敏感会报字段名不匹配。5. 避坑与排查上线前后最容易翻车的五个点这一节按我踩过的顺序排每条都按「现象—原因—解决」写不写理论。5.1 现象资源保存成功但设备编码是空的原因通常是父对象没选或者父对象本身没编码。系统生成编码依赖父对象的编码做前缀父对象缺失时保存动作能过编码生成逻辑静默失败。解决方式是从根节点往回查先确认站址有编码再看机房的所属站址是不是空的。还有一种情况是批量导入时父对象名称拼写不一致比如站址叫「某基站」、机房引用写「某基站 」多了个尾随空格匹配失败但不报错。批量导入前建议统一去掉首尾空格。5.2 现象告警一直报「市电中断」现场实际供电正常原因多半是状态量的 0/1 含义弄反了。厂家 FSU 侧有的用「1 表示市电正常」平台字典里默认「1 表示中断」映射时没做取反。解决方式是先断电测试确认实际逻辑再在映射表里加一列「是否取反」别在平台侧改字典表——改字典表会影响所有引用该点位的站点。另一个可能原因是市电检测点接在了不常带电的辅助回路上这类要靠现场改线平台侧怎么配都没用。5.3 现象FSU 显示在线但地图上是空白或落点漂移先看经纬度填的是不是站址近似坐标偏几十米在地图上可能就是另一个街区。其次看经纬度格式有的平台要求十进制度填成度分秒格式会被当成非法值静默丢弃。还有一种少见的FSU 名称里带了特殊字符导致地图组件渲染时该标记被跳过把名称改回默认生成值就正常了。排查顺序建议是「先看字段值格式再看数值精度最后看名称字符」。5.4 现象厂家账号能搜到别家厂家的站点这是权限问题不是搜索问题。查三处账号挂在哪个部门节点下、部门节点挂在哪一级、账号有没有被单独分配过跨部门的数据权限。最常见的是账号建在了地市节点下而不是厂家节点下继承了地市的全部数据范围。解决方式是停用原账号、在正确的厂家节点下重建不要试图用「收回权限」修补收回操作往往只对操作权限生效数据权限还留着。5.5 现象性能曲线在凌晨出现固定断点这个坑很隐蔽表现是每天凌晨两三点有一段数据缺失设备在线、告警正常。原因通常是 FSU 与平台的时间不同步FSU 侧时钟漂移后上报的时间戳落在未来或过去平台按时间窗口查询时就出现空洞。解决方式是核对 FSU 的 NTP 配置和平台侧的时间源把时间同步周期调到小时级。另一个诱因是性能采集周期和存储周期配置不一致采集 5 分钟一次、存储按 15 分钟聚合聚合窗口边界没对齐也会出现断点这种就要改配置而不是查时钟。遇到问题时的排查顺序我的习惯是从下往上先确认 FSU 在线且有心跳再看点位映射是否正确再看资源编码是否完整最后才怀疑平台侧服务。反过来查九成时间浪费在平台日志里找一个根本不存在的问题。6. 上线验收与割接七项检测跑完再签字设备上线和能长期稳定跑中间隔着一段验收。指引里列的那几项检测不是走形式每一项对应一类线上事故。序号检测项具体看什么我常用的判据1网管侧检查FSU 注册状态、协议版本是否一致状态显示在线协议版本与平台支持列表匹配2在线情况心跳记录、最近一次上报时间最近上报间隔在心跳周期的三倍以内3地图定位经纬度落点与站址位置比对偏差在本项目约定范围内不出现空白标记4拓扑设备FSU 下挂设备树与实际设备数量比对数量一致无重复挂载、无孤儿设备5实时视频通道拉流、连续播放首帧时间可接受连续播放无明显卡顿花屏6性能指标电压、电流、温度等模拟量曲线有数据、无断点、量纲与字典表一致7设备告警模拟断开一路市电后观察上送与恢复告警按时上送恢复后自动消除不残留第 7 项一定要做实测不能看平台上有告警列表就算过。做法是现场配合断一路负载或拔一路检测线观察告警是否在约定时间内上送、级别是否正确、是否进入派单流程恢复后是否自动消除。这一项测通了告警穿越测试基本就是同一套动作换几个点位重复跑。割接操作放在所有检测通过之后做割接前把老系统的历史数据导出备份割接后第一件事是核对 FSU 在线数和告警数跟割接前对得上对不上就回退别硬扛。有个血泪教训早期我做过一次割接七项检测里第 6 项只看了有没有数据没核对量纲。上线一周后发现所有温度曲线都在 200 度以上实际机房也就二十几度是厂家上报的是华氏度、字典表按摄氏度配的。从那以后我每次验收都强制走一遍「拿一个已知物理量对比读数」的动作温度、电压各挑一个点位现场用仪表读一次和平台显示值对一下。这个动作五分钟能挡掉最难查的一类问题。希望帮到你。本文还有配套的精品资源点击获取