OPC UA NumericRange 的 1:3 含不含 3:怎样验证二维切片范围

2026-10-24

NumericRange的1:3包含索引3,是闭区间,对应Python切片时需要到stop=4。二维范围用逗号分别描述每一维;本题用本地数组作严格范围核验,不把本地拒绝策略冒充服务器所有越界处理规则。

适用版本与输入范围

依据 OPC Foundation 官方参考,v105 链接在核对时显示 v1.05.07,具体 Part 与章节见文末。示例只处理明确声明的值与结构,不实现网络会话、证书或完整服务端。 本文所有输入均为原创合成数据,未接真实设备。

范围字符串不是Python切片文本

附件长度五的数组10、11、12、13、14,范围1:3应取11、12、13三项,不能直接写values[1:3]只得到两项。单个数字表示该维一个索引,合法输入1只取11;冒号两端则必须严格递增,1:1不是单项的另一种写法。程序先按逗号拆维度,再检查双端范围并包含上界生成索引。它限定非负十进制整数的明确子集,不接受负索引、空字符串全量选择或其他语言切片语法,避免把应用默认规则混进协议范围。

二维子块保留结果形状

二维2×3数组的范围0:1,1:2选择两行各自第1到2列,结果展平为11、12、21、22,形状2×2。程序同时输出原坐标indices,帮助核对行列次序,不能把二维范围理解成线性下标0到1再1到2的两段列表。结果仍采用最后一维变化最快的顺序,符合原数组展平约定;如果业务需要二维矩阵,可根据输出shape重建,不能丢形状后按平方根猜行列。

语法错误与本地范围策略分开

官方Part4 §7.27要求双端范围lower<upper,3:1和1:1都属于语法错误;附件分别列为显式负例,单项1作为合法对照。2:9则语法正确但超出本地五项数组,本核验器仍拒绝以便发现请求超出预期。本地严格检查不是服务器部分可用范围响应的完整模拟,真实Read或Write应按对应服务规则处理。报告只说明给定数组契约是否完全覆盖所请求范围,不伪造Bad_IndexRangeNoData等服务响应。

选择契约应和节点元数据一起保存

NumericRange只指定索引,不解释数组轴的业务含义,也不保证目标节点支持按范围访问。工程交接应提供节点DataType、ValueRank、各维长度和范围字符串,避免供应商只写“读取第二行”而彼此采用不同编号。脚本不连接服务器、不执行写入,只对合成flat与shape运行。若实际节点数组长度会变,应在每次构造范围时使用当前可确认的形状,并保留错误状态,不能用旧形状静默补零。

下载与复跑

将输入 fixture.json与独立程序 verify.py放在同一目录,用 Python 3.12 执行 python verify.py,无需安装第三方包。程序从自身目录读取输入并写入 report.json,不要求当前终端恰好位于下载目录。也可查看本次实跑报告和复跑说明。

本次实际运行通过 6 条输入断言,包括标有“显式负例”的记录;负例以JSON字段承载,不会把下载文件本身做成损坏编码。selected按原数组展平顺序;超界拒绝是本地完整范围核验策略,不输出伪造服务状态码。 修改输入后应同时审查期望结果,不能只改断言数字让测试变绿。

对象或字段的基础关系可回到楼宇与工业数据接入链路核对,更多接口入口在设备协议库。若需要把已确认的数据点接入展项编排,可了解SoftControl 展厅中控;具体接入能力以项目确认和实际测试为准。

一级依据

来源核对日期:2026-10-24。离线结果只证明给定输入的解析或计算行为;现场兼容性、响应时间、硬件准确度和具体产品支持均未测量。

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

加微信,把这一页发到你手机上

扫码加站长企业微信,会自动把这一页的链接发给你。问软件授权、报价,或者现场遇到问题,也可以直接聊。

去留微信

留言讨论

评论发布后会被人工复核,违规内容将被删除。

    还没有人评论,来说说你的看法

    如果发表没有反应,可以前往联系我们告诉我们。

    这个页面有问题?

    提交时会附带当前页面地址和浏览器信息,帮助我们定位问题。不填联系方式即为匿名。