Skip to main content

协议边界

Automation Laboratory Language(ALL)规定调用方、实验方法服务与设备服务之间可观察的通信语义。Function State Protocol(FSP)是 ALL 内部用于设备发现、技能披露、分类请求和结果返回的设备通信协议。 ALL 不规定服务端内部的驱动、队列、数据库、控制器或设备总线。现有设备可以通过适配器接入,不需要修改固件或放弃原有接口。

远程连接

正式部署应当提供稳定的 HTTPS 端点:
基础版本使用 JSON-RPC 2.0 请求与响应。一个 HTTP 请求只包含一个协议请求,不使用 JSON-RPC 批处理。

请求消息

统一方法命名空间

标准方法统一位于 fsp/*
对象、控制和系统是每项技能的三个描述维度,不各自形成顶层方法命名空间。readwriteinvoke 是请求分类,不是设备全部指令的固定清单;每个设备可以声明多条具体技能,并以 command_id 区分。 fsp/get_capabilities 支持渐进式披露。调用方先读取技能摘要,再按 command_ids 获取准备使用的完整技能定义;不得仅凭摘要构造写入或物理动作请求。

成功响应

result_type 只能是:

异步受理响应

task_id 是 FSP 运行时标识,不得被当作研究对象标识或能力版本。

协议错误

请求未进入设备执行前发生的协议错误使用 JSON-RPC error
设备执行已经开始后,失败结果应当通过普通 result 返回,并保留任务状态、实际状态和诊断,不能伪装成未执行的协议错误。

修订号

以下数据必须携带修订号:
  • 设备技能定义;
  • 研究对象当前状态;
  • 合格设备技能库记录;
  • 设备绑定的执行计划。
调用方可以使用 if_revision 避免重复读取未变化的数据。改变状态的请求应当携带 expected_revision;修订号不一致时,服务端不得按过期状态继续执行。

日期与单位

  • 时间使用 RFC 3339 字符串;
  • 数值和单位分字段表达;
  • 参数单位必须与能力描述一致;
  • 未知值使用 null,不得用 0 或空字符串冒充测量值。

规范用语

本规范使用“必须”“不得”“应当”“不应当”“可以”表达约束强度。