Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
孙克
/
RC1250-ACPackingStore
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit 1c633ffd
由
LN
编写于
2019-11-18 14:03:56 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
1
1 个父辈
b5cb8691
显示空白字符变更
内嵌
并排
正在显示
13 个修改的文件
包含
357 行增加
和
359 行删除
source/ACPackingStore/FrmBox.cs
source/ACPackingStore/FrmStore.Designer.cs
source/ACPackingStore/FrmStore.cs
source/ACPackingStore/positionTool/FrmPositionTool.cs
source/ACPackingStore/记录.txt
source/DeviceLibrary/ACPackingStore/AC_BOX_Bean.cs
source/DeviceLibrary/ACPackingStore/AC_BOX_Bean_Partial.cs
source/DeviceLibrary/ACPackingStore/AC_BOX_Bean_Shelf.cs
source/DeviceLibrary/ACPackingStore/PackingStoreBean.cs
source/DeviceLibrary/StoreConfig/BoxConfig_2.csv
source/DeviceLibrary/store/AutoInoutInfo.cs
source/DeviceLibrary/store/StoreStep.cs
source/DeviceLibrary/store/model/StoreMoveInfo.cs
source/ACPackingStore/FrmBox.cs
查看文件 @
1c633ff
...
...
@@ -588,29 +588,24 @@ namespace OnlineStore.ACPackingStore
{
if
(
BoxBean
.
AutoInout
.
autoNext
)
{
BoxBean
.
AutoInout
.
autoNext
=
false
;
BoxBean
.
AutoInout
.
StopAuto
()
;
btnStartAuTo
.
Text
=
"开始自动出入库"
;
}
else
{
DialogResult
res
=
MessageBox
.
Show
(
"确定开始自动出入库?"
,
"提示"
,
MessageBoxButtons
.
YesNo
);
if
(
res
.
Equals
(
DialogResult
.
Yes
))
if
(
res
.
Equals
(
DialogResult
.
Yes
)
&&
cmbPosition
.
SelectedIndex
>=
0
)
{
BoxBean
.
AutoInout
.
autoNext
=
true
;
int
jiange
=
FormUtil
.
GetIntValue
(
txtJiange
);
BoxBean
.
AutoInout
.
Jiange
=
jiange
;
if
(
cmbPosition
.
SelectedIndex
>=
0
)
{
int
currIndex
=
cmbPosition
.
SelectedIndex
;
BoxBean
.
AutoInout
.
positionIndex
=
currIndex
;
BoxBean
.
AutoInout
.
startIndex
=
currIndex
;
BoxBean
.
AutoInout
.
shelfPosId
=
cmbShelfPosition
.
Text
;
BoxBean
.
AutoInout
.
StartAuto
(
jiange
,
currIndex
,
cmbShelfPosition
.
Text
);
string
poText
=
cmbPosition
.
Text
;
BoxBean
.
AutoInout
.
autoMsg
=
"自动出库:"
+
poText
;
LogUtil
.
info
(
LOGGER
,
BoxBean
.
Name
+
"开启自动出入库模式,开始位置【"
+
poText
+
"】(索引="
+
currIndex
+
"),间隔="
+
jiange
+
",入库开始!"
);
//BoxBean.StartOutStoreMove(new InOutStoreParam("", poText));
BoxBean
.
StartInStoreMove
(
new
InOutParam
(
""
,
poText
,
BoxBean
.
AutoInout
.
shelfPosId
));
}
BoxBean
.
StartInStoreMove
(
new
InOutParam
(
""
,
poText
,
cmbShelfPosition
.
Text
));
btnStartAuTo
.
Text
=
"停止自动出入库"
;
}
}
...
...
source/ACPackingStore/FrmStore.Designer.cs
查看文件 @
1c633ff
...
...
@@ -121,6 +121,7 @@
this
.
chkDebug
.
TabIndex
=
194
;
this
.
chkDebug
.
Text
=
"开启DEBUG日志"
;
this
.
chkDebug
.
UseVisualStyleBackColor
=
true
;
this
.
chkDebug
.
CheckedChanged
+=
new
System
.
EventHandler
(
this
.
chkDebug_CheckedChanged
);
//
// chbAutoRun
//
...
...
source/ACPackingStore/FrmStore.cs
查看文件 @
1c633ff
...
...
@@ -408,5 +408,11 @@ namespace OnlineStore.ACPackingStore
LogUtil
.
info
(
"去掉:启用蜂鸣器"
);
}
}
private
void
chkDebug_CheckedChanged
(
object
sender
,
EventArgs
e
)
{
LogUtil
.
debug_opened
=
chkDebug
.
Checked
;
LogUtil
.
info
(
"debug_opened:"
+
chkDebug
.
Checked
);
}
}
}
source/ACPackingStore/positionTool/FrmPositionTool.cs
查看文件 @
1c633ff
...
...
@@ -34,7 +34,7 @@ namespace OnlineStore.ACPackingStore
this
.
SlvAddr
=
slvAddr
;
this
.
IoIp
=
ioIp
;
this
.
IoIndex
=
ioIndex
;
boxName
=
boxName
.
Trim
().
Replace
(
"料仓"
,
""
);
boxName
=
text
.
Trim
().
Replace
(
"料仓"
,
""
);
this
.
Text
=
boxName
+
"_升降轴位置调试"
;
LogName
=
boxName
+
"_升降轴调试:"
;
toolTimer
.
Enabled
=
false
;
...
...
source/ACPackingStore/记录.txt
查看文件 @
1c633ff
...
...
@@ -7,6 +7,4 @@
//温湿度超限报警中超过30分钟 亮 闪 闪
//机器未启动 灭 灭 灭
//机器设备故障(非温湿度)报警 亮 灭 闪
在RC1246-ACPackingStore 项目基础上,
新建分支RC1250-ACPackingStore,作为佳世达流水线单台料仓软件
新建分支RC1250-ACPackingStore,作为佳世达流水线单台包装料料仓软件
source/DeviceLibrary/ACPackingStore/AC_BOX_Bean.cs
查看文件 @
1c633ff
...
...
@@ -27,7 +27,7 @@ namespace OnlineStore.DeviceLibrary
public
string
lastPosId
=
""
;
public
StoreStatus
lastPosIdStatus
=
StoreStatus
.
StoreOnline
;
public
List
<
ConfigMoveAxis
>
moveAxisList
=
new
List
<
ConfigMoveAxis
>();
private
Dictionary
<
string
,
AxisAlarmInfo
>
AxisAlarmCodeMap
=
new
Dictionary
<
string
,
AxisAlarmInfo
>();
//
private Dictionary<string, AxisAlarmInfo> AxisAlarmCodeMap = new Dictionary<string, AxisAlarmInfo>();
public
List
<
string
>
PositionNumList
=
new
List
<
string
>();
public
List
<
string
>
ShelfPosList
=
new
List
<
string
>();
/// <summary>
...
...
@@ -121,14 +121,14 @@ namespace OnlineStore.DeviceLibrary
moveAxisList
.
Add
(
Config
.
Middle_Axis
);
moveAxisList
.
Add
(
Config
.
UpDown_Axis
);
moveAxisList
.
Add
(
Config
.
InOut_Axis
);
moveAxisList
.
Add
(
Config
.
Comp_Axis
);
this
.
AxisAlarmCodeMap
=
new
Dictionary
<
string
,
AxisAlarmInfo
>();
this
.
AxisAlarmCodeMap
.
Add
(
Config
.
UpDown_Axis
.
GetNameStr
(),
new
AxisAlarmInfo
());
this
.
AxisAlarmCodeMap
.
Add
(
Config
.
InOut_Axis
.
GetNameStr
(),
new
AxisAlarmInfo
());
this
.
AxisAlarmCodeMap
.
Add
(
this
.
Config
.
Middle_Axis
.
GetNameStr
(),
new
AxisAlarmInfo
());
//
this.AxisAlarmCodeMap = new Dictionary<string, AxisAlarmInfo>();
//
this.AxisAlarmCodeMap.Add(Config.UpDown_Axis.GetNameStr(), new AxisAlarmInfo());
//
this.AxisAlarmCodeMap.Add(Config.InOut_Axis.GetNameStr(), new AxisAlarmInfo());
//
this.AxisAlarmCodeMap.Add(this.Config.Middle_Axis.GetNameStr(), new AxisAlarmInfo());
moveAxisList
.
Add
(
Config
.
Comp_Axis
);
this
.
AxisAlarmCodeMap
.
Add
(
this
.
Config
.
Comp_Axis
.
GetNameStr
(),
new
AxisAlarmInfo
());
//this.AxisAlarmCodeMap.Add(this.Config.Comp_Axis.GetNameStr(), new AxisAlarmInfo());
}
/// <summary>
...
...
@@ -138,7 +138,7 @@ namespace OnlineStore.DeviceLibrary
{
LogInfo
(
"开始启动,启动时间:"
+
StartTime
.
ToString
());
AutoInout
.
autoNext
=
false
;
AutoInout
.
StopAuto
()
;
mainTimer
.
Enabled
=
false
;
alarmType
=
StoreAlarmType
.
None
;
...
...
@@ -206,9 +206,6 @@ namespace OnlineStore.DeviceLibrary
MoveInfo
.
NextMoveStep
(
StoreMoveStep
.
BOX_M_H_TOP1_InOutToP1
);
LogInfo
(
"到待机状态,进出轴到P1,判断叉子没有料盘"
);
ACAxisMove
(
Config
.
InOut_Axis
,
Config
.
InOutAxis_P1_Position
,
Config
.
InOutAxis_P1_Speed
);
//ComBeforeHomeMove();
//判断叉子没有料盘
//StoreMove.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.TrayCheck_Fixture, IO_VALUE.LOW));
}
public
override
void
Reset
(
bool
isNeedClearAuto
=
true
)
...
...
@@ -220,13 +217,13 @@ namespace OnlineStore.DeviceLibrary
//复位之前先停止运行
if
(
isNeedClearAuto
)
{
AutoInout
.
autoNext
=
false
;
AutoInout
.
StopAuto
()
;
}
ACServerManager
.
SuddenStop
(
Config
.
Middle_Axis
.
DeviceName
,
Config
.
Middle_Axis
.
GetAxisValue
());
ACServerManager
.
SuddenStop
(
Config
.
UpDown_Axis
.
DeviceName
,
Config
.
UpDown_Axis
.
GetAxisValue
());
ACServerManager
.
SuddenStop
(
Config
.
InOut_Axis
.
DeviceName
,
Config
.
InOut_Axis
.
GetAxisValue
());
ACServerManager
.
SuddenStop
(
Config
.
Comp_Axis
.
DeviceName
,
Config
.
Comp_Axis
.
GetAxisValue
());
//
ACServerManager.SuddenStop(Config.Middle_Axis.DeviceName, Config.Middle_Axis.GetAxisValue());
//
ACServerManager.SuddenStop(Config.UpDown_Axis.DeviceName, Config.UpDown_Axis.GetAxisValue());
//
ACServerManager.SuddenStop(Config.InOut_Axis.DeviceName, Config.InOut_Axis.GetAxisValue());
//
ACServerManager.SuddenStop(Config.Comp_Axis.DeviceName, Config.Comp_Axis.GetAxisValue());
isInSuddenDown
=
false
;
isNoAirCheck
=
false
;
alarmType
=
StoreAlarmType
.
None
;
...
...
@@ -284,7 +281,6 @@ namespace OnlineStore.DeviceLibrary
ACAxisMove
(
Config
.
InOut_Axis
,
Config
.
InOutAxis_P1_Position
,
Config
.
InOutAxis_P1_Speed
);
//判断叉子没有料盘
//StoreMove.WaitList.Add(WaitResultInfo.WaitIO(IO_Type.TrayCheck_Fixture, IO_VALUE.LOW));
CloseDoor
();
break
;
case
StoreMoveStep
.
BOX_H_InOutToP1
:
//如果此时轴三还在报警,需要提示错误并等待
...
...
@@ -305,7 +301,7 @@ namespace OnlineStore.DeviceLibrary
LogInfo
(
MoveInfo
.
MoveType
+
": 旋转轴运动到P1,上下轴走到P1,压紧轴到P1!"
);
ACAxisMove
(
Config
.
Middle_Axis
,
Config
.
MiddleAxis_P1
,
Config
.
MiddleAxis_P1_Speed
);
ACAxisMove
(
Config
.
UpDown_Axis
,
Config
.
UpDownAxis_P1
,
Config
.
UpDownAxis_P1_Speed
);
ComMoveToPosition
(
Config
.
CompAxis_P1_Position
,
Config
.
CompAxis_P1_Speed
);
ACAxisMove
(
Config
.
Comp_Axis
,
Config
.
CompAxis_P1_Position
,
Config
.
CompAxis_P1_Speed
);
break
;
case
StoreMoveStep
.
BOX_H_MiddleAxisToP1
:
...
...
@@ -323,15 +319,13 @@ namespace OnlineStore.DeviceLibrary
MoveInfo
.
NextMoveStep
(
StoreMoveStep
.
BOX_M_H_TOP1_CompressHome
);
LogInfo
(
"到待机状态,压紧轴回原点,关闭舱门"
);
ACAxisHomeMove
(
Config
.
Comp_Axis
);
//关闭舱门
CloseDoor
();
break
;
case
StoreMoveStep
.
BOX_M_H_TOP1_CompressHome
:
MoveInfo
.
NextMoveStep
(
StoreMoveStep
.
BOX_M_H_TOP1_OtherAxisToP1
);
LogInfo
(
MoveInfo
.
MoveType
+
": 旋转轴运动到P1,上下轴走到P1,压紧轴到P1!"
);
ACAxisMove
(
Config
.
Middle_Axis
,
Config
.
MiddleAxis_P1
,
Config
.
MiddleAxis_P1_Speed
);
ACAxisMove
(
Config
.
UpDown_Axis
,
Config
.
UpDownAxis_P1
,
Config
.
UpDownAxis_P1_Speed
);
ComMoveToPosition
(
Config
.
CompAxis_P1_Position
,
Config
.
CompAxis_P1_Speed
);
ACAxisMove
(
Config
.
Comp_Axis
,
Config
.
CompAxis_P1_Position
,
Config
.
CompAxis_P1_Speed
);
break
;
case
StoreMoveStep
.
BOX_M_H_TOP1_OtherAxisToP1
:
LogInfo
(
"到待机状态完成"
);
...
...
@@ -348,17 +342,6 @@ namespace OnlineStore.DeviceLibrary
}
}
private
void
ComMoveToPosition
(
int
targetPosition
,
int
targetSpeed
)
{
ACAxisMove
(
Config
.
Comp_Axis
,
targetPosition
,
targetSpeed
);
}
public
void
OpenDoor
(
bool
IsWait
=
true
)
{
}
public
void
CloseDoor
(
bool
IsWait
=
true
)
{
}
/// <summary>
/// 原点返回处理
/// </summary>
...
...
@@ -449,8 +432,6 @@ namespace OnlineStore.DeviceLibrary
foreach
(
ConfigMoveAxis
axis
in
moveAxisList
)
{
ACServerManager
.
ServoOff
(
axis
.
DeviceName
,
axis
.
GetAxisValue
());
//关闭串口,等下次重新打开
// ACServerManager.ColsePort(axis.DeviceName);
}
Thread
.
Sleep
(
100
);
IOMove
(
IO_Type
.
Run_Signal
,
IO_VALUE
.
LOW
);
...
...
@@ -463,7 +444,7 @@ namespace OnlineStore.DeviceLibrary
public
override
void
StopRun
()
{
WarnMsg
=
""
;
AutoInout
.
autoNext
=
false
;
AutoInout
.
StopAuto
()
;
IoCheckTimer
.
Enabled
=
false
;
serverConnectTimer
.
Enabled
=
false
;
StopMove
();
...
...
@@ -474,7 +455,7 @@ namespace OnlineStore.DeviceLibrary
IsRun
=
false
;
//LineConnect.StopConnect();
IOManager
.
instance
.
CloseAllDO
();
//
IOManager.instance.CloseAllDO();
LogInfo
(
",停止运行,总运行时间:"
+
span
.
ToString
());
}
...
...
@@ -482,7 +463,7 @@ namespace OnlineStore.DeviceLibrary
public
override
void
Alarm
(
StoreAlarmType
alarmType
,
string
alarmDetial
,
string
alarmMsg
,
StoreMoveType
storeMoveType
)
{
SaveAlarmInfo
(
alarmType
,
alarmDetial
,
alarmMsg
,
storeMoveType
);
AutoInout
.
autoNext
=
false
;
AutoInout
.
StopAuto
()
;
if
(
this
.
alarmType
.
Equals
(
alarmType
)
&&
alarmType
!=
StoreAlarmType
.
SuddenStop
&&
alarmType
!=
StoreAlarmType
.
NoAirCheck
)
{
...
...
@@ -493,25 +474,21 @@ namespace OnlineStore.DeviceLibrary
this
.
alarmType
=
alarmType
;
if
(
alarmType
.
Equals
(
StoreAlarmType
.
AxisAlarm
)
|
alarmType
.
Equals
(
StoreAlarmType
.
AxisMoveError
))
{
LogUtil
.
error
(
Name
+
"轴报警,
关闭刹车,停止运动,关闭轴,
打开报警灯"
);
IOMove
(
IO_Type
.
Axis_Brake
,
IO_VALUE
.
LOW
);
LogUtil
.
error
(
Name
+
"轴报警,
停止运动,
打开报警灯"
);
StopMove
();
}
else
if
(
alarmType
==
StoreAlarmType
.
SuddenStop
)
{
isInSuddenDown
=
true
;
LogUtil
.
error
(
Name
+
"收到急停信号,关闭刹车,停止运动,关闭轴,打开报警灯 "
);
IOMove
(
IO_Type
.
Axis_Brake
,
IO_VALUE
.
LOW
);
MoveInfo
.
EndMove
();
LogUtil
.
error
(
Name
+
"收到急停信号,停止运动, 打开报警灯 "
);
StopMove
();
storeStatus
=
StoreStatus
.
SuddenStop
;
}
else
if
(
alarmType
.
Equals
(
StoreAlarmType
.
NoAirCheck
))
{
isNoAirCheck
=
true
;
LogUtil
.
error
(
Name
+
" 未检测到气压信号 ,打开刹车,停止运动,关闭轴,打开报警灯 "
);
IOMove
(
IO_Type
.
Axis_Brake
,
IO_VALUE
.
LOW
);
MoveInfo
.
EndMove
();
LogUtil
.
error
(
Name
+
" 未检测到气压信号 ,停止运动, 打开报警灯 "
);
StopMove
();
storeStatus
=
StoreStatus
.
SuddenStop
;
}
...
...
@@ -713,11 +690,7 @@ namespace OnlineStore.DeviceLibrary
{
return
;
}
if
(
storeRunStatus
<
StoreRunStatus
.
Runing
)
{
return
;
}
if
(
isInSuddenDown
||
isNoAirCheck
)
if
(
storeRunStatus
<
StoreRunStatus
.
Runing
||
isInSuddenDown
||
isNoAirCheck
)
{
return
;
}
...
...
@@ -812,50 +785,25 @@ namespace OnlineStore.DeviceLibrary
}
TimeSpan
span
=
DateTime
.
Now
-
checkAlarmTime
;
//在回原点,复位,出入库时,检测报警间隔减小
if
(
storeRunStatus
.
Equals
(
StoreRunStatus
.
Busy
)
||
storeRunStatus
.
Equals
(
StoreRunStatus
.
HomeMoving
)
||
storeRunStatus
.
Equals
(
StoreRunStatus
.
Reset
))
{
if
(
span
.
TotalSeconds
<
1
)
if
((
storeRunStatus
.
Equals
(
StoreRunStatus
.
Runing
)
&&
span
.
TotalSeconds
<
3
)
||
span
.
TotalSeconds
<
1
)
{
return
false
;
}
}
else
{
if
(
span
.
TotalSeconds
<
3
)
{
return
false
;
}
}
checkAlarmTime
=
DateTime
.
Now
;
bool
isInAlarm
=
false
;
//Task.Factory.StartNew(delegate
// {
foreach
(
ConfigMoveAxis
axisInfo
in
moveAxisList
)
{
short
axis
=
axisInfo
.
GetAxisValue
();
string
deviceName
=
axisInfo
.
GetNameStr
();
AxisAlarmInfo
info
=
AxisAlarmCodeMap
[
deviceName
];
int
alarmIo
=
ACServerManager
.
GetAlarmStatus
(
deviceName
,
axis
);
if
(
alarmIo
==
1
)
if
(
ACServerManager
.
GetAlarmStatus
(
deviceName
,
axis
)
==
1
)
{
WarnMsg
=
Name
+
" 运动轴"
+
axisInfo
.
Explain
+
"报警"
;
info
.
AlarmIoValue
=
alarmIo
;
Alarm
(
StoreAlarmType
.
AxisAlarm
,
GetAlarmCodeByAxis
(
axisInfo
).
ToString
(),
WarnMsg
,
StoreMoveType
.
None
);
isInAlarm
=
true
;
}
else
{
if
(!
info
.
AlarmIoValue
.
Equals
(
alarmIo
))
{
LogUtil
.
error
(
Name
+
" 运动轴 "
+
axisInfo
.
Explain
+
",报警已解除!"
);
info
.
AlarmIoValue
=
alarmIo
;
}
}
AxisAlarmCodeMap
[
deviceName
]
=
info
;
}
//});
//判断报警状态
return
isInAlarm
;
}
...
...
@@ -864,7 +812,8 @@ namespace OnlineStore.DeviceLibrary
/// </summary>
public
override
void
StopMove
()
{
IOMove
(
IO_Type
.
Axis_Brake
,
IO_VALUE
.
LOW
);
MoveInfo
.
EndMove
();
IOMove
(
IO_Type
.
Axis_Brake
,
IO_VALUE
.
LOW
);
//运动版停止
ACServerManager
.
SuddenStop
(
Config
.
Middle_Axis
.
DeviceName
,
Config
.
Middle_Axis
.
GetAxisValue
());
...
...
@@ -906,8 +855,9 @@ namespace OnlineStore.DeviceLibrary
return
;
}
isInProcess
=
true
;
try
{
//HumitureController.QueryData();
humBean
.
HumidityProcess
(
this
);
if
(
StoreManager
.
IsConnectServer
)
{
try
...
...
@@ -916,16 +866,8 @@ namespace OnlineStore.DeviceLibrary
}
catch
(
Exception
ex
)
{
LogUtil
.
error
(
Name
+
"定时给服务器发送消息出错:"
+
ex
.
ToString
());
}
}
//HumitureController.QueryData();
humBean
.
HumidityProcess
(
this
);
LogUtil
.
error
(
Name
+
"定时SendLineStatus出错:"
+
ex
.
ToString
());
}
catch
(
Exception
ex
)
{
LogUtil
.
error
(
Name
+
"server_connect_timer_Tick出错:"
+
ex
.
ToString
());
}
isInProcess
=
false
;
}
...
...
@@ -1042,7 +984,7 @@ namespace OnlineStore.DeviceLibrary
}
else
if
(
resultOperation
.
op
.
Equals
(
5
))
{
humBean
.
ProcessHumidityCMD
(
resultOperation
);
humBean
.
ProcessHumidityCMD
(
resultOperation
);
}
else
{
...
...
@@ -1160,7 +1102,5 @@ namespace OnlineStore.DeviceLibrary
}
#
endregion
}
}
\ No newline at end of file
source/DeviceLibrary/ACPackingStore/AC_BOX_Bean_Partial.cs
查看文件 @
1c633ff
...
...
@@ -142,12 +142,11 @@ namespace OnlineStore.DeviceLibrary
private
static
DateTime
lastComRHomeTime
=
DateTime
.
Now
;
private
void
InOutBackToP1
(
int
InOut_P1
)
{
//判断是否在P1,如果是,不需要运行
int
outCount
=
ACServerManager
.
GetActualtPosition
(
Config
.
InOut_Axis
.
DeviceName
,
Config
.
InOut_Axis
.
GetAxisValue
());
int
errorCount
=
Math
.
Abs
(
outCount
-
InOut_P1
);
if
(
errorCount
<=
Config
.
InOut_Axis
.
CanErrorCountMin
)
if
(
ACServerManager
.
isInPosition
(
Config
.
InOut_Axis
,
InOut_P1
))
{
LogInfo
(
"进出轴当前
位置:"
+
outCount
+
",
已经在P1,不需要再回P1"
);
LogInfo
(
"进出轴当前已经在P1,不需要再回P1"
);
}
else
{
...
...
@@ -155,14 +154,24 @@ namespace OnlineStore.DeviceLibrary
}
//StoreMove.WaitList.Add(WaitResultInfo.WaitAxisOrg(Config.InOut_Axis,IO_VALUE.HIGH));
}
#
endregion
#
region
入库
protected
override
void
InStoreProcess
()
{
LineMoveP
moveP
=
MoveInfo
.
MoveParam
.
MoveP
;
if
(
MoveInfo
.
IsInWait
)
{
CheckWait
();
}
if
(
MoveInfo
.
IsInWait
)
{
return
;
}
ShelfInStoreProcess
();
}
private
DateTime
startInStoreTime
=
DateTime
.
Now
;
/// <summary>
/// 开始入库移动移动
...
...
@@ -188,7 +197,12 @@ namespace OnlineStore.DeviceLibrary
storeStatus
=
StoreStatus
.
InStoreExecute
;
MoveInfo
.
NewMove
(
StoreMoveType
.
InStore
,
param
);
SI_02_Move
(
param
.
MoveP
);
//新的料架库位
MoveInfo
.
NextMoveStep
(
StoreMoveStep
.
BI_11_InoutToP1
);
MoveInfo
.
SingleInstore
=
true
;
InOutStoreLog
(
"料架取料:叉子后退到待机点P1, 重置盘信息"
);
ACAxisMove
(
Config
.
InOut_Axis
,
Config
.
InOutAxis_P1_Position
,
Config
.
InOutAxis_P1_Speed
);
ClearLastTrayInfo
();
}
else
...
...
@@ -196,147 +210,147 @@ namespace OnlineStore.DeviceLibrary
LogUtil
.
error
(
Name
+
" 启动【"
+
posId
+
"】入库出错,当前状态,storeStatus="
+
storeRunStatus
);
}
}
private
void
SI_02_Move
(
LineMoveP
moveP
)
{
MoveInfo
.
NextMoveStep
(
StoreMoveStep
.
SI_02_InOutAxisHome
);
InOutStoreLog
(
"入库:SI_02_ 进出轴(叉子)动作至P1,打开舱门"
);
OpenDoor
();
InOutBackToP1
(
moveP
.
InOut_P1
);
}
private
void
SI_05_DeviceToDoor
()
{
MoveInfo
.
NextMoveStep
(
StoreMoveStep
.
SI_05_DeviceToDoor
);
InOutStoreLog
(
"入库:SI_05 叉子进入入料口,进出轴至P2(进料口取料点) "
);
ACAxisMove
(
Config
.
InOut_Axis
,
MoveInfo
.
MoveParam
.
MoveP
.
InOut_P2
,
Config
.
InOutAxis_P2_Speed
);
//NeedCheckSafetyLight = 1;
}
protected
override
void
InStoreProcess
()
{
LineMoveP
moveP
=
MoveInfo
.
MoveParam
.
MoveP
;
if
(
MoveInfo
.
IsInWait
)
{
CheckWait
();
}
if
(
MoveInfo
.
IsInWait
)
{
return
;
}
if
(
MoveInfo
.
MoveStep
==
StoreMoveStep
.
SI_00_TrayCheck
)
{
SI_02_Move
(
moveP
);
}
if
(
MoveInfo
.
MoveStep
==
StoreMoveStep
.
SI_01_LocationCylinderDown
)
{
SI_02_Move
(
moveP
);
}
else
if
(
MoveInfo
.
MoveStep
==
StoreMoveStep
.
SI_02_InOutAxisHome
)
{
MoveInfo
.
NextMoveStep
(
StoreMoveStep
.
SI_03_ReturnHome
);
InOutStoreLog
(
"入库:SI_03 所有轴回到待机点,轴2、轴1 动作到P1,,轴4动作至P3"
);
ComMoveToPosition
(
moveP
.
ComPress_P3
,
Config
.
CompAxis_P3_Speed
);
ACAxisMove
(
Config
.
UpDown_Axis
,
moveP
.
UpDown_P1
,
Config
.
UpDownAxis_P1_Speed
);
ACAxisMove
(
Config
.
Middle_Axis
,
moveP
.
Middle_P1
,
Config
.
MiddleAxis_P1_Speed
);
}
else
if
(
MoveInfo
.
MoveStep
==
StoreMoveStep
.
SI_03_ReturnHome
)
{
MoveInfo
.
NextMoveStep
(
StoreMoveStep
.
SI_04_CompressWare
);
InOutStoreLog
(
"入库:SI_04_CompressWare 压紧物品(有压紧轴的才需要此步骤),压紧轴至P3(压紧前点) 开始"
);
ComMoveToPosition
(
moveP
.
ComPress_P3
,
Config
.
CompAxis_P3_Speed
);
}
else
if
(
MoveInfo
.
MoveStep
==
StoreMoveStep
.
SI_04_CompressWare
)
{
SI_05_DeviceToDoor
();
}
else
if
(
MoveInfo
.
MoveStep
==
StoreMoveStep
.
SI_05_DeviceToDoor
)
{
//NeedCheckSafetyLight = 0;
MoveInfo
.
NextMoveStep
(
StoreMoveStep
.
SI_06_DoorWarToDevice
);
InOutStoreLog
(
"入库:SI_06 拿物品,压紧轴至P2(压紧点)) 升降轴至P7(进料口取料缓冲点) "
);
ComMoveToPosition
(
moveP
.
ComPress_P2
,
Config
.
CompAxis_P2_Speed
);
// ACAxisMove(Config.UpDown_Axis, moveP.UpDown_P7, Config.UpDownAxis_P7_Speed);
}
else
if
(
MoveInfo
.
MoveStep
==
StoreMoveStep
.
SI_06_DoorWarToDevice
)
{
MoveInfo
.
NextMoveStep
(
StoreMoveStep
.
SI_07_DeviceBackFromDoor
);
InOutStoreLog
(
"入库:SI_07 叉子 从入料口抽出,进出轴至P1(待机点) "
);
InOutBackToP1
(
moveP
.
InOut_P1
);
}
else
if
(
MoveInfo
.
MoveStep
==
StoreMoveStep
.
SI_07_DeviceBackFromDoor
)
{
MoveInfo
.
NextMoveStep
(
StoreMoveStep
.
SI_09_MoveToBag
);
InOutStoreLog
(
"入库:SI_09 移动到库位点,旋转轴至P2(库位点),升降轴至P3(库位入库前点) "
);
ACAxisMove
(
Config
.
Middle_Axis
,
moveP
.
Middle_P2
,
Config
.
MiddleAxis_P2_Speed
);
ACAxisMove
(
Config
.
UpDown_Axis
,
moveP
.
UpDown_P3
,
Config
.
UpDownAxis_P3_Speed
);
CloseDoor
(
false
);
}
else
if
(
MoveInfo
.
MoveStep
==
StoreMoveStep
.
SI_08_LocationCylinder_Up
)
{
MoveInfo
.
NextMoveStep
(
StoreMoveStep
.
SI_09_MoveToBag
);
InOutStoreLog
(
"入库:SI_09 移动到库位点,旋转轴至P2(库位点),升降轴至P3(库位入库前点)),关闭舱门 "
);
ACAxisMove
(
Config
.
Middle_Axis
,
moveP
.
Middle_P2
,
Config
.
MiddleAxis_P1_Speed
);
ACAxisMove
(
Config
.
UpDown_Axis
,
moveP
.
UpDown_P3
,
Config
.
UpDownAxis_P3_Speed
);
CloseDoor
(
false
);
}
else
if
(
MoveInfo
.
MoveStep
==
StoreMoveStep
.
SI_09_MoveToBag
)
{
MoveInfo
.
NextMoveStep
(
StoreMoveStep
.
SI_11_DeviceToBag
);
InOutStoreLog
(
"入库:SI_11 叉子进入库位中,进出轴至P3(库位取放料点) "
);
ACAxisMove
(
Config
.
InOut_Axis
,
moveP
.
InOut_P3
,
Config
.
InOutAxis_P3_Speed
);
}
else
if
(
MoveInfo
.
MoveStep
==
StoreMoveStep
.
SI_10_LocationCylinder_Down
)
{
MoveInfo
.
NextMoveStep
(
StoreMoveStep
.
SI_11_DeviceToBag
);
InOutStoreLog
(
"入库:SI_11 叉子进入库位中,进出轴至P3(库位取放料点) "
);
ACAxisMove
(
Config
.
InOut_Axis
,
moveP
.
InOut_P3
,
Config
.
InOutAxis_P3_Speed
);
}
else
if
(
MoveInfo
.
MoveStep
==
StoreMoveStep
.
SI_11_DeviceToBag
)
{
// 5= 入仓位完成(料仓Box把料盘放入对应的库位中,装置还未恢复原始状态)
string
posId
=
MoveInfo
.
MoveParam
!=
null
?
MoveInfo
.
MoveParam
.
PosID
:
""
;
lastPosId
=
posId
;
lastPosIdStatus
=
StoreStatus
.
InStoreEnd
;
storeStatus
=
StoreStatus
.
InStoreEnd
;
//手动发给服务器状态,防止没有手动
//SendLineStatus(StoreID, posId, StoreStatus.InStoreEnd);
MoveInfo
.
NextMoveStep
(
StoreMoveStep
.
SI_12_PutWareToBag
);
InOutStoreLog
(
"入库:SI_12 放下物品,升降轴至P4(库位入料缓冲点),压紧轴至P3(压紧前点) "
);
ComMoveToPosition
(
moveP
.
ComPress_P3
,
Config
.
CompAxis_P3_Speed
);
ACAxisMove
(
Config
.
UpDown_Axis
,
moveP
.
UpDown_P4
,
Config
.
UpDownAxis_P4_Speed
);
//private void SI_02_Move(LineMoveP moveP)
//{
// MoveInfo.NextMoveStep(StoreMoveStep.SI_02_InOutAxisHome);
// InOutStoreLog("入库:SI_02_ 进出轴(叉子)动作至P1,打开舱门");
// OpenDoor();
// InOutBackToP1(moveP.InOut_P1);
//}
//private void SI_05_DeviceToDoor()
//{
// MoveInfo.NextMoveStep(StoreMoveStep.SI_05_DeviceToDoor);
// InOutStoreLog("入库:SI_05 叉子进入入料口,进出轴至P2(进料口取料点) ");
// ACAxisMove(Config.InOut_Axis, MoveInfo.MoveParam.MoveP.InOut_P2, Config.InOutAxis_P2_Speed);
// //NeedCheckSafetyLight = 1;
//}
//protected override void InStoreProcess()
//{
// LineMoveP moveP = MoveInfo.MoveParam.MoveP;
// if (MoveInfo.IsInWait)
// {
// CheckWait();
// }
// if (MoveInfo.IsInWait)
// {
// return;
// }
//if (MoveInfo.MoveStep == StoreMoveStep.SI_00_TrayCheck)
//{
// SI_02_Move(moveP);
//}
//if (MoveInfo.MoveStep == StoreMoveStep.SI_01_LocationCylinderDown)
//{
// SI_02_Move(moveP);
//}
//else if (MoveInfo.MoveStep == StoreMoveStep.SI_02_InOutAxisHome)
//{
// MoveInfo.NextMoveStep(StoreMoveStep.SI_03_ReturnHome);
// InOutStoreLog("入库:SI_03 所有轴回到待机点,轴2、轴1 动作到P1,,轴4动作至P3");
// ACAxisMove(Config.Comp_Axis,moveP.ComPress_P3, Config.CompAxis_P3_Speed);
// ACAxisMove(Config.UpDown_Axis, moveP.UpDown_P1, Config.UpDownAxis_P1_Speed);
// ACAxisMove(Config.Middle_Axis, moveP.Middle_P1, Config.MiddleAxis_P1_Speed);
//}
//else if (MoveInfo.MoveStep == StoreMoveStep.SI_03_ReturnHome)
//{
// MoveInfo.NextMoveStep(StoreMoveStep.SI_04_CompressWare);
// InOutStoreLog("入库:SI_04_CompressWare 压紧物品(有压紧轴的才需要此步骤),压紧轴至P3(压紧前点) 开始");
// ACAxisMove(Config.Comp_Axis,moveP.ComPress_P3, Config.CompAxis_P3_Speed);
//}
//else if (MoveInfo.MoveStep == StoreMoveStep.SI_04_CompressWare)
//{
// SI_05_DeviceToDoor();
//}
//else if (MoveInfo.MoveStep == StoreMoveStep.SI_05_DeviceToDoor)
//{
// //NeedCheckSafetyLight = 0;
// MoveInfo.NextMoveStep(StoreMoveStep.SI_06_DoorWarToDevice);
// InOutStoreLog("入库:SI_06 拿物品,压紧轴至P2(压紧点)) 升降轴至P7(进料口取料缓冲点) ");
// ACAxisMove(Config.Comp_Axis,moveP.ComPress_P2, Config.CompAxis_P2_Speed);
// // ACAxisMove(Config.UpDown_Axis, moveP.UpDown_P7, Config.UpDownAxis_P7_Speed);
//}
//else if (MoveInfo.MoveStep == StoreMoveStep.SI_06_DoorWarToDevice)
//{
// MoveInfo.NextMoveStep(StoreMoveStep.SI_07_DeviceBackFromDoor);
// InOutStoreLog("入库:SI_07 叉子 从入料口抽出,进出轴至P1(待机点) ");
// InOutBackToP1(moveP.InOut_P1);
//}
//else if (MoveInfo.MoveStep == StoreMoveStep.SI_07_DeviceBackFromDoor)
//{
// MoveInfo.NextMoveStep(StoreMoveStep.SI_09_MoveToBag);
// InOutStoreLog("入库:SI_09 移动到库位点,旋转轴至P2(库位点),升降轴至P3(库位入库前点) ");
// ACAxisMove(Config.Middle_Axis, moveP.Middle_P2, Config.MiddleAxis_P2_Speed);
// ACAxisMove(Config.UpDown_Axis, moveP.UpDown_P3, Config.UpDownAxis_P3_Speed);
// CloseDoor(false);
//}
//else if (MoveInfo.MoveStep == StoreMoveStep.SI_08_LocationCylinder_Up)
//{
// MoveInfo.NextMoveStep(StoreMoveStep.SI_09_MoveToBag);
// InOutStoreLog("入库:SI_09 移动到库位点,旋转轴至P2(库位点),升降轴至P3(库位入库前点)),关闭舱门 ");
// ACAxisMove(Config.Middle_Axis, moveP.Middle_P2, Config.MiddleAxis_P1_Speed);
// ACAxisMove(Config.UpDown_Axis, moveP.UpDown_P3, Config.UpDownAxis_P3_Speed);
// CloseDoor(false);
//}
//else if (MoveInfo.MoveStep == StoreMoveStep.SI_09_MoveToBag)
//{
// MoveInfo.NextMoveStep(StoreMoveStep.SI_11_DeviceToBag);
// InOutStoreLog("入库:SI_11 叉子进入库位中,进出轴至P3(库位取放料点) ");
// ACAxisMove(Config.InOut_Axis, moveP.InOut_P3, Config.InOutAxis_P3_Speed);
//}
//else if (MoveInfo.MoveStep == StoreMoveStep.SI_10_LocationCylinder_Down)
//{
// MoveInfo.NextMoveStep(StoreMoveStep.SI_11_DeviceToBag);
// InOutStoreLog("入库:SI_11 叉子进入库位中,进出轴至P3(库位取放料点) ");
// ACAxisMove(Config.InOut_Axis, moveP.InOut_P3, Config.InOutAxis_P3_Speed);
//}
//else if (MoveInfo.MoveStep == StoreMoveStep.SI_11_DeviceToBag)
//{
// // 5= 入仓位完成(料仓Box把料盘放入对应的库位中,装置还未恢复原始状态)
// string posId = MoveInfo.MoveParam != null ? MoveInfo.MoveParam.PosID : "";
// lastPosId = posId;
// lastPosIdStatus = StoreStatus.InStoreEnd;
// storeStatus = StoreStatus.InStoreEnd;
// //手动发给服务器状态,防止没有手动
// //SendLineStatus(StoreID, posId, StoreStatus.InStoreEnd);
}
else
if
(
MoveInfo
.
MoveStep
==
StoreMoveStep
.
SI_12_PutWareToBag
)
{
MoveInfo
.
NextMoveStep
(
StoreMoveStep
.
SI_13_DeviceBackFromBag
);
InOutStoreLog
(
"入库:SI_13 叉子从库位中返回,进出轴动作至P1(待机点) "
);
InOutBackToP1
(
moveP
.
InOut_P1
);
}
else
if
(
MoveInfo
.
MoveStep
==
StoreMoveStep
.
SI_13_DeviceBackFromBag
)
{
MoveInfo
.
NextMoveStep
(
StoreMoveStep
.
SI_14_GoBack
);
InOutStoreLog
(
"入库:SI_14 返回待机点,轴2/轴1/轴4动作至P1(待机点)),检测门关闭"
);
ComMoveToPosition
(
moveP
.
ComPress_P1
,
Config
.
CompAxis_P1_Speed
);
ACAxisMove
(
Config
.
Middle_Axis
,
moveP
.
Middle_P1
,
Config
.
MiddleAxis_P1_Speed
);
ACAxisMove
(
Config
.
UpDown_Axis
,
moveP
.
UpDown_P1
,
Config
.
UpDownAxis_P1_Speed
);
CloseDoor
();
}
else
if
(
MoveInfo
.
MoveStep
==
StoreMoveStep
.
SI_14_GoBack
)
{
TimeSpan
span
=
DateTime
.
Now
-
startInStoreTime
;
string
posId
=
MoveInfo
.
MoveParam
!=
null
?
MoveInfo
.
MoveParam
.
PosID
:
""
;
LogInfo
(
" 【"
+
posId
+
"】 整个入库流程结束,耗时【"
+
FormUtil
.
GetSpanStr
(
span
)
+
"】!"
);
MoveInfo
.
EndMove
();
storeRunStatus
=
StoreRunStatus
.
Runing
;
//设备连接,入库后,BOX恢复原始状态
storeStatus
=
StoreStatus
.
StoreOnline
;
AutoInout
.
InOutEndProcess
(
this
,
StoreMoveType
.
InStore
);
}
else
{
ShelfInStoreProcess
();
}
}
// MoveInfo.NextMoveStep(StoreMoveStep.SI_12_PutWareToBag);
// InOutStoreLog("入库:SI_12 放下物品,升降轴至P4(库位入料缓冲点),压紧轴至P3(压紧前点) ");
// ACAxisMove(Config.Comp_Axis,moveP.ComPress_P3, Config.CompAxis_P3_Speed);
// ACAxisMove(Config.UpDown_Axis, moveP.UpDown_P4, Config.UpDownAxis_P4_Speed);
//}
//else if (MoveInfo.MoveStep == StoreMoveStep.SI_12_PutWareToBag)
//{
// MoveInfo.NextMoveStep(StoreMoveStep.SI_13_DeviceBackFromBag);
// InOutStoreLog("入库:SI_13 叉子从库位中返回,进出轴动作至P1(待机点) ");
// InOutBackToP1(moveP.InOut_P1);
//}
//else if (MoveInfo.MoveStep == StoreMoveStep.SI_13_DeviceBackFromBag)
//{
// MoveInfo.NextMoveStep(StoreMoveStep.SI_14_GoBack);
// InOutStoreLog("入库:SI_14 返回待机点,轴2/轴1/轴4动作至P1(待机点)),检测门关闭");
// ACAxisMove(Config.Comp_Axis,moveP.ComPress_P1, Config.CompAxis_P1_Speed);
// ACAxisMove(Config.Middle_Axis, moveP.Middle_P1, Config.MiddleAxis_P1_Speed);
// ACAxisMove(Config.UpDown_Axis, moveP.UpDown_P1, Config.UpDownAxis_P1_Speed);
// CloseDoor();
//}
//else if (MoveInfo.MoveStep == StoreMoveStep.SI_14_GoBack)
//{
// TimeSpan span = DateTime.Now - startInStoreTime;
// string posId = MoveInfo.MoveParam != null ? MoveInfo.MoveParam.PosID : "";
// LogInfo(" 【" + posId + "】 整个入库流程结束,耗时【" + FormUtil.GetSpanStr(span) + "】!");
// MoveInfo.EndMove();
// storeRunStatus = StoreRunStatus.Runing;
// //设备连接,入库后,BOX恢复原始状态
// storeStatus = StoreStatus.StoreOnline;
// AutoInout.InOutEndProcess(this, StoreMoveType.InStore);
//}
//else
// {
// ShelfInStoreProcess();
// }
//}
#
endregion
...
...
@@ -401,7 +415,7 @@ namespace OnlineStore.DeviceLibrary
{
MoveInfo
.
NextMoveStep
(
StoreMoveStep
.
SO_03_ToBagPosition
);
InOutStoreLog
(
"出库:SO_03 走到库位,压紧轴至P3(压紧前点) ,旋转轴至P2(库位点),升降轴至P5(库位出库前点)"
);
ComMoveToPosition
(
moveP
.
ComPress_P3
,
Config
.
CompAxis_P3_Speed
);
ACAxisMove
(
Config
.
Comp_Axis
,
moveP
.
ComPress_P3
,
Config
.
CompAxis_P3_Speed
);
ACAxisMove
(
Config
.
Middle_Axis
,
MoveInfo
.
MoveParam
.
MoveP
.
Middle_P2
,
Config
.
MiddleAxis_P2_Speed
);
ACAxisMove
(
Config
.
UpDown_Axis
,
MoveInfo
.
MoveParam
.
MoveP
.
UpDown_P5
,
Config
.
UpDownAxis_P5_Speed
);
}
...
...
@@ -416,7 +430,7 @@ namespace OnlineStore.DeviceLibrary
MoveInfo
.
NextMoveStep
(
StoreMoveStep
.
SO_05_BagWareToDevice
);
InOutStoreLog
(
"出库:SO_05 拿起物品,升降轴至P6(库位出料缓冲点),压紧轴至P2(压紧点) "
);
ComMoveToPosition
(
moveP
.
ComPress_P2
,
Config
.
CompAxis_P2_Speed
);
ACAxisMove
(
Config
.
Comp_Axis
,
moveP
.
ComPress_P2
,
Config
.
CompAxis_P2_Speed
);
ACAxisMove
(
Config
.
UpDown_Axis
,
moveP
.
UpDown_P6
,
Config
.
UpDownAxis_P6_Speed
);
}
else
if
(
MoveInfo
.
MoveStep
==
StoreMoveStep
.
SO_05_BagWareToDevice
)
...
...
@@ -476,7 +490,7 @@ namespace OnlineStore.DeviceLibrary
{
MoveInfo
.
NextMoveStep
(
StoreMoveStep
.
SO_11_DevicePutWare
);
InOutStoreLog
(
"出库:SO_11 放下物品,压紧轴到P1,升降轴至P101 "
);
ComMoveToPosition
(
moveP
.
ComPress_P1
,
Config
.
CompAxis_P1_Speed
);
ACAxisMove
(
Config
.
Comp_Axis
,
moveP
.
ComPress_P1
,
Config
.
CompAxis_P1_Speed
);
ACAxisMove
(
Config
.
UpDown_Axis
,
moveP
.
UpDown_LP101
,
Config
.
UpDownAxis_P101_Speed
);
}
else
if
(
MoveInfo
.
MoveStep
==
StoreMoveStep
.
SO_11_DevicePutWare
)
...
...
source/DeviceLibrary/ACPackingStore/AC_BOX_Bean_Shelf.cs
查看文件 @
1c633ff
...
...
@@ -40,6 +40,12 @@ namespace OnlineStore.DeviceLibrary
storeRunStatus
=
StoreRunStatus
.
Busy
;
storeStatus
=
StoreStatus
.
InStoreExecute
;
EmprtShelfList
=
new
Queue
<
string
>();
//读取RFID
RFIDData
data
=
RFIDManager
.
ReadData
(
Config
.
RFID_IP
);
//TODO 判断料架是否正确
MoveInfo
.
NewMove
(
StoreMoveType
.
InStore
,
new
InOutParam
());
MoveInfo
.
MoveParam
.
MoveP
=
new
LineMoveP
();
...
...
@@ -129,7 +135,8 @@ namespace OnlineStore.DeviceLibrary
}
else
{
//所有料盘已取料完成
//所有料盘已取料完成,送出料架
StartSendShelfOut
();
}
}
else
if
(
MoveInfo
.
MoveStep
.
Equals
(
StoreMoveStep
.
BI_11_InoutToP1
))
...
...
@@ -180,17 +187,6 @@ namespace OnlineStore.DeviceLibrary
}
else
if
(
MoveInfo
.
MoveStep
.
Equals
(
StoreMoveStep
.
BI_17_InoutBack
))
{
MoveInfo
.
NextMoveStep
(
StoreMoveStep
.
BI_18_ScanCode
);
InOutStoreLog
(
"料架取料:记录宽度,开始扫码"
);
MoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitTime
(
5000
));
MoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitCode
());
Task
.
Factory
.
StartNew
(
delegate
{
IOMove
(
IO_Type
.
Camera_Led
,
IO_VALUE
.
HIGH
);
LastScanCodes
=
CodeManager
.
CameraScan
();
IOMove
(
IO_Type
.
Camera_Led
,
IO_VALUE
.
LOW
);
});
if
(
IOValue
(
IO_Type
.
TrayCheck_3
).
Equals
(
IO_VALUE
.
HIGH
)
&&
IOValue
(
IO_Type
.
TrayCheck_4
).
Equals
(
IO_VALUE
.
HIGH
))
{
LastWidth
=
13
;
...
...
@@ -203,6 +199,26 @@ namespace OnlineStore.DeviceLibrary
{
LogUtil
.
info
(
"未检测到识别区料盘检测信号, 默认高度为7"
);
}
if
(
MoveInfo
.
SingleInstore
)
{
//单盘入库,不需要扫码
StartMoveToBag
();
}
else
{
MoveInfo
.
NextMoveStep
(
StoreMoveStep
.
BI_18_ScanCode
);
InOutStoreLog
(
"料架取料:记录宽度,开始扫码"
);
MoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitTime
(
5000
));
MoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitCode
());
Task
.
Factory
.
StartNew
(
delegate
{
IOMove
(
IO_Type
.
Camera_Led
,
IO_VALUE
.
HIGH
);
LastScanCodes
=
CodeManager
.
CameraScan
();
IOMove
(
IO_Type
.
Camera_Led
,
IO_VALUE
.
LOW
);
});
}
}
else
if
(
MoveInfo
.
MoveStep
.
Equals
(
StoreMoveStep
.
BI_18_ScanCode
))
{
...
...
@@ -238,10 +254,7 @@ namespace OnlineStore.DeviceLibrary
#
region
入库逻辑
else
if
(
MoveInfo
.
MoveStep
.
Equals
(
StoreMoveStep
.
BI_20_SetInstoreParam
))
{
MoveInfo
.
NextMoveStep
(
StoreMoveStep
.
BI_21_MoveToBag
);
InOutStoreLog
(
"入库:移动到库位点,轴1( 转盘) 至P2( 库位点)轴2(上下) 至P3(库位入库前点)"
);
ACAxisMove
(
Config
.
Middle_Axis
,
moveP
.
Middle_P2
,
Config
.
MiddleAxis_P2_Speed
);
ACAxisMove
(
Config
.
UpDown_Axis
,
moveP
.
UpDown_P3
,
Config
.
UpDownAxis_P3_Speed
);
StartMoveToBag
();
}
else
if
(
MoveInfo
.
MoveStep
.
Equals
(
StoreMoveStep
.
BI_21_MoveToBag
))
{
...
...
@@ -262,7 +275,7 @@ namespace OnlineStore.DeviceLibrary
//手动发给服务器状态,防止没有手动
//SendLineStatus(StoreID, posId, StoreStatus.InStoreEnd);
ComMoveToPosition
(
moveP
.
ComPress_P3
,
Config
.
CompAxis_P3_Speed
);
ACAxisMove
(
Config
.
Comp_Axis
,
moveP
.
ComPress_P3
,
Config
.
CompAxis_P3_Speed
);
ACAxisMove
(
Config
.
UpDown_Axis
,
moveP
.
UpDown_P4
,
Config
.
UpDownAxis_P4_Speed
);
}
else
if
(
MoveInfo
.
MoveStep
.
Equals
(
StoreMoveStep
.
BI_23_PutWareToBag
))
...
...
@@ -275,7 +288,7 @@ namespace OnlineStore.DeviceLibrary
{
MoveInfo
.
NextMoveStep
(
StoreMoveStep
.
BI_25_GoBack
);
InOutStoreLog
(
"入库:返回待机点,轴2/轴1/轴4动作至P1( 待机点))开始"
);
ComMoveToPosition
(
moveP
.
ComPress_P1
,
Config
.
CompAxis_P1_Speed
);
ACAxisMove
(
Config
.
Comp_Axis
,
moveP
.
ComPress_P1
,
Config
.
CompAxis_P1_Speed
);
ACAxisMove
(
Config
.
Middle_Axis
,
moveP
.
Middle_P1
,
Config
.
MiddleAxis_P1_Speed
);
ACAxisMove
(
Config
.
UpDown_Axis
,
moveP
.
UpDown_P1
,
Config
.
UpDownAxis_P1_Speed
);
}
...
...
@@ -326,12 +339,26 @@ namespace OnlineStore.DeviceLibrary
InOutStoreLog
(
"料架入库:开始循环逐个取料盘,扫码入库"
);
}
#
endregion
//料架送出逻辑
else
if
(
MoveInfo
.
MoveStep
>=
StoreMoveStep
.
BS_01_TopCylinder_Down
&&
MoveInfo
.
MoveStep
>=
StoreMoveStep
.
BS_09_CloseDoor
)
{
SendShelfProcess
();
}
else
{
LogInfo
(
" 入库,moveStatus="
+
MoveInfo
.
MoveStep
+
",没有对应的处理!"
);
}
}
private
void
StartMoveToBag
()
{
MoveInfo
.
NextMoveStep
(
StoreMoveStep
.
BI_21_MoveToBag
);
InOutStoreLog
(
"入库:移动到库位点,轴1( 转盘) 至P2( 库位点)轴2(上下) 至P3(库位入库前点)"
);
ACAxisMove
(
Config
.
Middle_Axis
,
MoveInfo
.
MoveParam
.
MoveP
.
Middle_P2
,
Config
.
MiddleAxis_P2_Speed
);
ACAxisMove
(
Config
.
UpDown_Axis
,
MoveInfo
.
MoveParam
.
MoveP
.
UpDown_P3
,
Config
.
UpDownAxis_P3_Speed
);
}
private
void
StartSendTray
(
string
str
=
"扫码失败"
)
{
MoveInfo
.
NextMoveStep
(
StoreMoveStep
.
BI_31_ToNGDoor
);
...
...
@@ -353,44 +380,56 @@ namespace OnlineStore.DeviceLibrary
{
MoveInfo
.
NextMoveStep
(
StoreMoveStep
.
BS_02_LocatinCylinder_Down
);
InOutStoreLog
(
"送出料架:定位气缸下降"
);
CylinderMove
(
MoveInfo
,
IO_Type
.
LocationCylinder_Up
,
IO_Type
.
LocationCylinder_Down
);
}
else
if
(
MoveInfo
.
MoveStep
.
Equals
(
StoreMoveStep
.
BS_02_LocatinCylinder_Down
))
{
MoveInfo
.
NextMoveStep
(
StoreMoveStep
.
BS_03_DoorOpen
);
InOutStoreLog
(
"送出料架:打开仓门"
);
CylinderMove
(
MoveInfo
,
IO_Type
.
EntranceDoor_Close
,
IO_Type
.
EntranceDoor_Open
);
}
else
if
(
MoveInfo
.
MoveStep
.
Equals
(
StoreMoveStep
.
BS_03_DoorOpen
))
{
MoveInfo
.
NextMoveStep
(
StoreMoveStep
.
BS_04_LineBack
);
InOutStoreLog
(
"送出料架:线体反转"
);
IOMove
(
IO_Type
.
Line_Run
,
IO_VALUE
.
LOW
);
IOMove
(
IO_Type
.
Line_BackRun
,
IO_VALUE
.
HIGH
);
}
else
if
(
MoveInfo
.
MoveStep
.
Equals
(
StoreMoveStep
.
BS_04_LineBack
))
{
MoveInfo
.
NextMoveStep
(
StoreMoveStep
.
BS_05_WaitInLineSingle
);
InOutStoreLog
(
"送出料架:等待取料工位无信号,入料口有信号"
);
MoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitIO
(
IO_Type
.
LineTake_Check
,
IO_VALUE
.
LOW
));
MoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitIO
(
IO_Type
.
LineIn_Check
,
IO_VALUE
.
HIGH
));
}
else
if
(
MoveInfo
.
MoveStep
.
Equals
(
StoreMoveStep
.
BS_05_WaitInLineSingle
))
{
MoveInfo
.
NextMoveStep
(
StoreMoveStep
.
BS_06_WaitTime
);
InOutStoreLog
(
"送出料架:再转动300时间"
);
MoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitTime
(
300
));
}
else
if
(
MoveInfo
.
MoveStep
.
Equals
(
StoreMoveStep
.
BS_06_WaitTime
))
{
MoveInfo
.
NextMoveStep
(
StoreMoveStep
.
BS_07_LineStop
);
InOutStoreLog
(
"送出料架:停止转动"
);
IOMove
(
IO_Type
.
Line_Run
,
IO_VALUE
.
LOW
);
IOMove
(
IO_Type
.
Line_BackRun
,
IO_VALUE
.
LOW
);
}
else
if
(
MoveInfo
.
MoveStep
.
Equals
(
StoreMoveStep
.
BS_07_LineStop
))
{
MoveInfo
.
NextMoveStep
(
StoreMoveStep
.
BS_08_CallAGV
);
InOutStoreLog
(
"送出料架:通知调度系统拿走"
);
//TODO
}
else
if
(
MoveInfo
.
MoveStep
.
Equals
(
StoreMoveStep
.
BS_08_CallAGV
))
{
MoveInfo
.
NextMoveStep
(
StoreMoveStep
.
BS_09_CloseDoor
);
InOutStoreLog
(
"送出料架:关闭仓门"
);
CylinderMove
(
MoveInfo
,
IO_Type
.
EntranceDoor_Open
,
IO_Type
.
EntranceDoor_Close
);
}
else
if
(
MoveInfo
.
MoveStep
.
Equals
(
StoreMoveStep
.
BS_09_CloseDoor
))
{
}
}
...
...
source/DeviceLibrary/ACPackingStore/PackingStoreBean.cs
查看文件 @
1c633ff
...
...
@@ -52,6 +52,8 @@ namespace OnlineStore.DeviceLibrary
List
<
string
>
ioList
=
new
List
<
string
>();
AddDeviceName
(
ioList
,
Config
.
DIODeviceNameList
);
List
<
string
>
rfidList
=
new
List
<
string
>();
foreach
(
AC_BOX_Config
config
in
configList
.
Values
)
{
AC_BOX_Bean
equip
=
new
AC_BOX_Bean
(
config
);
...
...
@@ -59,6 +61,8 @@ namespace OnlineStore.DeviceLibrary
AddDeviceName
(
ioList
,
config
.
DIODeviceNameList
);
BoxMap
.
Add
(
config
.
DeviceID
,
equip
);
BoxConfigMap
.
Add
(
config
.
DeviceID
,
config
);
rfidList
.
Add
(
config
.
RFID_IP
);
}
IOManager
.
Init
();
...
...
@@ -69,6 +73,7 @@ namespace OnlineStore.DeviceLibrary
Task
.
Factory
.
StartNew
(
delegate
{
RFIDManager
.
ConnectRFIOList
(
rfidList
);
IOManager
.
instance
.
ConnectionIOList
(
ioList
);
addLastDI
(
IO_Type
.
Airpressure_Check
,
IOValue
(
IO_Type
.
Airpressure_Check
));
addLastDI
(
IO_Type
.
SuddenStop_BTN
,
IOValue
(
IO_Type
.
SuddenStop_BTN
));
...
...
source/DeviceLibrary/StoreConfig/BoxConfig_2.csv
查看文件 @
1c633ff
...
...
@@ -44,8 +44,6 @@ AXIS,(轴三)进出轴,InOut_Axis,3,COM1,0,,,,,
AXIS,(轴四)压紧轴,Comp_Axis,4,COM1,0,,,,,
PRO,升降轴 进料口取料点 P1,UpDownAxis_P1,403000,,,,,,,
PRO,升降轴 进料口出料前点 P2,UpDownAxis_P2,415000,,,,,,,
PRO,升降轴 进料口取料缓冲点 P7,UpDownAxis_DoorOBPosition_P7,415000,,,,,,,
PRO,升降轴 进料口出料缓冲点 P8,UpDownAxis_DoorIBPosition_P8,403000,,,,,,,
PRO,旋转轴(轴1)P1 待机原位点,MiddleAxis_P1,268093,,,,,,,
PRO,进出轴(轴3)P1待机原位点,InOutAxis_P1_Position,1000,,,,,,,
PRO,压紧轴(轴4)P1待机原位点,CompAxis_P1_Position,10000,,,,,,,
...
...
@@ -111,7 +109,6 @@ PRO,(轴三)进出轴停止时可误差的脉冲数的最大值,InoutAxis_ErrorCountMax,1000,,,,,
PRO,出入库多少次,会自动重置旋转轴,Box_ResetMCount,1000,,,,,,,
PRO,出入库多少次,会自动重置所有轴操作,Box_ResetACount,100,,,,,,,
PRO,IO信号超时时间(毫秒),IOSingle_TimerOut,10000,,,,,,,
PRO,是否使用料盘检测信号,IsUse_Tray_Check,0,,,,,, ,
PRO,(轴一)旋转轴最小限位,MiddleAxis_PositionMin,0,,,,,,,
PRO,(轴二)升降轴最小限位,UpdownAxis_PositionMin,0,,,,,,,
PRO,(轴三)进出轴最小限位,InoutAxis_PositionMin,0,,,,,,,
...
...
source/DeviceLibrary/store/AutoInoutInfo.cs
查看文件 @
1c633ff
...
...
@@ -16,11 +16,11 @@ namespace OnlineStore.DeviceLibrary
/// <summary>
/// 自动出入库间隔
/// </summary>
p
ublic
int
Jiange
=
3
;
p
ublic
int
positionIndex
=
0
;
p
rivate
int
Jiange
=
3
;
p
rivate
int
positionIndex
=
0
;
public
string
autoMsg
=
""
;
p
ublic
int
startIndex
=
-
1
;
p
ublic
string
shelfPosId
=
""
;
p
rivate
int
startIndex
=
-
1
;
p
rivate
string
shelfPosId
=
""
;
#
region
出入库参数
/// <summary>
/// 当前出入库的次数,超过配置的数量时,需要自动重置一下,再进行出入库
...
...
@@ -29,6 +29,21 @@ namespace OnlineStore.DeviceLibrary
internal
int
CurrInOutACount
=
0
;
#
endregion
public
void
StartAuto
(
int
jiange
,
int
currIndex
,
string
shelfPosId
)
{
autoNext
=
true
;
Jiange
=
jiange
;
positionIndex
=
currIndex
;
startIndex
=
currIndex
;
this
.
shelfPosId
=
shelfPosId
;
}
public
void
StopAuto
()
{
autoNext
=
false
;
}
internal
void
InOutEndProcess
(
AC_BOX_Bean
boxBean
,
StoreMoveType
storeMoveType
)
{
try
...
...
@@ -70,13 +85,6 @@ namespace OnlineStore.DeviceLibrary
autoMsg
=
"自动出库:"
+
posid
;
boxBean
.
AddWaitOutInfo
(
new
InOutParam
(
""
,
posid
,
shelfPosId
));
}
else
if
(
CurrInOutCount
>=
boxBean
.
Config
.
Box_ResetMCount
)
{
boxBean
.
LogInfo
(
"自动进入下一个出库:posid="
+
posid
+
",当时已经出入库"
+
CurrInOutCount
+
"次,需要重置BOX旋转轴,先把出库信息存入排队列表中"
);
//ResetMiddleAxis(false);
autoMsg
=
"自动出库:"
+
posid
;
boxBean
.
AddWaitOutInfo
(
new
InOutParam
(
""
,
posid
,
shelfPosId
));
}
else
{
boxBean
.
LogInfo
(
"自动进入下一个出库:posid="
+
posid
);
...
...
@@ -113,13 +121,6 @@ namespace OnlineStore.DeviceLibrary
autoMsg
=
"自动入库:"
+
posid
;
boxBean
.
AddWaitOutInfo
(
new
InOutParam
(
"AAAA"
,
posid
,
shelfPosId
));
}
else
if
(
CurrInOutCount
>=
boxBean
.
Config
.
Box_ResetMCount
)
{
boxBean
.
LogInfo
(
"自动进入下一个出库:posid="
+
posid
+
",当时已经出入库"
+
CurrInOutCount
+
"次,需要重置BOX旋转轴,先把出库信息存入排队列表中"
);
//ResetMiddleAxis(false);
autoMsg
=
"自动入库:"
+
posid
;
boxBean
.
AddWaitOutInfo
(
new
InOutParam
(
"AAAA"
,
posid
,
shelfPosId
));
}
else
{
boxBean
.
LogInfo
(
"自动进入下一个入库:posid="
+
posid
);
...
...
source/DeviceLibrary/store/StoreStep.cs
查看文件 @
1c633ff
...
...
@@ -248,67 +248,67 @@ namespace OnlineStore.DeviceLibrary
#
endregion
#
region
料仓内部入库步骤
20500
/// <summary>
/// 入库检测
/// </summary>
SI_00_TrayCheck
=
20500
,
/// <summary>
/// 入库,。定位气缸下降
/// </summary>
SI_01_LocationCylinderDown
=
20501
,
/// <summary>
/// 入库。。进出轴(叉子)先返回P1
/// </summary>
SI_02_InOutAxisHome
=
20502
,
/// <summary>
/// 入库。。所有轴先回到待机点,轴2、轴1 动作到P1,,轴4动作至P3
/// </summary>
SI_03_ReturnHome
=
20503
,
/// <summary>
/// 入库。。压紧物品(有压紧轴的才需要此步骤),轴4( 压紧) 至P3(压紧前点)
/// </summary>
SI_04_CompressWare
=
20504
,
/// <summary>
/// 入库。。叉子进入入料口,轴3( 叉子) 至P2( 进料口取料点)
/// </summary>
SI_05_DeviceToDoor
=
20505
,
/// <summary>
/// 入库。。把物品放入叉子上,轴2( 上下) 至P7( 进料口取料缓冲点),压紧物品(有压紧轴的才需要此步骤),轴4( 压紧) 至P2(压紧点)
/// </summary>
SI_06_DoorWarToDevice
=
20506
,
///
//
<summary>
///
//
入库检测
///
//
</summary>
//
SI_00_TrayCheck = 20500,
///
//
<summary>
///
//
入库,。定位气缸下降
///
//
</summary>
//
SI_01_LocationCylinderDown =20501,
///
//
<summary>
///
//
入库。。进出轴(叉子)先返回P1
///
//
</summary>
//
SI_02_InOutAxisHome =20502,
///
//
<summary>
///
//
入库。。所有轴先回到待机点,轴2、轴1 动作到P1,,轴4动作至P3
///
//
</summary>
//
SI_03_ReturnHome =20503,
///
//
<summary>
///
//
入库。。压紧物品(有压紧轴的才需要此步骤),轴4( 压紧) 至P3(压紧前点)
///
//
</summary>
//
SI_04_CompressWare =20504,
///
//
<summary>
///
//
入库。。叉子进入入料口,轴3( 叉子) 至P2( 进料口取料点)
///
//
</summary>
//
SI_05_DeviceToDoor =20505,
///
//
<summary>
///
//
入库。。把物品放入叉子上,轴2( 上下) 至P7( 进料口取料缓冲点),压紧物品(有压紧轴的才需要此步骤),轴4( 压紧) 至P2(压紧点)
///
//
</summary>
//
SI_06_DoorWarToDevice =20506,
/// <summary>
/// 入库。。叉子 从入料口抽出,轴3( 叉子) 至P1( 待机点)
/// </summary>
SI_07_DeviceBackFromDoor
=
20507
,
/// <summary>
/// 入库。。,定位气缸伸出 (有压紧轴的不需要此步骤)
/// </summary>
SI_08_LocationCylinder_Up
=
20508
,
/// <summary>
/// 入库。。移动到库位点,轴1( 转盘) 至P2( 库位点)轴2(上下) 至P3(库位入库前点)
/// </summary>
SI_09_MoveToBag
=
20509
,
/// <summary>
/// 入库。。定位气缸退回 (有压紧轴的不需要此步骤)
/// </summary>
SI_10_LocationCylinder_Down
=
20510
,
/// <summary>
/// 入库。。叉子进入库位中,轴3( 叉子) 至P3(库位取放料点)
/// </summary>
SI_11_DeviceToBag
=
20511
,
/// <summary>
/// 入库。。放下物品,轴2( 上下) 至P4( 库位入料缓冲点)轴4( 压紧) 至P3( 压紧前点)
/// </summary>
SI_12_PutWareToBag
=
20512
,
/// <summary>
/// 入库。。叉子从库位中返回,轴3( 叉子) 动作至P1( 待机点)
/// </summary>
SI_13_DeviceBackFromBag
=
20513
,
/// <summary>
/// 入库。。返回待机点,轴2/轴1/轴4动作至P1( 待机点))开始
/// </summary>
SI_14_GoBack
=
20514
,
///
//
<summary>
///
//
入库。。叉子 从入料口抽出,轴3( 叉子) 至P1( 待机点)
///
//
</summary>
//
SI_07_DeviceBackFromDoor =20507,
///
//
<summary>
///
//
入库。。,定位气缸伸出 (有压紧轴的不需要此步骤)
///
//
</summary>
//
SI_08_LocationCylinder_Up =20508,
///
//
<summary>
///
//
入库。。移动到库位点,轴1( 转盘) 至P2( 库位点)轴2(上下) 至P3(库位入库前点)
///
//
</summary>
//
SI_09_MoveToBag =20509,
///
//
<summary>
///
//
入库。。定位气缸退回 (有压紧轴的不需要此步骤)
///
//
</summary>
//
SI_10_LocationCylinder_Down =20510,
///
//
<summary>
///
//
入库。。叉子进入库位中,轴3( 叉子) 至P3(库位取放料点)
///
//
</summary>
//
SI_11_DeviceToBag =20511,
///
//
<summary>
///
//
入库。。放下物品,轴2( 上下) 至P4( 库位入料缓冲点)轴4( 压紧) 至P3( 压紧前点)
///
//
</summary>
//
SI_12_PutWareToBag =20512,
///
//
<summary>
///
//
入库。。叉子从库位中返回,轴3( 叉子) 动作至P1( 待机点)
///
//
</summary>
//
SI_13_DeviceBackFromBag =20513,
///
//
<summary>
///
//
入库。。返回待机点,轴2/轴1/轴4动作至P1( 待机点))开始
///
//
</summary>
//
SI_14_GoBack =20514,
#
endregion
...
...
source/DeviceLibrary/store/model/StoreMoveInfo.cs
查看文件 @
1c633ff
...
...
@@ -77,6 +77,8 @@ namespace OnlineStore.DeviceLibrary
get
{
return
moveStep
;
}
}
public
bool
SingleInstore
=
false
;
public
void
NextMoveStep
(
StoreMoveStep
step
)
{
// PreMoveStep = moveStep;
...
...
@@ -132,8 +134,8 @@ namespace OnlineStore.DeviceLibrary
/// 入库时,需要循环料架的料盘取出
/// </summary>
public
List
<
string
>
ShelfPositionList
=
new
List
<
string
>();
p
ublic
string
currShelfPosId
=
""
;
p
ublic
int
currShelfIndex
=
-
1
;
p
rivate
string
currShelfPosId
=
""
;
p
rivate
int
currShelfIndex
=
-
1
;
public
bool
NextShelfPos
()
{
...
...
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论