C# SECS/GEM 底层协议与实现方式
2022/2/4 17:46:55
本文主要是介绍C# SECS/GEM 底层协议与实现方式,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
SECS/GEM HSMS原理与实现方法
- SECS是什么?
- SECS关键字
- SECS的流和功能
- S1F1,S1F2举例
- SECS 协议与报文
- Tcp连接是状态转换
- 报文格式
- 报文头详解(Message Header)
- 连接状态报文
- 通信信息报文(Message Text)
- 测试一下
- C# 实现
SECS是什么?
SEMI电子半导体联盟,为实现设备与工厂系统的快速对接数据,状态,配方,程序的标准化协议,SECS具有多个版本,本文主要介绍E5协议 HSMS通信方式,设备端的处理流程(Passive模式)。
SECS关键字
- Host 主机一般指向工厂控制系统
- EQP 单机设备
- Active 在Tcp通信中主动连接对方的(可理解为客户端)
- Passive 被动等待对方连接(可理解为服务器)
- Device ID 设备标识
- CEID 事件编号
- SVID 设备状态编号
- VID 设备变量ID
- RPTID 报告编号
- PPID 配方编号
- ALCD 报警清除或者报警设置
- ALID 报警编号
- ALTX 报警文本
SECS的流和功能
Secs按照功能大类用Stream标识 按照具体功能Fucntion的方式标识
具体功能可以查看文末链接下。
S1F1,S1F2举例
S1F1 询问对方可以连接。
S1F2 应答对方是否可以连接。
SECS采用这样一问一答的形式,又问必有答。
发送者发送奇数 响应者发送偶数。
SECS 协议与报文
Secs 报文以16进制方式显示
rsp - 响应
req - 请求
Tcp连接是状态转换
- Not Connected 未建立连接状态
- Not Selected 已建立连接但为接受到selecte.rsp
- Selected 可以发送Secs的消息状态
报文格式
Message Length: 报文总长度减去自身占的4个字节(低位在后)
Message Header: 报文头占用10字节
Message Text: 具体消息内容
报文头详解(Message Header)
序号指从左到右字节的顺序
序号 | 标识 | 内容 |
---|---|---|
01 | Session ID up | 相当于设备标识高字节,单机设备固定不变 |
02 | Session ID low | 相当于设备标识低字节,单机设备固定不变 |
03 | Stream | 不同消息不同例如S1则是1 |
04 | Function | 不同消息不同例如F1则是1 |
05 | PType | 消息编码格式 HSMS固定0 |
06 | SType | 取值可参考下面表格 |
07-10 | System Bytes | 标识一次通信 |
连接状态报文
类型 | 报文长度 | 报文头 | 报文内容 |
---|---|---|---|
select.req | 00 00 00 0A | FF FF 00 00 00 01 System Bytes | 无 |
select.rsp | 00 00 00 0A | FF FF 00 00 00 02 System Bytes | 无 |
LinkTest.req | 00 00 00 0A | FF FF 00 00 00 05 System Bytes | 无 |
LinkTest.rsp | 00 00 00 0A | FF FF 00 00 00 06 System Bytes | 无 |
System Bytes 标识每一次消息的标签占4字节,响应时可以依据发送者报文头最后4字节,发送可生成不重复的4个字节。
select.req 请求进入selected状态
select.rsp 回应可以进入selected状态
LinkTest.req 发送测试请求 主要是判断是否网络正常
LinkTest.rsp 回应对方请求
通信信息报文(Message Text)
secs支持如下数据类型
Secs 消息的格式
举例如下
关键点:黄色框内01 表示接下来表示消息长度的字节占用的字节数
上例中01 表示消息占用长度1个字节即蓝色框中00000011 转成10进制则为3
由此可见接下来的内容占用长度3个字节,二进制转成10进制查看ASCII对照表可以看出对应字符ABC
测试一下
使用软件
SEcomEnable作为主机 SockTestDlg作为设备
在SecsComSimulation setting中设置如下
通信助手设置如下
先打开通信助手作为服务器 使用模拟软件连接到服务器
可以看到通信助手接受到如下内容
00 00 00 0a ff ff 00 00 00 01 7f 00 00 00
00 00 00 0a 消息长度
ff ff 00 00 00 01 7f 00 00 00 select.req
回应一条select.rsp
此时已经和主机建立完整通信可以发送正常消息
C# 实现
C# 实现passive模式用户可以针对主机发送消息设备需要解析内容,并自动回复。
Secs测试软件下载
这篇关于C# SECS/GEM 底层协议与实现方式的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2022-03-01沐雪多租宝商城源码从.NetCore3.1升级到.Net6的步骤
- 2024-11-18微软研究:RAG系统的四个层次提升理解与回答能力
- 2024-11-15C#中怎么从PEM格式的证书中提取公钥?-icode9专业技术文章分享
- 2024-11-14云架构设计——如何用diagrams.net绘制专业的AWS架构图?
- 2024-05-08首个适配Visual Studio平台的国产智能编程助手CodeGeeX正式上线!C#程序员必备效率神器!
- 2024-03-30C#设计模式之十六迭代器模式(Iterator Pattern)【行为型】
- 2024-03-29c# datetime tryparse
- 2024-02-21list find index c#
- 2024-01-24convert toint32 c#
- 2024-01-24Advanced .Net Debugging 1:你必须知道的调试工具