跳到主要内容

HSMS

1. 目的与背景

  • 替代方案:作为SEMI E4(SECS-I)和E13(SECS消息服务)的替代协议,适用于需要更高通信速度复杂拓扑的场景,且优先使用TCP/IP而非OSI协议。
  • 互操作性:允许不同制造商的设备无需预先了解彼此即可互联。

2. 核心功能

  • 通信流程
    1. 建立TCP/IP连接(主动/被动模式)。
    2. HSMS会话初始化(通过Select/Select.rsp消息)。
    3. 数据交换(基于SECS-II编码的消息)。
    4. 会话终止(Deselect/Separate消息)。
    5. 断开TCP/IP连接
  • 附加诊断功能:Linktest(连接测试)和Reject(拒绝无效消息)。

3. 状态机模型

  • NOT CONNECTED:未建立TCP连接。
  • CONNECTED
    • NOT SELECTED:TCP已连接但未建立HSMS会话。
    • SELECTED:HSMS会话激活,可交换数据。

4. 消息格式

  • 消息结构
    • 消息长度(4字节):头部+文本的总字节数。
    • 头部(10字节):包含会话ID、消息类型(SType)、协议类型(PType)等。
    • 文本(可选):SECS-II格式数据(PType=0时)。
  • 关键字段
    • SType:标识消息类型(如数据消息、Select请求/响应、Linktest等)。
    • PType:定义消息编码方式(0为SECS-II,其他值保留给子标准)。
    • System Bytes:唯一标识事务(用于匹配请求与响应)。

5. 定时器与参数

  • T3(回复超时):等待回复的最长时间(默认45秒)。
  • T5(连接间隔超时):重连前的最小间隔(默认10秒)。
  • T6(控制事务超时):控制消息(如Select)的响应超时(默认5秒)。
  • T7(未选择超时):TCP连接未进入SELECTED状态的最大时间(默认10秒)。
  • T8(字符间超时):接收消息时字节间的最大间隔(默认5秒)。

6. 网络与连接管理

  • TCP/IP模式
    • 主动模式:本地实体发起连接。
    • 被动模式:监听并接受远程连接。
  • 交替模式:动态切换主动/被动模式以增强灵活性。
  • 多连接处理:支持同一端口的多连接,但需独立维护状态。

7. 兼容性与扩展

  • 物理层:不限制物理介质(如以太网、令牌环)。
  • 子标准扩展:允许通过子标准定义新的PType/SType值及消息格式。
  • 用户扩展:仅限厂商内部使用,禁止跨厂商非标准扩展。
  • 注意事项:避免快速重连冲突、版权与专利风险声明。

8. 实用扩展

Linktest Procedure(链路检测流程)

项目内容
目的在不发送用户数据的情况下,快速验证 TCP/IP 链路以及 HSMS 会话层 的完整性与双向可达性。
触发时机只要本地实体处于 CONNECTED 状态(无论 NOT SELECTED 还是 SELECTED 子状态),即可随时发起;常被作为“心跳”机制周期性执行。
消息对Linktest.req(SType = 5)Linktest.rsp(SType = 6)
事务类型一问一答的 confirmed service;由 T6 定时器(控制事务超时) 监管。
报文格式• 消息长度固定 10 字节(仅 Header,无 Text)• Header 中 SessionID 固定填 0xFFFF(表示与具体会话无关)
异常处理T6 超时未收到 rsp → 主动断开 TCP/IP 连接,回到 NOT CONNECTED 状态。
典型用法• 周期性心跳(如每 30 秒一次)。• 在长时间无数据交互时防止 NAT/防火墙会话老化。

Select Procedure(会话建立流程)

项目内容
目的将一条已建立的 TCP/IP 连接NOT SELECTED 子状态推进到 SELECTED 子状态,从而允许后续的数据消息(SECS-II 或其他 PType)收发。
触发时机TCP/IP 连接建立后(CONNECTED-NOT SELECTED),任一端均可主动发起。
消息对Select.req(SType = 1)Select.rsp(SType = 2)
事务类型一问一答的 confirmed service;同样受 T6 定时器 监管。
报文格式• 消息长度固定 10 字节(仅 Header)• SessionID:由子标准或本地策略指定,用于把后续数据消息与本次会话绑定。• Select.rsp 的 Header Byte 3 为 SelectStatus 码:0 = 成功;非 0 = 失败原因(见下表)
SelectStatus 码0:成功1:通信已激活(已处于 SELECTED)2:连接未就绪3:连接已耗尽(只能单连接的设备已占用)4–127:子标准保留128–255:本地自定义原因
并发场景两端同时发起 Select 且 SessionID 相同 → 双方各自回 Select.rsp(Status = 0),逻辑上形成 双边会话,不会冲突。
与后续数据的关系SessionID 将出现在所有数据消息的 Header 中,用于路由与并发会话管理。

对比

维度Linktest ProcedureSelect Procedure
核心作用检测链路/心跳建立 HSMS 会话
触发状态CONNECTED(任意子状态)CONNECTED-NOT SELECTED
成功后状态变化无状态迁移NOT SELECTED → SELECTED
消息长度10 字节10 字节
SessionID0xFFFF(全局)由子标准指定
失败处理断开 TCP断开 TCP(或保持 NOT SELECTED)

有任何问题或疑问,请发送邮件到--->admin@secs-ii.net
  • 发现错误或表达不清希望修正
  • 内容不健全需要扩展
  • 有疑问希望解答