基于SPRINGBOOT-JAVAFX开发的SECS/GEM模拟器

概要

基于SpringBoot-JavaFX开发的SECS/GEM模拟器
基于SEMI E5 SECS II/E37 HSMS 部分实现SecsDriver
Gitee:https://gitee.com/ghz95/SECSGEM_SIMULATOR
GitHub:https://github.com/GHZ95/SECSGEM_SIMULATOR

整体架构流程

整体为MVC基本设计架构
View:JavaFX,负责基本消息展示以及动作传递
Controller:View - Service间调用及控制
Model:SECSMessage(Length,Header,Body)
网络连接:JavaAIO,负责应用层SECS/GEM报文解析
消息传递:Aio->接受原始报文->NewSECSMsg()->SECS消息总线->Service控制
底层框架:SpringBoot
语言版本:Java8

技术名词解释

SECS/GEM:半导体设备通用的通讯协议,同HTTP同样属于应用层协议
SEMI E5:SECSII消息定义
SEMI E37:HSMS ,基于TCP/IP网络传输层规范实现
粗略介绍,这部分可参考http://www.hume.com/secsintro.htm

总体设计思路

如何建立连接?
本质上所有的SECS消息SxFx都是一堆byte[],HSMS定义了如何在TCP/IP上传输他们,SECSII定义如何解析。对于应用程式来讲只要通过Socket连接就可以得到完整的SECS原始byte[]信息,经过解析后便可实现SECS通讯。当然不是说建立了连接就可以,SEMI定义了确认机制,连接方需向被连接方发送SelectReq报文,当收到SelectRsp后即可建立完整通讯。此时才会进入完整的消息连接状态…
如何解析报文?
Byte转Int,Byte转Hex,Byte转String…
SECS消息分为三块:
1.Length,固定4byte,转long即可,体现消息长度
2.Header,固定10byte,前6位需要单个byte转Int,剩下后4位转int,体现Stream/FunctionNo,DeviceId,SessionType,SessionId,SystemByte
如:00000000000200000001
3.Body,length - 10即为body长度,其中每个SECSItem由Secs格式+长度+消息体组成,如:BINARY[1]:00
解析成SECS消息了?接下来怎么做?
当收到SECS消息时可从header获取StreamNo/FunctionNo,经由消息总线从IO层发布到Service层,在本层中预先设定好各SECS解析方法,由于是作为机台的模拟器使用,项目中不做过多处理,仅完成基本应答;据我目前的工作经验来看,EAP无非就是在HandleS6F11中增加一层控制层,对于不同CEID做不同的操作然后反馈给机台 or MES or EES…
这么简单?是不是还少点什么?
少多了!这里我只做了基本的收发,好不容易强迫自己做了T3 Timer的定时器,这边的实现是,设置一个Map<int,date>存储发送出去消息的SystemByte,我这里后台启用10毫秒的进程一直扫他,拿当前时间减掉Map里的,超了T3Timer就报警TimeOut,当然可以做成异常抛出,统一全局处理的模式,后来想想我这又不是EAP做这么麻烦干嘛能用就行了。!

使用说明

1.启动时默认Active ,默认LOCAL /REMOTE 均为本机
请添加描述

2.主界面说明
ReadyForSend为待发送区,右键选择Send即可发送,消息规范是前两行是时间和Header,只要选消息体的任意一行即可自动选中所指的Message(header错了无所谓)。
Transcation为交易区,和对方的消息收发都在这里
Console为…就是把SYSO重定向到这里,目前会提示T3 TimeOut & 每个消息的Header原始报文
最下方控制区,左边提示模式IP Port,右边Connect按钮会根据连接状态改变,Close强制关闭,AutoReply没用(懒得做)
请添加图片描述

小结

之前都是在做EAP和EES的维护工作,对于底层没有太多的涉猎,本来是想做成像WinSECS一样的功能,比如说LoadXMLForSecsTemplate,还有发送消息的时候组成MsgTag…其实有时间的有目标的话做起来应该也是可以的,总的来说目前还是有很多不足之处的,比如压力测试没有做,对于S1F3的SV自动回复还没有做,目前的话我觉得做设备测试的话应该足够了,若后续有时间的话会把AIO和SECS模块提取出来做成Driver,虽然不是完整的E5/E37实现,但也算是这4年来工作的核心总结吧,知其然亦知其所以然

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值