Commit d49e19f7 几米阳光

轴报警时,直接停止运动

1 个父辈 e2cf57d8
......@@ -349,7 +349,7 @@ namespace OnlineStore.Common
/// <param name="ReceiveLength">接收数据长度</param>
/// <returns></returns>
public int SendCommand(byte[] SendData, ref byte[] ReceiveData, int Overtime, int ReceiveLength)
{
{
if (_serialPort == null)
{
LogUtil.error(PortName+" 发送数据"+ByteToString(SendData)+ "失败,_serialPort=null");
......@@ -358,7 +358,7 @@ namespace OnlineStore.Common
if (_serialPort.IsOpen)
{
if (Monitor.TryEnter(lockObj, 5))
if (Monitor.TryEnter(lockObj, 200))
{
try
{
......
......@@ -16,7 +16,7 @@ namespace OnlineStore.DeviceLibrary
{
public static bool IsShowMsg = false ;
private static int SleepMSendons = 20;
private static int ReviceOutTimeMS = 100;
private static Dictionary<string, Dictionary<string, int>> ComAddrValue = new Dictionary<string, Dictionary<string, int>>();
private static string mapObj = "";
......@@ -145,7 +145,7 @@ namespace OnlineStore.DeviceLibrary
PreReadCoilAddr = ACCMDManager.ServerOn_Addr;
byte[] dataArray = ACCMDManager.GetWriteData(slvAddr, ACCMDManager.CMD_ReadCoil, PreReadCoilAddr, "0000", 1);
//SendData(portName,dataArray);
byte[] reviceData = SendCommand(portName, dataArray, 100, 6);
byte[] reviceData = SendCommand(portName, dataArray, ReviceOutTimeMS, 6);
int result= GetCoilData(portName, reviceData, PreReadCoilAddr);
//TODO
return result>=1;
......
......@@ -77,7 +77,7 @@ namespace OnlineStore.DeviceLibrary
return;
}
byte[] returnData = SendCommand(portName, data, 50, reviceLength);
byte[] returnData = SendCommand(portName, data, ReviceOutTimeMS, reviceLength);
string strSend = "";
for (int i = 0; i < returnData.Length; i++)
{
......@@ -94,7 +94,7 @@ namespace OnlineStore.DeviceLibrary
{
return;
}
byte[] returnData = SendCommand(portName, data, 50, 8);
byte[] returnData = SendCommand(portName, data, ReviceOutTimeMS, 8);
if (returnData != null)
{
string strSend = "";
......@@ -116,9 +116,9 @@ namespace OnlineStore.DeviceLibrary
/// <returns>返回值的长度</returns>
public static byte[] SendCommand(string portName, byte[] data, int outTime, int reviceLength)
{
if (outTime > 80)
if (outTime <100)
{
outTime = 80;
outTime = 100;
}
byte[] returnData = null;
......@@ -148,7 +148,11 @@ namespace OnlineStore.DeviceLibrary
}
else
{
bean.SendCommand(data, ref returnData, outTime, reviceLength);
int ret= bean.SendCommand(data, ref returnData, outTime, reviceLength);
if (!ret.Equals(reviceLength))
{
LogUtil.error("串口" + portName + " 写入数据:" + strSend + ",预计返回字节数【"+reviceLength+"】实际返回【"+ret+"】");
}
System.Threading.Thread.Sleep(2);
}
}
......@@ -216,7 +220,7 @@ namespace OnlineStore.DeviceLibrary
public static void OpenAndCloseSTB(string portName, int slvAddr)
{
OnlyOpenSTB(portName, slvAddr);
System.Threading.Thread.Sleep(100);
System.Threading.Thread.Sleep(200);
CloseSTB(portName, slvAddr);
System.Threading.Thread.Sleep(SleepMSendons);
}
......@@ -310,7 +314,7 @@ namespace OnlineStore.DeviceLibrary
PreReadAddr = ACCMDManager.TargetPostion;
byte[] dataArray = ACCMDManager.GetWriteData(slvAddr, ACCMDManager.CMD_ReadRegisters, ACCMDManager.TargetPostion, "0000", 2);
// SendData(portName,dataArray);
byte[] reviceData = SendCommand(portName, dataArray, 100, 9);
byte[] reviceData = SendCommand(portName, dataArray, ReviceOutTimeMS, 9);
return GetRegisterData(portName, reviceData, ACCMDManager.TargetPostion);
}
......@@ -323,7 +327,7 @@ namespace OnlineStore.DeviceLibrary
PreReadAddr = ACCMDManager.ActualPosition;
byte[] dataArray = ACCMDManager.GetWriteData(slvAddr, ACCMDManager.CMD_ReadRegisters, ACCMDManager.ActualPosition, "0000", 2);
// SendData(portName,dataArray);
byte[] reviceData = SendCommand(portName, dataArray, 100, 9);
byte[] reviceData = SendCommand(portName, dataArray, ReviceOutTimeMS, 9);
int result = -1;
for (int i = 1; i <= 3; i++)
......@@ -375,7 +379,7 @@ namespace OnlineStore.DeviceLibrary
PreReadCoilAddr = ACCMDManager.Alarm_Status;
byte[] dataArray = ACCMDManager.GetWriteData(slvAddr, ACCMDManager.CMD_ReadCoil, PreReadCoilAddr, "0000", 1);
//SendData(portName,dataArray);
byte[] reviceData = SendCommand(portName, dataArray, 100, 6);
byte[] reviceData = SendCommand(portName, dataArray, ReviceOutTimeMS, 6);
return GetCoilData(portName, reviceData, PreReadCoilAddr);
}
......@@ -384,7 +388,7 @@ namespace OnlineStore.DeviceLibrary
PreReadCoilAddr = ACCMDManager.BUSYStatus;
byte[] dataArray = ACCMDManager.GetWriteData(slvAddr, ACCMDManager.CMD_ReadCoil, ACCMDManager.BUSYStatus, "0000", 1);
//SendData(portName,dataArray);
byte[] reviceData = SendCommand(portName, dataArray, 80, 6);
byte[] reviceData = SendCommand(portName, dataArray, ReviceOutTimeMS, 6);
return GetCoilData(portName, reviceData, ACCMDManager.BUSYStatus);
}
......@@ -393,7 +397,7 @@ namespace OnlineStore.DeviceLibrary
PreReadCoilAddr = ACCMDManager.HOME_CMP_Status;
byte[] dataArray = ACCMDManager.GetWriteData(slvAddr, ACCMDManager.CMD_ReadCoil, ACCMDManager.HOME_CMP_Status, "0000", 1);
//SendData(portName,dataArray);
byte[] reviceData = SendCommand(portName, dataArray, 80, 6);
byte[] reviceData = SendCommand(portName, dataArray, ReviceOutTimeMS, 6);
return GetCoilData(portName, reviceData, ACCMDManager.HOME_CMP_Status);
}
......@@ -401,7 +405,7 @@ namespace OnlineStore.DeviceLibrary
{
PreReadCoilAddr = ACCMDManager.Home_Single;
byte[] dataArray = ACCMDManager.GetWriteData(slvAddr, ACCMDManager.CMD_ReadCoil, ACCMDManager.Home_Single, "0000", 1);
byte[] reviceData = SendCommand(portName, dataArray, 50, 6);
byte[] reviceData = SendCommand(portName, dataArray, ReviceOutTimeMS, 6);
return GetCoilData(portName, reviceData, ACCMDManager.Home_Single);
}
/// <summary>
......@@ -411,7 +415,7 @@ namespace OnlineStore.DeviceLibrary
{
PreReadCoilAddr = ACCMDManager.Home_Single;
byte[] dataArray = ACCMDManager.GetWriteData(slvAddr, ACCMDManager.CMD_ReadCoil, ACCMDManager.Limit_Negative_Single, "0000", 1);
byte[] reviceData = SendCommand(portName, dataArray, 50, 6);
byte[] reviceData = SendCommand(portName, dataArray, ReviceOutTimeMS, 6);
return GetCoilData(portName, reviceData, ACCMDManager.Home_Single);
}
/// <summary>
......@@ -435,7 +439,7 @@ namespace OnlineStore.DeviceLibrary
{
PreReadCoilAddr = ACCMDManager.Home_Single;
byte[] dataArray = ACCMDManager.GetWriteData(slvAddr, ACCMDManager.CMD_ReadCoil, ACCMDManager.Limit_Positive_Single, "0000", 1);
byte[] reviceData = SendCommand(portName, dataArray, 50, 6);
byte[] reviceData = SendCommand(portName, dataArray, ReviceOutTimeMS, 6);
return GetCoilData(portName, reviceData, ACCMDManager.Home_Single);
}
}
......
......@@ -871,6 +871,7 @@ namespace OnlineStore.DeviceLibrary
{
LogUtil.error(LOGGER, StoreName + "轴报警,关闭刹车,停止运动,关闭轴,打开报警灯");
IOManager.IOMove(IO_Type.Axis_Brake, IO_VALUE.LOW);
StoreMove.EndMove();
StopMove(true);
}
else if (alarmType == StoreAlarmType.SuddenStop)
......@@ -1206,6 +1207,10 @@ namespace OnlineStore.DeviceLibrary
return;
}
preProTime = DateTime.Now;
if (!alarmType.Equals(StoreAlarmType.None))
{
return;
}
if (!AutomaticBaiting.CanOpenBatchDoor())
{
return;
......
......@@ -150,8 +150,9 @@ namespace OnlineStore.DeviceLibrary
{
isOk = false;
WarnMsg = msg;
LogUtil.info(msg);
//LogUtil.info(msg);
Alarm(StoreAlarmType.AxisMoveError, GetAlarmCodeByAxis(wait.AxisInfo).ToString(), WarnMsg, StoreMove.MoveType);
return;
break;
}
}
......@@ -170,6 +171,7 @@ namespace OnlineStore.DeviceLibrary
Alarm(StoreAlarmType.IoSingleTimeOut, io.ElectricalDefinition, WarnMsg, StoreMove.MoveType);
LogUtil.error( StoreName + wait.IoType + ResourceControl.GetString(ResourceControl.WaitSingle, " 等待信号") + "(" + io.DisplayStr + "=" + wait.IoValue + ") " + ResourceControl.GetString(ResourceControl.TimeOut, "超时"), 14);
isOk = false;
return;
break;
}
}
......
......@@ -487,7 +487,7 @@ namespace OnlineStore.DeviceLibrary
addHeight = StoreManager.Config.LastTrayAddHeight;
}
LastHeight += addHeight;
LogUtil.debug(Name + "入料: 计算盘高:上升前【" + StartMovePosition + "】实时【" + EndMovePosition + "】补充【" + addHeight + "】计算后高度【" + LastHeight + "】");
string msg = Name + " 计算盘高:上升前【" + StartMovePosition + "】实时【" + EndMovePosition + "】补充【" + addHeight + "】计算后【" + LastHeight + "】";
if (LastHeight < 0)
{
LastHeight = StoreManager.Config.GetDefaultHeight();
......@@ -516,6 +516,7 @@ namespace OnlineStore.DeviceLibrary
LastHeight = (int)Math.Ceiling(1F * LastHeight / 4) * 4;
}
}
LogUtil.info(msg+",归类为"+LastHeight);
return LastHeight;
}
private static List<AutoStorePosition> AllPosList = null;
......
......@@ -90,7 +90,12 @@ namespace OnlineStore.DeviceLibrary
NotOkMsg = wait.ToStr();
if (wait.WaitType == (int)Wait_Type.AxisMove_1)
{
wait.IsEnd = AxisMoveISEnd(wait);
bool isAlarm = false;
wait.IsEnd = AxisMoveISEnd(wait,ref isAlarm);
if (isAlarm)
{
return;
}
}
else if (wait.WaitType == (int)Wait_Type.IOMove_2)
{
......@@ -156,7 +161,7 @@ namespace OnlineStore.DeviceLibrary
{
StoreMove.EndStepWait();
}
else if (span.TotalSeconds > StoreMove.TimeOutSeconds)
else if (span.TotalSeconds > StoreMove.TimeOutSeconds )
{
WarnMsg = "[" + StoreMove.MoveStep + "]" + ResourceControl.GetString(ResourceControl.TimeOut, "超时") + " [" + NotOkMsg + "][" + Math.Round(span.TotalSeconds, 0) + "秒]";
LogUtil.error(WarnMsg,102);
......@@ -199,8 +204,9 @@ namespace OnlineStore.DeviceLibrary
}
return false;
}
private static bool AxisMoveISEnd(WaitResultInfo wait)
private static bool AxisMoveISEnd(WaitResultInfo wait ,ref bool isAlarm)
{
isAlarm = false;
string msg = "";
if (wait.IsHomeMove)
{
......@@ -213,8 +219,9 @@ namespace OnlineStore.DeviceLibrary
if (!msg.Equals(""))
{
isAlarm = true;
WarnMsg = msg;
StoreManager.Store.Alarm(StoreAlarmType.BatchAlarm, StoreManager.Store.GetAlarmCodeByAxis(wait.AxisInfo).ToString(), WarnMsg, StoreMove.MoveType);
StoreManager.Store.Alarm(StoreAlarmType.BatchAxisAlarm, StoreManager.Store.GetAlarmCodeByAxis(wait.AxisInfo).ToString(), WarnMsg, StoreMove.MoveType);
}
return wait.IsEnd;
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!