Commit cf88750c 张东亮

添加盘点功能

1 个父辈 262366e5
......@@ -104,6 +104,7 @@ namespace OnlineStore.ACSingleStore
txtUpDownP4.Text = ktkPosition.UpDownAxis_ILPosition_P4.ToString();
txtUpDownP5.Text = ktkPosition.UpDownAxis_OLPosition_P5.ToString();
txtUpDownP6.Text = ktkPosition.UpDownAxis_OHPosition_P6.ToString();
txtUpDownP9.Text = ktkPosition.UpDownAxis_Position_P9.ToString();
txtComP2.Text = ktkPosition.CompressAxis_Position_P2.ToString();
txtComP3.Text = ktkPosition.CompressAxis_CPosition_P3.ToString();
txtInOutP3.Text = ktkPosition.InOutAxis_Position_P3.ToString();
......@@ -287,6 +288,10 @@ namespace OnlineStore.ACSingleStore
{
btnStartAuTo.Text = "开始自动出入库";
}
if (btnStartAutoCheck.Text.Equals("停止自动盘点"))
{
btnStartAutoCheck.Text = "开始自动盘点";
}
}
}
else
......@@ -417,6 +422,7 @@ namespace OnlineStore.ACSingleStore
ktk.UpDown_P6 = FormUtil.GetIntValue(txtUpDownP6);
ktk.UpDown_P7 = FormUtil.GetIntValue(txtUpDownP7);
ktk.UpDown_P8 = FormUtil.GetIntValue(txtUpDownP8);
ktk.UpDown_P9 = FormUtil.GetIntValue(txtUpDownP9);
return ktk;
}
private void btnComAlarmClear_Click(object sender, EventArgs e)
......@@ -444,6 +450,7 @@ namespace OnlineStore.ACSingleStore
txtUpDownP4.Text = ktkPosition.UpDownAxis_ILPosition_P4.ToString();
txtUpDownP5.Text = ktkPosition.UpDownAxis_OLPosition_P5.ToString();
txtUpDownP6.Text = ktkPosition.UpDownAxis_OHPosition_P6.ToString();
txtUpDownP9.Text = ktkPosition.UpDownAxis_Position_P9.ToString();
txtComP2.Text = ktkPosition.CompressAxis_Position_P2.ToString();
txtComP3.Text = ktkPosition.CompressAxis_CPosition_P3.ToString();
txtInOutP3.Text = ktkPosition.InOutAxis_Position_P3.ToString();
......@@ -609,14 +616,15 @@ namespace OnlineStore.ACSingleStore
{
ktkPosition.MiddleAxis_Position_P2 = FormUtil.GetIntValue(txtMiddleP2);
ktkPosition.MiddleAxis_Position_P3 = FormUtil.GetIntValue(txtMiddleP3);
ktkPosition.UpDownAxis_IHPosition_P3 = FormUtil.GetIntValue(txtUpDownP3);
ktkPosition.UpDownAxis_ILPosition_P4 = FormUtil.GetIntValue(txtUpDownP4);
ktkPosition.UpDownAxis_OLPosition_P5 = FormUtil.GetIntValue(txtUpDownP5);
ktkPosition.UpDownAxis_OHPosition_P6 = FormUtil.GetIntValue(txtUpDownP6);
ktkPosition.UpDownAxis_Position_P9 = FormUtil.GetIntValue(txtUpDownP9);
ktkPosition.UpDownAxis_ILPosition_P4 = FormUtil.GetIntValue(txtUpDownP4);
ktkPosition.InOutAxis_Position_P3 = FormUtil.GetIntValue(txtInOutP3);
ktkPosition.CompressAxis_CPosition_P3 = FormUtil.GetIntValue(txtComP3);
ktkPosition.UpDownAxis_OLPosition_P5 = FormUtil.GetIntValue(txtUpDownP5);
ktkPosition.UpDownAxis_OHPosition_P6 = FormUtil.GetIntValue(txtUpDownP6);
ktkPosition.CompressAxis_Position_P2 = FormUtil.GetIntValue(txtComP2);
ktkPosition.InOutAxis_DoorPosition_P2 = FormUtil.GetIntValue(txtInOutP2);
//ktkPosition.UpDownAxis_DoorIPosition_P2 = FormUtil.GetIntValue(txtUpDownP2);
......@@ -803,7 +811,14 @@ namespace OnlineStore.ACSingleStore
AxisABSMove(store.Config.UpDown_Axis, value, store.Config.UpDownAxis_P6_Speed);
}
}
private void btnUpDownP9_Click(object sender, EventArgs e)
{
if (InOutIsIsP1())
{
int value = FormUtil.GetIntValue(txtUpDownP9);
AxisABSMove(store.Config.UpDown_Axis, value, store.Config.UpDownAxis_P5_Speed);
}
}
private void btnMiddleP1_Click(object sender, EventArgs e)
{
if (InOutIsIsP1())
......
......@@ -32,3 +32,5 @@
20200408
入库时仓门口必须有料。
20200616
盘点
......@@ -95,25 +95,25 @@ namespace OnlineStore.DeviceLibrary
{
// Create new modbus master and add event functions
aioBox = new AIOBOX();
aioBox.LogPath(Application.StartupPath + @"\logs\aio\", LogType.OnlyError);
aioBox.SetType(Box_Type.DI, DILength, Box_Type.DO, DOLength);
//aioBox.LogPath(Application.StartupPath + @"\logs\aio\", LogType.OnlyError);
aioBox.IP = ioIp;
// bool rtn = aioBox.AutoIP(ioIp);
aioBox.SetInput(Asa.IOModule.Box_Type.DI, DILength);
aioBox.SetOutput(Asa.IOModule.Box_Type.DO, DOLength);
// aioBox.SetInput(Asa.IOModule.Box_Type.DI, DILength);
// aioBox.SetOutput(Asa.IOModule.Box_Type.DO, DOLength);
//DI主动上传
aioBox.AutoReadInput(true, DIMS);
aioBox.AutoReadOutput(false, DOMS);
// aioBox.AutoReadInput(true, DIMS);
// aioBox.AutoReadOutput(false, DOMS);
aioBox.DI_Changed_Event += AioBox_DI_Changed_Event; ;
aioBox.DO_Changed_Event += AioBox_DO_Changed_Event;
LogUtil.info("开始连接:" + logName + ":" + aioBox.ErrInfo);
aioBox.Connect();
bool conRes = aioBox.Connect();
LogUtil.info("开始连接:" + logName + ":" + conRes.ToString());
AIOMap.Add(ioIp, aioBox);
Thread.Sleep(5);
//读取所有的DO
......@@ -143,6 +143,7 @@ namespace OnlineStore.DeviceLibrary
try
{
UpdateAllDI(box.IP, sta);
// LogUtil.info("ReadAllDI [" + box.IP + "]:" + string.Join(" ", sta));
}
catch (Exception ex)
{
......@@ -286,7 +287,7 @@ namespace OnlineStore.DeviceLibrary
bool result = aioBox.WriteDO(StartAddress, GetBox_Sta(onOff));
if (!result)
{
LogUtil.error("AIO WriteSingleDO [" + ioIp + "] [" + StartAddress + "] 失败:" + aioBox.ErrInfo);
LogUtil.error("AIO WriteSingleDO [" + ioIp + "] [" + StartAddress + "] 失败:");
}
}
else
......
......@@ -71,6 +71,7 @@ PRO,ᣨ2P5ٶ,UpDownAxis_P5_Speed,1000,,,,,,,,,,,
PRO,升降轴(轴2)P6速度,UpDownAxis_P6_Speed,100,,,,,,,,,,,
PRO,升降轴(轴2)P7速度,UpDownAxis_P7_Speed,100,,,,,, ,,,,,
PRO,升降轴(轴2)P8速度,UpDownAxis_P8_Speed,100,,,,,,,,,,,
PRO,升降轴(轴2)P9速度,UpDownAxis_P9_Speed,50,,,,,,,,,,,
PRO,旋转轴(轴1)P1速度,MiddleAxis_P1_Speed,500,,,,,,,,,,,
PRO,旋转轴(轴1)P2速度,MiddleAxis_P2_Speed,500,,,,,,,,,,,
PRO,进出轴(轴3)P1速度,InOutAxis_P1_Speed,500,,,,,,,,,,,
......
......@@ -2,7 +2,7 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Threading;
using OnlineStore.Common;
using OnlineStore.LoadCSVLibrary;
......@@ -27,28 +27,69 @@ namespace OnlineStore.DeviceLibrary
}
if (StoreMove.MoveStep == StoreMoveStep.SC_01_InOutAxisHome)
{
StoreMove.NextMoveStep(StoreMoveStep.SC_02_MoveToBag);
CheckPositionLog("盘点定位:SC_02_MoveToBag,旋转轴 至P3(料叉背向库位点)升降轴到P6(库位高点) ");
StoreMove.NextMoveStep(StoreMoveStep.SC_02_MoveToLBag);
ACAxisMove(Config.Middle_Axis, moveP.Middle_P3, Config.MiddleAxis_P2_Speed);
ACAxisMove(Config.UpDown_Axis, moveP.UpDown_P6, Config.UpDownAxis_P6_Speed);
int outCount = ACServerManager.GetActualtPosition(Config.UpDown_Axis.DeviceName, Config.UpDown_Axis.GetAxisValue());
int disCount = Math.Abs(outCount - moveP.UpDown_P5);
//CheckPositionLog("升降轴当前位置与目标位置距离为(高低速距离阈值为150000)" + disCount.ToString());
if (disCount > 150000)
{
ACAxisMove(Config.UpDown_Axis, moveP.UpDown_P5, Config.UpDownAxis_P5_Speed);
CheckPositionLog(" 旋转轴 至P3(料叉背向库位点)升降轴到P5(库位低点) UpDownAxis_P5_Speed=" + Config.UpDownAxis_P5_Speed.ToString());
}
else
{
ACAxisMove(Config.UpDown_Axis, moveP.UpDown_P5, Config.UpDownAxis_P6_Speed);
CheckPositionLog(" 旋转轴 至P3(料叉背向库位点)升降轴到P5(库位低点) UpDownAxis_P6_Speed=" + Config.UpDownAxis_P6_Speed.ToString());
}
}
else if (StoreMove.MoveStep == StoreMoveStep.SC_02_MoveToLBag)
{
StoreMove.NextMoveStep(StoreMoveStep.SC_03_MoveToHBag);
CheckPositionLog(" 升降轴到库位高点P9, UpDownAxis_P9_Speed=" + Config.UpDownAxis_P9_Speed.ToString());
ACAxisMove(Config.UpDown_Axis, moveP.UpDown_P9, Config.UpDownAxis_P9_Speed);
StoreMove.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.CheckPos, IO_VALUE.HIGH));
StoreMove.OneWaitCanEndStep = true;
}
else if (StoreMove.MoveStep == StoreMoveStep.SC_02_MoveToBag)
else if (StoreMove.MoveStep == StoreMoveStep.SC_03_MoveToHBag)
{
ACServerManager.SuddenStop(Config.UpDown_Axis.DeviceName, Config.UpDown_Axis.GetAxisValue());
StoreMove.NextMoveStep(StoreMoveStep.SC_04_Inventory);
StoreMove.WaitList.Add(WaitResultInfo.WaitTime(2000));
int outCount = ACServerManager.GetActualtPosition(Config.UpDown_Axis);
int errorCount = Math.Abs(outCount - moveP.UpDown_P9);
if (errorCount <= Config.UpDown_Axis.CanErrorCountMax)
{
CheckPositionLog(" 升降轴到目标位置停止, 当前位置=" + ACServerManager.GetActualtPosition(Config.UpDown_Axis));
}
else
{
CheckPositionLog(" 升降轴未到目标停止, 当前位置=" + ACServerManager.GetActualtPosition(Config.UpDown_Axis));
}
// if (ACAxisMoveIsEnd(Config.UpDown_Axis, moveP.UpDown_P9,Config.UpDownAxis_P9_Speed, out string msg))
//{
//}
//else
//{
// //IsExist = true;
// //IsExist = IOManager.IOValue(IO_Type.CheckPos).Equals(IO_VALUE.HIGH);
//}
}
else if (StoreMove.MoveStep == StoreMoveStep.SC_04_Inventory)
{
StoreMove.NextMoveStep(StoreMoveStep.SC_03_Inventory);
IsExist = IOManager.IOValue(IO_Type.CheckPos).Equals(IO_VALUE.HIGH);
Dictionary<string, string> paramMap = new Dictionary<string, string>();
paramMap.Add("cid", CID);//cid = 料仓CID
paramMap.Add("pos", StoreMove.MoveParam.PosInfo.PosId); // 库位
paramMap.Add("hasReel", IsExist.ToString()); // 是否有料
string server =StoreManager.GetAddr(StoreManager.Addr_posReelCheck, paramMap);
string server = StoreManager.GetAddr(StoreManager.Addr_posReelCheck, paramMap);
string resultStr = HttpHelper.Post(server, "");
CheckPositionLog("盘点仓位: [CID=" + CID + "] [" + StoreMove.MoveParam.PosInfo.PosId + "] [IO_Type.CheckPos=" + IsExist.ToString() + "] [resultStr=" + resultStr + "]");
StoreMove.WaitList.Add(WaitResultInfo.WaitTime(1000));
CheckPositionLog("盘点仓位:SC_03_Inventory [CID="+CID+"] [" + StoreMove.MoveParam.PosInfo.PosId + "] [IO_Type.CheckPos=" + IsExist.ToString() + "] [resultStr=" + resultStr + "]");
}
else if (StoreMove.MoveStep == StoreMoveStep.SC_03_Inventory)
{
StoreMove.EndMove();
storeRunStatus = StoreRunStatus.Runing;
//设备连接,盘点后,BOX恢复原始状态
......
......@@ -73,6 +73,7 @@ namespace OnlineStore.DeviceLibrary
p.UpDown_P4 = position.UpDownAxis_ILPosition_P4;
p.UpDown_P5 = position.UpDownAxis_OLPosition_P5;
p.UpDown_P6 = position.UpDownAxis_OHPosition_P6;
p.UpDown_P9 = position.UpDownAxis_Position_P9;
param.MoveP = p;
if (param.PosInfo.PlateH <= 0)
......@@ -158,6 +159,7 @@ namespace OnlineStore.DeviceLibrary
else
{
wait.IsEnd = ACAxisMoveIsEnd(wait.AxisInfo, wait.TargetPosition, wait.TargetSpeed, out msg);
}
if (!msg.Equals(""))
{
......@@ -175,10 +177,20 @@ namespace OnlineStore.DeviceLibrary
{
timeOutMs = 650000;
}
if (StoreMove.MoveStep.Equals(StoreMoveStep.SC_03_MoveToHBag))
{
timeOutMs = 20000;
}
if ((!wait.IsEnd) && span.TotalMilliseconds > timeOutMs)
{
ConfigIO io = Config.getWaitIO(wait.IoType);
WarnMsg = StoreName + "[" + StoreMove.MoveType + "][" + StoreMove.MoveStep + "] 等待" + io.DisplayStr + "=" + wait.IoValue + "超时 ";
if (WarnMsg.Contains("CheckPos") || WarnMsg.Contains("X03_点检"))
{
WarnMsg = "";
break;
}
Alarm(StoreAlarmType.IoSingleTimeOut, io.ElectricalDefinition, WarnMsg, StoreMove.MoveType);
LogUtil.error(LOGGER, StoreName + wait.IoType + "等待信号(" + io.DisplayStr + "=" + wait.IoValue + ") 超时", 14);
isOk = false;
......@@ -250,6 +262,12 @@ namespace OnlineStore.DeviceLibrary
{
WarnMsg = StoreName + "[" + StoreMove.MoveType + "][" + StoreMove.MoveStep + "] 等待超时 [" + NotOkMsg
+ "]已等待[" + Math.Round(span.TotalSeconds, 1) + "]秒";
if (WarnMsg.Contains("CheckPos") || WarnMsg.Contains("X03_点检"))
{
WarnMsg = "";
return;
}
LogUtil.error(LOGGER, WarnMsg,100);
Alarm(StoreAlarmType.IoSingleTimeOut, "", WarnMsg, StoreMove.MoveType);
}
......
......@@ -44,7 +44,10 @@ namespace OnlineStore.DeviceLibrary
/// 轴2( 升降轴) 进料口出料缓冲点P8
/// </summary>
public int UpDown_P8 { get; set; }
/// <summary>
/// 升降轴库位盘点点P9
/// </summary>
public int UpDown_P9 { get; set; }
/// <summary>
/// 轴1旋转轴 待机原位点 P1
/// </summary>
......
......@@ -341,13 +341,17 @@ namespace OnlineStore.DeviceLibrary
/// </summary>
SC_01_InOutAxisHome,
/// <summary>
/// 料叉背面移动到库位
/// 料叉背面移动到库位低点
/// </summary>
SC_02_MoveToBag,
SC_02_MoveToLBag,
/// <summary>
/// 料叉背面移动到库位高点
/// </summary>
SC_03_MoveToHBag,
/// <summary>
/// 盘点仓位
/// </summary>
SC_03_Inventory,
SC_04_Inventory,
#endregion
}
......
......@@ -44,6 +44,12 @@ namespace OnlineStore.LoadCSVLibrary
/// </summary>
[CSVAttribute("升降轴库位入料缓冲点P4")]
public int UpDownAxis_ILPosition_P4 { get; set; }
/// <summary>
/// 升降轴库位盘点点P9
/// </summary>
[CSVAttribute("升降轴库位盘点点P9")]
public int UpDownAxis_Position_P9 { get; set; }
/// <summary>
/// 进出轴(库位点取料点)P3
......
......@@ -209,6 +209,11 @@ namespace OnlineStore.LoadCSVLibrary
public int UpDownAxis_P8_Speed { get; set; }
/// <summary>
/// PRO 升降轴(轴2)P9速度 UpDownAxis_P9_Speed
/// </summary>
[ConfigProAttribute("UpDownAxis_P9_Speed")]
public int UpDownAxis_P9_Speed { get; set; }
/// <summary>
/// PRO 旋转轴(轴1)P1速度 MiddleAxis_P1_Speed
/// </summary>
[ConfigProAttribute("MiddleAxis_P1_Speed")]
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!