文章目录
在基于Python的secsgem
库开发GEM应用时,正确设置DeviceType
(设备类型)和ConnectMode
(连接模式)是确保通信协议合规性的关键。以下是结合最新文档的详细配置指南:
一、核心参数定义
1. DeviceType(设备类型)
-
DeviceType.HOST
表示工厂端控制系统(如MES),负责向设备发送指令并接收数据。- 典型行为:主动发起控制命令(如S1F3查询设备状态)
- 适用场景:中央调度系统、数据聚合平台
-
DeviceType.EQUIPMENT
表示生产线物理设备(如光刻机),需完整实现GEM状态机。- 典型行为:响应Host指令并主动上报事件(如S5F1报警)
- 适用场景:半导体制造设备、传感器模块
2. ConnectMode(连接模式)
-
HsmsConnectMode.ACTIVE
主动发起TCP连接(客户端模式),需指定目标IP和端口。- 适用角色:若设备需主动连接Host(如设备作为客户端)
-
HsmsConnectMode.PASSIVE
监听指定端口等待连接(服务端模式)。- 适用角色:Host作为服务端等待设备连接
二、配置步骤与代码示例
1. 基础配置流程
from secsgem.common import DeviceType, Settings
from secsgem.hsms import HsmsSettings, HsmsConnectMode
# 创建HSMS连接配置
hsms_settings = HsmsSettings(
device_type=DeviceType.EQUIPMENT, # 设备类型:HOST或EQUIPMENT
connect_mode=HsmsConnectMode.ACTIVE, # 连接模式:ACTIVE/PASSIVE
address="192.168.1.100", # 目标IP(ACTIVE模式)或监听IP(PASSIVE模式)
port=5000
)
# 初始化设备处理程序(以设备端为例)
from secsgem.gem import GemEquipmentHandler
settings = Settings(hsms_settings=hsms_settings)
equipment = GemEquipmentHandler(settings)
equipment.enable() # 启动连接
2. 角色与模式组合示例
应用场景 | DeviceType | ConnectMode | 说明 |
---|---|---|---|
Host作为服务端 | DeviceType.HOST | PASSIVE | 监听端口等待设备连接 |
Equipment主动连接Host | DeviceType.EQUIPMENT | ACTIVE | 设备主动向Host的IP:端口发起连接 |
双Host互连(特殊场景) | DeviceType.HOST | ACTIVE | 需双方协议兼容 |
三、高级配置与注意事项
1. 多协议兼容性
- HSMS(推荐):当前版本仅支持以太网通信(SEMI E37),需通过
HsmsSettings
配置 - SECS-I(暂不支持):旧版本串口协议需依赖第三方扩展
2. 回调函数与事件处理
根据设备类型实现不同的回调逻辑:
class CustomEquipment(GemEquipmentHandler):
def __init__(self, settings):
super().__init__(settings)
def _on_alarm_received(self, handler, ALID, ALCD, ALTX):
"""设备端处理Host下发的报警"""
if self.settings.device_type == DeviceType.EQUIPMENT:
self.send_ack(ACKC5.ACCEPTED) # 设备响应确认
return "处理完成"
3. 调试与错误排查
- 连接超时:检查防火墙规则及端口监听状态(
netstat -ano | findstr :5000
) - 协议不匹配:确保Host和设备端的
DeviceType
及ConnectMode
互为兼容(如ACTIVE-PASSIVE配对)
四、版本迁移注意
- v0.2.0+版本变更:弃用直接参数初始化,改为通过
Settings
类统一管理配置# 旧版本(已过时) GemHandler("10.0.0.1", 5000, False, 0, "test") # 新版本(推荐) HsmsSettings(device_type=DeviceType.EQUIPMENT, connect_mode=ACTIVE, ...)
五、典型应用场景配置
1. 连接Ignition模拟器
# Host配置(模拟器作为设备端)
hsms_settings = HsmsSettings(
device_type=DeviceType.HOST,
connect_mode=HsmsConnectMode.PASSIVE,
address="0.0.0.0", # 监听所有IP
port=5000
)
2. 多设备协同
# 设备集群主动连接Host
for ip in ["192.168.1.101", "192.168.1.102"]:
hsms_settings = HsmsSettings(
device_type=DeviceType.EQUIPMENT,
connect_mode=HsmsConnectMode.ACTIVE,
address=ip,
port=5000
)
equipment = GemEquipmentHandler(settings)
总结
通过合理设置DeviceType
和ConnectMode
,开发者可快速构建符合SEMI标准的GEM通信系统。关键点包括:
- 角色匹配:Host通常为
PASSIVE
服务端,Equipment为ACTIVE
客户端; - 协议栈完整性:设备端需实现状态机及事件上报逻辑;
- 版本适配:使用新版
Settings
类替代旧参数初始化方式。
建议参考官方示例代码和Ignition模拟器进行联调测试。
上一篇:ECS/GEM是半导体制造业的标准通信协议中host和equipment的区别是什么,在交互过程中,如何来定位角色谁为host,谁为equipment
解决如何使用Python的secsgem库来开发GEM应用时设置DeviceType和ConnectMode的问题。用户提到了基于源码开发,所以需要关注配置参数和方法。
首先,根据搜索结果的网页内容,网页1、2、3、4、5都涉及secsgem的配置和使用。特别是网页2和网页5提到在版本升级后,引入了新的设置类,比如HsmsSettings和SecsITcpSettings,其中包含device_type和connect_mode参数。网页2详细说明了从旧版本到新版本的迁移,使用Settings类来配置连接参数,取代了之前的直接参数传递。例如,在v0.2.0之后,初始化GemHandler时需要用HsmsSettings来指定device_type(如EQUIPMENT或HOST)和connect_mode(ACTIVE或PASSIVE)。
网页4提到连接Ignition SECS/GEM模拟器时,Neuron配置中的设备类型和连接模式设置,比如作为Host时可能需要设置为PASSIVE模式监听端口。网页5中的代码示例展示了继承处理程序时的设备类型设置,如GemEquipmentHandler的初始化中使用Settings类。
接下来,我需要确定DeviceType的选项有哪些。根据网页2和网页5,device_type可以是DeviceType.HOST或DeviceType.EQUIPMENT,分别对应主机和设备角色。ConnectMode在HSMS中分为ACTIVE和PASSIVE,决定主动连接还是被动监听。例如,Host通常作为PASSIVE监听,而Equipment作为ACTIVE连接,但实际可能根据场景调整。
还需要注意不同协议(如HSMS和SECS-I)的配置差异。网页3和网页5提到当前secsgem仅支持HSMS(以太网),所以主要关注HsmsSettings的设置。代码示例中,如网页2中的代码,使用HsmsSettings时指定device_type和connect_mode。
总结步骤应该是:导入相关模块,创建Settings对象,设置device_type和connect_mode,然后传递给处理程序。同时,要处理回调函数和事件,如网页5中的回调示例,可能需要根据设备类型实现不同的处理逻辑。
最后,结合网页中的代码片段和配置说明,整理出具体的配置方法和注意事项,确保用户能正确设置DeviceType和ConnectMode,并处理可能的连接问题。