3.6u3 -> 3.7 Release Note

3.6u3 -> 3.7 Release Note

Release Date.

Jun 29, 2026

Applicable WMX3 Version.

  • WMX3 3.7

Update List.


WMX3 Version

WMX3 Modules

Module.

Previous.

Latest.

Module.

Previous.

Latest.

WMX3Api

3.6.0.0

3.7.0.0

AdvancedMotion

3.6.0.3

3.7.0.0

ApiBuffer

3.6.1.0

3.7.0.0

Compensation

3.6.0.2

3.7.0.0

CoreMotion

3.6.2.0

3.7.0.0

CyclicBuffer

3.6.1.0

3.7.0.0

Event

3.6.0.3

3.7.0.0

IO

3.6.0.3

3.7.0.0

Log

3.6.1.0

3.7.0.0

PMMotion

3.6.0.2

3.7.0.0

UserMemory

3.6.0.2

3.7.0.0

EcPlatform

3.6.3.0

3.7.0.0

CCLinkPlatform

3.6.1.0

3.7.0.0

M4Platform

3.6.2.0

3.7.0.0

SimuPlatform

3.6.0.2

3.7.0.0

WMX3 Main Utility

Utility.

Previous.

Latest.

Utility.

Previous.

Latest.

Agent

5.3.3630.52264

6.0.3700.61561

EcConfigurator

5.3.3630.52131

6.1.3700.61321

MotionScope

5.3.3630.52245

6.4.3700.61403

NetConfigurator

5.3.3630.52381

6.1.3700.61311

WOS

5.3.3630.52401

6.1.3700.61801

WMX3 Sub Utility

Utility.

Previous.

Latest.

Utility.

Previous.

Latest.

WMX3Console

3.6.0.0

N/A

ConfigureNIC

1.0.0.2

DongleViewer

1.0.0.0

PacketAnalyzer

5.3.3630.52241

6.1.3700.60191

SimuConfigurator

1.0.0.0

WMX3Manager

1.0.0.0

N/A

wit

1.7.0

N/A

NOTE : WMX3Console 유틸리티는 3.7 버전부터 삭제되었습니다.

NOTE : WMX3Manager 가 3.7 버전부터 삭제되었습니다.

NOTE : wit(WMX Intuitive TUI tool) 가 3.7 버전부터 삭제되었습니다.


WMX3 Engine

Type.

Description.

Type.

Description.

새로운 기능
NEW

  1. 포괄적인 폐루프 전환 제어를 위한 StartClosedLoopTo* 함수 및 Start*ToClosedLoop 함수를 추가했습니다 (단일/다축에 대한 위치, 속도, 토크).

  2. ClosedLoop setpoint 램핑 지원을 위해 변화율 기반 및 시간 기반 구성을 위한 Ramp 클래스를 추가했습니다.

  3. ClosedLoopPIDParamrampRate를, CoreMotionAxisStatusclosedLoopSetpoint를 추가했습니다.

  4. PID 게인, PID 매개변수, 피드백/피드포워드 데이터 소스, 램프의 호출별 재정의를 지원하는 ClosedLoopOptions를 추가했습니다. 0이 유효한 재정의 값이 되도록 비트마스크로 필드를 추적하고, 카테고리 수준 검사를 위한 HasAny*Override 헬퍼를 제공합니다.

  5. 동기 보상 중에 적용할 수 있는 최대 속도 오프셋을 제한하기 위한 limitCompensation 매개변수를 SyncParam에 추가했습니다.

  6. API 버퍼 오류 로그에서 API 호출을 식별하는 데 사용할 수 있는 블록 개수를 얻기 위해 GetCumulativeBlockCount 함수가 추가되었습니다. ApiBuffer::GetStatus와 달리, 이 함수는 API 버퍼 처리와 동기화되어 있으며 API 호출을 API 버퍼에 추가한 직후에 호출하더라도 항상 최신 블록 번호를 반환함이 보장됩니다.

  7. E-CAM API를 마스터-슬레이브 채널 아키텍처로 리팩터링했습니다. ECAMMasterData, ECAMSlaveData 및 관련 옵션 클래스를 추가했습니다. 마스터 채널과 슬레이브 채널을 개별적으로 구성하기 위한 SetECAMMaster, SetECAMSlave, GetECAMMaster, GetECAMSlave 함수를 추가했습니다.

  8. 연쇄 삭제 지원이 있는 명시적 E-CAM 채널 정리를 위한 ClearECAMMasterClearECAMSlave 함수를 추가했습니다. 마스터 채널을 삭제하면 모든 종속 슬레이브 채널이 자동으로 삭제됩니다.

  9. StartDynamicPos, StartDynamicMov, StartDynamicLinearIntplPos, StartDynamicLinearIntplMov, SetDynamicPos, GetDynamicPos 함수와 함께, 이들 함수의 오버로드된 변형들이 추가되었습니다. 이 함수들은 API 버퍼에서 호출될 경우, 실행되기 전에 모션의 목표값을 동적으로 변경할 수 있도록 해줍니다.

  10. 최대 토크 제한 램프(MaxTorqueLimitRamp) 기능을 추가했습니다. 급격한 가속 시 최대 토크 제한을 즉시 적용하면 위치가 갑자기 튀는 현상을 방지하기 위한 기능입니다. 토크 제한을 점진적으로(램프) 적용하여 부드러운 제어가 가능합니다. SetMaxTrqLimitRampRate, GetMaxTrqLimitRampRate, SetMaxTrqLimitRampEnable, GetMaxTrqLimitRampEnable 함수를 추가했습니다. AxisParamenableMaxTrqLimitRamp, maxTrqLimitRampRate, posFErrorInstantMaxTrqLimitThreshold 매개변수를 추가했습니다.

  11. 기계적 끝단 감지 후 토크 제한 유지(Keep Mech End Torque Limit) 기능을 추가했습니다. 기계적 끝단 감지 완료 후에도 감지 시 사용된 낮은 토크 제한값을 유지할 수 있는 기능입니다. 기본값은 true로 설정되어 기계적 끝단 감지 후 안전한 토크 제한을 자동으로 유지합니다. HomeParamkeepMechEndTorqueLimit 매개변수를 추가했습니다. 모든 기계적 끝단 감지 모드(MechEnd, MechEndHS, MechEndLS)에서 지원됩니다.

  12. 모션 슬로우다운 팩터(Motion Slowdown Factor) 기능을 추가했습니다. 인터럽트 단위로 모든 모션 동작의 속도를 균일하게 조절하는 시간 스케일링 기능입니다. 개별 모션 프로파일 파라미터를 수정하지 않고도 모든 모션을 균일하게 감속할 수 있습니다. 슬로우다운 팩터는 시간 제수(time divider)로 작동합니다: 팩터=1은 정상 속도, 팩터=2는 절반 속도, 팩터=N은 1/N 속도입니다. SetMotionSlowdownParamGetMotionSlowdownParam 함수를 추가했습니다.

  13. CoreMotion Pub API(WMX3 SDK에서 사용 가능)에 "Rt" 접미사를 가진 여러 함수 포인터를 추가했습니다. 이 함수들은 블로킹을 발생시키지 않으며 사이클릭 프로세스 내에서 안전하게 호출할 수 있습니다: startHomeSingleAxisRt, startHomeMultiAxisRt, startPosRt, startLinearIntplPosRt, startCircularIntplPosRt, decStopSingleAxisRt, execQuickStopSingleAxisRt. 또한 블로킹 없이 API 락을 취득하는 getAPIAxisLockNoWait, getAPIVirtAxisLockNoWait, getAPIMiscLockNoWait 함수 포인터도 추가했습니다.

  14. CoreMotion Pub API(WMX3 SDK에서 사용 가능)의 CE_AXIS_STATUS_PUB를 통해 제공되는 상태 정보를 확장했습니다.

  15. CCLinkPlatform에서 UserDef=1인 경우, cclink_network.def에 정의된 대로 슬레이브 목록이 구성되도록 변경했습니다. 사용자가 정의한 슬레이브 ID 및 슬레이브 순서가 항상 CCLinkMasterInfo에 적용됩니다. 이 변경에 따라 HaltOnNetworkDiff 파라미터가 삭제되고 SetSlaveViewMode가 추가되었습니다.

  16. CCLink 통계 정보에 packetLosspacketDelayed를 추가했습니다.

  17. 데이터 로그 및 메모리 로그 함수의 타임스탬프를 확장했습니다. 사용 가능한 타임스탬프 세트에 "시스템 시간(에폭 시간)"을 추가했습니다. 데이터 로그는 사이클 카운터, 시간(엔진 시작 이후 경과 시간), 시스템 시간의 세 가지 타임스탬프를 모두 로그 파일에 출력합니다(하나만 선택하던 이전 동작에서 변경). 메모리 로그는 사이클 카운터만 반환하던 이전 동작에서 변경되어 세 가지 타임스탬프를 모두 반환합니다. LogChannelOptions 클래스에 cycleCounterOnly 옵션을 추가했습니다. 타임스탬프 선택이 불필요해짐에 따라 LogApiLogInputLogApiLogOutput 클래스가 삭제되었습니다.

  18. ApiBufferStatus 클래스에 cumulativeBlockCount 멤버를 추가했습니다. 이 상태는 API 버퍼가 마지막으로 삭제된 이후 버퍼에 추가된 블록의 총 수입니다.

  19. ApiBufferStatus 클래스에 canRewind 멤버를 추가했습니다. 이를 통해 실제로 호출하기 전에 API 버퍼 채널에 대해 Rewind를 실행할 수 있는지 여부를 사용자가 확인할 수 있습니다.

  20. Windows OS - RTX 버전과 동일한 API 인터페이스를 공유하는 Linux OS - Preempt RT 버전이 제품 라인업에 추가되었습니다. 이에 따라 다음 API 및 클래스 사양이 업데이트되었습니다: 모든 C++ API 함수의 반환 타입 long __stdcallint __stdcall, SleepAtEngine 인수 타입 unsigned longunsigned int, StartEngine 인수 타입 DWORD_PTRlong long, RestartEngine 인수 타입 DWORD_PTRlong long, DeviceStatistics::sumApiTime 타입 LARGE_INTEGERlong long, DeviceStatistics::sumRtTime 타입 LARGE_INTEGERlong long, DeviceStatistics::sumFuncProcTime 타입 LARGE_INTEGERlong long.

  21. 메모리 로그 버퍼 확장 기능을 추가했습니다. MemoryLogOptionsbufferExpandFactor 필드를 추가하여 채널당 링 버퍼를 기본 크기 이상으로 확장할 수 있게 했습니다. 유효 버퍼 크기는 maxMemLogBufferSizebufferExpandFactor를 곱한 값입니다. 범위: 1에서 maxMemLogExpandFactor. 기본값은 1(기존 동작 유지). SetMemoryLogOption으로 설정하고 GetMemoryLogOption으로 읽습니다. Open 완료 + IDLE 상태의 채널에 대해 다른 팩터로 SetMemoryLogOption이 호출되면 모듈별 링 버퍼가 즉시 재할당되고 보존된 샘플은 삭제됩니다.

  22. ClosedLoopFeedforwardParam 축 매개변수 및 대응하는 closedLoopFeedforward 로그/상태 필드를 추가했습니다. 피드포워드 데이터 소스(아날로그 데이터 또는 축 데이터)는 PID 컨트롤러와 독립적으로 서보 출력 명령에 추가 기여를 제공합니다. CoreMotionAxisLogInput에 새로운 closedLoopFeedforward 부울 값을 추가하여 피드포워드 출력 로깅을 활성화했습니다. 대응하는 double 값이 CoreMotionAxisLogOutputCoreMotionAxisStatus에 공개되어 피드포워드 기여를 관찰할 수 있습니다.

  23. CoreMotion 모듈에 최대 모터 속도 단위 분자(Max Motor Speed Unit Numerator) 및 최대 모터 속도 단위 분모(Max Motor Speed Unit Denominator) 매개변수를 추가했습니다. 이 매개변수들을 통해 최대 모터 속도(Max Motor Speed) 값을 전송 전에 서보 드라이버가 기대하는 단위로 변환할 수 있습니다. 드라이버로 전송되는 값은 "최대 모터 속도 × 분자 / 분모"로 계산됩니다. 기본값 1을 사용할 경우 변환이 적용되지 않아 이전 버전과 동일하게 동작합니다. SetMaxMotorSpeedUnitGetMaxMotorSpeedUnit 단일 축 API를 추가하여 SetAxisParam을 거치지 않고 변환 비율을 직접 업데이트할 수 있게 했습니다.

  24. 피드백 및 피드포워드 축 데이터 소스에 오프셋/포화 적용 전에 적용되는 곱셈 스케일로서 gain을 추가했습니다(gain * ReadAxisData() + offset을 [min, max]에 클램프). 호출별 재정의는 SetFeedbackAxisGain / SetFeedforwardAxisGain으로 설정합니다. 편의 세터 SetFeedbackAxisData / SetFeedforwardAxisData는 이제 기본값 gain = 1.0을 받습니다. 활성화된 축 데이터 소스에 0 게인을 지정하면 유효성 검사에서 거부됩니다.

  25. EtherCAT(EcPlatform)에 Monitor 모드, 가상 슬레이브, I/O 확장 지원을 추가하고 EcPlatform 로그 모델을 재구성했습니다.

    • Monitor 모드: SetMonitorMode로 마스터를 Monitor 모드로 전환하고, GetMasterMonitorInfoResetMonitorStatisticsInfoEcMonitorInfo의 모니터 통계 정보를 조회·리셋할 수 있습니다. 또한 SetSlaveViewMode의 마스터 ID 지정 오버로드를 추가했습니다.

    • 가상 슬레이브: ENI 파일에서 정의한 가상 슬레이브를 새로운 EcVirtualSlaveInfo 구조체 및 대응하는 가상 슬레이브 PDO 읽기/쓰기 함수를 통해 조회·조작할 수 있습니다.

    • 로그 모델: EcPlatform의 데이터 로그 및 메모리 로그는 이제 EcLogEntry로 기술됩니다. 이를 통해 PDO 데이터, 슬레이브별 정보(EcLogEntrySlaveInfo), 마스터별 정보(EcLogEntryMasterInfo)를 기록할 수 있습니다. 기존의 PDO 전용 로그 입력을 대체합니다.

    • 6개의 새로운 에러 코드(8237~8242 / 0x202D~0x2032)를 추가했습니다: NotInMonitorMode, VirtualSlaveNotEnabled, OtherOperationIsRunning, IoExtNotAttached, IoExtFuncNotSupported, InvalidMode.

사양 변경
IMP

  1. 클래스 이름을 Command에서 ClosedLoopCommand로 변경했습니다. 또한 API 이름을 StartController에서 StartClosedLoop로, StopController에서 StopClosedLoop로 변경했습니다.

  2. SetCommandPosSetFeedbackPos 함수를 동일 타이밍에 호출할 경우, 에러를 반환하도록 변경하였습니다. 두 함수의 특성상 동일 타이밍에 호출할 경우 문제가 발생할 수 있습니다.

  3. 동기 보상의 경우 마스터 축 매개변수가 아닌 슬레이브 축 매개변수만 사용됩니다. 이는 동기 게인, 동기 폭 및 보상 제한 매개변수에 적용됩니다.

  4. 리미트 스위치 유형(LS Type) 매개변수의 기본값을 None에서 Dec로 변경했습니다. 리미트 스위치가 해제되었을 때의 위치 오차를 최소화하기 위한 것입니다.

  5. API 버퍼 제어 함수 Execute, Halt, Clear, Rewind의 조건부 동작을 명확히 했습니다. 현재 기록 상태인 채널에서 호출되면 이러한 함수는 AlreadyRecordingForSpecifiedChannel 오류를 반환합니다. 기록 중이 아닌 채널에서 호출되면 다른 채널이 기록 중인 경우 API 버퍼에 기록되거나 기록이 활성화되지 않은 경우 즉시 실행됩니다.

  6. Rewind 함수에 blockIndex 매개변수(기본값 0)를 추가하여 지정된 블록 인덱스로의 되감기를 가능하게 했습니다. 이를 통해 버퍼 내용의 지정된 위치부터 부분적인 재실행이 가능합니다. 지정된 블록 인덱스가 현재 블록 수를 초과할 때 반환되는 RewindBlockIndexOutOfRange 오류 코드를 추가했습니다.

  7. 멀티 채널 API 버퍼 함수의 이름을 ExecuteMultipleChannel, HaltMultipleChannel, ClearMultipleChannel, RewindMultipleChannel에서 ApiBufferChannelSelection 매개변수를 사용하는 오버로드된 Execute, Halt, Clear, Rewind 함수로 변경했습니다.

  8. 오류 코드 NotGateNodeHasChildrenNotGateNodeInvalidChildCount로 이름 변경했습니다.

  9. FlowIf(다중 조건 오버로드)의 두 번째 매개변수를 ApiBufferCondition*에서 ApiBufferMultiCondition*로 변경하여 대기 절에도 다중 조건 트리를 사용할 수 있게 했습니다. 두 번째 인수로 ApiBufferCondition*를 전달하던 기존 코드는 업데이트해야 합니다.

  10. 논리 게이트 노드(AND, OR, XOR, NOT)를 사용한 다중 조건 트리 대기 로직을 위해 ApiBufferMultiCondition 매개변수를 가진 Wait 함수 오버로드를 추가했습니다.

  11. 새로운 오류 코드 XorGateNodeInvalidChildCountInvalidConditionType를 추가했습니다.

  12. RewindBlockIndexOutOfRange 오류 코드를 0x12006 위치에 삽입하여 후속 오류 코드의 정수 값이 1씩 이동했습니다 (예: AlreadyRecordingForSpecifiedChannel가 73734에서 73735로 변경). 로그 파서 또는 진단 도구에 오류 코드 값을 하드코딩한 사용자는 이에 맞게 업데이트해야 합니다.

  13. Closed-Loop API 멤버 함수의 명명 규칙을 camelCase에서 PascalCase로 표준화했습니다. Ramp (예: fromRateFromRate, fromTimeFromTime), ClosedLoopOptions (예: setRampSetRamp, setControlOutputOffsetSetControlOutputOffset), ClosedLoopCommand (예: setTriggerSetTrigger, setOptionsSetOptions). PIDGain 래퍼 클래스가 삭제되었습니다. 대신 SetPIDGain 또는 필드별 세터(SetProportionalGain, SetIntegralGain, SetDerivativeGain)를 사용하십시오.

  14. 토크 커맨드 클래스를 단일 TrqCommand 클래스로 빌더 패턴을 사용하여 통합했습니다. 다음 v3.6 클래스가 삭제되었습니다: TriggerTrqCommand, RampTimeTrqCommand, TriggerRampTimeTrqCommand, RampRateTrqCommand, TriggerRampRateTrqCommand. 대신 통합된 TrqCommandSetTrigger, SetRamp, SetRampRate, SetRampTime, SetMaxMotorSpeed, Clear 메서드를 사용하십시오. 60개의 StartTrq / StartPosToTrq / StartVelToTrq 오버로드 선언은 TriggerEvents* pTriggerEvents = NULL을 마지막 파라미터로 하는 6개의 통합 시그니처로 정리되었습니다.

    다축 오버로드의 경우 배치 내 모든 명령은 동일한 트리거 구성을 공유해야 합니다. 구성이 일치하지 않으면 InvalidTriggerArgument가 반환됩니다. 트리거 조건은 명령 객체의 SetTrigger 메서드 또는 pTriggerEvents 파라미터 중 하나로 지정할 수 있습니다. 양쪽 모두 지정하면 InvalidTriggerArgument가 반환됩니다. 다음 v3.6 함수가 통합된 함수로 대체되었습니다:

    1. StartRampTimeTrq, StartRampRateTrqStartTrq (SetRamp 사용);

    2. StartPosToRampTimeTrq, StartPosToRampRateTrqStartPosToTrq (SetRamp 사용);

    3. StartVelToRampTimeTrq, StartVelToRampRateTrqStartVelToTrq (SetRamp 사용).

  15. 토크 램프 시간 단위를 인터럽트 사이클 수(unsigned int)에서 초(double)로 변경했습니다. v3.6에서는 rampCycleTime으로 램프 시간을 인터럽트 사이클 수로 지정했습니다. v3.7에서는 Ramp::FromTime으로 램프 시간을 초 단위로 지정합니다. 기존 v3.6 값을 변환하려면: timeSeconds = rampCycleTime * interruptPeriod_ms / 1000.0 (interruptPeriod_ms는 인터럽트 주기(밀리초)). 예를 들어, 인터럽트 주기가 1 ms이고 v3.6 램프 사이클 시간이 500 사이클인 경우, v3.7 동등 값은 500 * 1 / 1000.0 = 0.5초입니다.

  16. 토크 제한 및 최대 모터 속도 설정 함수를 TorqueVelocity 클래스에서 Config 클래스로 이동했습니다. 이들은 모든 모션 모드에 영향을 미치는 축 레벨 매개변수입니다. 다음 함수가 이동되었습니다:

    • Torque::SetMaxTrqLimit, Torque::GetMaxTrqLimitConfig::SetMaxTrqLimit, Config::GetMaxTrqLimit;

    • Torque::SetPositiveTrqLimit, Torque::GetPositiveTrqLimitConfig::SetPositiveTrqLimit, Config::GetPositiveTrqLimit;

    • Torque::SetNegativeTrqLimit, Torque::GetNegativeTrqLimitConfig::SetNegativeTrqLimit, Config::GetNegativeTrqLimit;

    • Velocity::SetMaxMotorSpeed, Velocity::GetMaxMotorSpeedConfig::SetMaxMotorSpeed, Config::GetMaxMotorSpeed.

  17. SyncGroup 멤버 allowAmpErrorServoOnallowServoOnDuringAmpError로 명칭 변경하였습니다.

  18. 모든 모듈 API 헤더(CoreMotion, AdvancedMotion, Event, IO, Log, ApiBuffer, UserMemory, WMX3Api, CCLink)에서 boolean 의미의 unsigned char 필드를 bool로 변환하였습니다. true/false 상태를 나타내는 필드(예: enable, invert, clockwise, suspend)는 bool로 변경되었습니다. 부호를 곱셈 연산자로 사용하는 필드(예: rotationalAxisPolarity, localCenterOfRotationDirection, axisPolarity, axisCoordinateFlip)는 char로 유지됩니다. 모든 사용자 코드는 새 헤더로 재컴파일해야 합니다.