SECS GEM

SECS GEM HSMS 驱动通过 TCP/IP 协议访问支持 SEMI E37 HSMS 标准的设备,目前支持设备 PASSIVE 模式,驱动作为 Host 主动连接。

设备设置

字段说明
host设备 IP 地址
port设备端口号, 默认5000
deviceid设备 ID, 默认0

支持的数据类型

  • uint8
  • int8
  • uint16
  • int16
  • uint32
  • int32
  • uint64
  • int64
  • float
  • double
  • bool
  • string
  • bytes

地址格式

SxFy([_1][_2][_3][_4])

Streams 和 Functions

SECS-II 消息称为流和功能。每条消息都有一个流值( Sx )和一个功能值( Fy )。对于流1功能1,它写为 S1F1,读为 “S1F1” 。流是消息的类别,而功能是类别中的特定消息。主消息中的功能值始终是奇数,关联的二次答复中的功能值始终比主消息中的功能值大1或偶数。

Stream说明
1设备状态
2设备控制
3材料状态
4材料控制
5报警处理
6数据收集
7配方管理
8控制程序传输
9系统错误
10终端服务
11未启用
12晶片图形布置
13未格式化的数据集传输

常用 SxFy

Stream Function说明
S1F1Hello消息
S1F2在线数据
S1F3选定设备状态数据
S1F4格式化的设备状态数据
S6F7数据传输请求
S6F8数据传输数据
S6F15事件报告请求
S6F16事件报告数据

特殊类型处理

SECS-II 消息定义了 LIST 类型,插件也通过 string 支持该类型,但是有一个反序列化的过程,具体的规则如下所示。

SECS-II 类型序列化说明
LIST<L[n] xxx>(.)n 为 LIST 长度,空 LIST n 为 0, 最外层 LIST 最后包括 .
ASCII<A[n] xxx>n 为 ASCII 长度,空 ASCII n 为 0
Binary<B[n] xxx>n 为 BInary 长度,空 BInary n 为 0
Boolean<Boolean x>
UINT8<U1 x>
UINT16<U2 x>
UINT32<U4 x>
UINT64<U8 x>
INT8<I1 x>
INT16<I2 x>
INT32<I4 x>
INT64<I8 x>
32FLOAT<F4 x>
64FLOAT<F8 x>

LIST 类型支持使用下标访问具体的元素,目前支持嵌套四层 LIST。

常见问题

  • 设备 ID 如何填写? 设备 ID 一般在设备的 SECS GEM HSMS 协议配置页面可以查看。

  • LIST 中 ASCII 类型如何序列化? 本插件 LIST 中 ASCII 序列化为 <A[n] xxx>,内容不带引号。例如 “ABC” 序列化为 <A[3] ABC>,而不是 <A[3] "ABC">

  • LIST 中 Binary 类型如何序列化? 本插件 LIST 中 Binary 序列化为 <B[n] xx>,内容不带引号。例如 0xFF 序列化为 <B[1] FF>,而不是 <B[2] "FF">

  • LIST 类型数据新建点位的时候应该选择什么类型? 设备数据类型为 LIST 的点位,在新建的时候选择 string 类型。

  • 设备主动上报的事件如何新建点位? 对于例如 S6F11 等设备主动上报的点位,直接新建相应的点位即可。

  • 对于需要传递参数进行数据获取的点位如何新建点位? 例如 S1F3,需要携带 LIST 类型的参数,其返回值会通过 S1F4 返回,类型也为 LIST。那么对于这个点位,我们需要新建两个点位,一个地址为 S1F3,属性配置 Write,类型为 string。另一个地址为 S1F4,属性配置为 Read 或者 Sub,类型为 string。使用第一个点位写入参数,第二个节点获取返回值。

  • 对于不需要传递参数进行数据获取的点位如何新建点位? 例如 S1F1,其不需要传递参数,那么只需要新建一个点位即可,其返回值会直接在此点位显示。