类 HotConnect

java.lang.Object
com.darra.ethercat.master.HotConnect

public class HotConnect extends Object
Hot-Connect 组管理 (ETG.1000.4 / ETG.1020 §8) — 对齐 C# Master/HotConnect.cs.

语义 "默默支持":

  • 用户不调用 addGroup, 所有从站行为 = mandatory (默认; 缺失 → AL_ERROR).
  • 一旦把从站加入 Hot-Connect 组, 该组缺失就不再算错, Master 可正常进 OP.

关键约束:

  • Alias Address (ESC 0x0012) 必须预先烧录到从站 EEPROM, 非 0 且组内唯一.
  • Alias=0 的从站不支持 Hot-Connect (ETG.1020 §8.3).

用法:

   HotConnect hc = new HotConnect(masterIndex);
   hc.addGroup(1, 1001, 0, 0);       // 工具头 1
   hc.addGroup(2, 1002, 0, 0);
   List<HotConnectGroup> groups = hc.enumerate();
 
  • 字段详细资料

    • MAX_GROUPS

      public static final int MAX_GROUPS
      每个 master 最多支持的 Hot-Connect 组数 (与 C 端 EC_HOTCONNECT_MAX_GROUPS 一致).
      另请参阅:
  • 构造器详细资料

    • HotConnect

      public HotConnect(short masterIndex)
  • 方法详细资料

    • addGroup

      public boolean addGroup(int groupId, int aliasAddress, long vendorId, long productCode)
      注册一个 Hot-Connect 组.
      参数:
      groupId - 组 ID (1..65535, 同 master 唯一)
      aliasAddress - 期望 Alias 地址 (必须非 0)
      vendorId - 期望 VendorID, 0=不校验
      productCode - 期望 ProductCode, 0=不校验
      返回:
      成功返回 true
    • removeGroup

      public boolean removeGroup(int groupId)
      删除一个 Hot-Connect 组.
    • getGroupStatus

      public HotConnect.HotConnectStatus getGroupStatus(int groupId)
      查询某个组的当前 Present/Absent 状态.
    • clearAll

      public void clearAll()
      清空当前 master 所有 Hot-Connect 组定义 (通常在重新 SetNetwork 前调用).
    • getGroupCount

      public int getGroupCount()
      当前已注册组数 (0=无 HC 配置, 所有从站 mandatory).
    • enumerate

      public List<HotConnect.HotConnectGroup> enumerate()
      枚举所有已注册的 Hot-Connect 组.

      实现路径:

      1. 分配 native 缓冲 MAX_GROUPS * sizeof(HotConnectGroupNative).
      2. DarraCore.INSTANCE.HotConnectEnumerate(masterIndex, buf, MAX_GROUPS).
      3. 按 Pack=1 偏移 (group_id u16, alias u16, vendor u32, product u32, is_present i32, idx u16, rsv u16 = 总 20 字节) 解码.
      返回:
      不可变快照列表