to3796zw 0e73086b14 feat: 레이저 Head Theta 인터락 추가
발진(ExecuteWelding) 직전 PLC Head_Theta_Position(D70510)을 읽어
헤드 각도가 수평/수직 ±허용오차를 둘 다 벗어나면 알람 후 발진 차단.

- 세팅 메뉴 UI: 수평/수직/허용오차/PLC스케일 + 사용 체크박스
  (LaserInterlockSetting, 기본 미사용)
- fail-closed: PLC 미연결/미활성·스케일0 시 차단, 알람 호출 try/catch
- eWordInput.HEAD_THETA_POSITION(=D70510), 알람코드 210620 추가
- 런타임 설정(CSV 주소맵 D70510, AlarmDescriptions.xlsm 210620 행)은 별도 필요

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-19 15:04:05 +09:00

42 lines
1.4 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using Aurora.Api;
using PropertyTools.DataAnnotations;
namespace ILSOS_PrismaticRD_PTOP.Settings
{
// Laser 발진 인터락 세팅 (세팅 메뉴에 PropertyGrid로 자동 노출)
public class LaserInterlockSetting : ISettingItem
{
// 체크 시 인터락 동작, 해제 시 미동작 (기본 false: 설정·검증 후 사용)
[Browsable(true)]
[ReadOnly(false)]
[Category("Head Theta Interlock")]
[DisplayName("인터락 사용")]
public bool HeadThetaInterlockEnabled { get; set; } = false;
[Browsable(true)]
[ReadOnly(false)]
[Category("Head Theta Interlock")]
[DisplayName("수평 각도(deg)")]
public double HeadThetaHorizontal { get; set; } = 0;
[Browsable(true)]
[ReadOnly(false)]
[Category("Head Theta Interlock")]
[DisplayName("수직 각도(deg)")]
public double HeadThetaVertical { get; set; } = 90;
[Browsable(true)]
[ReadOnly(false)]
[Category("Head Theta Interlock")]
[DisplayName("허용 오차(±deg)")]
public double HeadThetaTolerance { get; set; } = 2.5;
// PLC Head_Theta_Position 스케일. deg×10 가정(미확정) → 실값 확인 후 조정.
[Browsable(true)]
[ReadOnly(false)]
[Category("Head Theta Interlock")]
[DisplayName("PLC 스케일(deg×?)")]
public double HeadThetaPlcScale { get; set; } = 10;
}
}