Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
刘韬
/
SO775-DUOStore
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit 05c38db6
由
刘韬
编写于
2021-04-25 17:27:23 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
agv接入
1 个父辈
39de335a
全部展开
隐藏空白字符变更
内嵌
并排
正在显示
14 个修改的文件
包含
259 行增加
和
69 行删除
source/Common/Setting_Init.cs
source/DUOStore/App.config
source/DUOStore/FrmStore.cs
source/DUOStore/Program.cs
source/DeviceLibrary/AgvClient/AgvClient.cs
source/DeviceLibrary/DeviceLibrary.csproj
source/DeviceLibrary/device/RFIDManagercs.cs
source/DeviceLibrary/duoStore/BoxBean.cs
source/DeviceLibrary/duoStore/BoxBean_Partial.cs
source/DeviceLibrary/duoStore/BoxBean_Shelf.cs
source/DeviceLibrary/duoStore/DUOStoreBean.cs
source/DeviceLibrary/duoStore/DUOStoreBean_LineRunMonitor.cs
source/DeviceLibrary/duoStore/DUOStoreBean_Partial.cs
source/DeviceLibrary/duoStore/StoreManager.cs
source/Common/Setting_Init.cs
查看文件 @
05c38db
...
@@ -2,7 +2,7 @@
...
@@ -2,7 +2,7 @@
using
System.Collections.Generic
;
using
System.Collections.Generic
;
using
System.Linq
;
using
System.Linq
;
using
System.Text
;
using
System.Text
;
namespace
OnlineStore.Common
namespace
OnlineStore.Common
{
{
...
@@ -10,7 +10,7 @@ namespace OnlineStore.Common
...
@@ -10,7 +10,7 @@ namespace OnlineStore.Common
/// 记录配置的key
/// 记录配置的key
/// </summary>
/// </summary>
public
class
Setting_Init
public
class
Setting_Init
{
{
public
static
string
Server_Log_Open
=
"Server_Log_Open"
;
public
static
string
Server_Log_Open
=
"Server_Log_Open"
;
/// <summary>
/// <summary>
/// 系统启动时自动启动料仓,=1时自动启动,并隐藏窗口,=0时不需要
/// 系统启动时自动启动料仓,=1时自动启动,并隐藏窗口,=0时不需要
...
@@ -19,9 +19,9 @@ namespace OnlineStore.Common
...
@@ -19,9 +19,9 @@ namespace OnlineStore.Common
/// <summary>
/// <summary>
/// 系统主界面标题
/// 系统主界面标题
/// </summary>
/// </summary>
public
static
string
App_Title
=
"App_Title"
;
public
static
string
App_Title
=
"App_Title"
;
public
static
string
http_server
=
"http.server"
;
public
static
string
http_server
=
"http.server"
;
public
static
string
Store_CID
=
"Store_CID"
;
public
static
string
Store_CID
=
"Store_CID"
;
/// <summary>
/// <summary>
/// 料仓数量
/// 料仓数量
...
@@ -31,7 +31,7 @@ namespace OnlineStore.Common
...
@@ -31,7 +31,7 @@ namespace OnlineStore.Common
/// 料仓类型,1=在线料仓
/// 料仓类型,1=在线料仓
/// </summary>
/// </summary>
public
static
string
Store_Type
=
"Store_Type"
;
public
static
string
Store_Type
=
"Store_Type"
;
public
static
string
BOX_ConfigPath
=
"BOX_ConfigPath"
;
public
static
string
BOX_ConfigPath
=
"BOX_ConfigPath"
;
public
static
string
Store_Position_Config
=
"Store_Position_Config"
;
public
static
string
Store_Position_Config
=
"Store_Position_Config"
;
/// <summary>
/// <summary>
...
@@ -56,7 +56,7 @@ namespace OnlineStore.Common
...
@@ -56,7 +56,7 @@ namespace OnlineStore.Common
/// 配置文件路径 Data Matrix ECC 200.dcm
/// 配置文件路径 Data Matrix ECC 200.dcm
/// </summary>
/// </summary>
public
static
string
CodeParamPath
=
"CodeParamPath"
;
public
static
string
CodeParamPath
=
"CodeParamPath"
;
/// <summary>
/// <summary>
/// 进出轴最大待机点,需要小于3000
/// 进出轴最大待机点,需要小于3000
/// </summary>
/// </summary>
...
@@ -67,7 +67,7 @@ namespace OnlineStore.Common
...
@@ -67,7 +67,7 @@ namespace OnlineStore.Common
/// 出库等待料盘拿走的时间,秒
/// 出库等待料盘拿走的时间,秒
/// </summary>
/// </summary>
public
static
string
OutStoreWaitSeconds
=
"OutStoreWaitSeconds"
;
public
static
string
OutStoreWaitSeconds
=
"OutStoreWaitSeconds"
;
/// <summary>
/// <summary>
/// 温控器类型,0=壁挂王字壳温湿度变送器,1=妙昕温湿度记录仪
/// 温控器类型,0=壁挂王字壳温湿度变送器,1=妙昕温湿度记录仪
...
@@ -80,15 +80,15 @@ namespace OnlineStore.Common
...
@@ -80,15 +80,15 @@ namespace OnlineStore.Common
public
static
string
LineServerIp
=
"LineServerIp"
;
public
static
string
LineServerIp
=
"LineServerIp"
;
public
static
string
LineServerPort
=
"LineServerPort"
;
public
static
string
LineServerPort
=
"LineServerPort"
;
public
static
string
ACBaudRate
=
"ACBaudRate"
;
public
static
string
ACBaudRate
=
"ACBaudRate"
;
public
static
string
Store_ConfigPath
=
"Store_ConfigPath"
;
public
static
string
Store_ConfigPath
=
"Store_ConfigPath"
;
public
static
string
UseBuzzer
=
"UseBuzzer"
;
public
static
string
UseBuzzer
=
"UseBuzzer"
;
public
static
string
Tool_P3_Offset
=
"Tool_P3_Offset"
;
public
static
string
Tool_P3_Offset
=
"Tool_P3_Offset"
;
public
static
string
Tool_P4_Offset
=
"Tool_P4_Offset"
;
public
static
string
Tool_P4_Offset
=
"Tool_P4_Offset"
;
public
static
string
Tool_P5_Offset
=
"Tool_P5_Offset"
;
public
static
string
Tool_P5_Offset
=
"Tool_P5_Offset"
;
...
@@ -96,7 +96,7 @@ namespace OnlineStore.Common
...
@@ -96,7 +96,7 @@ namespace OnlineStore.Common
public
static
string
Tool_TargetSpeed
=
"Tool_TargetSpeed"
;
public
static
string
Tool_TargetSpeed
=
"Tool_TargetSpeed"
;
public
static
string
Tool_TargetPosition
=
"Tool_TargetPosition"
;
public
static
string
Tool_TargetPosition
=
"Tool_TargetPosition"
;
public
static
string
CodeCount
=
"CodeCount"
;
public
static
string
CodeCount
=
"CodeCount"
;
public
static
string
CurrShelfNum
=
"CurrShelfNum"
;
public
static
string
CurrShelfNum
=
"CurrShelfNum"
;
...
@@ -108,6 +108,8 @@ namespace OnlineStore.Common
...
@@ -108,6 +108,8 @@ namespace OnlineStore.Common
public
static
string
AgvServerPort
=
"AgvServerPort"
;
public
static
string
AgvServerPort
=
"AgvServerPort"
;
public
static
string
code_block_size_list
=
"code_block_size_list"
;
public
static
string
code_block_size_list
=
"code_block_size_list"
;
public
static
string
InstoreEndSendShelf
=
"InstoreEndSendShelf"
;
public
static
string
OutstoreEndSendShelf
=
"OutstoreEndSendShelf"
;
public
static
string
LastOutShelfType
=
"LastOutShelfType"
;
}
}
}
}
source/DUOStore/App.config
查看文件 @
05c38db
...
@@ -56,9 +56,12 @@
...
@@ -56,9 +56,12 @@
<
add
key
=
"CurrShelfNum"
value
=
"-1"
/>
<
add
key
=
"CurrShelfNum"
value
=
"-1"
/>
<!--当前料架信息-料架类型,
0
=空料架,
1
=入库料架,
2
=出库料架-->
<!--当前料架信息-料架类型,
0
=空料架,
1
=入库料架,
2
=出库料架-->
<
add
key
=
"CurrShelfType"
value
=
"-1"
/>
<
add
key
=
"CurrShelfType"
value
=
"-1"
/>
<
add
key
=
"LastOutShelfType"
value
=
"1"
/>
<
add
key
=
"HasT4Axis"
value
=
"true"
/>
<
add
key
=
"HasT4Axis"
value
=
"true"
/>
<
add
key
=
"AgvServerIp"
value
=
"192.168.11.11"
/>
<
add
key
=
"AgvServerIp"
value
=
"192.168.11.11"
/>
<
add
key
=
"Code_Block_Size_List"
value
=
"17,19"
/>
<
add
key
=
"Code_Block_Size_List"
value
=
"17,19"
/>
<
add
key
=
"InstoreEndSendShelf"
value
=
"1"
/>
<
add
key
=
"OutstoreEndSendShelf"
value
=
"1"
/>
</
appSettings
>
</
appSettings
>
<
log4net
>
<
log4net
>
<
appender
name
=
"RollingLogFileAppender"
type
=
"log4net.Appender.RollingFileAppender"
>
<
appender
name
=
"RollingLogFileAppender"
type
=
"log4net.Appender.RollingFileAppender"
>
...
...
source/DUOStore/FrmStore.cs
查看文件 @
05c38db
...
@@ -61,9 +61,11 @@ namespace OnlineStore.DUOStore
...
@@ -61,9 +61,11 @@ namespace OnlineStore.DUOStore
//store.UseBuzzer = chbUseBuzzer.Checked;
//store.UseBuzzer = chbUseBuzzer.Checked;
this
.
Text
=
ConfigAppSettings
.
GetValue
(
Setting_Init
.
App_Title
);
this
.
Text
=
ConfigAppSettings
.
GetValue
(
Setting_Init
.
App_Title
);
chbAutoRun
.
Checked
=
(
ConfigAppSettings
.
GetIntValue
(
Setting_Init
.
App_AutoRun
).
Equals
(
1
));
chbAutoRun
.
Checked
=
(
ConfigAppSettings
.
GetIntValue
(
Setting_Init
.
App_AutoRun
).
Equals
(
1
));
chbInstoreEnd
.
Checked
=
(
ConfigAppSettings
.
GetIntValue
(
Setting_Init
.
InstoreEndSendShelf
).
Equals
(
1
));
chbOutstoreEnd
.
Checked
=
(
ConfigAppSettings
.
GetIntValue
(
Setting_Init
.
OutstoreEndSendShelf
).
Equals
(
1
));
LoadListView
();
LoadListView
();
chbInstoreEnd
.
Checked
=
store
.
InstoreEndSendShelf
;
store
.
InstoreEndSendShelf
=
chbInstoreEnd
.
Checked
;
chbOutstoreEnd
.
Checked
=
store
.
OutstoreEndSendShelf
;
store
.
OutstoreEndSendShelf
=
chbOutstoreEnd
.
Checked
;
LoadOk
=
true
;
LoadOk
=
true
;
//LogUtil.logBox = this.logBox;
//LogUtil.logBox = this.logBox;
store
.
BoxMap
[
1
].
camera_event
+=
FrmStore_camera_event
;
store
.
BoxMap
[
1
].
camera_event
+=
FrmStore_camera_event
;
...
@@ -719,7 +721,7 @@ namespace OnlineStore.DUOStore
...
@@ -719,7 +721,7 @@ namespace OnlineStore.DUOStore
{
{
return
;
return
;
}
}
ConfigAppSettings
.
SaveValue
(
Setting_Init
.
InstoreEndSendShelf
,
chbInstoreEnd
.
Checked
?
1
:
0
);
store
.
InstoreEndSendShelf
=
chbInstoreEnd
.
Checked
;
store
.
InstoreEndSendShelf
=
chbInstoreEnd
.
Checked
;
LogUtil
.
info
(
store
.
Name
+
" 切换 入库完成送出料架="
+
store
.
InstoreEndSendShelf
);
LogUtil
.
info
(
store
.
Name
+
" 切换 入库完成送出料架="
+
store
.
InstoreEndSendShelf
);
}
}
...
@@ -734,7 +736,7 @@ namespace OnlineStore.DUOStore
...
@@ -734,7 +736,7 @@ namespace OnlineStore.DUOStore
{
{
return
;
return
;
}
}
ConfigAppSettings
.
SaveValue
(
Setting_Init
.
OutstoreEndSendShelf
,
chbOutstoreEnd
.
Checked
?
1
:
0
);
store
.
OutstoreEndSendShelf
=
chbOutstoreEnd
.
Checked
;
store
.
OutstoreEndSendShelf
=
chbOutstoreEnd
.
Checked
;
LogUtil
.
info
(
store
.
Name
+
" 切换 入库完成送出料架="
+
store
.
OutstoreEndSendShelf
);
LogUtil
.
info
(
store
.
Name
+
" 切换 入库完成送出料架="
+
store
.
OutstoreEndSendShelf
);
...
...
source/DUOStore/Program.cs
查看文件 @
05c38db
...
@@ -14,6 +14,7 @@ namespace OnlineStore.DUOStore
...
@@ -14,6 +14,7 @@ namespace OnlineStore.DUOStore
{
{
static
class
Program
static
class
Program
{
{
#
region
方法四:使用的
Win32
函数的声明
#
region
方法四:使用的
Win32
函数的声明
/// <summary>
/// <summary>
...
@@ -56,6 +57,7 @@ namespace OnlineStore.DUOStore
...
@@ -56,6 +57,7 @@ namespace OnlineStore.DUOStore
//string path = @"http://localhost:4090/rest/api/v1/station/status";
//string path = @"http://localhost:4090/rest/api/v1/station/status";
//HttpHelper.PostOperation(path, new Operation());
//HttpHelper.PostOperation(path, new Operation());
Application
.
ThreadException
+=
new
System
.
Threading
.
ThreadExceptionEventHandler
(
Application_ThreadException
);
Application
.
ThreadException
+=
new
System
.
Threading
.
ThreadExceptionEventHandler
(
Application_ThreadException
);
AppDomain
.
CurrentDomain
.
UnhandledException
+=
new
UnhandledExceptionEventHandler
(
CurrentDomain_UnhandledException
);
AppDomain
.
CurrentDomain
.
UnhandledException
+=
new
UnhandledExceptionEventHandler
(
CurrentDomain_UnhandledException
);
...
...
source/DeviceLibrary/AgvClient/AgvClient.cs
查看文件 @
05c38db
...
@@ -14,6 +14,7 @@ namespace OnlineStore.DeviceLibrary
...
@@ -14,6 +14,7 @@ namespace OnlineStore.DeviceLibrary
private
static
int
ServerPort
=
ConfigAppSettings
.
GetIntValue
(
Setting_Init
.
AgvServerPort
);
private
static
int
ServerPort
=
ConfigAppSettings
.
GetIntValue
(
Setting_Init
.
AgvServerPort
);
private
static
Agv
.
AgvClient
agvClient
;
private
static
Agv
.
AgvClient
agvClient
;
public
static
Dictionary
<
string
,
Agv
.
ClientAction
>
actionMap
=
new
Dictionary
<
string
,
Agv
.
ClientAction
>();
public
static
Dictionary
<
string
,
Agv
.
ClientAction
>
actionMap
=
new
Dictionary
<
string
,
Agv
.
ClientAction
>();
public
static
Dictionary
<
string
,
Agv
.
ClientShelf
>
shelfMap
=
new
Dictionary
<
string
,
Agv
.
ClientShelf
>();
public
static
List
<
string
>
NodeList
=
new
List
<
string
>();
public
static
List
<
string
>
NodeList
=
new
List
<
string
>();
private
static
bool
isInit
=
false
;
private
static
bool
isInit
=
false
;
public
static
void
Init
()
public
static
void
Init
()
...
@@ -25,19 +26,23 @@ namespace OnlineStore.DeviceLibrary
...
@@ -25,19 +26,23 @@ namespace OnlineStore.DeviceLibrary
isInit
=
true
;
isInit
=
true
;
agvClient
=
new
Agv
.
AgvClient
();
agvClient
=
new
Agv
.
AgvClient
();
agvClient
.
Received
+=
AgvClient_Received
;
agvClient
.
Received
+=
AgvClient_Received
;
NodeList
.
Add
(
StoreManager
.
Config
.
AgvInName
);
agvClient
.
Connected
+=
AgvClient_Connected
;
NodeList
.
Add
(
StoreManager
.
Config
.
AgvOutName
);
//NodeList.Add(StoreManager.Config.AgvInName);
//NodeList.Add(StoreManager.Config.AgvOutName);
}
}
actionMap
=
new
Dictionary
<
string
,
Agv
.
ClientAction
>();
actionMap
=
new
Dictionary
<
string
,
Agv
.
ClientAction
>();
shelfMap
=
new
Dictionary
<
string
,
Agv
.
ClientShelf
>();
foreach
(
string
key
in
NodeList
)
foreach
(
string
key
in
NodeList
)
{
{
actionMap
.
Add
(
key
,
Agv
.
ClientAction
.
None
);
actionMap
.
Add
(
key
,
Agv
.
ClientAction
.
None
);
shelfMap
.
Add
(
key
,
Agv
.
ClientShelf
.
None
);
}
}
agvClient
.
Connect
(
ServerIp
,
ServerPort
);
agvClient
.
Connect
(
ServerIp
,
ServerPort
);
foreach
(
string
str
in
NodeList
)
foreach
(
string
id
in
NodeList
)
{
{
SetStatus
(
str
,
""
);
//SetStatus(id, "");
LogUtil
.
info
(
"agv init ,SetStatus["
+
str
+
"]=none "
);
agvClient
.
SetStatus
(
id
);
LogUtil
.
info
(
"agv init ,SetStatus["
+
id
+
"]=none "
);
}
}
SetCancelState
(
false
);
SetCancelState
(
false
);
}
}
...
@@ -49,7 +54,7 @@ namespace OnlineStore.DeviceLibrary
...
@@ -49,7 +54,7 @@ namespace OnlineStore.DeviceLibrary
private
static
void
AgvClient_Connected
(
bool
status
)
private
static
void
AgvClient_Connected
(
bool
status
)
{
{
LogUtil
.
info
(
$
"AgvClient_Connected:{status}"
);
//
LogUtil.info($"AgvClient_Connected:{status}");
}
}
private
static
void
AgvClient_Received
(
Node
node
)
private
static
void
AgvClient_Received
(
Node
node
)
...
@@ -70,7 +75,7 @@ namespace OnlineStore.DeviceLibrary
...
@@ -70,7 +75,7 @@ namespace OnlineStore.DeviceLibrary
{
{
agvClient
.
CancelState
=
cancel
;
agvClient
.
CancelState
=
cancel
;
}
}
public
static
void
SetStatus
(
string
id
,
string
shelfId
,
ClientAction
action
=
ClientAction
.
None
,
ClientLevel
level
=
ClientLevel
.
Low
,
bool
isMust
=
false
)
public
static
void
SetStatus
(
string
id
,
string
shelfId
,
ClientAction
action
=
ClientAction
.
None
,
ClientLevel
level
=
ClientLevel
.
Low
,
ClientShelf
clientShelf
=
ClientShelf
.
Empty
)
{
{
if
(
agvClient
==
null
)
if
(
agvClient
==
null
)
return
;
return
;
...
@@ -84,9 +89,10 @@ namespace OnlineStore.DeviceLibrary
...
@@ -84,9 +89,10 @@ namespace OnlineStore.DeviceLibrary
}
}
}
}
agvClient
.
SetStatus
(
id
,
""
,
shelfId
,
action
,
level
);
agvClient
.
SetStatus
(
id
,
""
,
shelfId
,
action
,
level
,
clientShelf
);
UpdateAction
(
id
,
action
);
UpdateAction
(
id
,
action
);
LogUtil
.
info
(
"AgvClient SetStatus id:"
+
id
+
",shelfId:"
+
shelfId
+
",action:"
+
action
.
ToString
()
+
",level:"
+
level
.
ToString
());
UpdateShelf
(
id
,
clientShelf
);
LogUtil
.
info
(
"AgvClient SetStatus id:"
+
id
+
",shelfId:"
+
shelfId
+
",action:"
+
action
.
ToString
()
+
",level:"
+
level
.
ToString
()
+
",clientShelf:"
+
clientShelf
.
ToString
());
}
}
...
@@ -129,29 +135,29 @@ namespace OnlineStore.DeviceLibrary
...
@@ -129,29 +135,29 @@ namespace OnlineStore.DeviceLibrary
public
static
bool
SetToNone
(
string
id
,
string
shelfId
=
""
)
public
static
bool
SetToNone
(
string
id
,
string
shelfId
=
""
)
{
{
Agv
.
ClientAction
currA
=
GetAction
(
id
);
Agv
.
ClientAction
currA
=
GetAction
(
id
);
if
(
currA
.
Equals
(
Agv
.
ClientAction
.
None
)
||
currA
.
Equals
(
Agv
.
ClientAction
.
NeedLeave
)
||
currA
.
Equals
(
Agv
.
ClientAction
.
NeedEnter
))
//
if (currA.Equals(Agv.ClientAction.None) || currA.Equals(Agv.ClientAction.NeedLeave) || currA.Equals(Agv.ClientAction.NeedEnter))
{
//
{
SetStatus
(
id
,
shelfId
,
Agv
.
ClientAction
.
None
);
SetStatus
(
id
,
shelfId
,
Agv
.
ClientAction
.
None
);
return
true
;
return
true
;
}
//
}
return
false
;
//
return false;
}
}
public
static
bool
NeedEnter
(
string
id
,
string
shelfId
)
public
static
bool
NeedEnter
(
string
id
,
string
shelfId
,
ClientShelf
clientShelf
)
{
{
Agv
.
ClientAction
currA
=
GetAction
(
id
);
Agv
.
ClientAction
currA
=
GetAction
(
id
);
if
(
currA
.
Equals
(
Agv
.
ClientAction
.
None
)
||
currA
.
Equals
(
Agv
.
ClientAction
.
NeedLeave
)
||
currA
.
Equals
(
Agv
.
ClientAction
.
NeedEnter
))
if
(
currA
.
Equals
(
Agv
.
ClientAction
.
None
)
||
currA
.
Equals
(
Agv
.
ClientAction
.
NeedEnter
))
{
{
SetStatus
(
id
,
shelfId
,
Agv
.
ClientAction
.
NeedEnter
);
SetStatus
(
id
,
shelfId
,
Agv
.
ClientAction
.
NeedEnter
,
ClientLevel
.
High
,
clientShelf
);
return
true
;
return
true
;
}
}
return
false
;
return
false
;
}
}
public
static
bool
NeedLeave
(
string
id
,
string
shelfId
)
public
static
bool
NeedLeave
(
string
id
,
string
shelfId
,
ClientShelf
clientShelf
)
{
{
Agv
.
ClientAction
currA
=
GetAction
(
id
);
Agv
.
ClientAction
currA
=
GetAction
(
id
);
if
(
currA
.
Equals
(
Agv
.
ClientAction
.
None
)
||
currA
.
Equals
(
Agv
.
ClientAction
.
NeedLeave
)
||
currA
.
Equals
(
Agv
.
ClientAction
.
NeedEnter
))
if
(
currA
.
Equals
(
Agv
.
ClientAction
.
None
)
||
currA
.
Equals
(
Agv
.
ClientAction
.
NeedLeave
)
||
currA
.
Equals
(
Agv
.
ClientAction
.
NeedEnter
))
{
{
SetStatus
(
id
,
shelfId
,
Agv
.
ClientAction
.
NeedLeave
);
SetStatus
(
id
,
shelfId
,
Agv
.
ClientAction
.
NeedLeave
,
ClientLevel
.
High
,
clientShelf
);
return
true
;
return
true
;
}
}
return
false
;
return
false
;
...
@@ -164,6 +170,14 @@ namespace OnlineStore.DeviceLibrary
...
@@ -164,6 +170,14 @@ namespace OnlineStore.DeviceLibrary
return
actionMap
[
NodeName
];
return
actionMap
[
NodeName
];
}
}
return
Agv
.
ClientAction
.
None
;
return
Agv
.
ClientAction
.
None
;
}
public
static
Agv
.
ClientShelf
GetShelf
(
string
NodeName
)
{
if
(
shelfMap
.
ContainsKey
(
NodeName
))
{
return
shelfMap
[
NodeName
];
}
return
Agv
.
ClientShelf
.
None
;
}
}
public
static
void
UpdateAction
(
string
name
,
Agv
.
ClientAction
action
)
public
static
void
UpdateAction
(
string
name
,
Agv
.
ClientAction
action
)
{
{
...
@@ -176,6 +190,17 @@ namespace OnlineStore.DeviceLibrary
...
@@ -176,6 +190,17 @@ namespace OnlineStore.DeviceLibrary
actionMap
.
Add
(
name
,
action
);
actionMap
.
Add
(
name
,
action
);
}
}
}
}
public
static
void
UpdateShelf
(
string
name
,
Agv
.
ClientShelf
action
)
{
if
(
shelfMap
.
ContainsKey
(
name
))
{
shelfMap
[
name
]
=
action
;
}
else
{
shelfMap
.
Add
(
name
,
action
);
}
}
public
static
void
Dispose
()
public
static
void
Dispose
()
{
{
try
try
...
...
source/DeviceLibrary/DeviceLibrary.csproj
查看文件 @
05c38db
...
@@ -94,6 +94,7 @@
...
@@ -94,6 +94,7 @@
<Compile Include="device\IO\HCIOManager.cs" />
<Compile Include="device\IO\HCIOManager.cs" />
<Compile Include="device\RFIDManagercs.cs" />
<Compile Include="device\RFIDManagercs.cs" />
<Compile Include="duoStore\BoxBean_Camera.cs" />
<Compile Include="duoStore\BoxBean_Camera.cs" />
<Compile Include="duoStore\DUOStoreBean_LineRunMonitor.cs" />
<Compile Include="duoStore\DUOStoreBean_RaiseStation.cs" />
<Compile Include="duoStore\DUOStoreBean_RaiseStation.cs" />
<Compile Include="duoStore\AxisBean.cs" />
<Compile Include="duoStore\AxisBean.cs" />
<Compile Include="duoStore\BoxBean.cs" />
<Compile Include="duoStore\BoxBean.cs" />
...
...
source/DeviceLibrary/device/RFIDManagercs.cs
查看文件 @
05c38db
...
@@ -64,7 +64,7 @@ namespace OnlineStore.DeviceLibrary
...
@@ -64,7 +64,7 @@ namespace OnlineStore.DeviceLibrary
if
(
String
.
IsNullOrEmpty
(
ip
).
Equals
(
false
))
if
(
String
.
IsNullOrEmpty
(
ip
).
Equals
(
false
))
{
{
string
outValue
=
readAll
.
Read
(
ip
);
string
outValue
=
readAll
.
Read
(
ip
);
System
.
Threading
.
Thread
.
Sleep
(
300
);
if
(
isClear
)
if
(
isClear
)
{
{
readAll
.
Clear
(
ip
);
readAll
.
Clear
(
ip
);
...
...
source/DeviceLibrary/duoStore/BoxBean.cs
查看文件 @
05c38db
...
@@ -265,6 +265,23 @@ namespace OnlineStore.DeviceLibrary
...
@@ -265,6 +265,23 @@ namespace OnlineStore.DeviceLibrary
HuichuanLibrary
.
HCBoardManager
.
SetAxBacklash
(
MiddleAxis
.
Config
.
GetAxisValue
(),
Config
.
MiddleAxis_Reverse_Offset
,
MiddleAxis
.
Config
.
HomeLowSpeed
,-
1
);
HuichuanLibrary
.
HCBoardManager
.
SetAxBacklash
(
MiddleAxis
.
Config
.
GetAxisValue
(),
Config
.
MiddleAxis_Reverse_Offset
,
MiddleAxis
.
Config
.
HomeLowSpeed
,-
1
);
LogInfo
(
MoveInfo
.
MoveType
+
": 完成"
);
LogInfo
(
MoveInfo
.
MoveType
+
": 完成"
);
MoveEndP
();
MoveEndP
();
if
(
IOValue
(
IO_Type
.
InDoor_Check
).
Equals
(
IO_VALUE
.
HIGH
)
&&
IsDebug
.
Equals
(
false
))
{
LogInfo
(
"发现入口有无信息料"
);
InOutParam
inOutParam
=
new
InOutParam
(
MoveType
.
InStore
);
inOutParam
.
InStoreNg
=
true
;
inOutParam
.
TargetPosition
=
1
;
inOutParam
.
moveType
=
MoveType
.
InStore
;
inOutParam
.
PlateH
=
56
;
StoreManager
.
LoadInoutParam
(
inOutParam
,
MoveType
.
InStore
,
true
,
this
);
runStatus
=
StoreRunStatus
.
Busy
;
storeStatus
=
StoreStatus
.
InStoreExecute
;
MoveInfo
.
NewMove
(
MoveType
.
InStore
,
inOutParam
);
MoveInfo
.
NextMoveStep
(
StoreMoveStep
.
SI_01_InoutToP1
);
}
break
;
break
;
default
:
break
;
default
:
break
;
}
}
...
...
source/DeviceLibrary/duoStore/BoxBean_Partial.cs
查看文件 @
05c38db
...
@@ -79,12 +79,12 @@ namespace OnlineStore.DeviceLibrary
...
@@ -79,12 +79,12 @@ namespace OnlineStore.DeviceLibrary
(!
runStatus
.
Equals
(
StoreRunStatus
.
Runing
))
(!
runStatus
.
Equals
(
StoreRunStatus
.
Runing
))
||
(!
MoveInfo
.
MoveType
.
Equals
(
MoveType
.
None
)))
||
(!
MoveInfo
.
MoveType
.
Equals
(
MoveType
.
None
)))
{
{
LogUtil
.
error
(
Name
+
" 启动
出
库出错,忙碌或报警中 ,storeStatus="
+
runStatus
+
",MoveType="
+
MoveInfo
.
MoveType
+
",isInSuddenDown="
+
isInSuddenDown
+
",isNoAirCheck"
+
isNoAirCheck
);
LogUtil
.
error
(
Name
+
" 启动
入
库出错,忙碌或报警中 ,storeStatus="
+
runStatus
+
",MoveType="
+
MoveInfo
.
MoveType
+
",isInSuddenDown="
+
isInSuddenDown
+
",isNoAirCheck"
+
isNoAirCheck
);
return
false
;
return
false
;
}
}
if
(
IOValue
(
IO_Type
.
InDoor_Check
).
Equals
(
IO_VALUE
.
LOW
))
if
(
!
AutoInout
.
autoNext
&&
IOValue
(
IO_Type
.
InDoor_Check
).
Equals
(
IO_VALUE
.
LOW
))
{
{
LogUtil
.
error
(
Name
+
" 启动
出
库出错,入口没有检测到料盘, 任务取消"
);
LogUtil
.
error
(
Name
+
" 启动
入
库出错,入口没有检测到料盘, 任务取消"
);
StoreManager
.
cancelPutInTask
(
Name
,
param
.
WareCode
);
StoreManager
.
cancelPutInTask
(
Name
,
param
.
WareCode
);
return
true
;
return
true
;
}
}
...
@@ -549,11 +549,19 @@ namespace OnlineStore.DeviceLibrary
...
@@ -549,11 +549,19 @@ namespace OnlineStore.DeviceLibrary
#
endregion
#
endregion
else
if
(
MoveInfo
.
IsStep
(
StoreMoveStep
.
SO_07_FixtureCheck
))
else
if
(
MoveInfo
.
IsStep
(
StoreMoveStep
.
SO_07_FixtureCheck
))
{
{
MoveInfo
.
NextMoveStep
(
StoreMoveStep
.
SO_08_InoutToP2
);
bool
waitLeftStore
=
false
;
InOutStoreLog
(
outType
+
"进出轴到P2 ["
+
moveP
.
InOut_P2
+
"]"
);
if
(
StoreManager
.
Store
.
HasT4Axis
&&
ID
==
2
&&
StoreManager
.
Store
.
MoveInfo
.
MoveParam
!=
null
&&
StoreManager
.
Store
.
MoveInfo
.
MoveParam
.
TargetBox
==
1
)
InoutAxis
.
AbsMove
(
MoveInfo
,
moveP
.
InOut_P2
,
Config
.
InOutAxis_P2_Speed
);
{
ClearTimeoutAlarm
(
"进出轴可以到P2"
);
if
(
StoreManager
.
Store
.
MoveInfo
.
MoveStep
>=
StoreMoveStep
.
LO_11_BatchAxisDown
&&
StoreManager
.
Store
.
MoveInfo
.
MoveStep
<=
StoreMoveStep
.
LO_16_MiddleToP1
)
waitLeftStore
=
true
;
}
if
(!
waitLeftStore
)
{
MoveInfo
.
NextMoveStep
(
StoreMoveStep
.
SO_08_InoutToP2
);
InOutStoreLog
(
outType
+
"进出轴到P2 ["
+
moveP
.
InOut_P2
+
"]"
);
InoutAxis
.
AbsMove
(
MoveInfo
,
moveP
.
InOut_P2
,
Config
.
InOutAxis_P2_Speed
);
ClearTimeoutAlarm
(
"进出轴可以到P2"
);
}
}
}
else
if
(
MoveInfo
.
IsStep
(
StoreMoveStep
.
SO_08_InoutToP2
))
else
if
(
MoveInfo
.
IsStep
(
StoreMoveStep
.
SO_08_InoutToP2
))
{
{
...
...
source/DeviceLibrary/duoStore/BoxBean_Shelf.cs
查看文件 @
05c38db
...
@@ -253,7 +253,7 @@ namespace OnlineStore.DeviceLibrary
...
@@ -253,7 +253,7 @@ namespace OnlineStore.DeviceLibrary
}
}
return
false
;
return
false
;
}
}
public
string
LastVisualRfid
=
""
;
//
public string LastVisualRfid = "";
private
void
ReviceOutStoreProcess
(
Operation
resultOperation
)
private
void
ReviceOutStoreProcess
(
Operation
resultOperation
)
{
{
DateTime
time
=
DateTime
.
Now
;
DateTime
time
=
DateTime
.
Now
;
...
@@ -265,13 +265,13 @@ namespace OnlineStore.DeviceLibrary
...
@@ -265,13 +265,13 @@ namespace OnlineStore.DeviceLibrary
string
[]
posIdArray
=
data
[
ParamDefine
.
posId
].
Split
(
splitChar
);
string
[]
posIdArray
=
data
[
ParamDefine
.
posId
].
Split
(
splitChar
);
string
[]
plateWArray
=
data
[
ParamDefine
.
plateW
].
Split
(
splitChar
);
string
[]
plateWArray
=
data
[
ParamDefine
.
plateW
].
Split
(
splitChar
);
string
[]
plateHArray
=
data
[
ParamDefine
.
plateH
].
Split
(
splitChar
);
string
[]
plateHArray
=
data
[
ParamDefine
.
plateH
].
Split
(
splitChar
);
if
(
string
.
IsNullOrEmpty
(
LastVisualRfid
))
if
(
string
.
IsNullOrEmpty
(
StoreManager
.
LastVisualRfid
))
{
{
LastVisualRfid
=
data
[
ParamDefine
.
rfid
];
StoreManager
.
LastVisualRfid
=
data
[
ParamDefine
.
rfid
];
}
}
else
if
(
LastVisualRfid
!=
data
[
ParamDefine
.
rfid
])
else
if
(
StoreManager
.
LastVisualRfid
!=
data
[
ParamDefine
.
rfid
])
{
{
LogUtil
.
error
(
Name
+
$
" 上一个工单还未结束LastVisualRfid={LastVisualRfid}, CurrentVisualRfid={data[ParamDefine.rfid]}"
);
LogUtil
.
error
(
Name
+
$
" 上一个工单还未结束LastVisualRfid={
StoreManager.
LastVisualRfid}, CurrentVisualRfid={data[ParamDefine.rfid]}"
);
return
;
return
;
}
}
bool
urgentReel
=
FormUtil
.
GetBoolData
(
data
,
ParamDefine
.
urgentReel
);
bool
urgentReel
=
FormUtil
.
GetBoolData
(
data
,
ParamDefine
.
urgentReel
);
...
...
source/DeviceLibrary/duoStore/DUOStoreBean.cs
查看文件 @
05c38db
...
@@ -98,7 +98,6 @@ namespace OnlineStore.DeviceLibrary
...
@@ -98,7 +98,6 @@ namespace OnlineStore.DeviceLibrary
AgvClient
.
NodeList
.
Add
(
Config
.
AgvInName
);
AgvClient
.
NodeList
.
Add
(
Config
.
AgvInName
);
AgvClient
.
NodeList
.
Add
(
Config
.
AgvOutName
);
AgvClient
.
NodeList
.
Add
(
Config
.
AgvOutName
);
IOManager
.
Init
();
IOManager
.
Init
();
CodeManager
.
LoadConfig
();
CodeManager
.
LoadConfig
();
...
@@ -108,12 +107,10 @@ namespace OnlineStore.DeviceLibrary
...
@@ -108,12 +107,10 @@ namespace OnlineStore.DeviceLibrary
HasT4Axis
=
Convert
.
ToBoolean
(
ConfigAppSettings
.
GetValue
(
Setting_Init
.
HasT4Axis
));
HasT4Axis
=
Convert
.
ToBoolean
(
ConfigAppSettings
.
GetValue
(
Setting_Init
.
HasT4Axis
));
Task
.
Factory
.
StartNew
(
delegate
Task
.
Factory
.
StartNew
(
delegate
{
{
RFIDManager
.
Open
();
RFIDManager
.
Open
();
IOManager
.
instance
.
ConnectionIOList
(
ioList
);
IOManager
.
instance
.
ConnectionIOList
(
ioList
);
AxisManager
.
Init
();
AxisManager
.
Init
();
//
AgvClient.Init();
AgvClient
.
Init
();
IOMove
(
IO_Type
.
Alarm_HddLed
,
IO_VALUE
.
LOW
);
IOMove
(
IO_Type
.
Alarm_HddLed
,
IO_VALUE
.
LOW
);
IOMove
(
IO_Type
.
AutoRun_HddLed
,
IO_VALUE
.
LOW
);
IOMove
(
IO_Type
.
AutoRun_HddLed
,
IO_VALUE
.
LOW
);
IOMove
(
IO_Type
.
RunSign_HddLed
,
IO_VALUE
.
LOW
);
IOMove
(
IO_Type
.
RunSign_HddLed
,
IO_VALUE
.
LOW
);
...
@@ -186,6 +183,7 @@ namespace OnlineStore.DeviceLibrary
...
@@ -186,6 +183,7 @@ namespace OnlineStore.DeviceLibrary
}
}
LogUtil
.
info
(
Name
+
"开始启动 ,启动时间:"
+
StartTime
.
ToString
());
LogUtil
.
info
(
Name
+
"开始启动 ,启动时间:"
+
StartTime
.
ToString
());
IOMove
(
IO_Type
.
Device_Led
,
IO_VALUE
.
HIGH
);
IOMove
(
IO_Type
.
Device_Led
,
IO_VALUE
.
HIGH
);
RFIDManager
.
Open
();
runStatus
=
StoreRunStatus
.
HomeMoving
;
runStatus
=
StoreRunStatus
.
HomeMoving
;
StartTime
=
DateTime
.
Now
;
StartTime
=
DateTime
.
Now
;
StartResetMove
();
StartResetMove
();
...
@@ -279,8 +277,7 @@ namespace OnlineStore.DeviceLibrary
...
@@ -279,8 +277,7 @@ namespace OnlineStore.DeviceLibrary
MoveInfo
.
NextMoveStep
(
StoreMoveStep
.
LR_02_LineRun
);
MoveInfo
.
NextMoveStep
(
StoreMoveStep
.
LR_02_LineRun
);
LogUtil
.
info
(
Name
+
"复位 "
+
MoveInfo
.
MoveStep
+
" :流水线转动3秒"
);
LogUtil
.
info
(
Name
+
"复位 "
+
MoveInfo
.
MoveStep
+
" :流水线转动3秒"
);
MoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitTime
(
3000
));
MoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitTime
(
3000
));
LineRun
(
MoveInfo
);
LineRun
(
"reset"
,
5
);
IOMove
(
IO_Type
.
Line_Run
,
IO_VALUE
.
HIGH
,
false
,
5000
);
}
}
else
if
(
MoveInfo
.
IsStep
(
StoreMoveStep
.
LR_02_LineRun
))
else
if
(
MoveInfo
.
IsStep
(
StoreMoveStep
.
LR_02_LineRun
))
...
@@ -396,7 +393,7 @@ namespace OnlineStore.DeviceLibrary
...
@@ -396,7 +393,7 @@ namespace OnlineStore.DeviceLibrary
T4_InOut_Axis
.
SuddenStop
();
T4_InOut_Axis
.
SuddenStop
();
CloseAllAxis
();
CloseAllAxis
();
LineStop
();
LineStop
(
"n"
);
}
}
public
override
void
StopRun
()
public
override
void
StopRun
()
{
{
...
@@ -725,11 +722,11 @@ namespace OnlineStore.DeviceLibrary
...
@@ -725,11 +722,11 @@ namespace OnlineStore.DeviceLibrary
{
{
LowProcess
=
true
;
LowProcess
=
true
;
LogUtil
.
info
(
Name
+
"从料架堆积处放一个料架到后端"
);
LogUtil
.
info
(
Name
+
"从料架堆积处放一个料架到后端"
);
IOMove
(
IO_Type
.
Line_Run
,
IO_VALUE
.
HIGH
,
false
,
3000
0
);
LineRun
(
"shelfout"
,
3
0
);
//IOMove(IO_Type.Line_Stop3_Buffer, IO_VALUE.HIGH, false, 2000);
//IOMove(IO_Type.Line_Stop3_Buffer, IO_VALUE.HIGH, false, 2000);
if
(
WaitIo
(
IO_Type
.
Line_OutCheck
,
IO_VALUE
.
HIGH
,
30000
,
"堆积处放料架到后端"
))
if
(
WaitIo
(
IO_Type
.
Line_OutCheck
,
IO_VALUE
.
HIGH
,
30000
,
"堆积处放料架到后端"
))
{
{
LineStop
();
LineStop
(
"shelfout"
);
}
}
LowProcess
=
false
;
LowProcess
=
false
;
});
});
...
@@ -747,7 +744,7 @@ namespace OnlineStore.DeviceLibrary
...
@@ -747,7 +744,7 @@ namespace OnlineStore.DeviceLibrary
}
}
public
void
OneShelfOutProcess
()
public
void
OneShelfOutProcess
()
{
{
try
/*
try
{
{
if (IOValue(IO_Type.Line_OutCheck).Equals(IO_VALUE.HIGH) &&
if (IOValue(IO_Type.Line_OutCheck).Equals(IO_VALUE.HIGH) &&
IOValue(IO_Type.Line_Run).Equals(IO_VALUE.LOW) &&
IOValue(IO_Type.Line_Run).Equals(IO_VALUE.LOW) &&
...
@@ -778,20 +775,55 @@ namespace OnlineStore.DeviceLibrary
...
@@ -778,20 +775,55 @@ namespace OnlineStore.DeviceLibrary
catch (Exception ex)
catch (Exception ex)
{
{
LogUtil.error(Name + " OneShelfOutProcess 出错:" + ex.ToString());
LogUtil.error(Name + " OneShelfOutProcess 出错:" + ex.ToString());
}
}*/
}
//左侧下层需要放个料架
Task
.
Run
(()
=>
{
LogUtil
.
info
(
Name
+
"Agv送出一个料架"
);
LineRun
(
"agvout"
,
30
);
IOMove
(
IO_Type
.
Line_Stop4_Out
,
IO_VALUE
.
HIGH
,
false
,
1000
);
if
(
WaitIo
(
IO_Type
.
Line_OutCheck
,
IO_VALUE
.
LOW
,
30000
,
"送出一个料架"
))
{
LineRun
(
"agvout"
,
15
);
Task
.
Delay
(
5
*
1000
);
AgvClient
.
SetStatus
(
StoreManager
.
Config
.
AgvOutName
,
""
,
Agv
.
ClientAction
.
FinishLeave
);
_
=
Task
.
Run
(()
=>
{
Task
.
Delay
(
2000
);
AgvClient
.
SetStatus
(
StoreManager
.
Config
.
AgvInName
,
""
,
Agv
.
ClientAction
.
None
);
});
}
});
}
#
endregion
#
endregion
Agv
.
ClientShelf
AgvNeedInshelf
=
Agv
.
ClientShelf
.
None
;
Agv
.
ClientShelf
AgvNeedOutshelf
=
Agv
.
ClientShelf
.
None
;
void
IOMinoitor
()
{
void
IOMinoitor
()
{
if
(
IOValue
(
IO_Type
.
Line_WaitCheck
).
Equals
(
IO_VALUE
.
LOW
)
&&
AgvClient
.
GetAction
(
Config
.
AgvInName
)
==
Agv
.
ClientAction
.
None
)
if
(
IOValue
(
IO_Type
.
Line_WaitCheck
).
Equals
(
IO_VALUE
.
LOW
)
&&
AgvClient
.
GetAction
(
Config
.
AgvInName
)
==
Agv
.
ClientAction
.
None
&&
MoveInfo
.
MoveType
.
Equals
(
MoveType
.
None
)
&&
BoxMap
[
1
].
waitOutStoreList
.
Count
==
0
&&
BoxMap
[
2
].
waitOutStoreList
.
Count
==
0
)
{
{
AgvClient
.
NeedEnter
(
Config
.
AgvInName
,
""
);
AgvNeedInshelf
=
Agv
.
ClientShelf
.
Full
;
AgvClient
.
NeedEnter
(
Config
.
AgvInName
,
""
,
AgvNeedInshelf
);
LogUtil
.
info
(
Name
+
"IOMinoitor AgvClient.NeedEnter"
+
Config
.
AgvInName
+
",AgvNeedInshelf:"
+
AgvNeedInshelf
);
//AgvNeedInshelf = Agv.ClientShelf.None;
}
}
if
(
IOValue
(
IO_Type
.
Line_OutCheck
).
Equals
(
IO_VALUE
.
HIGH
)
&&
AgvClient
.
GetAction
(
Config
.
AgvOutName
)
==
Agv
.
ClientAction
.
None
)
if
(
IOValue
(
IO_Type
.
Line_OutCheck
).
Equals
(
IO_VALUE
.
HIGH
)
&&
AgvClient
.
GetAction
(
Config
.
AgvOutName
)
==
Agv
.
ClientAction
.
None
)
{
{
var
rfiddevice
=
RFIDManager
.
GetShelfId
(
Config
.
Out_Rfid_IP
);
var
rfiddevice
=
RFIDManager
.
GetShelfId
(
Config
.
Out_Rfid_IP
);
var
rfid
=
rfiddevice
.
NumStr
();
var
rfid
=
rfiddevice
.
NumStr
();
AgvClient
.
NeedLeave
(
Config
.
AgvOutName
,
rfid
);
if
(
AgvNeedOutshelf
==
Agv
.
ClientShelf
.
None
)
{
if
(
ConfigAppSettings
.
GetIntValue
(
Setting_Init
.
LastOutShelfType
)
==
1
)
AgvNeedOutshelf
=
Agv
.
ClientShelf
.
Full
;
else
AgvNeedOutshelf
=
Agv
.
ClientShelf
.
Empty
;
}
AgvClient
.
NeedLeave
(
Config
.
AgvOutName
,
rfid
,
AgvNeedOutshelf
);
LogUtil
.
info
(
Name
+
$
"AgvClient.NeedLeave:{Config.AgvOutName},rfid:{rfid},AgvNeedOutshelf:{AgvNeedOutshelf}"
);
AgvNeedOutshelf
=
Agv
.
ClientShelf
.
None
;
}
else
if
(
IOValue
(
IO_Type
.
Line_OutCheck
).
Equals
(
IO_VALUE
.
LOW
)
&&
AgvClient
.
GetAction
(
Config
.
AgvOutName
)
!=
Agv
.
ClientAction
.
MayLeave
&&
AgvClient
.
GetAction
(
Config
.
AgvOutName
)
!=
Agv
.
ClientAction
.
None
)
{
AgvClient
.
SetToNone
(
Config
.
AgvOutName
);
LogUtil
.
info
(
Name
+
$
"AgvClient.SetToNone:{Config.AgvOutName}"
);
}
}
}
}
...
@@ -800,7 +832,7 @@ namespace OnlineStore.DeviceLibrary
...
@@ -800,7 +832,7 @@ namespace OnlineStore.DeviceLibrary
if
(
IOValue
(
IO_Type
.
Line_OutCheck
).
Equals
(
IO_VALUE
.
HIGH
))
if
(
IOValue
(
IO_Type
.
Line_OutCheck
).
Equals
(
IO_VALUE
.
HIGH
))
{
{
IOMove
(
IO_Type
.
Line_Run
,
IO_VALUE
.
HIGH
,
false
,
4000
);
LineRun
(
"releashelf"
,
4
);
IOMove
(
IO_Type
.
Line_Stop4_Out
,
IO_VALUE
.
HIGH
,
false
,
1000
);
IOMove
(
IO_Type
.
Line_Stop4_Out
,
IO_VALUE
.
HIGH
,
false
,
1000
);
LogUtil
.
info
(
Name
+
"料串手动出库,放行区放行"
);
LogUtil
.
info
(
Name
+
"料串手动出库,放行区放行"
);
return
true
;
return
true
;
...
@@ -812,7 +844,7 @@ namespace OnlineStore.DeviceLibrary
...
@@ -812,7 +844,7 @@ namespace OnlineStore.DeviceLibrary
&&
IOValue
(
IO_Type
.
TopCylinder_Down
).
Equals
(
IO_VALUE
.
HIGH
)
&&
IOValue
(
IO_Type
.
TopCylinder_Down
).
Equals
(
IO_VALUE
.
HIGH
)
)
)
{
{
IOMove
(
IO_Type
.
Line_Run
,
IO_VALUE
.
HIGH
,
false
,
3000
);
LineRun
(
"releashelf"
,
4
);
IOMove
(
IO_Type
.
Line_Stop2_Work
,
IO_VALUE
.
HIGH
,
false
,
2000
);
IOMove
(
IO_Type
.
Line_Stop2_Work
,
IO_VALUE
.
HIGH
,
false
,
2000
);
LogUtil
.
info
(
Name
+
"料串手动出库, 工作区放行"
);
LogUtil
.
info
(
Name
+
"料串手动出库, 工作区放行"
);
return
true
;
return
true
;
...
@@ -839,7 +871,7 @@ namespace OnlineStore.DeviceLibrary
...
@@ -839,7 +871,7 @@ namespace OnlineStore.DeviceLibrary
{
{
move
.
WaitList
.
Add
(
WaitResultInfo
.
WaitIO
(
IO_Type
.
Line_Run
,
IO_VALUE
.
HIGH
));
move
.
WaitList
.
Add
(
WaitResultInfo
.
WaitIO
(
IO_Type
.
Line_Run
,
IO_VALUE
.
HIGH
));
}
}
IOMove
(
IO_Type
.
Line_Run
,
IO_VALUE
.
HIGH
);
LineRun
(
"n"
,
999
);
}
}
public
void
LineStop
(
StoreMoveInfo
move
=
null
)
public
void
LineStop
(
StoreMoveInfo
move
=
null
)
...
@@ -848,7 +880,7 @@ namespace OnlineStore.DeviceLibrary
...
@@ -848,7 +880,7 @@ namespace OnlineStore.DeviceLibrary
{
{
move
.
WaitList
.
Add
(
WaitResultInfo
.
WaitIO
(
IO_Type
.
Line_Run
,
IO_VALUE
.
LOW
));
move
.
WaitList
.
Add
(
WaitResultInfo
.
WaitIO
(
IO_Type
.
Line_Run
,
IO_VALUE
.
LOW
));
}
}
IOMove
(
IO_Type
.
Line_Run
,
IO_VALUE
.
LOW
);
LineStop
(
"n"
);
}
}
public
void
OpenGate
(
StoreMoveInfo
move
=
null
)
{
public
void
OpenGate
(
StoreMoveInfo
move
=
null
)
{
...
...
source/DeviceLibrary/duoStore/DUOStoreBean_LineRunMonitor.cs
0 → 100644
查看文件 @
05c38db
using
OnlineStore.Common
;
using
OnlineStore.LoadCSVLibrary
;
using
System
;
using
System.Collections.Generic
;
using
System.Linq
;
using
System.Text
;
using
System.Threading.Tasks
;
using
System.Timers
;
namespace
OnlineStore.DeviceLibrary
{
partial
class
DUOStoreBean
{
Timer
lineTimer
=
null
;
Dictionary
<
string
,
DateTime
>
linrunlist
=
new
Dictionary
<
string
,
DateTime
>();
void
LineInit
()
{
if
(
lineTimer
==
null
)
{
lineTimer
=
new
Timer
(
300
);
lineTimer
.
Elapsed
+=
LineTimer_Elapsed
;
lineTimer
.
Start
();
GC
.
KeepAlive
(
lineTimer
);
}
}
private
void
LineTimer_Elapsed
(
object
sender
,
ElapsedEventArgs
e
)
{
if
(
canStopLine
(
out
_
))
IOMove
(
IO_Type
.
Line_Run
,
IO_VALUE
.
LOW
);
}
/// <summary>
/// 控制线体运转
/// </summary>
/// <param name="id">需求方标识</param>
/// <param name="seconds">秒数</param>
void
LineRun
(
string
id
,
int
seconds
)
{
LineInit
();
IOMove
(
IO_Type
.
Line_Run
,
IO_VALUE
.
HIGH
);
lock
(
linrunlist
)
{
if
(!
string
.
IsNullOrEmpty
(
id
)
&&
seconds
>
0
)
{
if
(
linrunlist
.
ContainsKey
(
id
))
linrunlist
[
id
]
=
DateTime
.
Now
.
AddSeconds
(
seconds
);
else
{
linrunlist
.
Add
(
id
,
DateTime
.
Now
.
AddSeconds
(
seconds
));
}
LogUtil
.
info
(
Name
+
$
" {id} 请求链条运行 {seconds}秒."
);
}
}
}
void
LineStop
(
string
id
=
""
)
{
lock
(
linrunlist
)
{
if
(!
string
.
IsNullOrEmpty
(
id
))
{
if
(
linrunlist
.
ContainsKey
(
id
))
linrunlist
.
Remove
(
id
);
LogUtil
.
info
(
Name
+
$
" {id} 请求立刻停止线体."
);
}
}
if
(!
canStopLine
(
out
string
msg
))
LogUtil
.
info
(
Name
+
$
" {Name}"
);
// IOMove(IO_Type.Line_Run, IO_VALUE.LOW);
}
bool
canStopLine
(
out
string
msg
)
{
msg
=
""
;
bool
canStop
=
true
;
lock
(
linrunlist
)
{
foreach
(
var
x
in
linrunlist
.
ToList
())
{
if
(
x
.
Value
>
DateTime
.
Now
)
{
canStop
=
false
;
msg
=
Name
+
$
" {x.Key} 不允许停止线体 需求停止时间 {x.Value.ToString()}."
;
//LogUtil.info(Name + $" {x.Key} 不允许停止线体 需求停止时间 {x.Value.ToString()}.");
}
else
{
LogUtil
.
info
(
Name
+
$
" {x.Key} 请求时间已过期,删除."
);
linrunlist
.
Remove
(
x
.
Key
);
}
}
}
return
canStop
;
}
}
}
source/DeviceLibrary/duoStore/DUOStoreBean_Partial.cs
查看文件 @
05c38db
此文件的差异被折叠,
点击展开。
source/DeviceLibrary/duoStore/StoreManager.cs
查看文件 @
05c38db
...
@@ -20,6 +20,9 @@ namespace OnlineStore.DeviceLibrary
...
@@ -20,6 +20,9 @@ namespace OnlineStore.DeviceLibrary
public
static
Dictionary
<
int
,
BaseConfig
>
allConfigMap
=
null
;
public
static
Dictionary
<
int
,
BaseConfig
>
allConfigMap
=
null
;
private
static
bool
isInit
=
false
;
private
static
bool
isInit
=
false
;
public
static
bool
IsConnectServer
=
!
ConfigAppSettings
.
GetValue
(
Setting_Init
.
http_server
).
Equals
(
""
);
public
static
bool
IsConnectServer
=
!
ConfigAppSettings
.
GetValue
(
Setting_Init
.
http_server
).
Equals
(
""
);
public
static
string
LastVisualRfid
=
""
;
public
StoreManager
()
public
StoreManager
()
{
{
}
}
...
@@ -105,6 +108,7 @@ namespace OnlineStore.DeviceLibrary
...
@@ -105,6 +108,7 @@ namespace OnlineStore.DeviceLibrary
CSVPositionReader
<
ACBoxPosition
>.
AddCSVFile
(
positionConfigFile
);
CSVPositionReader
<
ACBoxPosition
>.
AddCSVFile
(
positionConfigFile
);
}
}
CSVPositionReader
<
ACBoxPosition
>.
AddCSVFile
(
Path
.
Combine
(
appPath
,
@"StoreConfig\FixPositions.csv"
));
CSVPositionReader
<
ACBoxPosition
>.
AddCSVFile
(
Path
.
Combine
(
appPath
,
@"StoreConfig\FixPositions.csv"
));
AgvClient
.
Init
();
LogUtil
.
info
(
"加载料仓完成!"
);
LogUtil
.
info
(
"加载料仓完成!"
);
}
}
...
@@ -513,7 +517,7 @@ namespace OnlineStore.DeviceLibrary
...
@@ -513,7 +517,7 @@ namespace OnlineStore.DeviceLibrary
{
{
LogUtil
.
error
(
deviceName
+
" "
+
ex
.
ToString
());
LogUtil
.
error
(
deviceName
+
" "
+
ex
.
ToString
());
}
}
return
99999
;
return
0
;
}
}
//public static void SendPosToStoreCheck(string deviceName, InOutParam param)
//public static void SendPosToStoreCheck(string deviceName, InOutParam param)
...
...
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论