类 ProtocolCodes

java.lang.Object
com.darra.ethercat.statics.ProtocolCodes

public final class ProtocolCodes extends Object
协议解码 / 错误码表 Java 友好封装. 对齐 C# Static/ProtocolCodes.cs (协议解码下沉到运行库). roundSDKSAN2.

所有原生函数返回的字符串均为 UTF-8 (const char*), 经 JNA Pointer 解码. Java 调用方使用纯 Java 类型 (int/long/byte/byte[]/short[]), 无需直接接触 JNA Pointer.

覆盖 10 个协议头: AL_StatusCode (4) / SDO_Abort (4) / EMCY (5) / ESM 状态机 (8) / PDO Codec (16) / CiA402 (13) / Mailbox (5) / SII (19) / Coupler ID (6) / DiagStrings (4) — 共 84 个 wrapper 方法 (含重载).

  • 方法详细资料

    • alStatusDescription

      public static String alStatusDescription(int code)
      AL Status Code 中文描述.
    • alStatusSeverity

      public static int alStatusSeverity(int code)
      AL Status Code 严重等级 (0=Info, 1=Warning, 2=Error, 3=Fatal).
    • alStatusRecoveryHint

      public static String alStatusRecoveryHint(int code)
      AL Status Code 恢复建议.
    • alStatusIsVendorSpecific

      public static boolean alStatusIsVendorSpecific(int code)
      AL Status Code 是否为厂商专有码.
    • sdoAbortDescription

      public static String sdoAbortDescription(long abortCode)
      SDO Abort Code 中文描述.
    • sdoAbortCategory

      public static int sdoAbortCategory(long abortCode)
      SDO Abort Code 分类 (0=访问/1=参数/2=对象/3=数据等).
    • sdoAbortIsRetryable

      public static boolean sdoAbortIsRetryable(long abortCode)
      SDO Abort Code 是否可重试 (true=瞬时错误可重试).
    • sdoAbortHint

      public static String sdoAbortHint(long abortCode)
      SDO Abort Code 处理建议.
    • emcyDescription

      public static String emcyDescription(int errorCode)
      EMCY 错误码中文描述.
    • emcyClass

      public static int emcyClass(int errorCode)
      EMCY 错误码所属大类 (0x00=Reset, 0x10=Generic, 0x20=Current, ...).
    • emcyClassName

      public static String emcyClassName(int classCode)
      EMCY 大类名称.
    • emcyFormatErrorRegister

      public static String emcyFormatErrorRegister(int errorRegister)
      格式化 EMCY 错误寄存器位 (Object 0x1001 8 个 bit).
      参数:
      errorRegister - 错误寄存器值
      返回:
      已置位错误的中文描述, 例如 "通用 | 电流 | 制造商专有"
    • emcyIsRecovery

      public static boolean emcyIsRecovery(int errorCode)
      EMCY 是否为恢复消息 (0x0000 表示错误已恢复).
    • ecStateIsValidTransition

      public static boolean ecStateIsValidTransition(int from, int to)
      状态转换是否合法.
    • ecStateGetTransitionType

      public static int ecStateGetTransitionType(int from, int to)
      状态转换类型 (0=Direct, 1=Multi-step, -1=Invalid).
    • ecStateGetTransitionPath

      public static short[] ecStateGetTransitionPath(int from, int to)
      获取状态转换路径 (中间状态序列).
      返回:
      路径 short 数组, 长度=转换步数; 例如 INIT→OP 返回 {INIT, PREOP, SAFEOP, OP}
    • ecStateIsBootstrapRequired

      public static boolean ecStateIsBootstrapRequired(int state)
      是否需先进入 BOOT 状态 (用于 FoE 固件升级).
    • ecStateGetName

      public static String ecStateGetName(int state)
      状态名称 (中文).
    • ecStateGetNameEn

      public static String ecStateGetNameEn(int state)
      状态名称 (英文 INIT/PREOP/SAFEOP/OP/BOOT).
    • ecStateHasErrorAck

      public static boolean ecStateHasErrorAck(int state)
      状态字段是否带 ErrorAck 位 (0x10).
    • ecStateStripErrorAck

      public static int ecStateStripErrorAck(int state)
      去掉 ErrorAck 位返回纯状态值.
    • pdoDataTypeBitSize

      public static int pdoDataTypeBitSize(int dataType)
      EtherCAT 数据类型 bit 长度 (BOOL=1, BYTE=8, INT16=16, REAL32=32, ...).
    • pdoDataTypeName

      public static String pdoDataTypeName(int dataType)
      EtherCAT 数据类型名称 (BOOL/UINT16/REAL32 等).
    • pdoExtractU64

      public static long pdoExtractU64(byte[] src, int bitOffset, int bitLength)
      从 PDO 缓冲区按位提取无符号整数 (1..64 bit). 注意: 底层 C 函数 EcPdoCodec_ExtractU64 返回 0=成功, 非 0=错误码.
    • pdoExtractI64

      public static long pdoExtractI64(byte[] src, int bitOffset, int bitLength)
      从 PDO 缓冲区按位提取有符号整数 (1..64 bit).
    • pdoInsertU64

      public static boolean pdoInsertU64(byte[] dst, int bitOffset, int bitLength, long value)
      写入无符号整数到 PDO 缓冲区. @return true 成功 (底层 rc==0).
    • pdoInsertI64

      public static boolean pdoInsertI64(byte[] dst, int bitOffset, int bitLength, long value)
      写入有符号整数到 PDO 缓冲区. @return true 成功.
    • pdoExtractReal32

      public static float pdoExtractReal32(byte[] src, int bitOffset)
      提取 REAL32 (IEEE 754 单精度浮点).
    • pdoExtractReal64

      public static double pdoExtractReal64(byte[] src, int bitOffset)
      提取 REAL64 (IEEE 754 双精度浮点).
    • pdoInsertReal32

      public static boolean pdoInsertReal32(byte[] dst, int bitOffset, float value)
      写入 REAL32 (IEEE 754 单精度).
    • pdoInsertReal64

      public static boolean pdoInsertReal64(byte[] dst, int bitOffset, double value)
      写入 REAL64 (IEEE 754 双精度).
    • pdoCountActivePorts

      public static int pdoCountActivePorts(int activePorts)
      端口活动数 (DL_Status 的 portX_status 计数).
    • pdoGetTopology

      public static int pdoGetTopology(int activePorts)
      由 active_ports 推断从站拓扑. 0=终点(线尾), 1=直通, 2=分支(两个出口), 3=三分支
    • pdoGetTopologyName

      public static String pdoGetTopologyName(int topo)
      拓扑名称 (中文).
    • pdoGetTopologyNameEn

      public static String pdoGetTopologyNameEn(int topo)
      拓扑名称 (英文 line/branch/cross).
    • pdoIsPortActive

      public static boolean pdoIsPortActive(int activePorts, int port)
      指定端口是否激活 (port=0..3).
    • cia402ModeToSupportedBit

      public static int cia402ModeToSupportedBit(int mode)
      CiA402 操作模式 → SupportedDriveModes (0x6502) 位掩码索引 (-1 表示不支持).
    • cia402IsModeSupportedInMask

      public static boolean cia402IsModeSupportedInMask(long mask, int mode)
      0x6502 掩码中是否启用了指定模式.
    • cia402ExpandSupportedMask

      public static byte[] cia402ExpandSupportedMask(long mask)
      展开 0x6502 掩码为支持的模式数组.
    • cia402GetModeName

      public static String cia402GetModeName(int mode)
      模式中文名 (-3=循环同步力矩, 1=PP, 6=HM, 8=CSP 等).
    • cia402GetModeNameEn

      public static String cia402GetModeNameEn(int mode)
      模式英文名 (CSP/CSV/CST/PP/PV/HM 等).
    • cia402GetModeDescription

      public static String cia402GetModeDescription(int mode)
      模式详细描述.
    • cia402IsCyclicSyncMode

      public static boolean cia402IsCyclicSyncMode(int mode)
      是否为循环同步模式 (CSP/CSV/CST: 8/9/10).
    • cia402RequiresDC

      public static boolean cia402RequiresDC(int mode)
      是否需 DC 时钟同步 (循环同步模式必需).
    • cia402IsStandardHomingMethod

      public static boolean cia402IsStandardHomingMethod(int method)
      是否为标准回零方法 (1..35, CiA402-2).
    • cia402GetHomingMethodName

      public static String cia402GetHomingMethodName(int method)
      回零方法名称.
    • cia402GetHomingTrigger

      public static int cia402GetHomingTrigger(int method)
      回零触发源 (0=Index/1=PositiveLimit/2=NegativeLimit/3=HomeSwitch).
    • cia402GetHomingDirection

      public static int cia402GetHomingDirection(int method)
      回零方向 (1=Positive, -1=Negative, 0=未指定).
    • cia402ListStandardHomingMethods

      public static byte[] cia402ListStandardHomingMethods()
      列出所有标准回零方法编号.
    • mailboxTypeName

      public static String mailboxTypeName(int type)
      邮箱类型中文名 (0=AoE, 1=EoE, 2=CoE, 3=FoE, 4=SoE, 5=VoE, ...).
    • mailboxTypeNameEn

      public static String mailboxTypeNameEn(int type)
      邮箱类型英文名 (AoE/EoE/CoE/FoE/SoE/VoE).
    • mailboxErrorDescription

      public static String mailboxErrorDescription(int mbxErrorCode)
      邮箱错误码描述 (Syntax/Unsupported/InvalidHeader/...).
    • mailboxNextCounter

      public static int mailboxNextCounter(int current)
      邮箱计数器递增 (1..7 循环, 0 保留).
    • soeErrorDescription

      public static String soeErrorDescription(int soeError)
      SoE (Servo Drive Profile) 错误码描述.
    • siiFindCategory

      public static ProtocolCodes.SiiCategory siiFindCategory(byte[] siiData, int catType)
      在 SII 数据中查找指定类别.
      返回:
      wordOffset (-1 表示未找到), sizeBytes 为类别数据字节数
    • siiEnumerateCategories

      public static short[] siiEnumerateCategories(byte[] siiData)
      枚举 SII 中所有类别类型, 返回 short 数组.
    • siiGetStringByIndex

      public static String siiGetStringByIndex(byte[] catData, int idx)
      从字符串类别 (cat 10) 中按索引读取字符串 (1-based, idx=1 是第一个).
    • siiGetStringCount

      public static int siiGetStringCount(byte[] catData)
      字符串类别中的字符串总数.
    • siiGetVendorId

      public static long siiGetVendorId(byte[] siiData)
      从 SII 头读取 VendorId (word 0x0008).
    • siiGetProductCode

      public static long siiGetProductCode(byte[] siiData)
      从 SII 头读取 ProductCode (word 0x000A).
    • siiGetRevision

      public static long siiGetRevision(byte[] siiData)
      从 SII 头读取 RevisionNumber (word 0x000C).
    • siiGetSerialNumber

      public static long siiGetSerialNumber(byte[] siiData)
      从 SII 头读取 SerialNumber (word 0x000E).
    • siiGetConfiguredAlias

      public static int siiGetConfiguredAlias(byte[] siiData)
      配置别名 (ConfiguredStation Alias, word 0x0004).
    • siiCoeEnabled

      public static boolean siiCoeEnabled(int coeDetails)
      CoE Details bit0: CoE 启用.
    • siiCoeSdoInfo

      public static boolean siiCoeSdoInfo(int coeDetails)
      CoE Details bit1: SDO Info 服务支持.
    • siiCoePdoAssign

      public static boolean siiCoePdoAssign(int coeDetails)
      CoE Details bit2: PDO Assign (0x1C12/0x1C13) 支持.
    • siiCoePdoConfig

      public static boolean siiCoePdoConfig(int coeDetails)
      CoE Details bit3: PDO Configuration (0x1600.../0x1A00...) 支持.
    • siiCoeUploadAtStartup

      public static boolean siiCoeUploadAtStartup(int coeDetails)
      CoE Details bit4: Upload at Startup.
    • siiCoeCompleteAccess

      public static boolean siiCoeCompleteAccess(int coeDetails)
      CoE Details bit5: Complete Access (整对象 SDO).
    • siiFoeEnabled

      public static boolean siiFoeEnabled(int foeDetails)
      FoE Details bit0: FoE 启用.
    • siiEoeEnabled

      public static boolean siiEoeEnabled(int eoeDetails)
      EoE Details bit0: EoE 启用.
    • couplerDetectDeviceType

      public static int couplerDetectDeviceType(long vendorId, long productCode)
      探测设备类型 (0=Unknown, 1=Coupler, 2=Terminal, 3=Drive, 4=Bridge ...).
    • couplerIsCoupler

      public static boolean couplerIsCoupler(long vendorId, long productCode)
      是否为耦合器 (EK1100/EK1110/...).
    • couplerIsTerminal

      public static boolean couplerIsTerminal(long vendorId, long productCode)
      是否为 IO 端子 (EL1xxx/EL2xxx 等).
    • couplerVendorName

      public static String couplerVendorName(long vendorId)
      厂商中文名.
    • couplerVendorNameEn

      public static String couplerVendorNameEn(long vendorId)
      厂商英文名 (Beckhoff/Omron/Delta 等).
    • couplerDeviceTypeName

      public static String couplerDeviceTypeName(int type)
      设备类型名称 (耦合器/端子/驱动器/...).
    • diagTopologyDescription

      public static String diagTopologyDescription(int topo)
      拓扑图字段中文描述.
    • diagTimingMode

      public static String diagTimingMode(long mode)
      DC 时钟同步模式描述 (0=自由运行, 1=SM 同步, 2=DC 同步等).
    • diagBreakpointType

      public static String diagBreakpointType(int bp)
      断点类型描述 (热插拔诊断/链路重连等).
    • diagFormatBreakpoint

      public static String diagFormatBreakpoint(int slaveIdx, int port, int bp)
      格式化断点报告字符串.
      参数:
      slaveIdx - 从站索引
      port - 端口 (0..3)
      bp - 断点类型
      返回:
      UTF-8 中文格式化字符串