포괄적인 폐루프 전환 제어를 위한 StartClosedLoopTo* 함수 및 Start*ToClosedLoop 함수를 추가했습니다 (단일/다축에 대한 위치, 속도, 토크).
ClosedLoop setpoint 램핑 지원을 위해 변화율 기반 및 시간 기반 구성을 위한 Ramp 클래스를 추가했습니다.
ClosedLoopPIDParam에 rampRate를, CoreMotionAxisStatus에 closedLoopSetpoint를 추가했습니다.
PID 게인, PID 매개변수, 피드백/피드포워드 데이터 소스, 램프의 호출별 재정의를 지원하는 ClosedLoopOptions를 추가했습니다. 0이 유효한 재정의 값이 되도록 비트마스크로 필드를 추적하고, 카테고리 수준 검사를 위한 HasAny*Override 헬퍼를 제공합니다.
동기 보상 중에 적용할 수 있는 최대 속도 오프셋을 제한하기 위한 limitCompensation 매개변수를 SyncParam에 추가했습니다.
API 버퍼 오류 로그에서 API 호출을 식별하는 데 사용할 수 있는 블록 개수를 얻기 위해 GetCumulativeBlockCount 함수가 추가되었습니다. ApiBuffer::GetStatus와 달리, 이 함수는 API 버퍼 처리와 동기화되어 있으며 API 호출을 API 버퍼에 추가한 직후에 호출하더라도 항상 최신 블록 번호를 반환함이 보장됩니다.
E-CAM API를 마스터-슬레이브 채널 아키텍처로 리팩터링했습니다. ECAMMasterData, ECAMSlaveData 및 관련 옵션 클래스를 추가했습니다. 마스터 채널과 슬레이브 채널을 개별적으로 구성하기 위한 SetECAMMaster, SetECAMSlave, GetECAMMaster, GetECAMSlave 함수를 추가했습니다.
연쇄 삭제 지원이 있는 명시적 E-CAM 채널 정리를 위한 ClearECAMMaster 및 ClearECAMSlave 함수를 추가했습니다. 마스터 채널을 삭제하면 모든 종속 슬레이브 채널이 자동으로 삭제됩니다.
StartDynamicPos, StartDynamicMov, StartDynamicLinearIntplPos, StartDynamicLinearIntplMov, SetDynamicPos, GetDynamicPos 함수와 함께, 이들 함수의 오버로드된 변형들이 추가되었습니다. 이 함수들은 API 버퍼에서 호출될 경우, 실행되기 전에 모션의 목표값을 동적으로 변경할 수 있도록 해줍니다.
최대 토크 제한 램프(MaxTorqueLimitRamp) 기능을 추가했습니다. 급격한 가속 시 최대 토크 제한을 즉시 적용하면 위치가 갑자기 튀는 현상을 방지하기 위한 기능입니다. 토크 제한을 점진적으로(램프) 적용하여 부드러운 제어가 가능합니다. SetMaxTrqLimitRampRate, GetMaxTrqLimitRampRate, SetMaxTrqLimitRampEnable, GetMaxTrqLimitRampEnable 함수를 추가했습니다. AxisParam에 enableMaxTrqLimitRamp, maxTrqLimitRampRate, posFErrorInstantMaxTrqLimitThreshold 매개변수를 추가했습니다.
기계적 끝단 감지 후 토크 제한 유지(Keep Mech End Torque Limit) 기능을 추가했습니다. 기계적 끝단 감지 완료 후에도 감지 시 사용된 낮은 토크 제한값을 유지할 수 있는 기능입니다. 기본값은 true로 설정되어 기계적 끝단 감지 후 안전한 토크 제한을 자동으로 유지합니다. HomeParam에 keepMechEndTorqueLimit 매개변수를 추가했습니다. 모든 기계적 끝단 감지 모드(MechEnd, MechEndHS, MechEndLS)에서 지원됩니다.
모션 슬로우다운 팩터(Motion Slowdown Factor) 기능을 추가했습니다. 인터럽트 단위로 모든 모션 동작의 속도를 균일하게 조절하는 시간 스케일링 기능입니다. 개별 모션 프로파일 파라미터를 수정하지 않고도 모든 모션을 균일하게 감속할 수 있습니다. 슬로우다운 팩터는 시간 제수(time divider)로 작동합니다: 팩터=1은 정상 속도, 팩터=2는 절반 속도, 팩터=N은 1/N 속도입니다. SetMotionSlowdownParam 및 GetMotionSlowdownParam 함수를 추가했습니다.
CoreMotion Pub API(WMX3 SDK에서 사용 가능)에 "Rt" 접미사를 가진 여러 함수 포인터를 추가했습니다. 이 함수들은 블로킹을 발생시키지 않으며 사이클릭 프로세스 내에서 안전하게 호출할 수 있습니다: startHomeSingleAxisRt, startHomeMultiAxisRt, startPosRt, startLinearIntplPosRt, startCircularIntplPosRt, decStopSingleAxisRt, execQuickStopSingleAxisRt. 또한 블로킹 없이 API 락을 취득하는 getAPIAxisLockNoWait, getAPIVirtAxisLockNoWait, getAPIMiscLockNoWait 함수 포인터도 추가했습니다.
CoreMotion Pub API(WMX3 SDK에서 사용 가능)의 CE_AXIS_STATUS_PUB를 통해 제공되는 상태 정보를 확장했습니다.
CCLinkPlatform에서 UserDef=1인 경우, cclink_network.def에 정의된 대로 슬레이브 목록이 구성되도록 변경했습니다. 사용자가 정의한 슬레이브 ID 및 슬레이브 순서가 항상 CCLinkMasterInfo에 적용됩니다. 이 변경에 따라 HaltOnNetworkDiff 파라미터가 삭제되고 SetSlaveViewMode가 추가되었습니다.
CCLink 통계 정보에 packetLoss 및 packetDelayed를 추가했습니다.
데이터 로그 및 메모리 로그 함수의 타임스탬프를 확장했습니다. 사용 가능한 타임스탬프 세트에 "시스템 시간(에폭 시간)"을 추가했습니다. 데이터 로그는 사이클 카운터, 시간(엔진 시작 이후 경과 시간), 시스템 시간의 세 가지 타임스탬프를 모두 로그 파일에 출력합니다(하나만 선택하던 이전 동작에서 변경). 메모리 로그는 사이클 카운터만 반환하던 이전 동작에서 변경되어 세 가지 타임스탬프를 모두 반환합니다. LogChannelOptions 클래스에 cycleCounterOnly 옵션을 추가했습니다. 타임스탬프 선택이 불필요해짐에 따라 LogApiLogInput 및 LogApiLogOutput 클래스가 삭제되었습니다.
ApiBufferStatus 클래스에 cumulativeBlockCount 멤버를 추가했습니다. 이 상태는 API 버퍼가 마지막으로 삭제된 이후 버퍼에 추가된 블록의 총 수입니다.
ApiBufferStatus 클래스에 canRewind 멤버를 추가했습니다. 이를 통해 실제로 호출하기 전에 API 버퍼 채널에 대해 Rewind를 실행할 수 있는지 여부를 사용자가 확인할 수 있습니다.
Windows OS - RTX 버전과 동일한 API 인터페이스를 공유하는 Linux OS - Preempt RT 버전이 제품 라인업에 추가되었습니다. 이에 따라 다음 API 및 클래스 사양이 업데이트되었습니다: 모든 C++ API 함수의 반환 타입 long __stdcall → int __stdcall, SleepAtEngine 인수 타입 unsigned long → unsigned int, StartEngine 인수 타입 DWORD_PTR → long long, RestartEngine 인수 타입 DWORD_PTR → long long, DeviceStatistics::sumApiTime 타입 LARGE_INTEGER → long long, DeviceStatistics::sumRtTime 타입 LARGE_INTEGER → long long, DeviceStatistics::sumFuncProcTime 타입 LARGE_INTEGER → long long.
메모리 로그 버퍼 확장 기능을 추가했습니다. MemoryLogOptions에 bufferExpandFactor 필드를 추가하여 채널당 링 버퍼를 기본 크기 이상으로 확장할 수 있게 했습니다. 유효 버퍼 크기는 maxMemLogBufferSize에 bufferExpandFactor를 곱한 값입니다. 범위: 1에서 maxMemLogExpandFactor. 기본값은 1(기존 동작 유지). SetMemoryLogOption으로 설정하고 GetMemoryLogOption으로 읽습니다. Open 완료 + IDLE 상태의 채널에 대해 다른 팩터로 SetMemoryLogOption이 호출되면 모듈별 링 버퍼가 즉시 재할당되고 보존된 샘플은 삭제됩니다.
ClosedLoopFeedforwardParam 축 매개변수 및 대응하는 closedLoopFeedforward 로그/상태 필드를 추가했습니다. 피드포워드 데이터 소스(아날로그 데이터 또는 축 데이터)는 PID 컨트롤러와 독립적으로 서보 출력 명령에 추가 기여를 제공합니다. CoreMotionAxisLogInput에 새로운 closedLoopFeedforward 부울 값을 추가하여 피드포워드 출력 로깅을 활성화했습니다. 대응하는 double 값이 CoreMotionAxisLogOutput 및 CoreMotionAxisStatus에 공개되어 피드포워드 기여를 관찰할 수 있습니다.
CoreMotion 모듈에 최대 모터 속도 단위 분자(Max Motor Speed Unit Numerator) 및 최대 모터 속도 단위 분모(Max Motor Speed Unit Denominator) 매개변수를 추가했습니다. 이 매개변수들을 통해 최대 모터 속도(Max Motor Speed) 값을 전송 전에 서보 드라이버가 기대하는 단위로 변환할 수 있습니다. 드라이버로 전송되는 값은 "최대 모터 속도 × 분자 / 분모"로 계산됩니다. 기본값 1을 사용할 경우 변환이 적용되지 않아 이전 버전과 동일하게 동작합니다. SetMaxMotorSpeedUnit 및 GetMaxMotorSpeedUnit 단일 축 API를 추가하여 SetAxisParam을 거치지 않고 변환 비율을 직접 업데이트할 수 있게 했습니다.
피드백 및 피드포워드 축 데이터 소스에 오프셋/포화 적용 전에 적용되는 곱셈 스케일로서 gain을 추가했습니다(gain * ReadAxisData() + offset을 [min, max]에 클램프). 호출별 재정의는 SetFeedbackAxisGain / SetFeedforwardAxisGain으로 설정합니다. 편의 세터 SetFeedbackAxisData / SetFeedforwardAxisData는 이제 기본값 gain = 1.0을 받습니다. 활성화된 축 데이터 소스에 0 게인을 지정하면 유효성 검사에서 거부됩니다.
EtherCAT(EcPlatform)에 Monitor 모드, 가상 슬레이브, I/O 확장 지원을 추가하고 EcPlatform 로그 모델을 재구성했습니다.
Monitor 모드: SetMonitorMode로 마스터를 Monitor 모드로 전환하고, GetMasterMonitorInfo 및 ResetMonitorStatisticsInfo로 EcMonitorInfo의 모니터 통계 정보를 조회·리셋할 수 있습니다. 또한 SetSlaveViewMode의 마스터 ID 지정 오버로드를 추가했습니다.
가상 슬레이브: ENI 파일에서 정의한 가상 슬레이브를 새로운 EcVirtualSlaveInfo 구조체 및 대응하는 가상 슬레이브 PDO 읽기/쓰기 함수를 통해 조회·조작할 수 있습니다.
로그 모델: EcPlatform의 데이터 로그 및 메모리 로그는 이제 EcLogEntry로 기술됩니다. 이를 통해 PDO 데이터, 슬레이브별 정보(EcLogEntrySlaveInfo), 마스터별 정보(EcLogEntryMasterInfo)를 기록할 수 있습니다. 기존의 PDO 전용 로그 입력을 대체합니다.
6개의 새로운 에러 코드(8237~8242 / 0x202D~0x2032)를 추가했습니다: NotInMonitorMode, VirtualSlaveNotEnabled, OtherOperationIsRunning, IoExtNotAttached, IoExtFuncNotSupported, InvalidMode.