발진(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>
42 lines
1.4 KiB
C#
42 lines
1.4 KiB
C#
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;
|
||
}
|
||
}
|