fix: AjinIO.IsConnected 반전 로직 정정
AxlGetBoardStatus가 SUCCESS일 때 미연결로 반환하던 반전 버그를 정정(실제 Ajin 연결 시 OnMonitoring 폴링이 스킵되던 원인). 연동해 OnMonitoring 미연결 가드를 앞으로 정리.
This commit is contained in:
parent
00cdd8ac9b
commit
7fc11f2602
@ -371,21 +371,11 @@ namespace AuroraIO.AJINEXTEK
|
|||||||
|
|
||||||
public override bool IsConnected()
|
public override bool IsConnected()
|
||||||
{
|
{
|
||||||
|
|
||||||
int err = (int)CAXL.AxlGetBoardStatus(0);
|
int err = (int)CAXL.AxlGetBoardStatus(0);
|
||||||
if (err != (int)AXT_FUNC_RESULT.AXT_RT_SUCCESS)
|
return err == (int)AXT_FUNC_RESULT.AXT_RT_SUCCESS;
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
public override int GetDoArray(ref bool[] array)
|
public override int GetDoArray(ref bool[] array)
|
||||||
|
|||||||
@ -201,24 +201,20 @@ namespace WeldingCommon.Views
|
|||||||
{
|
{
|
||||||
// Guide Beam: DI 결선 없음 → 가이드빔 제어 DO 17 명령 비트를 그대로 표시
|
// Guide Beam: DI 결선 없음 → 가이드빔 제어 DO 17 명령 비트를 그대로 표시
|
||||||
// (현장 가이드빔 제어선은 DO 17). IO 미연결 시 ReadDO 예외 → 아래 catch 에서 처리(앱 종료 방지)
|
// (현장 가이드빔 제어선은 DO 17). IO 미연결 시 ReadDO 예외 → 아래 catch 에서 처리(앱 종료 방지)
|
||||||
IsGuidBeam = _IODevice.ReadDO(17);
|
|
||||||
|
|
||||||
// 시뮬 아님 + IO보드 없음 → _iOUnit == null → ReadDI에서 NRE로 꺼짐. - 현장PC 아닌 경우 개발PC에서 주석 해제 (시뮬안하고 레시피 들어갔을 때 프로그램 종료 방지)
|
// 시뮬 아님 + IO보드 없음 → _iOUnit == null → ReadDI에서 NRE로 꺼짐. - 현장PC 아닌 경우 개발PC에서 주석 해제 (시뮬안하고 레시피 들어갔을 때 프로그램 종료 방지)
|
||||||
// IsConnected()가 _iOUnit null/미연결을 체크하므로, 미연결이면 폴링 스킵(꺼짐 방지).
|
// IsConnected()가 _iOUnit null/미연결을 체크하므로, 미연결이면 폴링 스킵(꺼짐 방지).
|
||||||
//if (_IODevice == null || !_IODevice.IsConnected())
|
if (_IODevice == null || !_IODevice.IsConnected())
|
||||||
//{
|
|
||||||
// IsLaserReady = false;
|
|
||||||
//}
|
|
||||||
// 변경 후 (260618: IO 결선 변경 12&24 → 11&15)
|
|
||||||
if (_IODevice.ReadDI(11) && _IODevice.ReadDI(15))
|
|
||||||
{
|
|
||||||
IsLaserReady = true;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
{
|
||||||
|
IsGuidBeam = false;
|
||||||
IsLaserReady = false;
|
IsLaserReady = false;
|
||||||
|
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
IsGuidBeam = _IODevice.ReadDO(17);
|
||||||
|
IsLaserReady = _IODevice.ReadDI(11) && _IODevice.ReadDI(15); // 변경 후 (260618: IO 결선 변경 12&24 → 11&15)
|
||||||
|
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -16,3 +16,23 @@
|
|||||||
- 서브에이전트로 MSBuild 빌드(Debug|x64) — **오류 0개**, 경고 655개(전부 기존·무관)
|
- 서브에이전트로 MSBuild 빌드(Debug|x64) — **오류 0개**, 경고 655개(전부 기존·무관)
|
||||||
- 빌드 로그에 삭제 속성/변경 DisplayName 관련 오류·잔존 참조 없음
|
- 빌드 로그에 삭제 속성/변경 DisplayName 관련 오류·잔존 참조 없음
|
||||||
- 빌드 산출물: **WeldingCommon.dll**, **ILSOS_PrismaticRD_PTOP**
|
- 빌드 산출물: **WeldingCommon.dll**, **ILSOS_PrismaticRD_PTOP**
|
||||||
|
|
||||||
|
## 11:xx — AjinIO.IsConnected() 반전 로직 정정 + OnMonitoring 가드 정리
|
||||||
|
|
||||||
|
### 문제 (분석)
|
||||||
|
- 증상: `OnMonitoring()`의 `_IODevice.IsConnected()` 가드가 **시뮬에선 정상, 실제 Ajin 연결 시 동작 안 함**
|
||||||
|
- 원인: `AuroraDevices/AuroraIO/Vendor/AJINEXTEK/AjinIO.cs`의 `IsConnected()`가 **반대로 반환**
|
||||||
|
- `AxlGetBoardStatus(0)`이 `AXT_RT_SUCCESS`(정상)면 `false`, 에러면 `true` 반환 (파일 내 다른 호출부 관례와 정반대)
|
||||||
|
- 시뮬: 보드 없음 → 에러 → 우연히 `true` → 폴링 동작("정상"으로 보임)
|
||||||
|
- 실연결: 정상(SUCCESS) → `false` → 207줄 가드가 `return`으로 폴링 통째 스킵 → `IsGuidBeam`/`IsLaserReady` 미갱신
|
||||||
|
|
||||||
|
### 변경 내용 (2파일, 사용자 직접 수정)
|
||||||
|
- `AuroraDevices/AuroraIO/Vendor/AJINEXTEK/AjinIO.cs`
|
||||||
|
- `IsConnected()` → `return err == (int)AXT_FUNC_RESULT.AXT_RT_SUCCESS;` 로 정정 (SUCCESS=연결)
|
||||||
|
- `WeldingComponents/WeldingCommon/Views/Recipes/UCScannerObjectTeachingControlBoxViewModel.cs`
|
||||||
|
- `OnMonitoring()` 정리: 미연결 시 `IsGuidBeam/IsLaserReady=false` 후 `return` 가드를 앞으로 이동
|
||||||
|
- 연결 시에만 `ReadDO(17)`·`ReadDI(11)&&ReadDI(15)` 수행 (LaserReady 한 줄로 정리)
|
||||||
|
|
||||||
|
### 비고
|
||||||
|
- `AjinIO.cs`는 공용(AuroraIO.dll) — Ajin 보드 쓰는 타 머신에도 영향(반전 정정이 올바른 방향)
|
||||||
|
- 사용자 요청으로 **빌드 검증 생략**
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user