如果已经将上面介绍的SECS/GEM开发要点掌握了,那么我们就可以进入“RapidSecs基础库”的实际开发了。首先明确一下基础库的目标:支持E5(SECSII)、E37(HSMS),开发语言为C++。这两个协议也是后继E30、E40、E90等等一系列协议的基础。
1. 总体设计
1.1 模块划分
首先,基础库的功能要如何划分?从对协议的支持来看要支持的协议是E5(HSMS)和E37(SECS-II),那么当然的2个功能模块就是分别对这两个协议的支持。此外,
1) 通信功能模块(HSMS模块)
基础库需要为用户提供通信接口,使其能在不需要了解下层通信结构的情况下与其他设备进行互连,主要功能包括:
- TCP/IP 连接建立与断开
- 通信控制
- 通信状态维护
- 数据消息收发
- 消息解析
- 超时控制
2)消息解析功能模块(SECS-II模块)
消息表示功能使软件系统可以识别、表示并创建 SECS-II 标准消息,并为用户开发自定义 SECS-II 消息提供接口,主要功能包括:
- 实现标准数据项
- 提供标准SECS-II消息
- 消息创建和编辑
- 消息编码
- 消息解码
1.2 基本模块结构
各模块功能说明如下:
- Message ID管理模块:生成发送消息所需要的 Message ID,保证其唯一性。
- 数据发送模块:发送上层协议传递的数据。
- 响应消息管理模块:管理等待响应的消息相关信息,包括消息编号、对应超时等。
- 超时管理模块:完成超时管理功能&#x