{
  "license": "CC BY 4.0",
  "attribution": "SyncTwin — https://synctwin.ru/ethercat/",
  "updated": "2026-08-10",
  "note": "Собственные наблюдения на стенде и разбор электронных описаний устройств (ESI). Не перепечатка документации производителей. Каждая строка помечена источником: стенд или ESI/мануал.",
  "devices": [
    {
      "slug": "inovance-is620n",
      "vendor": "Inovance",
      "model": "IS620N",
      "type": "Сервопривод",
      "vendor_id": 1048576,
      "vendor_id_hex": "0x00100000",
      "product_code": 786696,
      "product_code_hex": "0x000C0108",
      "status": "bench",
      "coe": {
        "sdo_info": false,
        "source": "стенд",
        "note": "Словарь не перечисляет вовсе: объекты читаются, но список себя привод не отдаёт — потому в экосистеме LinuxCNC под него живут плагины со списками из документации."
      },
      "profile": "CiA-402, режим CSP (циклический синхронный по положению)",
      "facts": [
        {
          "text": "Объектный словарь по CoE SDO-Info не отдаёт: карту объектов приходится брать из ESI или мануала, живьём вычитать нельзя.",
          "source": "стенд"
        },
        {
          "text": "Масштаб положения на нашей оси с ШВП 16×10: 838 860,8 импульса на миллиметр (8388608 / 10). Распространённая ошибка — взять 2 097 152.",
          "source": "стенд"
        },
        {
          "text": "Параметры вендора адресуются по правилу Hgg-pp ↔ 0x2gg:(pp+1); коэффициенты контуров — 0x2008, режекторные фильтры — 0x2009, дискретные входы и выходы — 0x2003 и 0x2004.",
          "source": "стенд"
        },
        {
          "text": "С абсолютным энкодером режим возврата в исходное положение задаётся значением 2, а не 1.",
          "source": "стенд"
        },
        {
          "text": "Имя устройства на шине привод не сообщает — поле остаётся пустым. Опознавать модель нужно по идентификаторам производителя и изделия из объекта 0x1018, а не по строке с названием прошивки.",
          "source": "стенд"
        },
        {
          "text": "Отставание оси пропорционально скорости и одинаково у всех трёх осей: на подаче 3000 мм/мин (50 мм/с) — 1,34 мм, на 750 мм/мин — 0,34 мм, в покое ноль. Отношение скорости к отставанию около 37 с⁻¹. Настройки контуров заводские, упреждение по скорости не трогали: это поведение из коробки, а не предел привода.",
          "source": "стенд"
        }
      ],
      "pitfalls": [
        {
          "text": "Ошибка Er.E08 (потеря синхронизации) возникает, когда мастер пропадает, пока привод находится в рабочем состоянии OP. Снимается только полным перезапуском питания привода — сброса ошибки недостаточно.",
          "source": "стенд"
        },
        {
          "text": "Невыход в рабочее состояние OP чаще вызван задержками реального времени из-за перегрузки процессора, а не настройкой профиля движения. Лечится разгрузкой системы: на разгруженной машине пиковая задержка планировщика по cyclictest — 15 мкс, и приводы держат OP устойчиво.",
          "source": "стенд"
        },
        {
          "text": "Назначается ровно один передающий PDO — либо 0x1A00, либо один из набора 0x1B01…0x1B04. Индекса 0x1A01 у привода нет вовсе, а запись значения вне этого набора даёт ошибку сервисного обмена, и слейв не доходит до рабочего состояния OP. Всё нужное кладётся в 0x1A00: у него переменное отображение, до десяти записей.",
          "source": "мануал"
        }
      ],
      "dictionary": {
        "objects": 0,
        "complete_access": null,
        "source": "стенд"
      },
      "modes": {
        "raw": "0x3AD",
        "list": [
          "PP",
          "PV",
          "TQ",
          "homing",
          "CSP",
          "CSV",
          "CST"
        ],
        "source": "стенд"
      },
      "encoder": {
        "bits": 23,
        "kind": "абсолютный",
        "source": "паспорт"
      },
      "limits": [
        "Один TxPDO: второй набор телеметрии привод не принимает — слейв падает на запуске.",
        "Разрешение энкодера по шине не сообщает: 0x608F отсутствует."
      ],
      "objects": [
        {
          "index": "0x603F",
          "name": "Error code",
          "value": "0x0E08 при потере SYNC",
          "note": "В мануале это EE08.0 «потеря сигнала SYNC», помечена сбрасываемой. Вспомогательный код в 0x200B:23 (H0b-34) = 0x6E08.",
          "source": "стенд"
        },
        {
          "index": "0x6041",
          "name": "Statusword",
          "value": "0x0218 при фолте",
          "note": "Бит 3 (Fault) поднят. Fault reset по шине проходит с ack, но статус не меняется, пока SYNC не восстановлен: снять сетевой фолт по лежащей сети нельзя.",
          "source": "стенд"
        },
        {
          "index": "0x6060",
          "name": "Modes of operation",
          "value": "ошибка −22 при записи",
          "note": "EINVAL приходит, когда объект уже замаплен в PDO: привод отвергает SDO-запись в то, что едет циклическим обменом. Та же строка печатается и в успешных запусках — это шум, а не отказ.",
          "source": "стенд"
        }
      ],
      "params": {
        "id": "is620n",
        "total": 337,
        "groups": 16
      },
      "docs": [
        {
          "title": "Конфигурация трёх осей: описание шины и HAL",
          "url": "https://github.com/SyncTwin/linuxcnc-ethercat-configs/tree/main/is620n-3axis"
        },
        {
          "title": "Одна ось — минимальный рабочий пример",
          "url": "https://github.com/SyncTwin/linuxcnc-ethercat-configs/tree/main/is620n-single-axis"
        }
      ]
    },
    {
      "slug": "mitsubishi-mr-j4-tm",
      "vendor": "Mitsubishi",
      "model": "MR-J4-TM",
      "type": "Сервопривод",
      "vendor_id": 2590,
      "vendor_id_hex": "0x0000A1E",
      "product_code": 513,
      "product_code_hex": "0x00000201",
      "status": "bench",
      "coe": {
        "sdo_info": true,
        "source": "стенд",
        "note": "Выгружает почти весь параметрический мир серии — 809 объектов."
      },
      "profile": "CiA-402",
      "facts": [
        {
          "text": "Объектный словарь отдаёт по CoE SDO-Info: карту объектов можно вычитать с работающего привода, электронное описание устройства для этого не требуется.",
          "source": "стенд"
        },
        {
          "text": "Даже при доступном словаре имена параметров производителя приходят голым кодом вида «PB07»; человекочитаемое название и единицы измерения есть только в документации. То есть мануал нужен для подписей, а не для структуры.",
          "source": "стенд"
        },
        {
          "text": "Структура словаря приходит с привода, а человеческие подписи и единицы — только из мануала: вендорные параметры отдаются голым кодом вида PB07.",
          "source": "стенд"
        }
      ],
      "pitfalls": [],
      "dictionary": {
        "objects": 809,
        "complete_access": true,
        "source": "стенд"
      },
      "modes": {
        "raw": "0x3AD",
        "list": [
          "PP",
          "PV",
          "TQ",
          "homing",
          "CSP",
          "CSV",
          "CST"
        ],
        "source": "стенд"
      },
      "encoder": {
        "bits": 22,
        "counts_per_rev": 4194304,
        "source": "стенд"
      },
      "objects": [
        {
          "index": "0x608F",
          "name": "Position encoder resolution",
          "value": "4 194 304",
          "note": "Разрешение отдаёт по шине — единственный из наших приводов вместе с LXM28E.",
          "source": "стенд"
        },
        {
          "index": "0x6502",
          "name": "Supported drive modes",
          "value": "0x3AD",
          "note": "Совпадает до бита с Wecon и Inovance: три вендора трёх ценовых сегментов дают одинаковый набор режимов.",
          "source": "стенд"
        }
      ],
      "limits": [
        "Имена вендорных параметров приходят кодом (PB07) — расшифровка только из мануала.",
        "Функциональная безопасность FSoE — опция, отдельным исполнением."
      ],
      "params": {
        "id": "mr-j4-tm",
        "total": 1130,
        "groups": 17
      }
    },
    {
      "slug": "schneider-lxm28e",
      "vendor": "Schneider Electric",
      "model": "LXM28E",
      "aliases": [
        "Delta ASDA-A2-E"
      ],
      "type": "Сервопривод",
      "vendor_id": 134217818,
      "vendor_id_hex": "0x0800005A",
      "product_code": 614448,
      "product_code_hex": "0x00096030",
      "status": "bench",
      "coe": {
        "sdo_info": false,
        "source": "стенд"
      },
      "profile": "CiA-402",
      "facts": [
        {
          "text": "Аппаратно совпадает с Delta ASDA-A2-E — это одно и то же изделие под разными марками.",
          "source": "стенд"
        },
        {
          "text": "Объектный словарь по CoE SDO-Info не отдаёт: нужно электронное описание устройства или документация.",
          "source": "стенд"
        },
        {
          "text": "На момент последних замеров стоял обесточенным: числа сняты в июньской сессии, когда привод был на шине. Остальные приводы стенда перепроверены позже.",
          "source": "стенд"
        }
      ],
      "pitfalls": [],
      "dictionary": {
        "objects": null,
        "complete_access": null,
        "source": "стенд"
      },
      "modes": {
        "raw": "0xED",
        "list": [
          "PP",
          "PV",
          "TQ",
          "homing",
          "CSP"
        ],
        "note": "Циклических режимов по скорости и моменту (CSV, CST) нет вовсе — только CSP.",
        "source": "стенд"
      },
      "encoder": {
        "bits": 20,
        "counts_per_rev": 1048576,
        "source": "стенд"
      },
      "objects": [
        {
          "index": "0x608F",
          "name": "Position encoder resolution",
          "value": "1 048 576",
          "note": "Словарь не перечисляет, но разрешение сообщает честно.",
          "source": "стенд"
        },
        {
          "index": "0x6502",
          "name": "Supported drive modes",
          "value": "0xED",
          "note": "Маска уже, чем у трёх остальных приводов стенда (0x3AD): «поддерживает CiA-402» — фраза с очень разным наполнением.",
          "source": "стенд"
        }
      ],
      "params": {
        "id": "lxm28e",
        "total": 389,
        "groups": 12
      },
      "limits": [
        "Циклических режимов по скорости и моменту нет: из циклических только CSP.",
        "Объектный словарь по SDO-Info не перечисляет — карта строится из ESI или документации."
      ]
    },
    {
      "slug": "wecon-vd3e",
      "vendor": "Wecon",
      "model": "VD3E",
      "type": "Сервопривод",
      "vendor_id": 3839,
      "vendor_id_hex": "0x00000EFF",
      "product_code": 222167041,
      "product_code_hex": "0x0D3E0001",
      "status": "bench",
      "coe": {
        "sdo_info": true,
        "source": "стенд",
        "note": "Словарь вычитывается с шины: 109 объектов — ровно столько же объявлено в ESI."
      },
      "profile": "CiA-402, режим CSV (циклический синхронный по скорости)",
      "facts": [
        {
          "text": "Работает на нашем стенде в составе смешанной шины: CSP на осях Inovance, CSV на этом приводе, каплер Omron — два вендора в разных режимах одного профиля одновременно.",
          "source": "стенд"
        },
        {
          "text": "Единица скорости в CSV — counts/s: проверено сопоставлением уставки 0x60FF и факта 0x606C. Энкодер 23 бита, 8 388 608 отсчётов на оборот; для команды в об/мин масштаб 8388608/60 = 139 810,13.",
          "source": "стенд"
        },
        {
          "text": "Масштаб скорости подтверждён по счётчику вала 0x6064: команда 60 об/мин — факт 59,83, ошибка 0,3 %.",
          "source": "стенд"
        },
        {
          "text": "Собственного редуктора нет: 0x6091 = 1:1.",
          "source": "стенд"
        },
        {
          "text": "Вся лесенка CiA-402 проходится одними SDO из состояния PREOP: привод проверяется скриптом при мастере в Idle, циклический обмен не нужен.",
          "source": "стенд"
        },
        {
          "text": "Одно SDO-чтение при мастере в Idle стоит около 32 мс, переход ступени лесенки — 64 мс (две транзакции). Чтение паспорта в 300 параметров — около 10 секунд.",
          "source": "стенд"
        },
        {
          "text": "Минимальная партия у завода — одна штука: комплект 750 Вт (мотор с тормозом, привод, три кабеля) обошёлся в 26 тысяч рублей с доставкой до Москвы.",
          "source": "закупка"
        }
      ],
      "pitfalls": [
        {
          "text": "Масштаб скорости нельзя сверять на малых оборотах: на 6 об/мин расхождение уставки с фактом достигало 35 % — это пульсации регулятора на ползучем ходу, а не ошибка шкалы. На 60 об/мин та же цепочка дала 0,3 %.",
          "source": "стенд"
        },
        {
          "text": "Обратная связь velocity-fb считается через тот же масштаб, что и команда, — сверять шкалу по ней бессмысленно, она подтвердит любое значение. Только по приросту счётчика положения.",
          "source": "стенд"
        },
        {
          "text": "«Failed SDO download 0x6060 (error -22)» при запуске — шум, а не отказ: объект замаплен в PDO, и привод отвергает его дублирующую запись по SDO. Ту же строку печатают успешные запуски.",
          "source": "стенд"
        },
        {
          "text": "Первый пуск многооборотного энкодера встречает Er.40 (батарея). Снимается по шине из PREOP, но об этом надо знать заранее.",
          "source": "стенд"
        },
        {
          "text": "Окно усреднения при замере скорости не должно содержать разгон: первые полсекунды мотор разгоняется, и наивное среднее на 0.01 об/с дало −6% вместо −3.5%.",
          "source": "стенд"
        }
      ],
      "encoder": {
        "bits": 23,
        "counts_per_rev": 8388608,
        "kind": "абсолютный многооборотный",
        "verified": "физически: 5 оборотов рукой при снятом моменте, +0.6% от номинала",
        "source": "стенд"
      },
      "dictionary": {
        "objects": 109,
        "matches_esi": true,
        "complete_access": false,
        "source": "стенд"
      },
      "modes": {
        "raw": "0x3AD",
        "list": [
          "PP",
          "PV",
          "TQ",
          "homing",
          "CSP",
          "CSV",
          "CST"
        ],
        "source": "стенд"
      },
      "limits": [
        "Один TxPDO: вся циклическая телеметрия укладывается в один набор.",
        "Нет SDO Complete Access — параметры с субиндексами пишутся по одному.",
        "ESI строго парный к прошивке: мастер сличает vendor/product/revision."
      ],
      "objects": [
        {
          "index": "0x6091",
          "name": "Gear ratio",
          "value": "с завода 1:1",
          "note": "Работает строго по стандарту: при 2:1 отношение счётчика 2.03. Через SDO-замер скорости эффект не виден по построению — нужен эталон снаружи (рука на валу).",
          "source": "стенд"
        },
        {
          "index": "0x608F",
          "name": "Position encoder resolution",
          "value": "объекта нет",
          "note": "«object does not exist» — разрешение по шине не сообщается, автодискаверу брать из ESI или паспорта.",
          "source": "стенд"
        },
        {
          "index": "0x6092",
          "name": "Feed constant",
          "value": "объекта нет",
          "note": "",
          "source": "стенд"
        },
        {
          "index": "0x603F",
          "name": "Error code",
          "value": "код как на индикаторе",
          "note": "Прочитал 0x28 — это Er.40 на панели.",
          "source": "стенд"
        },
        {
          "index": "0x200A:06 / 0x200A:03",
          "name": "Сброс Er.40 (батарея энкодера)",
          "value": "запись 1",
          "note": "Сначала :06 — сброс счётчика оборотов, затем :03 — снятие fault. Порядок важен; после сброса позиция прыгает, нужен homing. Обе записи возвращают ack независимо от эффекта.",
          "source": "стенд"
        },
        {
          "index": "0x6071",
          "name": "Target torque",
          "value": "маппится в PDO",
          "note": "Режим момента доступен.",
          "source": "паспорт"
        },
        {
          "index": "0x60FF / 0x6064",
          "name": "Target velocity / position actual",
          "value": "counts/s",
          "note": "Единицы внятно не документированы — добывали замером. Шкала подтверждена по приросту 0x6064 против часов: +0.01% на 0.2–0.5 об/с.",
          "source": "стенд"
        }
      ],
      "docs": [
        {
          "title": "Портал документации завода",
          "url": "https://docs.we-con.com.cn/bin/view/Home/"
        },
        {
          "title": "ESI-файлы и конфигуратор (Servo → Download)",
          "url": "https://docs.we-con.com.cn/bin/view/Servo/Download/3%20Software/"
        },
        {
          "title": "Скрипты проверки привода одними SDO",
          "url": "https://github.com/SyncTwin/linuxcnc-ethercat-configs/tree/main/sdo-probing"
        }
      ],
      "params": {
        "id": "wecon-vd3e",
        "total": 329,
        "groups": 16
      }
    },
    {
      "slug": "omron-nx-ecc202",
      "vendor": "Omron",
      "model": "NX-ECC202",
      "type": "Коммуникационный адаптер (каплер)",
      "vendor_id": null,
      "vendor_id_hex": null,
      "product_code": null,
      "product_code_hex": null,
      "status": "bench",
      "coe": {
        "sdo_info": false,
        "source": "стенд"
      },
      "profile": "Модульное устройство с набором подключаемых модулей",
      "facts": [
        {
          "text": "Объектный словарь по CoE SDO-Info не отдаёт.",
          "source": "стенд"
        },
        {
          "text": "При работе со сторонним мастером применимая часть документации находится в приложении к руководству, а не в основных главах: основные главы описывают связку с фирменным контроллером.",
          "source": "стенд"
        }
      ],
      "pitfalls": [
        {
          "text": "Часть функций (настройка модулей, время, серийные номера) доступна только на более новой ревизии адаптера с соответствующей версией прошивки. На ревизии ECC202 соответствующий раздел руководства неприменим.",
          "source": "стенд"
        }
      ],
      "params": {
        "id": "omron-nx-ecc202",
        "total": null,
        "groups": null,
        "label": "Каплер и срезы NX в каталоге оборудования"
      },
      "dictionary": {
        "objects": null,
        "complete_access": null,
        "source": "стенд",
        "note": "Готового типа под каплер в драйвере нет: описан как generic, карта PDO расписывается объект за объектом."
      },
      "limits": [
        "До 63 модулей на каплер, 1434 байта на вход и столько же на выход.",
        "Собственного ввода-вывода у головы нет: набирается срезами слева направо, и порядок срезов задаёт карту процесса.",
        "Выходы приходят шестнадцатибитными словами — каждый бит разбирается в отдельный пин через complexEntry."
      ],
      "objects": [
        {
          "index": "0x1600 / 0x1604 / 0x1608",
          "name": "RxPDO трёх модулей вывода",
          "value": "по 16 бит",
          "note": "Три модуля NX-OD5256 дают 48 дискретных выходов. На стенде через них заведены петля аварийного останова и концевики.",
          "source": "стенд"
        },
        {
          "index": "0x1A0C",
          "name": "TxPDO входов",
          "value": "группа входов",
          "note": "",
          "source": "стенд"
        },
        {
          "index": "0x7002:01",
          "name": "Слово выходов",
          "value": "bitLen 16, halType complex",
          "note": "Каждый бит разбирается в свой HAL-пин — иначе выход виден одним словом и отдельным сигналом не управляется.",
          "source": "стенд"
        }
      ],
      "docs": [
        {
          "title": "Конфигурация каплера и пример jog.hal",
          "url": "https://github.com/SyncTwin/linuxcnc-ethercat-configs/tree/main/omron-nx-ecc202-io"
        }
      ]
    }
  ],
  "sdo_info_matrix": {
    "description": "Отдаёт ли изделие объектный словарь по CoE SDO-Info. Определяется изделием и прошивкой, а не производителем: у одного вендора модели различаются. Источник — разбор электронного описания устройства или документации, если не указано «стенд».",
    "yes": [
      "Mitsubishi MR-J4-TM (стенд)",
      "Mitsubishi MR-J5-G",
      "Beckhoff AX8000",
      "Kollmorgen AKD2G",
      "Omron 1S R88D-1SN",
      "Panasonic A6B",
      "Yaskawa Sigma-7 SGD7S/W",
      "Sanyo Denki SANMOTION R",
      "Novanta INGENIA Everest",
      "Copley Xenus / Accelnet",
      "Elmo Gold",
      "Synapticon SOMANET",
      "INVT SV-DA300"
    ],
    "no": [
      "Inovance IS620N (стенд)",
      "Schneider LXM28E = Delta ASDA-A2-E (стенд)",
      "Leadshine EL7-ECN",
      "Omron NX-ECC202 (стенд)"
    ],
    "not_applicable": [
      "Beckhoff AX5000 — параметры по Sercos-over-EtherCAT, объектного словаря CoE нет",
      "Bosch Rexroth IndraDrive — то же: Sercos-over-EtherCAT"
    ]
  }
}