Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
孙克
/
RC1250-VMILineClient
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit 0e31e02e
由
LN
编写于
2020-02-27 16:40:15 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
vmi链条增加休眠功能
1 个父辈
6f3cdfc5
显示空白字符变更
内嵌
并排
正在显示
6 个修改的文件
包含
133 行增加
和
4 行删除
source/DeviceLibrary/LineConfig/VMILineConfig.csv
source/DeviceLibrary/acVmiLine/VMILineBean.cs
source/DeviceLibrary/acVmiLine/VMILineBean_Partial.cs
source/LoadCVSLibrary/Config/bean/VMLLineConfig.cs
source/VMILineClient/FrmVMIClient.cs
source/VMILineClient/记录.txt
source/DeviceLibrary/LineConfig/VMILineConfig.csv
查看文件 @
0e31e02
...
@@ -2,6 +2,7 @@
...
@@ -2,6 +2,7 @@
PRO,IO模块对应的DI数量,IO_DILength,192.168.103.25#16,,,,,,,
PRO,IO模块对应的DI数量,IO_DILength,192.168.103.25#16,,,,,,,
PRO,模块对应的DO数量,IO_DOLength,192.168.103.25#16,,,,,,,
PRO,模块对应的DO数量,IO_DOLength,192.168.103.25#16,,,,,,,
PRO,IO模块IP,PRO_AOI_IP_1,192.168.103.25,,,,,,,
PRO,IO模块IP,PRO_AOI_IP_1,192.168.103.25,,,,,,,
PRO,休眠秒数(秒),SleepSeconds,60,,,,,,,
,,,,,,,,,,
,,,,,,,,,,
DI,急停,SuddenStop_BTN,0,PRO_AOI_IP_1,0,急停,X721,DI-01,0,
DI,急停,SuddenStop_BTN,0,PRO_AOI_IP_1,0,急停,X721,DI-01,0,
DI,复位,Reset_BTN,1,PRO_AOI_IP_1,0,复位,X722,DI-02,0,
DI,复位,Reset_BTN,1,PRO_AOI_IP_1,0,复位,X722,DI-02,0,
...
...
source/DeviceLibrary/acVmiLine/VMILineBean.cs
查看文件 @
0e31e02
...
@@ -97,6 +97,7 @@ namespace OnlineStore.DeviceLibrary
...
@@ -97,6 +97,7 @@ namespace OnlineStore.DeviceLibrary
isInSuddenDown
=
false
;
isInSuddenDown
=
false
;
alarmType
=
AlarmType
.
None
;
alarmType
=
AlarmType
.
None
;
SetWarnMsg
(
""
);
SetWarnMsg
(
""
);
IOManager
.
IOMove
(
IO_Type
.
Alarm_HddLed
,
IO_VALUE
.
LOW
);
IOManager
.
IOMove
(
IO_Type
.
Alarm_HddLed
,
IO_VALUE
.
LOW
);
IOManager
.
IOMove
(
IO_Type
.
AutoRun_HddLed
,
IO_VALUE
.
HIGH
);
IOManager
.
IOMove
(
IO_Type
.
AutoRun_HddLed
,
IO_VALUE
.
HIGH
);
MoveInfo
.
NextMoveStep
(
MoveStep
.
VMI_H_StopUp
);
MoveInfo
.
NextMoveStep
(
MoveStep
.
VMI_H_StopUp
);
...
@@ -145,10 +146,11 @@ namespace OnlineStore.DeviceLibrary
...
@@ -145,10 +146,11 @@ namespace OnlineStore.DeviceLibrary
{
{
case
MoveStep
.
VMI_H_StopUp
:
case
MoveStep
.
VMI_H_StopUp
:
MoveInfo
.
NextMoveStep
(
MoveStep
.
VMI_H_LineRun
);
MoveInfo
.
NextMoveStep
(
MoveStep
.
VMI_H_LineRun
);
LogUtil
.
info
(
Name
+
" 复位:阻挡上升完成,转动流水线"
);
LogUtil
.
info
(
Name
+
" 复位:阻挡上升完成,转动流水线
,停止休眠
"
);
MoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitTime
(
500
));
MoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitTime
(
500
));
IOManager
.
IOMove
(
IO_Type
.
InL_Run
,
IO_VALUE
.
HIGH
);
IOManager
.
IOMove
(
IO_Type
.
InL_Run
,
IO_VALUE
.
HIGH
);
IOManager
.
IOMove
(
IO_Type
.
OutL_Run
,
IO_VALUE
.
HIGH
);
IOManager
.
IOMove
(
IO_Type
.
OutL_Run
,
IO_VALUE
.
HIGH
);
UpdateSleep
(
false
);
break
;
break
;
case
MoveStep
.
VMI_H_LineRun
:
case
MoveStep
.
VMI_H_LineRun
:
LogUtil
.
info
(
Name
+
" 复位完成"
);
LogUtil
.
info
(
Name
+
" 复位完成"
);
...
@@ -245,6 +247,8 @@ namespace OnlineStore.DeviceLibrary
...
@@ -245,6 +247,8 @@ namespace OnlineStore.DeviceLibrary
OutLineTimerProcess
();
OutLineTimerProcess
();
IOTimeOutProcess
();
IOTimeOutProcess
();
SleepTimerProcess
();
}
}
}
}
catch
(
Exception
ex
)
catch
(
Exception
ex
)
...
...
source/DeviceLibrary/acVmiLine/VMILineBean_Partial.cs
查看文件 @
0e31e02
using
OnlineStore.Common
;
using
Asa
;
using
OnlineStore.Common
;
using
OnlineStore.LoadCSVLibrary
;
using
OnlineStore.LoadCSVLibrary
;
using
System
;
using
System
;
using
System.Collections.Generic
;
using
System.Collections.Generic
;
...
@@ -125,10 +126,122 @@ namespace OnlineStore.DeviceLibrary
...
@@ -125,10 +126,122 @@ namespace OnlineStore.DeviceLibrary
public
string
GetRunInfo
()
public
string
GetRunInfo
()
{
{
return
"进料入口料架: "
+
LastInShelfId
+
" 进料出口料架: "
+
LastOutShelfId
+
"\r\n"
+
return
"进料入口料架: "
+
LastInShelfId
+
" 进料出口料架: "
+
LastOutShelfId
+
"\r\n"
+
"进料出口"
+
Config
.
InL_AgvName
+
":"
+
AgvClient
.
GetAction
(
Config
.
InL_AgvName
)+
" 出料进口"
+
Config
.
OutL_AgvName
+
":"
+
AgvClient
.
GetAction
(
Config
.
OutL_AgvName
)
+
""
;
"进料出口"
+
Config
.
InL_AgvName
+
":"
+
AgvClient
.
GetAction
(
Config
.
InL_AgvName
)
+
" 出料进口"
+
Config
.
OutL_AgvName
+
":"
+
AgvClient
.
GetAction
(
Config
.
OutL_AgvName
)
+
"\r\n"
+
(
IsSleep
?
"休眠中"
:
"工作中"
);
}
}
#
endregion
#
endregion
#
region
休眠处理
private
bool
IsSleep
=
false
;
private
DateTime
LastBusyTime
=
DateTime
.
Now
;
private
Dictionary
<
string
,
IO_VALUE
>
lastDIValue
=
new
Dictionary
<
string
,
IO_VALUE
>();
private
List
<
string
>
needCheckList
=
new
List
<
string
>();
private
int
GetDIV
(
string
type
)
{
if
(
lastDIValue
.
ContainsKey
(
type
))
{
return
(
int
)
lastDIValue
[
type
];
}
return
-
1
;
}
private
void
SleepTimerProcess
()
{
if
(
needCheckList
.
Count
<=
0
)
{
needCheckList
.
Add
(
IO_Type
.
InL_InStopCheck
);
needCheckList
.
Add
(
IO_Type
.
InL_MIddleCheck
);
needCheckList
.
Add
(
IO_Type
.
InL_OutStopCheck
);
needCheckList
.
Add
(
IO_Type
.
OutL_InCheck
);
needCheckList
.
Add
(
IO_Type
.
OutL_InStopCheck
);
needCheckList
.
Add
(
IO_Type
.
OutL_InStopDown
);
needCheckList
.
Add
(
IO_Type
.
InL_InStopDown
);
}
bool
agvBusy
=
false
;
ClientAction
currA
=
AgvClient
.
GetAction
(
Config
.
InL_AgvName
);
if
(
currA
.
Equals
(
ClientAction
.
None
)
||
currA
.
Equals
(
ClientAction
.
NeedLeave
)
||
currA
.
Equals
(
ClientAction
.
NeedEnter
)
)
{
ClientAction
currB
=
AgvClient
.
GetAction
(
Config
.
OutL_AgvName
);
if
(
currB
.
Equals
(
ClientAction
.
None
)
||
currB
.
Equals
(
ClientAction
.
NeedLeave
)
||
currB
.
Equals
(
ClientAction
.
NeedEnter
))
{
agvBusy
=
false
;
}
else
{
LastBusyTime
=
DateTime
.
Now
;
agvBusy
=
true
;
}
}
else
{
LastBusyTime
=
DateTime
.
Now
;
agvBusy
=
true
;
}
if
(
agvBusy
&&
IsSleep
)
{
UpdateSleep
(
false
);
return
;
}
bool
diIsBusy
=
false
;
foreach
(
string
type
in
needCheckList
)
{
IO_VALUE
currValue
=
IOManager
.
IOValue
(
type
);
int
lastValue
=
GetDIV
(
type
);
if
(((
int
)
currValue
).
Equals
(
lastValue
))
{
diIsBusy
=
false
;
}
else
{
if
(
lastDIValue
.
ContainsKey
(
type
))
{
lastDIValue
[
type
]=
currValue
;
}
else
{
lastDIValue
.
Add
(
type
,
currValue
);
}
LastBusyTime
=
DateTime
.
Now
;
diIsBusy
=
true
;
UpdateSleep
(
false
);
return
;
}
}
if
(
diIsBusy
.
Equals
(
false
)
&&
agvBusy
.
Equals
(
false
)
&&
IsSleep
.
Equals
(
false
))
{
TimeSpan
time
=
DateTime
.
Now
-
LastBusyTime
;
if
(
time
.
TotalSeconds
>
Config
.
SleepSeconds
)
{
LogUtil
.
info
(
Name
+
"已经空闲【"
+
Math
.
Abs
(
time
.
TotalSeconds
)+
"】秒,开始休眠"
);
UpdateSleep
(
true
);
}
}
}
public
void
UpdateSleep
(
bool
needSleep
)
{
if
(
needSleep
)
{
IsSleep
=
true
;
IOManager
.
IOMove
(
IO_Type
.
InL_Run
,
IO_VALUE
.
LOW
);
IOManager
.
IOMove
(
IO_Type
.
OutL_Run
,
IO_VALUE
.
LOW
);
}
else
{
IsSleep
=
false
;
LastBusyTime
=
DateTime
.
Now
;
IOManager
.
IOMove
(
IO_Type
.
InL_Run
,
IO_VALUE
.
HIGH
);
IOManager
.
IOMove
(
IO_Type
.
OutL_Run
,
IO_VALUE
.
HIGH
);
};
}
#
endregion
}
}
}
}
source/LoadCVSLibrary/Config/bean/VMLLineConfig.cs
查看文件 @
0e31e02
...
@@ -17,6 +17,13 @@ namespace OnlineStore.LoadCSVLibrary
...
@@ -17,6 +17,13 @@ namespace OnlineStore.LoadCSVLibrary
{
{
}
}
/// <summary>
/// PRO,休眠秒数(秒),SleepSeconds,180,,,,,,,
/// </summary>
[
ConfigProAttribute
(
"SleepSeconds"
,
false
)]
public
int
SleepSeconds
{
get
;
set
;
}
/// <summary>
/// <summary>
/// PRO IO信号超时时间(毫秒) IOSingle_TimerOut 5000
/// PRO IO信号超时时间(毫秒) IOSingle_TimerOut 5000
/// </summary>
/// </summary>
...
...
source/VMILineClient/FrmVMIClient.cs
查看文件 @
0e31e02
source/VMILineClient/记录.txt
查看文件 @
0e31e02
...
@@ -9,3 +9,7 @@ agvclien增加cancelState的参数设置
...
@@ -9,3 +9,7 @@ agvclien增加cancelState的参数设置
20200221
20200221
agv客户端启动时需要设置状态为none
agv客户端启动时需要设置状态为none
20200227
vmi链条增加休眠功能
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论