Fix fanuc tool table

This commit is contained in:
Lucio Maranta
2018-11-21 16:56:53 +00:00
parent 3cfd7f76e3
commit 33c6541403
9 changed files with 319 additions and 177 deletions
+12 -19
View File
@@ -136,23 +136,16 @@ namespace CMS_CORE_Application
Stopwatch st = new Stopwatch();
sw.Restart();
//cmsError = N.PROC_RActiveAlarms(1, ref ncAlarms);
//if (cmsError.IsError())
//{
// error = true;
// SetError(Lines, cmsError);
//}
MessageBox.Show("START");
cmsError = N.AXES_RAxesNames(1, ref axes);
TXTAlm.Text = "1\n" + String.Join(" ", axes.Select(x => x.Name.ToString() + "-" + x.Id.ToString() + "\n"));
axes.Clear();
cmsError = N.AXES_RAxesNames(2, ref axes);
TXTMsg.Text = "2\n" + String.Join(" ", axes.Select(x => x.Name.ToString() + "-" + x.Id.ToString() + "\n"));
MessageBox.Show("STOP");
cmsError = N.PROC_RActiveAlarms(1, ref ncAlarms);
if (cmsError.IsError())
{
error = true;
SetError(Lines, cmsError);
}
ActiveProgramDataModel active = new ActiveProgramDataModel();
cmsError = N.FILES_RActiveProgramData(1, ref active);
InfoFile file = new InfoFile();
cmsError = N.FILES_RGetFileInfo(active.Path, ref file);
Console.WriteLine("ICON" + sw.ElapsedMilliseconds);
sw.Stop();
@@ -231,8 +224,8 @@ namespace CMS_CORE_Application
{
TXTip.Enabled = true;
TXTport.Enabled = true;
TXTip.Text = "192.168.139.1";
// TXTip.Text = "10.69.36.33";
// TXTip.Text = "192.168.139.1";
TXTip.Text = "10.69.36.33";
TXTport.Text = "8193";
}
else if (NcCombo.SelectedItem.ToString().Equals("Osai"))
+5
View File
@@ -325,6 +325,11 @@ namespace CMS_CORE_Library.Demo
#region PLC High-level data
public override CmsError PLC_RWManageWatchdog()
{
return NO_ERROR;
}
public override CmsError PLC_RActiveMessages(ref List<PlcAlarmModel> alarms)
{
alarms.Clear();
+220 -118
View File
@@ -448,7 +448,34 @@ namespace CMS_CORE_Library.Fanuc
#region PLC High-level data
//Get the PMC Messages
public override CmsError PLC_RWManageWatchdog()
{
bool plcWatchdog = false;
CmsError cmsError = MEM_RWBoolean(R, 0, NC_WATCHDOG.MemType, NC_WATCHDOG.Address, 1, ref plcWatchdog);
if (cmsError.IsError())
return cmsError;
if (plcWatchdog)
{
plcWatchdog = false;
cmsError = MEM_RWBoolean(W, 0, NC_WATCHDOG.MemType, NC_WATCHDOG.Address, 1, ref plcWatchdog);
if (cmsError.IsError())
return cmsError;
cmsError = MEM_RWBoolean(R, 0, ACTIVE_WATCHDOG.MemType, ACTIVE_WATCHDOG.Address, 1, ref plcWatchdog);
if (cmsError.IsError())
return cmsError;
}
else
{
return PLC_NOT_RUNNING_ERROR;
}
return NO_ERROR;
}
// Get PMC Messages
public override CmsError PLC_RActiveMessages(ref List<PlcAlarmModel> alarms)
{
alarms.Clear();
@@ -897,25 +924,25 @@ namespace CMS_CORE_Library.Fanuc
// Add Alarm in List
alarms.Clear();
if (count >= 1 && Messg.msg1.type != 15)
AddAlarmToList(Messg.msg1.alm_no, Messg.msg1.alm_msg.Substring(0, Messg.msg1.msg_len), pathNumber, DateTime.Now, alarms);
AddAlarmToList( Messg.msg1.alm_no, Messg.msg1.axis, Messg.msg1.alm_msg.Substring(0, Messg.msg1.msg_len), pathNumber, DateTime.Now, alarms);
if (count >= 2 && Messg.msg2.type != 15)
AddAlarmToList(Messg.msg2.alm_no, Messg.msg2.alm_msg.Substring(0, Messg.msg2.msg_len), pathNumber, DateTime.Now, alarms);
AddAlarmToList(Messg.msg2.alm_no, Messg.msg2.axis, Messg.msg2.alm_msg.Substring(0, Messg.msg2.msg_len), pathNumber, DateTime.Now, alarms);
if (count >= 3 && Messg.msg3.type != 15)
AddAlarmToList(Messg.msg3.alm_no, Messg.msg3.alm_msg.Substring(0, Messg.msg3.msg_len), pathNumber, DateTime.Now, alarms);
AddAlarmToList(Messg.msg3.alm_no, Messg.msg3.axis, Messg.msg3.alm_msg.Substring(0, Messg.msg3.msg_len), pathNumber, DateTime.Now, alarms);
if (count >= 4 && Messg.msg4.type != 15)
AddAlarmToList(Messg.msg4.alm_no, Messg.msg4.alm_msg.Substring(0, Messg.msg4.msg_len), pathNumber, DateTime.Now, alarms);
AddAlarmToList(Messg.msg4.alm_no, Messg.msg4.axis, Messg.msg4.alm_msg.Substring(0, Messg.msg4.msg_len), pathNumber, DateTime.Now, alarms);
if (count >= 5 && Messg.msg5.type != 15)
AddAlarmToList(Messg.msg5.alm_no, Messg.msg5.alm_msg.Substring(0, Messg.msg5.msg_len), pathNumber, DateTime.Now, alarms);
AddAlarmToList(Messg.msg5.alm_no, Messg.msg5.axis, Messg.msg5.alm_msg.Substring(0, Messg.msg5.msg_len), pathNumber, DateTime.Now, alarms);
if (count >= 6 && Messg.msg6.type != 15)
AddAlarmToList(Messg.msg6.alm_no, Messg.msg6.alm_msg.Substring(0, Messg.msg6.msg_len), pathNumber, DateTime.Now, alarms);
AddAlarmToList(Messg.msg6.alm_no, Messg.msg6.axis, Messg.msg6.alm_msg.Substring(0, Messg.msg6.msg_len), pathNumber, DateTime.Now, alarms);
if (count >= 7 && Messg.msg7.type != 15)
AddAlarmToList(Messg.msg7.alm_no, Messg.msg7.alm_msg.Substring(0, Messg.msg7.msg_len), pathNumber, DateTime.Now, alarms);
AddAlarmToList(Messg.msg7.alm_no, Messg.msg7.axis, Messg.msg7.alm_msg.Substring(0, Messg.msg7.msg_len), pathNumber, DateTime.Now, alarms);
if (count >= 8 && Messg.msg8.type != 15)
AddAlarmToList(Messg.msg8.alm_no, Messg.msg8.alm_msg.Substring(0, Messg.msg8.msg_len), pathNumber, DateTime.Now, alarms);
AddAlarmToList(Messg.msg8.alm_no, Messg.msg8.axis, Messg.msg8.alm_msg.Substring(0, Messg.msg8.msg_len), pathNumber, DateTime.Now, alarms);
if (count >= 9 && Messg.msg9.type != 15)
AddAlarmToList(Messg.msg9.alm_no, Messg.msg9.alm_msg.Substring(0, Messg.msg9.msg_len), pathNumber, DateTime.Now, alarms);
AddAlarmToList(Messg.msg9.alm_no, Messg.msg9.axis, Messg.msg9.alm_msg.Substring(0, Messg.msg9.msg_len), pathNumber, DateTime.Now, alarms);
if (count >= 10 && Messg.msg10.type != 15)
AddAlarmToList(Messg.msg10.alm_no, Messg.msg10.alm_msg.Substring(0, Messg.msg10.msg_len), pathNumber, DateTime.Now, alarms);
AddAlarmToList(Messg.msg10.alm_no, Messg.msg10.axis, Messg.msg10.alm_msg.Substring(0, Messg.msg10.msg_len), pathNumber, DateTime.Now, alarms);
return NO_ERROR;
}
@@ -1690,7 +1717,7 @@ namespace CMS_CORE_Library.Fanuc
ActualEndIndex = ActualStartIndex + FANUC_MAXNVAR - 1;
// Set the variables-numbers to iterate
ActualNumber = (ActualEndIndex - ActualStartIndex + 1);
ActualNumber = (ActualEndIndex - ActualStartIndex + 1);
// Set the variables-number Fanuc
FanucNumber = ActualNumber + 8;
@@ -1838,7 +1865,7 @@ namespace CMS_CORE_Library.Fanuc
return NO_ERROR;
}
// Write a Short-Value-List inside the NC. In writing-mode the field "Number" is not required
public override CmsError MEM_RWShortList(bool bWrite, int Process, MEMORY_TYPE MemType, int MemIndex, int Number, ref List<short> Value)
{
@@ -2186,7 +2213,31 @@ namespace CMS_CORE_Library.Fanuc
public override CmsError FILES_RGetFileInfo(string path, ref InfoFile fileInfo)
{
IDBPDFADIR funcInput = new IDBPDFADIR();
ODBPDFADIR fileData = new ODBPDFADIR();
ODBPDFNFIL fil = new ODBPDFNFIL();
// Setup input data
funcInput.path = path;
funcInput.type = 1;
funcInput.size_kind = 1;
funcInput.dummy = 0;
short maxDir = 1;
funcInput.req_num = 1; // Update file index
// Read file data
short nReturn = Focas1.cnc_rdpdf_subdirn(nLibHandle[0], path, fil);
if (nReturn != 0)
return GetNcError(nReturn);
// Add to list read data
fileInfo = new InfoFile()
{
AbsolutePath = path + fileData.d_f,
Name = fileData.d_f,
Content = new List<string>()
};
return NO_ERROR;
}
@@ -2461,7 +2512,7 @@ namespace CMS_CORE_Library.Fanuc
Id = x.Id,
Type = ConvertToSiemensMagazineType(x.Type),
Name = x.Id.ToString(),
LoadingIsActive = magazineStatus[x.Id],
LoadingIsActive = true,// magazineStatus[x.Id],
MaxPositions = x.MaxPositions
}).ToList();
@@ -2694,12 +2745,6 @@ namespace CMS_CORE_Library.Fanuc
public override CmsError TOOLS_WOffset(short offsetId, OffsetModel offset)
{
List<NcToolModel> offsets = new List<NcToolModel>()
{
new NcToolModel(){FamilyId = 88, OffsetId1 = 0, OffsetId2 = 0, OffsetId3 = 0, OffsetLength = 0, ResidualLife = 5, ResidualRevive = 2, ShankId = 66, Status = 1, ToolId = 33}
};
TOOLS_WObjectInMemory(offsets, 12000, 1);
if (offsetId > MAX_OFFSET_NUM)
return INCORRECT_PARAMETERS_ERROR;
@@ -2729,17 +2774,79 @@ namespace CMS_CORE_Library.Fanuc
public override CmsError TOOLS_WStartEditData()
{
//Check if the NC is Connected
CmsError cmsError = CheckConnection();
if (cmsError.IsError())
return cmsError;
ushort status = 0;
// Read tool manager status
cmsError = MEM_RWWord(R, 0, TOOL_MANAGER_STATUS.MemType, TOOL_MANAGER_STATUS.Address, ref status);
if (cmsError.IsError())
return cmsError;
bool[] bits = new bool[16];
// Convert int into to true/false array
bits = IntToBits(status);
// 1 = Non-editable tables, 2 = reading in progess
if (!bits[1] || bits[2])
return MAGAZINE_BUSY_ERROR;
// Write busy tool manager status
bool bitToWrite = true;
cmsError = MEM_RWBoolean(W, 0, TOOL_MANAGER_COMMAND.MemType, TOOL_MANAGER_COMMAND.Address, 1, ref bitToWrite);
if (cmsError.IsError())
return cmsError;
//cmsError = CreateBackup();
//if (cmsError.IsError())
// return cmsError;
return NO_ERROR;
}
public override CmsError TOOLS_WStopEditData()
{
//Check if the NC is Connected
CmsError cmsError = CheckConnection();
if (cmsError.IsError())
return cmsError;
//cmsError = DeleteBackup();
//if (cmsError.IsError())
// return cmsError;
// Release tool manager status
bool bitToWrite = false;
cmsError = MEM_RWBoolean(W, 0, TOOL_MANAGER_COMMAND.MemType, TOOL_MANAGER_COMMAND.Address, 1, ref bitToWrite);
if (cmsError.IsError())
return cmsError;
//// Set reload command
//cmsError = PLC_WStrobe(TOOL_MANAGER_STATUS, TOOL_MANAGER_COMMAND, 1);
//if (cmsError.IsError())
// return cmsError;
return NO_ERROR;
}
public override CmsError TOOLS_WUpdateTools(List<NcToolModel> list)
public override CmsError TOOLS_WUpdateTools(List<NcToolModel> toolsList)
{
return NO_ERROR;
foreach (NcToolModel tool in toolsList)
{
// Get the offset of the id in the memory
CmsError cmsError = TOOLS_RPositionId(tool.ToolId, TOOL_TABLE_INDEX.Address, out int offset);
if (cmsError.IsError())
return cmsError;
// Write object in memory
cmsError = TOOLS_WObjectInMemory(tool, TOOL_TABLE_INDEX.Address, offset);
if (cmsError.IsError())
return cmsError;
}
return NO_ERROR;
}
public override CmsError TOOLS_WUpdateFamilies(List<NcFamilyModel> familyList)
@@ -2786,7 +2893,7 @@ namespace CMS_CORE_Library.Fanuc
CmsError cmsError = TOOLS_RPositionId(pos.PositionId, SHANK_TABLE_INDEX.Address, out int offset);
if (cmsError.IsError())
return cmsError;
// Write object in memory
cmsError = TOOLS_WObjectInMemory(pos, SHANK_TABLE_INDEX.Address, offset);
if (cmsError.IsError())
@@ -2798,11 +2905,58 @@ namespace CMS_CORE_Library.Fanuc
public override CmsError TOOLS_WStartEditTooling(int magazineId)
{
// Check if the NC is Connected
CmsError cmsError = CheckConnection();
if (cmsError.IsError())
return cmsError;
// Read tool manager status
bool status = false;
cmsError = MEM_RWBoolean(R, 0, MAGAZINES_ENABLED_CMD.MemType, MAGAZINES_ENABLED_CMD.Address, magazineId - 1, ref status);
if (cmsError.IsError())
return cmsError;
// If magazine is busy
if (!status)
return MAGAZINE_BUSY_ERROR;
// Write busy
bool bitToWrite = true;
cmsError = MEM_RWBoolean(W, 0, MAGAZINES_TOOLING_CMD.MemType, MAGAZINES_TOOLING_CMD.Address, magazineId - 1, ref bitToWrite);
if (cmsError.IsError())
return cmsError;
//// Create backup files
//cmsError = CreateBackup();
//if (cmsError.IsError())
// return cmsError;
return NO_ERROR;
}
public override CmsError TOOLS_WStopEditTooling(int magazineId)
{
// Check if the NC is Connected
CmsError cmsError = CheckConnection();
if (cmsError.IsError())
return cmsError;
// Set magazine as free
bool write = false;
cmsError = MEM_RWBoolean(W, 0, MAGAZINES_TOOLING_CMD.MemType, MAGAZINES_TOOLING_CMD.Address, magazineId - 1, ref write);
if (cmsError.IsError())
return cmsError;
//// Delete backup files
//cmsError = DeleteBackup();
//if (cmsError.IsError())
// return cmsError;
// Set reload command
cmsError = PLC_WStrobe(TOOL_MANAGER_STATUS, TOOL_MANAGER_COMMAND, 1);
if (cmsError.IsError())
return cmsError;
return NO_ERROR;
}
@@ -2823,16 +2977,34 @@ namespace CMS_CORE_Library.Fanuc
public override CmsError TOOLS_RMagazineStatus(ref Dictionary<int, bool> magazineStatus)
{
//Check if the NC is Connected
CmsError cmsError = CheckConnection();
if (cmsError.IsError())
return cmsError;
// Read tool manager status
int status = 0;
cmsError = MEM_RWInteger(R, 0, MAGAZINES_ENABLED_CMD.MemType, MAGAZINES_ENABLED_CMD.Address, ref status);
if (cmsError.IsError())
return cmsError;
bool[] bits = IntToBits(status);
for (int i = 0; i < bits.Length; i++)
{
magazineStatus.Add(i + 1, bits[i]);
}
return NO_ERROR;
}
private CmsError TOOLS_RPositionId(int id, int startIndex, out int offset)
{
offset = 0;
// Read 300 bytes
List<int> ints = new List<int>();
CmsError cmsError = MEM_RWIntegerList(false, 0, Nc.MEMORY_TYPE.Fanuc_R, startIndex, 150, ref ints);
CmsError cmsError = MEM_RWIntegerList(false, 0, Nc.MEMORY_TYPE.Fanuc_D, startIndex, 150, ref ints);
if (cmsError.IsError())
return cmsError;
@@ -2842,6 +3014,15 @@ namespace CMS_CORE_Library.Fanuc
// Find id
offset = Array
.FindIndex(bytes, x => x == id);
// if not found, get last number
if(offset == -1)
{
offset = 0;
for (int i = 0; i < bytes.Count(); i++)
if (bytes[i] != 0)
offset = i + 1;
}
return NO_ERROR;
}
@@ -2867,7 +3048,7 @@ namespace CMS_CORE_Library.Fanuc
case 1:
{
byte b = Convert.ToByte(property.GetValue(item));
cmsError = MEM_RWByte(W, 0, MEMORY_TYPE.Fanuc_R, currentFieldIndex, 0, ref b);
cmsError = MEM_RWByte(W, 0, MEMORY_TYPE.Fanuc_D, currentFieldIndex, 0, ref b);
if (cmsError.IsError())
return cmsError;
}
@@ -2875,7 +3056,7 @@ namespace CMS_CORE_Library.Fanuc
case 2:
{
ushort u = Convert.ToUInt16(property.GetValue(item));
cmsError = MEM_RWWord(W, 0, MEMORY_TYPE.Fanuc_R, currentFieldIndex, ref u);
cmsError = MEM_RWWord(W, 0, MEMORY_TYPE.Fanuc_D, currentFieldIndex, ref u);
if (cmsError.IsError())
return cmsError;
}
@@ -2883,7 +3064,7 @@ namespace CMS_CORE_Library.Fanuc
case 4:
{
uint w = Convert.ToUInt32(property.GetValue(item));
cmsError = MEM_RWDWord(W, 0, MEMORY_TYPE.Fanuc_R, currentFieldIndex, ref w);
cmsError = MEM_RWDWord(W, 0, MEMORY_TYPE.Fanuc_D, currentFieldIndex, ref w);
if (cmsError.IsError())
return cmsError;
}
@@ -3486,13 +3667,10 @@ namespace CMS_CORE_Library.Fanuc
{
continue;
}
break;
default:
{
return GetNcError(nReturn);
}
break;
}
} while ((nReturn == (short)Focas1.focas_ret.EW_OK || nReturn == (short)Focas1.focas_ret.EW_BUFFER) && !fileEnded);
@@ -3506,7 +3684,7 @@ namespace CMS_CORE_Library.Fanuc
return NO_ERROR;
}
//Manage the Exception Launch
// Manage the Exception Launch
private CmsError ManageException(Exception ex)
{
Connected = false;
@@ -3566,6 +3744,9 @@ namespace CMS_CORE_Library.Fanuc
internal static class MEMORY_ADDRESS
{
internal const int STARTING_ADDRESS = 50000;
internal static MEMORY_CELL NC_WATCHDOG = new MEMORY_CELL(MEMORY_TYPE.Fanuc_R, STARTING_ADDRESS, 1);
internal static MEMORY_CELL ACTIVE_WATCHDOG = new MEMORY_CELL(MEMORY_TYPE.Fanuc_R, STARTING_ADDRESS + 2, 1);
internal static MEMORY_CELL FUNCTION_ACCESS = new MEMORY_CELL(MEMORY_TYPE.Fanuc_R, 50005, 8);
internal static MEMORY_CELL PRE_POST_POWER_ON = new MEMORY_CELL(MEMORY_TYPE.Fanuc_R, 52573, 2);
@@ -3608,17 +3789,17 @@ namespace CMS_CORE_Library.Fanuc
internal static MEMORY_CELL HEADS_STROBE_DECREMENT = new MEMORY_CELL(MEMORY_TYPE.Fanuc_R, 52927, 4);
// Tool manager areas
internal static MEMORY_CELL TOOL_MANAGER_COMMAND = new MEMORY_CELL(MEMORY_TYPE.Fanuc_R, 13000, 2);
internal static MEMORY_CELL TOOL_MANAGER_COMMAND = new MEMORY_CELL(MEMORY_TYPE.Fanuc_R, 53000, 2);
internal static MEMORY_CELL TOOL_MANAGER_STATUS = new MEMORY_CELL(MEMORY_TYPE.Fanuc_R, 13001, 2);
internal static MEMORY_CELL TOOL_MANAGER_STATUS = new MEMORY_CELL(MEMORY_TYPE.Fanuc_R, 53002, 2);
internal static MEMORY_CELL TOOL_MANAGER_OPTIONS = new MEMORY_CELL(MEMORY_TYPE.Fanuc_R, 13002, 2);
internal static MEMORY_CELL TOOL_MANAGER_OPTIONS = new MEMORY_CELL(MEMORY_TYPE.Fanuc_R, 53004, 2);
internal static MEMORY_CELL MAGAZINE_TYPES = new MEMORY_CELL(MEMORY_TYPE.Fanuc_R, 13062, 4);
internal static MEMORY_CELL MAGAZINE_POSITIONS_NUMBER = new MEMORY_CELL(MEMORY_TYPE.Fanuc_R, 13072, 4);
internal static MEMORY_CELL MAGAZINE_TYPES = new MEMORY_CELL(MEMORY_TYPE.Fanuc_R, 53062, 4);
internal static MEMORY_CELL MAGAZINE_POSITIONS_NUMBER = new MEMORY_CELL(MEMORY_TYPE.Fanuc_R, 53082, 4);
internal static MEMORY_CELL MAGAZINES_ENABLED_CMD = new MEMORY_CELL(MEMORY_TYPE.Fanuc_R, 13082, 2);
internal static MEMORY_CELL MAGAZINES_TOOLING_CMD = new MEMORY_CELL(MEMORY_TYPE.Fanuc_R, 13084, 2);
internal static MEMORY_CELL MAGAZINES_ENABLED_CMD = new MEMORY_CELL(MEMORY_TYPE.Fanuc_R, 53102, 2);
internal static MEMORY_CELL MAGAZINES_TOOLING_CMD = new MEMORY_CELL(MEMORY_TYPE.Fanuc_R, 53106, 2);
internal static MEMORY_CELL TOOL_STATUS_UPDATED_CMD = new MEMORY_CELL(MEMORY_TYPE.Fanuc_R, 13003, 2);
internal static MEMORY_CELL TOOL_LIFE_UPDATED_CMD = new MEMORY_CELL(MEMORY_TYPE.Fanuc_R, 13005, 2);
@@ -3641,83 +3822,4 @@ namespace CMS_CORE_Library.Fanuc
internal static MEMORY_CELL OPERATOR_INPUT_NEEDED = new MEMORY_CELL(MEMORY_TYPE.Fanuc_R, 0, 1);
internal static MEMORY_CELL MTCONNECT_DATA_NEEDED = new MEMORY_CELL(MEMORY_TYPE.Fanuc_R, 0, 1);
}
//internal static class MEMORY_ADDRESS
//{
// internal const int STARTING_ADDRESS = 50000;
// internal static MEMORY_CELL FUNCTION_ACCESS = new MEMORY_CELL(MEMORY_TYPE.Fanuc_R, 50005, 8);
// internal static MEMORY_CELL PRE_POST_POWER_ON = new MEMORY_CELL(MEMORY_TYPE.Fanuc_R, 12000, 2);
// internal static MEMORY_CELL PRE_POST_POWER_ON_CLICKABLE = new MEMORY_CELL(MEMORY_TYPE.Fanuc_R, 12002, 2);
// internal static MEMORY_CELL PRE_POST_POWER_ON_ACK = new MEMORY_CELL(MEMORY_TYPE.Fanuc_R, 12004, 2);
// internal static MEMORY_CELL PRE_POST_POWER_ON_CLICKED = new MEMORY_CELL(MEMORY_TYPE.Fanuc_R, 12006, 2);
// internal static MEMORY_CELL AXIS_RESET_PROCEDURE = new MEMORY_CELL(MEMORY_TYPE.Fanuc_R, 52607, 7, 1);
// internal static MEMORY_CELL PROCESS_STATUS = new MEMORY_CELL(MEMORY_TYPE.Fanuc_R, 12000, 0, 24);
// internal static MEMORY_CELL SELECTED_PROCESS = new MEMORY_CELL(MEMORY_TYPE.Fanuc_R, 12000, 2, 24);
// internal static MEMORY_CELL SELECT_PROCESS = new MEMORY_CELL(MEMORY_TYPE.Fanuc_R, 52605, 1);
// internal static MEMORY_CELL COUNTERS = new MEMORY_CELL(MEMORY_TYPE.Fanuc_R, 0, 0, 40);
// internal static MEMORY_CELL SELECTED_AXIS = new MEMORY_CELL(MEMORY_TYPE.Fanuc_R, 52624, 0, 1);
// internal static MEMORY_CELL SELECT_AXIS = new MEMORY_CELL(MEMORY_TYPE.Fanuc_R, 52625, 1, 1);
// internal static MEMORY_CELL NC_SOFTKEYS_VALUE = new MEMORY_CELL(MEMORY_TYPE.Fanuc_R, 52608, 0, 4);
// internal static MEMORY_CELL NC_SOFTKEYS_CLICKABLE = new MEMORY_CELL(MEMORY_TYPE.Fanuc_R, 52612, 0, 4);
// internal static MEMORY_CELL NC_SOFT_KEYS_ACK = new MEMORY_CELL(MEMORY_TYPE.Fanuc_R, 52616, 4);
// internal static MEMORY_CELL NC_SOFT_KEYS_CLICKED = new MEMORY_CELL(MEMORY_TYPE.Fanuc_R, 52620, 4);
// internal static MEMORY_CELL USER_SOFTKEYS_VALUE = new MEMORY_CELL(MEMORY_TYPE.Fanuc_R, 52626, 0, 16);
// internal static MEMORY_CELL USER_SOFTKEYS_CLICKABLE = new MEMORY_CELL(MEMORY_TYPE.Fanuc_R, 52642, 0, 16);
// internal static MEMORY_CELL USER_SOFT_KEYS_ACK = new MEMORY_CELL(MEMORY_TYPE.Fanuc_R, 52658, 16);
// internal static MEMORY_CELL USER_SOFT_KEYS_CLICKED = new MEMORY_CELL(MEMORY_TYPE.Fanuc_R, 52674, 16);
// internal static MEMORY_CELL ALARMS_STATUS = new MEMORY_CELL(MEMORY_TYPE.Fanuc_R, 12000, 128);
// internal static MEMORY_CELL ALARMS_DATA = new MEMORY_CELL(MEMORY_TYPE.Fanuc_R, 12128, 1024);
// internal static MEMORY_CELL ALARM_ACK = new MEMORY_CELL(MEMORY_TYPE.Fanuc_R, 2152, 128);
// internal static MEMORY_CELL ALARM_RESTORATION_STROBE = new MEMORY_CELL(MEMORY_TYPE.Fanuc_R, 2280, 128);
// internal static MEMORY_CELL ALARM_REFRESH_STROBE = new MEMORY_CELL(MEMORY_TYPE.Fanuc_R, 2408, 128);
// internal static MEMORY_CELL HEADS_DATA = new MEMORY_CELL(MEMORY_TYPE.Fanuc_R, 52690, 240);
// internal static MEMORY_CELL HEADS_ACK = new MEMORY_CELL(MEMORY_TYPE.Fanuc_R, 52921, 4);
// internal static MEMORY_CELL HEADS_STROBE_INCREMENT = new MEMORY_CELL(MEMORY_TYPE.Fanuc_R, 52924, 4);
// internal static MEMORY_CELL HEADS_STROBE_DECREMENT = new MEMORY_CELL(MEMORY_TYPE.Fanuc_R, 52927, 4);
// // Tool manager areas
// internal static MEMORY_CELL TOOL_MANAGER_COMMAND = new MEMORY_CELL(MEMORY_TYPE.Fanuc_R, 13000, 2);
// internal static MEMORY_CELL TOOL_MANAGER_STATUS = new MEMORY_CELL(MEMORY_TYPE.Fanuc_R, 13001, 2);
// internal static MEMORY_CELL TOOL_MANAGER_OPTIONS = new MEMORY_CELL(MEMORY_TYPE.Fanuc_R, 13002, 2);
// internal static MEMORY_CELL MAGAZINE_TYPES = new MEMORY_CELL(MEMORY_TYPE.Fanuc_R, 13062, 4);
// internal static MEMORY_CELL MAGAZINE_POSITIONS_NUMBER = new MEMORY_CELL(MEMORY_TYPE.Fanuc_R, 13072, 4);
// internal static MEMORY_CELL MAGAZINES_ENABLED_CMD = new MEMORY_CELL(MEMORY_TYPE.Fanuc_R, 13082, 2);
// internal static MEMORY_CELL MAGAZINES_TOOLING_CMD = new MEMORY_CELL(MEMORY_TYPE.Fanuc_R, 13084, 2);
// internal static MEMORY_CELL TOOL_STATUS_UPDATED_CMD = new MEMORY_CELL(MEMORY_TYPE.Fanuc_R, 13003, 2);
// internal static MEMORY_CELL TOOL_LIFE_UPDATED_CMD = new MEMORY_CELL(MEMORY_TYPE.Fanuc_R, 13005, 2);
// internal static MEMORY_CELL TOOL_STATUS_UPDATED_ACK = new MEMORY_CELL(MEMORY_TYPE.Fanuc_R, 13007, 2);
// internal static MEMORY_CELL TOOL_LIFE_UPDATED_ACK = new MEMORY_CELL(MEMORY_TYPE.Fanuc_R, 13009, 2);
// internal static MEMORY_CELL TOOL_STATUS_UPDATED_DATA = new MEMORY_CELL(MEMORY_TYPE.Fanuc_R, 13011, 10);
// internal static MEMORY_CELL TOOL_LIFE_UPDATED_DATA = new MEMORY_CELL(MEMORY_TYPE.Fanuc_R, 13022, 40);
// // Tool table indexes
// internal static MEMORY_CELL TOOL_TABLE_INDEX = new MEMORY_CELL(MEMORY_TYPE.Fanuc_R, 35000, 6900);
// internal static MEMORY_CELL FAMILY_TABLE_INDEX = new MEMORY_CELL(MEMORY_TYPE.Fanuc_R, 42000, 7500);
// internal static MEMORY_CELL SHANK_TABLE_INDEX = new MEMORY_CELL(MEMORY_TYPE.Fanuc_R, 49600, 2100);
// internal static MEMORY_CELL MAG_POS_TABLE_INDEX = new MEMORY_CELL(MEMORY_TYPE.Fanuc_R, 51800, 900);
// internal static MEMORY_CELL COUNTERS_DATA = new MEMORY_CELL(MEMORY_TYPE.Fanuc_R, 0, 64);
// internal static MEMORY_CELL COUNTERS_ACK = new MEMORY_CELL(MEMORY_TYPE.Fanuc_R, 0, 2);
// internal static MEMORY_CELL COUNTERS_STROBE = new MEMORY_CELL(MEMORY_TYPE.Fanuc_R, 0, 2);
// internal static MEMORY_CELL OPERATOR_INPUT_NEEDED = new MEMORY_CELL(MEMORY_TYPE.Fanuc_R, 0, 1);
// internal static MEMORY_CELL MTCONNECT_DATA_NEEDED = new MEMORY_CELL(MEMORY_TYPE.Fanuc_R, 0, 1);
//}
}
+2 -1
View File
@@ -54,6 +54,7 @@
MAGAZINE_OCCUPIED = 19,
TOOL_IS_MOUNTED = 20,
TOOL_AND_POSITION_NOT_MATCHING = 21,
FILE_NOT_FOUND = 22
FILE_NOT_FOUND = 22,
PLC_NOT_RUNNING = 23
}
}
+2 -1
View File
@@ -361,7 +361,8 @@ namespace CMS_CORE_Library.Models
public static CmsError MAGAZINE_BUSY_ERROR = new CmsError(CMS_ERROR_CODES.MAGAZINE_OCCUPIED, "error_magazine_occupied");
public static CmsError TOOL_IS_MOUNTED_ERROR = new CmsError(CMS_ERROR_CODES.TOOL_IS_MOUNTED, "error_tool_mounted");
public static CmsError TOOL_AND_POSITION_NOT_MATCHING_ERROR = new CmsError(CMS_ERROR_CODES.TOOL_IS_MOUNTED, "error_tool_and_position_not_matching");
public static CmsError FILE_NOT_FOUND_ERROR = new CmsError(CMS_ERROR_CODES.FILE_NOT_FOUND, "error_file_not_found");
public static CmsError FILE_NOT_FOUND_ERROR = new CmsError(CMS_ERROR_CODES.FILE_NOT_FOUND, "error_file_not_found");
public static CmsError PLC_NOT_RUNNING_ERROR = new CmsError(CMS_ERROR_CODES.PLC_NOT_RUNNING, "error_plc_not_running");
#endregion Cms Errors Codes
+6 -25
View File
@@ -30,9 +30,9 @@ namespace CMS_CORE_Library.Models
public class NcShankModel
{
public int ShankId { get; set; }
public ushort ShankId { get; set; }
public int Balluf { get; set; }
public ushort Balluf { get; set; }
public byte MagazineId { get; set; }
@@ -43,50 +43,31 @@ namespace CMS_CORE_Library.Models
public class NcToolModel
{
[FanucOrder(1)]
[OsaiOrder(1)]
public short ToolId { get; set; }
[FanucOrder(2)]
[OsaiOrder(2)]
public short FamilyId { get; set; }
[FanucOrder(3)]
[OsaiOrder(3)]
public short ShankId { get; set; }
[FanucOrder(4)]
[OsaiOrder(4)]
public byte Status { get; set; }
[FanucOrder(5)]
[OsaiOrder(5)]
public short OffsetLength { get; set; }
[FanucOrder(6)]
[OsaiOrder(6)]
public int ResidualLife { get; set; }
[FanucOrder(7)]
[OsaiOrder(7)]
public uint ResidualRevive { get; set; }
[FanucOrder(8)]
[OsaiOrder(8)]
public ushort OffsetId1 { get; set; }
[FanucOrder(9)]
[OsaiOrder(9)]
public ushort OffsetId2 { get; set; }
[FanucOrder(10)]
[OsaiOrder(10)]
public ushort OffsetId3 { get; set; }
public uint ResidualRevive { get; set; }
}
public class NcFamilyModel
{
public int FamilyId { get; set; }
public ushort FamilyId { get; set; }
public byte ToolType { get; set; }
+5 -2
View File
@@ -362,6 +362,8 @@ namespace CMS_CORE_Library
#region PLC High-level data (to override)
public abstract CmsError PLC_RWManageWatchdog();
/**
* <summary>
* Read PMC active Messages
@@ -1837,11 +1839,12 @@ namespace CMS_CORE_Library
});
}
internal void AddAlarmToList(int id, string message, int process, DateTime dateTime, List<AlarmModel> alarms)
internal void AddAlarmToList(int id, short axisId, string message, int process, DateTime dateTime, List<AlarmModel> alarms)
{
alarms.Add(new AlarmModel()
{
Id = (uint)id,
Id = Convert.ToUInt32((id & 0xffff) | (axisId << 24)),
Message = message,
IsWarning = false,
Process = process,
+38 -9
View File
@@ -415,6 +415,31 @@ namespace CMS_CORE_Library.Osai
#region PLC High-level data
//Get the PLC Active Alarms
public override CmsError PLC_RWManageWatchdog()
{
bool plcWatchdog = false;
CmsError cmsError = MEM_RWBoolean(R, 0, NC_WATCHDOG.MemType, NC_WATCHDOG.Address, 1, ref plcWatchdog);
if (cmsError.IsError())
return cmsError;
if (plcWatchdog)
{
plcWatchdog = false;
cmsError = MEM_RWBoolean(W, 0, NC_WATCHDOG.MemType, NC_WATCHDOG.Address, 1, ref plcWatchdog);
if (cmsError.IsError())
return cmsError;
cmsError = MEM_RWBoolean(R, 0, ACTIVE_WATCHDOG.MemType, ACTIVE_WATCHDOG.Address, 1, ref plcWatchdog);
if (cmsError.IsError())
return cmsError;
}
return NO_ERROR;
}
public override CmsError PLC_RActiveMessages(ref List<PlcAlarmModel> alarms)
{
try
@@ -2600,8 +2625,8 @@ namespace CMS_CORE_Library.Osai
return MAGAZINE_BUSY_ERROR;
// Write busy tool manager status
bool write = true;
cmsError = MEM_RWBoolean(W, 0, TOOL_MANAGER_COMMAND.MemType, TOOL_MANAGER_COMMAND.Address, 1, ref write);
bool bitToWrite = true;
cmsError = MEM_RWBoolean(W, 0, TOOL_MANAGER_COMMAND.MemType, TOOL_MANAGER_COMMAND.Address, 1, ref bitToWrite);
if (cmsError.IsError())
return cmsError;
@@ -2624,8 +2649,8 @@ namespace CMS_CORE_Library.Osai
return cmsError;
// Release tool manager status
bool write = false;
cmsError = MEM_RWBoolean(W, 0, TOOL_MANAGER_COMMAND.MemType, TOOL_MANAGER_COMMAND.Address, 1, ref write);
bool bitToWrite = false;
cmsError = MEM_RWBoolean(W, 0, TOOL_MANAGER_COMMAND.MemType, TOOL_MANAGER_COMMAND.Address, 1, ref bitToWrite);
if (cmsError.IsError())
return cmsError;
@@ -2677,8 +2702,8 @@ namespace CMS_CORE_Library.Osai
return MAGAZINE_BUSY_ERROR;
// Write busy
bool write = true;
cmsError = MEM_RWBoolean(W, 0, MAGAZINES_TOOLING_CMD.MemType, MAGAZINES_TOOLING_CMD.Address, magazineId - 1, ref write);
bool bitToWrite = true;
cmsError = MEM_RWBoolean(W, 0, MAGAZINES_TOOLING_CMD.MemType, MAGAZINES_TOOLING_CMD.Address, magazineId - 1, ref bitToWrite);
if (cmsError.IsError())
return cmsError;
@@ -2692,7 +2717,7 @@ namespace CMS_CORE_Library.Osai
public override CmsError TOOLS_WStopEditTooling(int magazineId)
{
//Check if the NC is Connected
// Check if the NC is Connected
CmsError cmsError = CheckConnection();
if (cmsError.IsError())
return cmsError;
@@ -3077,8 +3102,8 @@ namespace CMS_CORE_Library.Osai
.Select(x => x.Split(';'))
.Select(x => new NcShankModel
{
ShankId = int.Parse(x[0]),
Balluf = int.Parse(x[1]),
ShankId = ushort.Parse(x[0]),
Balluf = ushort.Parse(x[1]),
MagazineId = byte.Parse(x[2]),
PositionId = byte.Parse(x[3]),
MagazinePositionType = byte.Parse(x[4])
@@ -3749,6 +3774,10 @@ namespace CMS_CORE_Library.Osai
internal static class MEMORY_ADDRESS
{
internal const int STARTING_ADDRESS = 12000;
internal static MEMORY_CELL NC_WATCHDOG = new MEMORY_CELL(MEMORY_TYPE.Osai_MW, STARTING_ADDRESS, 1);
internal static MEMORY_CELL ACTIVE_WATCHDOG = new MEMORY_CELL(MEMORY_TYPE.Osai_MW, STARTING_ADDRESS + 2, 1);
internal static MEMORY_CELL MATR_MACCH_OSAI = new MEMORY_CELL(MEMORY_TYPE.Osai_MW, 3403, 0, 1);
internal static MEMORY_CELL FUNCTION_ACCESS = new MEMORY_CELL(MEMORY_TYPE.Osai_MW, 12003, 8);
+29 -2
View File
@@ -76,7 +76,7 @@ namespace CMS_CORE_Library.Siemens
// Tool table listeners
private static ToolMngmntSvc SiemensToolSvc = null;
private static DataSvc MagazinePositionSvc = null;
private static DataSvc MagazineActionsSvc = null;
@@ -498,13 +498,13 @@ namespace CMS_CORE_Library.Siemens
// Set the Nc Active Page of the NC
public override CmsError NC_SetScreenVisible(SCREEN_PAGE screen)
{
Console.WriteLine(Infrastructure.CurrentActiveArea);
string area = ConvertStepToSiemensScreen(screen);
if (string.IsNullOrEmpty(area))
return INCORRECT_PARAMETERS_ERROR;
if (Infrastructure.CurrentActiveArea != area)
Infrastructure.SwitchToArea(area);
return NO_ERROR;
}
@@ -514,6 +514,29 @@ namespace CMS_CORE_Library.Siemens
#region PLC High-level data
public override CmsError PLC_RWManageWatchdog()
{
bool plcWatchdog = false;
CmsError cmsError = MEM_RWBoolean(R, 0, NC_WATCHDOG.MemType, NC_WATCHDOG.Address, NC_WATCHDOG.SubAddress, 1, ref plcWatchdog);
if (cmsError.IsError())
return cmsError;
if (plcWatchdog)
{
plcWatchdog = false;
cmsError = MEM_RWBoolean(W, 0, NC_WATCHDOG.MemType, NC_WATCHDOG.Address, NC_WATCHDOG.SubAddress, 1, ref plcWatchdog);
if (cmsError.IsError())
return cmsError;
plcWatchdog = true;
cmsError = MEM_RWBoolean(R, 0, ACTIVE_WATCHDOG.MemType, ACTIVE_WATCHDOG.Address, ACTIVE_WATCHDOG.SubAddress, 1, ref plcWatchdog);
if (cmsError.IsError())
return cmsError;
}
return NO_ERROR;
}
public override CmsError PLC_RActiveMessages(ref List<PlcAlarmModel> alarms)
{
bool[] statusBits;
@@ -1433,6 +1456,7 @@ namespace CMS_CORE_Library.Siemens
{
Dictionary<string, double> axes = new Dictionary<string, double>();
List<AxisModel> axesConf = new List<AxisModel>();
CmsError cmsError = AXES_RAxesNames(channel, ref axesConf);
foreach (var conf in axesConf)
@@ -5235,6 +5259,9 @@ namespace CMS_CORE_Library.Siemens
{
internal const int TABLE = 258;
internal static MEMORY_CELL NC_WATCHDOG = new MEMORY_CELL(MEMORY_TYPE.Siemens_DB, TABLE, 0, 1);
internal static MEMORY_CELL ACTIVE_WATCHDOG = new MEMORY_CELL(MEMORY_TYPE.Siemens_DB, TABLE, 2, 1);
internal static MEMORY_CELL FUNCTION_ACCESS = new MEMORY_CELL(MEMORY_TYPE.Siemens_DB, TABLE, 6, 8);
internal static MEMORY_CELL PRE_POST_POWER_ON = new MEMORY_CELL(MEMORY_TYPE.Siemens_DB, TABLE, 2574, 2);