大佬教程收集整理的这篇文章主要介绍了SECS半导体设备通讯-2 HSMS通信标准,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
HSMS定义了使用 TCP/IP 作为物理传输媒质时的通信接口。
HSMS使用TCP/IP流支持,提供了可靠的双向同步传输,可以用来作为SECS-I通信以及其他更高级的通信环境的替代。
HSMS状态机如下图所示,此图中描述的行为定义了HSMS的基本要求。
状态图说明:
状态的转换:
TCP应用程序接口(API)的规范不在HSMS的范围之内。
HSMS可以使用任何标准 TCP/IP API 进行开发,比如 BSD Socket、TLI 等。使用标准的 TCP/IP 寻址,默认的端口号为 5000。
IP Address:连接到局域网(LAN)的每个物理TCP/IP连接都必须具有唯一的IP地址。IP地址必须在安装时进行可分配,并且HSMS的实现不能选择一个固定的IP地址。一个典型的IP地址是192.9.200.1。
HSMS将通信实体分为两种,Passive Mode(被动模式)和 Active Mode(主动模式)。
被动模式建立连接过程:
@H_801_73@主动模式建立连接过程:
@H_801_73@连接终止是连接建立的逻辑反转。从本地实体的角度来看,TCP/IP连接可能随时断开。但是,HSMS只允许在连接处于连接状态的未选择子状态时终止连接。
任何一个实体都可以启动终止连接。实体进入Not Connected状态,表示HSMS通信结束。
HSMS定义了跨TCP/IP连接的实体之间的所有消息交换过程。
一旦连接建立,这两个实体间就建立起HSMS通信。然后,数据消息可以在任何时候以任意一个方向进行交换。
当实体希望结束HSMS通信时,将使用 DeselCET 或 Separate procedure 来结束HSMS通信。
所有的HSMS过程都涉及到HSMS消息的交换。这些消息以 TCP/IP 流的形式使用先前建立的TCP/IP连接进行发送和接收。
消息交换过程分为:SELEct Procedure,Data Procedure,DeSELEct Procedure,Linktest Procedure ,Separate Procedure,Reject Procedure。
SELEct Procedure用于使用SELEct.req和SELEct.rsp消息在TCP/IP连接上建立HSMS通信。
SELEct.req和SELEct.rsp消息:实体由 Not SELEcted 状态转换为 SELEcted 状态所使用的消息 (Active Entity 发送SELEct.req);
Initiator的发起过程:
@H_801_73@Responding Entity的响应过程:
@H_801_73@同时进行的SELEct Procedure:如果附加标准没有限制,则有可能两个实体同时启动具有相同控制标识的SELEct Procedure。在这种情况下,每个实体将通过使用SELEct.rsp响应来接受其他实体的选择请求。
@H_674_152@
只要连接处于SELEcted状态,任何一个实体都可以发起HSMS数据消息。当不处于SELEcted状态时,接收数据消息将导致拒绝Reject Procedure。
数据消息可以进一步定义为消息事务的一部分,即PriMary message 或 Reply message。
在消息事务中,事务的发起者向响应实体发送一条PriMary message。如果PriMary message指示需要响应,则响应实体将发送 Reply message 响应。
下图为两种类型的消息事务:
事务的具体程序由应用层确定,并服从其他标准(例如,使用SECS-II编码消息的GEM设备的E5和E30)。
适用的上层标准由消息类型来标识。该类型由HSMS定义的特定格式确定。HSMS消息的正常类型是SECS-II文本。
Delesect Procedure用于在断开TCP/IP连接之前,为一个实体提供一个优雅的HSMS通信终止。
HSMS要求使用该Procedure时连接处于SELEcted状态。
DeSELEct.req/DeSELEct.rsp:在双方协议终止通信时使用,发起通信终止的一端发送DeSELEct.req;
Initiator的发起过程:
@H_801_73@Responding Entity的响应过程:
@H_801_73@同时进行的DeSELEct Procedure:
Linktest Procedure 用于用于确定TCP/IP和HSMS通信的操作完整性。它的使用在连接状态下随时有效。
Linktest.req/Linktest.rsp:用于通信状态的确认, 如果没有应答则转换为Not Connected 状态;
Initiator的发起过程:
@H_801_73@Responding Entity的响应过程:
@H_801_73@
Separate Producure用于在断开TCP/IP连接之前突然终止实体的HSMS通信。
HSMS要求使用该Procedure时连接处于SELEcted状态。
Separate.req:单方面通知通信终止时发送;
Reject Procedure用于响应在不适当的上下文中收到的其他有效的HSMS消息,即接收到消息的接收方不支持该消息或认为无效的消息。
在HSMS中一个字节包含8位。字节中的位从第7位(MSB)编号到第0位(LSB)。
HSMS消息以单个连续字节流传输。
message Length是一个四字节的无符号整数值,它指定message Header加上Message text的字节长度。消息长度首先传输最高有效位(MSB),最后传输最低有效位(LSB)。
messageHeader是一个10字节的字段。头中的字节从第0字节(传输的第一个字节)编号到第9字节(传输的最后一个字节)。
其中:
Session ID:16位无符号整数,它占据了字节0和字节1(字节0是MSB,1是LSB)。用于标识通信实体的连接;
Header Byte 2:对于不同的HSMS消息,有不同的取值;
Header Byte3:对于不同的HSMS消息,有不同的取值;
PType:8位无符号整型,PType旨在作为一种枚举类型,定义表示层消息类型:messageHeader和messageText是如何编码的。
PType = 0,被HSMS定义为表示SECS-II消息编码。
SType:8位无符号整数,是一种枚举类型,标识此消息是HSMS数据消息(值=0)还是HSMS控制消息。
SystemBytes:四字节无符号整数,用于在一组开放的事务中唯一地标识一个事务,即唯一地标识一次消息交互。
HSMS消息中的Header的解释取决于由SType字段的值定义的特定HSMS消息类型。
下表总结了定义的完整消息集,PType = 0(SECS-II消息格式)。
message Length为10,因为该消息仅有Header。
message Length为10,因为该消息仅有Header。
其SessionID:必须等于相应的SELEct.req中的SessionID。
其Byte3:表示SELEctStatus。为0表示操作成功,非0表示失败。
message Length为10,因为该消息仅有Header。
message Length为10,因为该消息仅有Header。
其Byte3:表示DeSELEctStatus。为0表示操作成功,非0表示失败。
message Length为10,因为该消息仅有Header。
其SessionID:为0xFFFF。
message Length为10,因为该消息仅有Header。
其SessionID:为0xFFFF。
其System Bytes:与其对应回复的Linktest.req相同。
用于响应接收到消息的接收方不支持或当时无效的任何有效的HSMS消息。
其SessionID:等于被拒绝的消息中的SessionID的值。
其Byte2:如果PType不受支持,它等于被拒绝的消息中的PType。否则,它将等于被拒绝的消息中的SType的值。
其Bytes3:其值为reason code,表示拒绝的原因。
使用SType为9的HSMS消息用于立即终止HSMS通信。除了SType值外,它与DeSELEct.req消息相同。其目的是立即终止HSMS通信。
如果检测到通信故障,实体应终止TCP/IP连接。在连接终止时,可以尝试重新建立通信。
Reply Timeout:定义一个实体等待回复消息的最长时间,如果T3超时则取消这次会话事务但不断开 TCP/IP 连接。
Control transactions Control Timeout:定义了一个控制事务所能保持开启的最长时间,超过该时间就认为这次通信失败。
许多控制消息是消息交换或事务过程的一部分:发送者发送<xx>.req,接收方接收<xx>.req并以<xx>.rsp作为响应。
从发送所需的请求消息到收到响应消息,事务一直被认为是打开的。
控制事务可能保持打开的时间取决于T6。
在发起控制事务时,本地实体应启动一个持续时间等于T6的计时器。如果事务在计时器到时之前被正确关闭,则应该取消计时器。
如果定时器在事务未结束之前就到时了,则该事务应被发起者视为已结束,并被视为HSMS通信失败。
Not SELEcted Timeout :定义当建立了 TCP/IP 连接之后通信处于 Not SELEcted 状态的最长时间,通信必须在该时间完成 SELEcted Procedure,否则将会断开 TCP/IP 连接。
Network Intercharacter Timeout:定义成功接收到单个HSMS 消息的字符之间的最大时间间隔。
因为TCP/IP是面向流的通信,所以所有作为单个HSMS消息的一部分的字节可能在单独的TCP/IP消息中传输,一个 HSMS 通信消息可能被分为若干个 TCP/IP 消息进行传输。
若 T8 超时则认为这次传输失败。
HSMS的实现必须提供以下参数设置。
所有参数的范围和分辨率必须至少如表中所示。所有参数必须存储方式为断电保留,如果电源故障或重新加载系统软件,应保留设置。
说明:
以上为SECS通信基础知识的整理-2。
以上是大佬教程为你收集整理的SECS半导体设备通讯-2 HSMS通信标准全部内容,希望文章能够帮你解决SECS半导体设备通讯-2 HSMS通信标准所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。