589 lines
24 KiB
C#
589 lines
24 KiB
C#
using Aurora;
|
|
using Aurora.Api.Devices;
|
|
using Aurora.Api;
|
|
using AuroraACS;
|
|
using AuroraLaser.Views;
|
|
using Hermes;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Runtime.CompilerServices;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using System.Windows;
|
|
using System.Windows.Documents;
|
|
using WeldingCommon;
|
|
using WeldingCommon.Settings;
|
|
using ACS.SPiiPlusNET;
|
|
using ILSOS_PrismaticGun.Process;
|
|
using System.Security.RightsManagement;
|
|
using static ILSOS_PrismaticGun.Recipes.MainRecipe;
|
|
using System.Threading;
|
|
using CoreUnit.Control.UserControl.Canvas;
|
|
using ILSOS_PrismaticGun.Settings;
|
|
using AuroraMotionBoard.Ajin;
|
|
using System.Diagnostics;
|
|
using VisionCommon;
|
|
using ILSOS_PrismaticGun.Tools;
|
|
using WeldingCommon.Utils;
|
|
|
|
using eTeachingPosition = ILSOS_PrismaticGun.Settings.eTeachingPosition;
|
|
using TeachingPositionSetting = ILSOS_PrismaticGun.Settings.TeachingPositionSetting;
|
|
namespace ILSOS_PrismaticGun.Device.ACS
|
|
{
|
|
// ACS 함수가 너무 많아서.. 실제 사용부에서 편하게 사용하려고...
|
|
public interface IPrismaticGunACS
|
|
{
|
|
bool IsActivated();
|
|
bool SetOneShot(int msecShotTime, double secPhzShotPulse1, double secPhzShotPulse2);
|
|
bool SetLineShot(double corePower, double ringPower, double startPosX, double endPosX, double startPosY, double endPosY, double velocity, double acc);
|
|
bool SetWeldingVel(double acc, double svel, double cvel);
|
|
bool SetWeldingPos(double startPosX, double startPosY, double endPosX, double endPosY, double camOffsetX, double camOffsetY);
|
|
bool SetWeldingArc(double point1, double point2, double point3, double point4);
|
|
|
|
bool SetWeldingType(eOutType type); // << 추후 추가 할 예정
|
|
bool SetWeldingPulse(double coreMaxPower, double coreMinPower, double ringMaxPower, double ringMinPower);
|
|
bool SetLaserOnOff(double onPosX, double onOffSet, double offPosX, double offOffSet, double camOffsetX, double camOffsetY);
|
|
bool SetRamppingOffParameter(double pos, double overlap, double endpower, double camOffsetX, double camOffsetY);
|
|
bool SetRamppingOnParameter(double overlap, double startpower);
|
|
bool SetLCILserOn(bool on);
|
|
bool SetWeldingAxes(int axisXnum, int axisYnum);
|
|
bool SetLaserIOUse(bool on);
|
|
bool AllAxisHomeStart();
|
|
bool AllAxisHomeStop();
|
|
bool CheckAllAxisHome();
|
|
bool OneShotStart();
|
|
bool OneShotStop();
|
|
bool CheckOneShotComp();
|
|
bool LineShotStart();
|
|
bool LineShotStop();
|
|
bool CheckLineShotComp();
|
|
bool WeldingStart();
|
|
bool WeldingStop();
|
|
bool CheckWeldingComp();
|
|
bool SetWeldingTeachingPosition1(double PosX, double PosY, double camOffsetX, double camOffsetY);
|
|
bool SetWeldingTeachingPosition2(double PosX, double PosY, double camOffsetX, double camOffsetY);
|
|
bool SetWeldingTeachingPosition3(double PosX, double PosY, double camOffsetX, double camOffsetY);
|
|
bool SetWeldingTeachingPosition4(double PosX, double PosY, double camOffsetX, double camOffsetY);
|
|
bool SetWeldingTeachingPosition5(double PosX, double PosY, double camOffsetX, double camOffsetY);
|
|
bool SetWeldingTeachingPosition6(double PosX, double PosY, double camOffsetX, double camOffsetY);
|
|
bool SetWeldingTeachingPosition7(double PosX, double PosY, double camOffsetX, double camOffsetY);
|
|
bool SetWeldingTeachingPosition8(double PosX, double PosY, double camOffsetX, double camOffsetY);
|
|
bool ResetAlarm();
|
|
bool IsLaserOn();
|
|
void AllAxisServoOff();
|
|
}
|
|
public partial class PrismaticGunACS : ACSDevice, IPrismaticGunACS
|
|
{
|
|
private ACSDeviceSetting _setting;
|
|
private LaserPowerCalParam _calibration;
|
|
|
|
private TeachingPositionSetting _teachingSetting;
|
|
private ACSMotor MotorX1, MotorX2, MotorY1, MotorY2, MotorZ;
|
|
|
|
#region ACS Parameters
|
|
//public MotionVariableCollection MotionVariables { get => _MotionVariables; }
|
|
//private MotionVariableCollection _MotionVariables = new MotionVariableCollection();
|
|
public MotionVariable _motorVariable;
|
|
|
|
public bool HasHeavyAlarm { get; private set; }
|
|
public bool HasLightAlarm { get; private set; }
|
|
public int[] HaveAlarmCodes { get => _HaveAlarmCodes; }
|
|
private int[] _HaveAlarmCodes = new int[11];
|
|
#endregion
|
|
|
|
public PrismaticGunACS(bool isSimulation, bool useTerminateUMD = false) : base(isSimulation, useTerminateUMD)
|
|
{
|
|
_motorVariable = new MotionVariable();
|
|
}
|
|
protected override int DoActivate(IDeviceConfig config)
|
|
{
|
|
if (base.DoActivate(config) != E1.OK)
|
|
return E2.ABORTED;
|
|
|
|
var env = Application.Current.AuroraEnv();
|
|
_setting = env.SettingEntry[SettingIds.ACS] as ACSDeviceSetting;
|
|
_calibration = env.SettingEntry[CommonSettingIds.LaserPowerCalParam] as LaserPowerCalParam;
|
|
_teachingSetting = env.SettingEntry[SettingIds.TeachingPos] as TeachingPositionSetting;
|
|
|
|
MotorX1 = env.DeviceManager[MotorIds.AxisX1] as ACSMotor;
|
|
MotorX2 = env.DeviceManager[MotorIds.AxisX2] as ACSMotor;
|
|
MotorY1 = env.DeviceManager[MotorIds.AxisY1] as ACSMotor;
|
|
MotorY2 = env.DeviceManager[MotorIds.AxisY2] as ACSMotor;
|
|
MotorZ = env.DeviceManager[MotorIds.AxisZ] as ACSMotor;
|
|
|
|
|
|
SetMonitoringService(UpdateACSParam, 50);
|
|
StartMonitoringService();
|
|
|
|
return E1.OK;
|
|
}
|
|
|
|
private void UpdateACSParam()
|
|
{
|
|
// Stage A Motor Parameter
|
|
//_motorVariable.X1AxisPosition = MotorX1.GetActualPos();
|
|
//_motorVariable.X1InPosition = MotorX1.IsInpos();
|
|
//_motorVariable.X1AxisVelocity = MotorX1.GetFeedbackVelocity();
|
|
//_motorVariable.X1AxisAcceleration = MotorX1.GetAcceleration();
|
|
|
|
_motorVariable.X2AxisPosition = MotorX2.GetActualPos();
|
|
_motorVariable.X2InPosition = MotorX2.IsInpos();
|
|
_motorVariable.X2AxisVelocity = MotorX2.GetFeedbackVelocity();
|
|
_motorVariable.X2AxisAcceleration = MotorX2.GetAcceleration();
|
|
|
|
_motorVariable.Y1AxisPosition = MotorY1.GetActualPos();
|
|
_motorVariable.Y1InPosition = MotorY1.IsInpos();
|
|
_motorVariable.Y1AxisVelocity = MotorY1.GetFeedbackVelocity();
|
|
_motorVariable.Y1AxisAcceleration = MotorY1.GetAcceleration();
|
|
|
|
_motorVariable.Y2AxisPosition = MotorY2.GetActualPos();
|
|
_motorVariable.Y2InPosition = MotorY2.IsInpos();
|
|
_motorVariable.Y2AxisVelocity = MotorY2.GetFeedbackVelocity();
|
|
_motorVariable.Y2AxisAcceleration = MotorY2.GetAcceleration();
|
|
|
|
_motorVariable.ZAxisPosition = MotorZ.GetActualPos();
|
|
_motorVariable.ZInPosition = MotorZ.IsInpos();
|
|
_motorVariable.ZAxisVelocity = MotorZ.GetFeedbackVelocity();
|
|
_motorVariable.ZAxisAcceleration = MotorZ.GetAcceleration();
|
|
|
|
_motorVariable.IsHome = MotorX2.GetServoStatus() == 1 && MotorY1.GetServoStatus() == 1
|
|
&& MotorY2.GetServoStatus() == 1 && MotorZ.GetServoStatus() == 1;
|
|
|
|
// Stage A Position Parameter
|
|
_motorVariable.IsLoadPosition = CheckTeachingPosition(eTeachingPosition.Load);
|
|
_motorVariable.IsUnloadPosition = CheckTeachingPosition(eTeachingPosition.UnLoad);
|
|
_motorVariable.IsSafetyPosition = CheckTeachingPosition(eTeachingPosition.SafetyPosition);
|
|
_motorVariable.IsWeldingStartPosition = CheckTeachingPosition(eTeachingPosition.StageWeldingStartPos);
|
|
|
|
//if (ChangeChecker.IsChangedBool("ALoadEnable", MotionVariables[eStage.A].IsLoadEnable))
|
|
// Debug.WriteLine($"A Load Enable [{!MotionVariables[eStage.A].IsLoadEnable} -> {MotionVariables[eStage.A].IsLoadEnable}] >> XPos[{MotionVariables[eStage.A].XAxisPosition}] YPos[{MotionVariables[eStage.A].YAxisPosition}] Home[{MotionVariables[eStage.A].IsHome}] ACS Active[{IsActivated}]");
|
|
|
|
//if (ChangeChecker.IsChangedBool("AUnloadEnable", MotionVariables[eStage.A].IsUnloadEnable))
|
|
// Debug.WriteLine($"A Unload Enable [{!MotionVariables[eStage.A].IsUnloadEnable} -> {MotionVariables[eStage.A].IsUnloadEnable}] >> XPos[{MotionVariables[eStage.A].XAxisPosition}] YPos[{MotionVariables[eStage.A].YAxisPosition}] Home[{MotionVariables[eStage.A].IsHome}] ACS Active[{IsActivated}]");
|
|
|
|
HasHeavyAlarm = ReadVariableInt(HeavyAlarm) == 1;
|
|
HasLightAlarm = ReadVariableInt(LightAlarm) == 1;
|
|
ReadVariableIntArrRef(AlarmCodes, ref _HaveAlarmCodes, ProgramBuffer.ACSC_NONE, 0, 10);
|
|
}
|
|
|
|
protected override int DoDeactivate()
|
|
{
|
|
StopMonitoringService();
|
|
return base.DoDeactivate();
|
|
}
|
|
bool IPrismaticGunACS.AllAxisHomeStart()
|
|
{
|
|
var Buffer = eBuffer.All_Axis_Home;
|
|
if (RunBuffer((ProgramBuffer)Buffer)) {
|
|
Log.D("SetAllAxisHome >> Complete");
|
|
return true;
|
|
}
|
|
|
|
Log.D("SetAllAxisHome >> Fail");
|
|
return false;
|
|
}
|
|
|
|
bool IPrismaticGunACS.AllAxisHomeStop()
|
|
{
|
|
var Buffer = eBuffer.All_Axis_Home;
|
|
StopBuffer((ProgramBuffer)Buffer);
|
|
Log.D("StopAllAxisHome >> Complete");
|
|
return true;
|
|
}
|
|
|
|
bool IPrismaticGunACS.CheckAllAxisHome()
|
|
{
|
|
return ReadVariableInt(iAllAxisHomeComplete) > 0;
|
|
}
|
|
|
|
bool IPrismaticGunACS.OneShotStart()
|
|
{
|
|
var buffer = eBuffer.Welding_OneShot;
|
|
|
|
if (RunBuffer((ProgramBuffer)buffer)) {
|
|
Log.D($"{Enum.GetName(typeof(eBuffer), buffer)} >> Complete");
|
|
return true;
|
|
}
|
|
|
|
Log.D("SetALineOneShotStart >> Fail");
|
|
return false;
|
|
}
|
|
|
|
public bool OneShotStop()
|
|
{
|
|
var buffer = eBuffer.Welding_OneShot;
|
|
|
|
IPrismaticGunACS motion = this;
|
|
motion.SetLCILserOn(false);
|
|
StopBuffer((ProgramBuffer)buffer);
|
|
|
|
Log.D("StopBuffer");
|
|
return true;
|
|
}
|
|
|
|
bool IPrismaticGunACS.CheckOneShotComp()
|
|
{
|
|
return ReadVariableInt(iOneShotComplete) > 0;
|
|
}
|
|
|
|
bool IPrismaticGunACS.LineShotStart()
|
|
{
|
|
var buffer = eBuffer.Welding_Line;
|
|
|
|
if (RunBuffer((ProgramBuffer)buffer)) {
|
|
Log.D($"SetLineShotStart >> Complete");
|
|
return true;
|
|
}
|
|
|
|
Log.D($"SetLineShotStart >> Fail");
|
|
return false;
|
|
}
|
|
|
|
bool IPrismaticGunACS.LineShotStop() {
|
|
var buffer = eBuffer.Welding_Line;
|
|
|
|
IPrismaticGunACS motion = this;
|
|
motion.SetLCILserOn(false);
|
|
StopBuffer((ProgramBuffer)buffer);
|
|
|
|
Log.D("StopBuffer");
|
|
return true;
|
|
}
|
|
|
|
bool IPrismaticGunACS.CheckLineShotComp()
|
|
{
|
|
return ReadVariableInt(iLineWeldingComplete) > 0;
|
|
}
|
|
|
|
bool IPrismaticGunACS.WeldingStart()
|
|
{
|
|
if (IsSimul)
|
|
return true;
|
|
|
|
var buffer = eBuffer.Welding_AllRound;
|
|
|
|
if (RunBuffer((ProgramBuffer)buffer)) {
|
|
Log.I($"Set Welding All-Round >> Complete");
|
|
return true;
|
|
}
|
|
|
|
Log.D($"Set Welding All-Round >> Fail");
|
|
return false;
|
|
}
|
|
bool IPrismaticGunACS.WeldingStop()
|
|
{
|
|
var buffer = eBuffer.Welding_AllRound;
|
|
|
|
IPrismaticGunACS motion = this;
|
|
motion.SetLCILserOn(false);
|
|
StopBuffer((ProgramBuffer)buffer);
|
|
|
|
Log.D("StopBuffer");
|
|
return true;
|
|
}
|
|
bool IPrismaticGunACS.CheckWeldingComp()
|
|
{
|
|
if (IsSimul)
|
|
return true;
|
|
|
|
return ReadVariableInt(iWeldingComplete) > 0;
|
|
}
|
|
|
|
bool IPrismaticGunACS.SetOneShot(int msecShotTime, double secPhzShotPulse1, double secPhzShotPulse2)
|
|
{
|
|
#warning calibration 제어 값이 Percent to watt로 써야하는건지 확인필요
|
|
//var calPower = _calibration.CalibratePercentToWatt(secPhzShotPulse);
|
|
|
|
if (WriteRealVariable(rOneShotTime, msecShotTime) &
|
|
WriteRealVariable(rOneShotCoreVoltage, secPhzShotPulse1) &
|
|
WriteRealVariable(rOneShotRingVoltage, secPhzShotPulse2)) {
|
|
Log.D($"SetOneShot >> Complete");
|
|
return true;
|
|
}
|
|
Log.D($"SetOneShot >> Fail");
|
|
return false;
|
|
}
|
|
|
|
bool IPrismaticGunACS.SetLineShot(double corePower, double ringPower, double startPosX, double endPosX, double startPosY, double endPosY, double velocity, double acc)
|
|
{
|
|
#warning calibration 제어 값이 Percent to watt로 써야하는건지 확인필요
|
|
//var calPower = _calibration.CalibratePercentToWatt(pulse);
|
|
|
|
if (WriteRealVariable(rLineWeldingLaserOnX, startPosX) &
|
|
WriteRealVariable(rLineWeldingLaserOnY, startPosY) &
|
|
WriteRealVariable(rLineWeldingLaserOffX, endPosX)&
|
|
WriteRealVariable(rLineWeldingLaserOffY, endPosY)&
|
|
WriteRealVariable(rLineWeldingVel, velocity) &
|
|
WriteRealVariable(rLineWeldingAcc, acc) &
|
|
WriteRealVariable(rLineWeldingCoreVoltage, corePower) &
|
|
WriteRealVariable(rLineWeldingRingVoltage, ringPower)) {
|
|
Log.D($"SetLineShot >> Setting Complete");
|
|
return true;
|
|
}
|
|
Log.D($"SetLineShot >> Fail");
|
|
return false;
|
|
}
|
|
|
|
bool IPrismaticGunACS.SetWeldingVel(double acc, double svel, double cvel)
|
|
{
|
|
if (WriteRealVariable(rWeldingAcc, acc) &
|
|
WriteRealVariable(rWeldingSVel, svel) &
|
|
WriteRealVariable(rWeldingCVel, cvel)) {
|
|
Log.D($"SetWeldingVel >> Complete");
|
|
return true;
|
|
}
|
|
Log.D($"SetWeldingVel >> Fail");
|
|
return false;
|
|
}
|
|
|
|
bool IPrismaticGunACS.SetWeldingPos(double startPosX, double startPosY, double endPosX, double endPosY, double camOffsetX, double camOffsetY)
|
|
{
|
|
if (WriteRealVariable(rWeldingStartPosX, startPosX + camOffsetX) &
|
|
WriteRealVariable(rWeldingStartPosY, startPosY + camOffsetY) &
|
|
WriteRealVariable(rWeldingEndPosX, endPosX + camOffsetX) &
|
|
WriteRealVariable(rWeldingEndPosY, endPosY + camOffsetY)) {
|
|
Log.D($"SetWeldingPos >> Complete");
|
|
return true;
|
|
}
|
|
Log.D($"SetWeldingPos >> Fail");
|
|
return false;
|
|
}
|
|
|
|
bool IPrismaticGunACS.SetWeldingArc(double point1, double point2, double point3, double point4)
|
|
{
|
|
if (WriteRealVariable(rWeldingEdgePointRad1, point1) &
|
|
WriteRealVariable(rWeldingEdgePointRad2, point2) &
|
|
WriteRealVariable(rWeldingEdgePointRad3, point3) &
|
|
WriteRealVariable(rWeldingEdgePointRad4, point4)) {
|
|
Log.D($"SetWeldingArc >> Complete");
|
|
return true;
|
|
}
|
|
Log.D($"SetWeldingArc >> Fail");
|
|
return false;
|
|
}
|
|
// 현재 Voltage 고정적으로 사용
|
|
bool IPrismaticGunACS.SetWeldingType(eOutType type)
|
|
{
|
|
if (WriteVariableInt(iALaserShotMode, (int)type)) {
|
|
Log.D($"SetWeldingPulse >> Complete");
|
|
return true;
|
|
}
|
|
Log.D($"SetWeldingPulse >> Fail");
|
|
return false;
|
|
}
|
|
bool IPrismaticGunACS.SetWeldingPulse(double coreMaxPower, double coreMinPower, double ringMaxPower, double ringMinPower)
|
|
{
|
|
if (WriteRealVariable(rWeldingCorePowerMax, coreMaxPower) &
|
|
WriteRealVariable(rWeldingCorePowerMin, coreMinPower) &
|
|
WriteRealVariable(rWeldingRingPowerMax, ringMaxPower) &
|
|
WriteRealVariable(rWeldingRingPowerMin, ringMinPower)) {
|
|
Log.D($"SetWeldingPulse >> Complete");
|
|
return true;
|
|
}
|
|
Log.D($"SetWeldingPulse >> Fail");
|
|
return false;
|
|
}
|
|
bool IPrismaticGunACS.SetLaserOnOff(double onPosX, double onOffSet, double offPosX, double offOffSet, double camOffsetX, double camOffsetY)
|
|
{
|
|
if (WriteRealVariable(rLaserONPosX, onPosX + camOffsetX) &
|
|
WriteRealVariable(rLaserONOffset, onOffSet) &
|
|
WriteRealVariable(rLaserOFFPosX, offPosX + camOffsetX) &
|
|
WriteRealVariable(rLaserOFFOffset, offOffSet)) {
|
|
Log.D($"SetLaserOnOff >> Complete");
|
|
return true;
|
|
}
|
|
Log.D($"SetLaserOnOff >> Fail");
|
|
return false;
|
|
}
|
|
bool IPrismaticGunACS.SetLCILserOn(bool on)
|
|
{
|
|
if (WriteRealVariable(iAStageLCType, on ? 1 : 0))
|
|
{
|
|
Log.D($"LCILaserOn >> Complete [LaserUSE {on}]");
|
|
return true;
|
|
}
|
|
Log.D($"LCILaserOn >> Fail");
|
|
return false;
|
|
}
|
|
bool IPrismaticGunACS.SetWeldingAxes(int axisXnum, int axisYnum)
|
|
{
|
|
if (WriteVariableInt(iXAxisNumber, axisXnum) & WriteVariableInt(iYAxisNumber, axisYnum)) {
|
|
Log.D("Set Welding Axes(X, Y) >> Complete");
|
|
return true;
|
|
}
|
|
Log.D($"Set Welding Axes(X, Y) >> Fail");
|
|
return false;
|
|
}
|
|
bool IPrismaticGunACS.SetLaserIOUse(bool on)
|
|
{
|
|
if (WriteRealVariable(iLaserUse, on ? 1 : 0))
|
|
{
|
|
Log.D($"Set Laser Use Set(Interface IO Use) {on} >> Complete");
|
|
return true;
|
|
}
|
|
Log.D($"Set Laser Use Set(Interface IO Use) >> Fail");
|
|
return false;
|
|
}
|
|
|
|
bool IPrismaticGunACS.SetRamppingOffParameter(double pos, double overlap, double endpower, double camOffsetX, double camOffsetY)
|
|
{
|
|
if (WriteRealVariable(rRampingOFFStartPosX, pos + camOffsetX) &
|
|
WriteRealVariable(rRampingOFFOverlapDist, overlap) &
|
|
WriteRealVariable(rRampingOFFEndPower, endpower)) {
|
|
Log.D($"SetRamppingStartPos >> Complete");
|
|
return true;
|
|
}
|
|
Log.D($"SetRamppingStartPos >> Fail");
|
|
return false;
|
|
}
|
|
bool IPrismaticGunACS.SetRamppingOnParameter(double overlap, double startpower)
|
|
{
|
|
if (WriteRealVariable(rRampingONOverlapDist, overlap) &
|
|
WriteRealVariable(rRampingONStartPower, startpower)) {
|
|
Log.D($"SetRamppingStartPos >> Complete");
|
|
return true;
|
|
}
|
|
Log.D($"SetRamppingStartPos >> Fail");
|
|
return false;
|
|
}
|
|
bool IPrismaticGunACS.SetWeldingTeachingPosition1(double PosX, double PosY, double camOffsetX, double camOffsetY)
|
|
{
|
|
if (WriteRealVariable(rWeldingPosition1PosX, PosX + camOffsetX) &
|
|
WriteRealVariable(rWeldingPosition1PosY, PosY + camOffsetY)) {
|
|
Log.D($"Set Welding Pos1 ({PosX} / {PosY}) >> Complete");
|
|
return true;
|
|
}
|
|
Log.D($"Set Welding Pos1 >> Fail");
|
|
return false;
|
|
}
|
|
bool IPrismaticGunACS.SetWeldingTeachingPosition2(double PosX, double PosY, double camOffsetX, double camOffsetY)
|
|
{
|
|
if (WriteRealVariable(rWeldingPosition2PosX, PosX + camOffsetX) &
|
|
WriteRealVariable(rWeldingPosition2PosY, PosY + camOffsetY)) {
|
|
Log.D($"Set Welding Pos2 ({PosX} / {PosY}) >> Complete");
|
|
return true;
|
|
}
|
|
Log.D($"Set Welding Pos2 >> Fail");
|
|
return false;
|
|
}
|
|
bool IPrismaticGunACS.SetWeldingTeachingPosition3(double PosX, double PosY, double camOffsetX, double camOffsetY)
|
|
{
|
|
if (WriteRealVariable(rWeldingPosition3PosX, PosX + camOffsetX) &
|
|
WriteRealVariable(rWeldingPosition3PosY, PosY + camOffsetY)) {
|
|
Log.D($"Set Welding Pos3 ({PosX} / {PosY}) >> Complete");
|
|
return true;
|
|
}
|
|
Log.D($"Set Welding Pos3 >> Fail");
|
|
return false;
|
|
}
|
|
bool IPrismaticGunACS.SetWeldingTeachingPosition4(double PosX, double PosY, double camOffsetX, double camOffsetY)
|
|
{
|
|
if (WriteRealVariable(rWeldingPosition4PosX, PosX + camOffsetX) &
|
|
WriteRealVariable(rWeldingPosition4PosY, PosY + camOffsetY)) {
|
|
Log.D($"Set Welding Pos4 ({PosX} / {PosY}) >> Complete");
|
|
return true;
|
|
}
|
|
Log.D($"Set Welding Pos4 >> Fail");
|
|
return false;
|
|
}
|
|
bool IPrismaticGunACS.SetWeldingTeachingPosition5(double PosX, double PosY, double camOffsetX, double camOffsetY)
|
|
{
|
|
if (WriteRealVariable(rWeldingPosition5PosX, PosX + camOffsetX) &
|
|
WriteRealVariable(rWeldingPosition5PosY, PosY + camOffsetY)) {
|
|
Log.D($"Set Welding Pos5 ({PosX} / {PosY}) >> Complete");
|
|
return true;
|
|
}
|
|
Log.D($"Set Welding Pos5 >> Fail");
|
|
return false;
|
|
}
|
|
bool IPrismaticGunACS.SetWeldingTeachingPosition6(double PosX, double PosY, double camOffsetX, double camOffsetY)
|
|
{
|
|
if (WriteRealVariable(rWeldingPosition6PosX, PosX + camOffsetX) &
|
|
WriteRealVariable(rWeldingPosition6PosY, PosY + camOffsetY)) {
|
|
Log.D($"Set Welding Pos6 ({PosX} / {PosY}) >> Complete");
|
|
return true;
|
|
}
|
|
Log.D($"Set Welding Pos6 >> Fail");
|
|
return false;
|
|
}
|
|
bool IPrismaticGunACS.SetWeldingTeachingPosition7(double PosX, double PosY, double camOffsetX, double camOffsetY)
|
|
{
|
|
if (WriteRealVariable(rWeldingPosition7PosX, PosX + camOffsetX) &
|
|
WriteRealVariable(rWeldingPosition7PosY, PosY + camOffsetY)) {
|
|
Log.D($"Set Welding Pos7 ({PosX} / {PosY}) >> Complete");
|
|
return true;
|
|
}
|
|
Log.D($"Set Welding Pos7 >> Fail");
|
|
return false;
|
|
}
|
|
bool IPrismaticGunACS.SetWeldingTeachingPosition8(double PosX, double PosY, double camOffsetX, double camOffsetY)
|
|
{
|
|
if (WriteRealVariable(rWeldingPosition8PosX, PosX + camOffsetX) &
|
|
WriteRealVariable(rWeldingPosition8PosY, PosY + camOffsetY)) {
|
|
Log.D($"Set Welding Pos8 ({PosX} / {PosY}) >> Complete");
|
|
return true;
|
|
}
|
|
Log.D($"Set Welding Pos8 >> Fail");
|
|
return false;
|
|
}
|
|
|
|
bool IPrismaticGunACS.IsActivated() => IsActivated;
|
|
|
|
bool IPrismaticGunACS.ResetAlarm()
|
|
{
|
|
TerminalCommand("FCLEAR ALL");
|
|
return WriteVariableInt(AlarmReset, 1);
|
|
}
|
|
|
|
bool IPrismaticGunACS.IsLaserOn()
|
|
{
|
|
if (!IsActivated || !IsConnected)
|
|
return false;
|
|
|
|
return ReadVariableInt(IsLaserOn) > 0;
|
|
}
|
|
|
|
void IPrismaticGunACS.AllAxisServoOff()
|
|
{
|
|
if (!IsActivated || !IsConnected)
|
|
return;
|
|
SetMotorDisableAll();
|
|
}
|
|
|
|
private bool CheckTeachingPosition(eTeachingPosition teachingPos)
|
|
{
|
|
if (IsSimul)
|
|
return true;
|
|
|
|
var targetPos = _teachingSetting.Get(teachingPos);
|
|
|
|
// 수정 필요 Jeongin
|
|
if ((_motorVariable.X2AxisPosition.CheckInside(targetPos.AxisX, 0.5) & _motorVariable.X2InPosition)
|
|
& (_motorVariable.Y1AxisPosition.CheckInside(targetPos.AxisY1, 0.5) & _motorVariable.Y1InPosition)
|
|
& (_motorVariable.Y2AxisPosition.CheckInside(targetPos.AxisY2, 0.5) & _motorVariable.Y2InPosition)
|
|
& (_motorVariable.ZAxisPosition.CheckInside(targetPos.AxisZ, 0.5) & _motorVariable.ZInPosition))
|
|
return true;
|
|
|
|
return false;
|
|
}
|
|
|
|
internal bool IsReachedTeachingPosition(eTeachingPosition targetPos)
|
|
{
|
|
switch (targetPos) {
|
|
case eTeachingPosition.Load:
|
|
return _motorVariable.IsLoadPosition;
|
|
case eTeachingPosition.UnLoad:
|
|
return _motorVariable.IsUnloadPosition;
|
|
case eTeachingPosition.SafetyPosition:
|
|
return _motorVariable.IsSafetyPosition;
|
|
case eTeachingPosition.StageWeldingStartPos:
|
|
return _motorVariable.IsWeldingStartPosition;
|
|
default:
|
|
return false;
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|