Kyungshin-Welder/Machines/ILSOS_KS/Device/PLC/PLCController.Logic.cs
2026-01-26 14:51:28 +09:00

158 lines
6.5 KiB
C#

using AuroraPLC;
using Hermes;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WeldingCommon.Devices;
namespace ILSOS_KS.Device
{
partial class PLCControllerKS
{
bool isOn = false;
void Callback(Object state)
{
//Timer Start 찾음.주석처리.
if (!IsSimul && IsActivated)
{
if (isOn)
{
WriteBit((int)eBitOutput.PC_LIVE_STATUS, true);
}
else
{
WriteBit((int)eBitOutput.PC_LIVE_STATUS, false);
}
}
isOn = !isOn;
}
public override void MappingPLCAddr()
{
PLC_AUTO_REQAddr = (int)eBitInput.PLC_AUTO_REQ;
PLC_MANUAL_REQAddr = (int)eBitInput.PLC_MANUAL_REQ;
PLC_RECIPE_CHANGE_REQAddr = (int)eBitInput.PLC_RECIPE_CHANGE_REQ;
PLC_RECIPE_NOAddr = (int)eWordInput.PLC_RECIPE_NO;
PLCLiveStatusAddr = (int)eBitInput.PLC_LIVE_STATUS;
PLCEMOStatusAddr = (int)eBitInput.PLC_EMO_STATUS;
PC_LIVE_STATUSAddr = (int)eBitOutput.PC_LIVE_STATUS;
PC_AUTO_STATUSAddr = (int)eBitOutput.PC_AUTO_STATUS; //PC 자동운전 상태
PC_AUTO_COMPLETEAddr = (int)eBitOutput.PC_AUTO_COMPLETE; //PC 자동운전 변경 완료
PC_MANUAL_COMPLETEAddr = (int)eBitOutput.PC_MANUAL_COMPLETE; //PC 수동운전 변경 완료
PC_LIGHT_ALARM_STATUSAddr = (int)eBitOutput.PC_LIGHT_ALARM_STATUS; //PC 경알람 상태
PC_HEAVY_ALARM_STATUSAddr = (int)eBitOutput.PC_HEAVY_ALARM_STATUS; //PC 중알람 상태
PC_RECIPE_CHANGE_COMPLETEAddr = (int)eBitOutput.PC_RECIPE_CHANGE_COMPLETE; //PC 레시피 변경 완료
}
public double ReadDWordByDivision(eWordInput input)
{
var result = ReadDWord((int)input);
if (result.err != E1.OK) {
// 로그 에러 넣기
//Log.E("Error While Reading Double Word Division {0}", result.err.ToString());
}
int divisionIndex = ConvertTo2WordDivisionIndex(input);
return (double)(result.data / divisionIndex);
}
public int ConvertTo2WordDivisionIndex(eWordInput input)
{
var id = input.ToString();
if (id.Contains("RAMPING_START_POWER") || id.Contains("RAMPING_END_POWER") || id.Contains("NUM") || id.Contains("TIME"))
return 1;
else if (id.Contains("SPEED") || id.Contains("POWER_CORE") || id.Contains("POWER_RING"))
return 10;
//else if (id.Contains("POWER_CORE") || id.Contains("POWER_RING"))
// return 100;
else// if (id.Contains("DIST"))
return 1000;
//if (id == "PLC_HOR_WELDING_RECIPE_NUM1" ||
// id == "PLC_VER_WELDING_MAIN_POWER_CORE1" ||
// id == "PLC_VER_WELDING_MAIN_POWER_RING1" ||
// id == "PLC_VER_WELDING_MAIN_RAMPING_START_POWER1" ||
// id == "PLC_VER_WELDING_MAIN_RAMPING_END_POWER1" ||
// id == "PLC_VER_WELDING_SUB_POWER_CORE1" ||
// id == "PLC_VER_WELDING_SUB_POWER_RING1" ||
// id == "PLC_VER_WELDING_RECIPE_NUM1" ||
// id == "PLC_HOR_WELDING_MAIN_POWER_CORE1" ||
// id == "PLC_HOR_WELDING_MAIN_POWER_RING1" ||
// id == "PC_HOR_WELDING_RECIPE_NUM1" ||
// id == "PC_HOR_WELDING_MAIN_POWER_CORE1" ||
// id == "PC_HOR_WELDING_MAIN_POWER_RING1" ||
// id == "PC_VER_WELDING_RECIPE_NUM1" ||
// id == "PC_VER_WELDING_MAIN_POWER_CORE1" ||
// id == "PC_VER_WELDING_MAIN_POWER_RING1" ||
// id == "PC_VER_WELDING_SUB_POWER_CORE1" ||
// id == "PC_VER_WELDING_SUB_POWER_RING1" ||
// id == "PC_VER_WELDING_MAIN_RAMPING_START_POWER1"||
// id == "PC_VER_WELDING_MAIN_RAMPING_END_POWER1"
// )
// return true;
//else
// return false;
}
public int ConvertTo2WordDivisionIndex(eWordOutput input)
{
var id = input.ToString();
if (id.Contains("RAMPING_START_POWER") || id.Contains("RAMPING_END_POWER") || id.Contains("NUM") || id.Contains("TIME"))
return 1;
else if (id.Contains("SPEED") || id.Contains("POWER_CORE") || id.Contains("POWER_RING"))
return 10;
//else if (id.Contains("POWER_CORE") || id.Contains("POWER_RING"))
// return 100;
else// if (id.Contains("DIST"))
return 1000;
//if (id == "PLC_HOR_WELDING_RECIPE_NUM1" ||
// id == "PLC_VER_WELDING_MAIN_POWER_CORE1" ||
// id == "PLC_VER_WELDING_MAIN_POWER_RING1" ||
// id == "PLC_VER_WELDING_MAIN_RAMPING_START_POWER1" ||
// id == "PLC_VER_WELDING_MAIN_RAMPING_END_POWER1" ||
// id == "PLC_VER_WELDING_SUB_POWER_CORE1" ||
// id == "PLC_VER_WELDING_SUB_POWER_RING1" ||
// id == "PLC_VER_WELDING_RECIPE_NUM1" ||
// id == "PLC_HOR_WELDING_MAIN_POWER_CORE1" ||
// id == "PLC_HOR_WELDING_MAIN_POWER_RING1" ||
// id == "PC_HOR_WELDING_RECIPE_NUM1" ||
// id == "PC_HOR_WELDING_MAIN_POWER_CORE1" ||
// id == "PC_HOR_WELDING_MAIN_POWER_RING1" ||
// id == "PC_VER_WELDING_RECIPE_NUM1" ||
// id == "PC_VER_WELDING_MAIN_POWER_CORE1" ||
// id == "PC_VER_WELDING_MAIN_POWER_RING1" ||
// id == "PC_VER_WELDING_SUB_POWER_CORE1" ||
// id == "PC_VER_WELDING_SUB_POWER_RING1" ||
// id == "PC_VER_WELDING_MAIN_RAMPING_START_POWER1"||
// id == "PC_VER_WELDING_MAIN_RAMPING_END_POWER1"
// )
// return true;
//else
// return false;
}
public string GetBcrCode()
{
StringBuilder sb = new StringBuilder();
var bcrid = ReadWordBlock((int)eWordInput.PLC_BCR_ID, 16).data;
foreach (var word in bcrid)
sb.Append(Conv_ReadData(PLCBase.eDataType.Type_Ascii, word, 0, false, false));
return sb.ToString();
}
}
}