Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
孙克
/
RC1250-AssemblyLine
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit 3315e408
由
LN
编写于
2020-02-15 13:32:25 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
1
1 个父辈
bf10fc86
隐藏空白字符变更
内嵌
并排
正在显示
2 个修改的文件
包含
59 行增加
和
46 行删除
source/DeviceLibrary/assemblyLine/FeedingEquip.cs
source/DeviceLibrary/model/KTK_Store.cs
source/DeviceLibrary/assemblyLine/FeedingEquip.cs
查看文件 @
3315e40
...
...
@@ -639,7 +639,7 @@ namespace OnlineStore.DeviceLibrary
internal
void
AgvReady
(
string
nodeId
,
RFIDData
data
)
{
string
logN
=
Name
+
"收到 AgvReady 事件 ["
+
nodeId
+
"] ["
+
data
.
ToData
()
+
"] "
;
string
logN
=
Name
+
"收到 AgvReady 事件 ["
+
nodeId
+
"] ["
+
data
.
NumStr
()
+
"] "
;
if
(
nodeId
.
Equals
(
Config
.
AgvInName
))
{
...
...
@@ -667,47 +667,49 @@ namespace OnlineStore.DeviceLibrary
//AGV已到达,将料架送入AGV中
Task
.
Factory
.
StartNew
(
delegate
{
string
logName
=
Name
+
"["
+
Config
.
AgvOutName
+
"] 料架送入AGV "
;
try
{
if
(
IOValue
(
IO_Type
.
SL_Out_Check
).
Equals
(
IO_VALUE
.
HIGH
))
{
LogUtil
.
info
(
Name
+
"料架送入AGV
开始"
);
LogUtil
.
info
(
logName
+
"
开始"
);
AgvClient
.
MayLeave
(
Config
.
AgvOutName
);
ProcessShelfOut
=
true
;
//出口阻挡下降,出口线体转动
IOMove
(
IO_Type
.
SL_Out_StopDown
,
IO_VALUE
.
HIGH
);
IOMove
(
IO_Type
.
SL_OutLine_Run
,
IO_VALUE
.
HIGH
);
if
(
WaitIo
(
IO_Type
.
SL_Out_Check
,
IO_VALUE
.
LOW
,
6000
))
{
//再转动2000
Thread
.
Sleep
(
3000
);
//停止转动 ,阻挡上升
IOMove
(
IO_Type
.
SL_OutLine_Run
,
IO_VALUE
.
LOW
);
IOMove
(
IO_Type
.
SL_Out_StopDown
,
IO_VALUE
.
LOW
);
AgvClient
.
SetStatus
(
Config
.
AgvOutName
,
""
,
ClientAction
.
FinishLeave
);
Task
.
Factory
.
StartNew
(
delegate
{
Thread
.
Sleep
(
2000
);
AgvClient
.
SetStatus
(
Config
.
AgvOutName
,
""
,
ClientAction
.
None
);
});
ProcessShelfOut
=
false
;
LogUtil
.
info
(
Name
+
"料架送入AGV 结束"
);
bool
result
=
WaitIo
(
IO_Type
.
SL_Out_Check
,
IO_VALUE
.
LOW
,
60000
);
if
(!
result
)
{
LogUtil
.
info
(
logName
+
" 等待SL_Out_Check=LOW超时,等待3000后停止转动,发送FinishLeave"
);
}
else
{
LogUtil
.
info
(
Name
+
"料架送入AGV 等待SL_Out_Check=LOW超时
"
);
{
LogUtil
.
info
(
logName
+
" 已收到SL_Out_Check=LOW ,等待3000后停止转动,发送FinishLeave
"
);
}
//再转动2000
Thread
.
Sleep
(
3000
);
//停止转动 ,阻挡上升
IOMove
(
IO_Type
.
SL_OutLine_Run
,
IO_VALUE
.
LOW
);
IOMove
(
IO_Type
.
SL_Out_StopDown
,
IO_VALUE
.
LOW
);
AgvClient
.
SetStatus
(
Config
.
AgvOutName
,
""
,
ClientAction
.
FinishLeave
);
Task
.
Factory
.
StartNew
(
delegate
{
Thread
.
Sleep
(
10000
);
AgvClient
.
SetStatus
(
Config
.
AgvOutName
,
""
,
ClientAction
.
None
);
});
ProcessShelfOut
=
false
;
LogUtil
.
info
(
logName
+
" 结束"
);
}
}
catch
(
TimeoutException
te
)
{
LogUtil
.
error
(
"料架送入AGV
超时:"
+
te
);
LogUtil
.
error
(
logName
+
"
超时:"
+
te
);
}
catch
(
Exception
ex
)
{
LogUtil
.
error
(
"料架送入AGV
出错:"
,
ex
);
LogUtil
.
error
(
logName
+
"
出错:"
,
ex
);
}
finally
{
...
...
@@ -717,14 +719,15 @@ namespace OnlineStore.DeviceLibrary
});
}
internal
void
ShelfEnterProcess
()
{
{
Task
.
Factory
.
StartNew
(
delegate
{
string
logName
=
Name
+
"AGV料架进入 ["
+
Config
.
AgvInName
+
"] "
;
try
{
if
(
IOValue
(
IO_Type
.
SL_Entry_Check
).
Equals
(
IO_VALUE
.
LOW
))
{
LogUtil
.
info
(
Name
+
"AGV料架进入
开始"
);
LogUtil
.
info
(
logName
+
"
开始"
);
AgvClient
.
MayEnter
(
Config
.
AgvInName
);
ProcessShelfEnter
=
true
;
////进料阻挡上升
...
...
@@ -734,36 +737,37 @@ namespace OnlineStore.DeviceLibrary
IOMove
(
IO_Type
.
SL_Line_Run
,
IO_VALUE
.
HIGH
);
//等待进料检测信号
if
(
WaitIo
(
IO_Type
.
SL_Entry_Check
,
IO_VALUE
.
HIGH
,
5000
))
{
bool
result
=
WaitIo
(
IO_Type
.
SL_Entry_Check
,
IO_VALUE
.
HIGH
,
60000
);
//等待200毫秒后停止转动
Thread
.
Sleep
(
3000
);
IOMove
(
IO_Type
.
SL_Line_Run
,
IO_VALUE
.
LOW
);
//料架可离开
AgvClient
.
FinishEnter
(
Config
.
AgvInName
);
Task
.
Factory
.
StartNew
(
delegate
{
Thread
.
Sleep
(
2000
);
AgvClient
.
SetStatus
(
Config
.
AgvInName
,
""
,
ClientAction
.
None
);
});
ProcessShelfEnter
=
false
;
LogUtil
.
info
(
Name
+
"AGV料架进入 结束"
);
if
(!
result
)
{
LogUtil
.
info
(
logName
+
" 等待 SL_Stop_Check=High 超时,等待3000后停止转动,发送 FinishEnter"
);
}
else
{
LogUtil
.
info
(
Name
+
"AGV料架进入 等待SL_Stop_Check=High超时
"
);
LogUtil
.
info
(
logName
+
"已收到 SL_Stop_Check=High ,等待3000后停止转动,发送 FinishEnter
"
);
}
//等待200毫秒后停止转动
Thread
.
Sleep
(
3000
);
IOMove
(
IO_Type
.
SL_Line_Run
,
IO_VALUE
.
LOW
);
//料架可离开
AgvClient
.
FinishEnter
(
Config
.
AgvInName
);
Task
.
Factory
.
StartNew
(
delegate
{
Thread
.
Sleep
(
10000
);
AgvClient
.
SetStatus
(
Config
.
AgvInName
,
""
,
ClientAction
.
None
);
});
ProcessShelfEnter
=
false
;
LogUtil
.
info
(
logName
+
" 结束"
);
}
}
catch
(
TimeoutException
te
)
{
LogUtil
.
error
(
"AGV料架进入
超时:"
+
te
);
LogUtil
.
error
(
logName
+
"
超时:"
+
te
);
}
catch
(
Exception
ex
)
{
LogUtil
.
error
(
"AGV料架进入
出错:"
,
ex
);
LogUtil
.
error
(
logName
+
"
出错:"
,
ex
);
}
finally
{
...
...
source/DeviceLibrary/model/KTK_Store.cs
查看文件 @
3315e40
...
...
@@ -446,11 +446,20 @@ namespace OnlineStore.DeviceLibrary
/// <summary>
/// 阻塞等待IO信号,等到返回true,未等到返回false
/// </summary>c
public
bool
WaitIo
(
string
ioType
,
IO_VALUE
value
,
int
timeOut
,
string
errName
=
""
)
public
bool
WaitIo
(
string
ioType
,
IO_VALUE
value
,
int
timeOut
,
string
errName
=
""
)
{
return
WaitUtil
.
Wait
(
timeOut
,
delegate
()
{
return
value
.
Equals
(
IOValue
(
ioType
));
},
errName
);
try
{
return
WaitUtil
.
Wait
(
timeOut
,
delegate
()
{
return
value
.
Equals
(
IOValue
(
ioType
));
},
errName
);
}
catch
(
Exception
ex
)
{
LogUtil
.
error
(
Name
+
"等待"
+
ioType
+
"="
+
value
+
"超时:"
+
ex
.
ToString
());
return
false
;
}
}
}
}
...
...
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论