Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
孙克
/
RC1250-AssemblyLine
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit 44252d09
由
LN
编写于
2019-11-27 18:59:47 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
1
1 个父辈
fc3aba05
隐藏空白字符变更
内嵌
并排
正在显示
5 个修改的文件
包含
67 行增加
和
61 行删除
source/AssemblyLineClient/FrmRFIPEdit.cs
source/DeviceLibrary/assemblyLine/FeedingEquip.cs
source/DeviceLibrary/assemblyLine/FeedingEquip_Partial.cs
source/DeviceLibrary/assemblymanager/TrayManager.cs
source/DeviceLibrary/deviceLibrary/RFID/RFIDManager.cs
source/AssemblyLineClient/FrmRFIPEdit.cs
查看文件 @
44252d0
...
@@ -79,7 +79,7 @@ namespace OnlineStore.AssemblyLine
...
@@ -79,7 +79,7 @@ namespace OnlineStore.AssemblyLine
private
void
button1_Click
(
object
sender
,
EventArgs
e
)
private
void
button1_Click
(
object
sender
,
EventArgs
e
)
{
{
string
ip
=
txtIP
.
Text
;
string
ip
=
txtIP
.
Text
;
RFIDData
data
=
RFIDManager
.
Read
RFID
Data
(
ip
);
RFIDData
data
=
RFIDManager
.
ReadData
(
ip
);
string
resul
=
""
;
string
resul
=
""
;
if
(
data
!=
null
)
if
(
data
!=
null
)
{
{
...
...
source/DeviceLibrary/assemblyLine/FeedingEquip.cs
查看文件 @
44252d0
...
@@ -378,8 +378,8 @@ namespace OnlineStore.DeviceLibrary
...
@@ -378,8 +378,8 @@ namespace OnlineStore.DeviceLibrary
#
endregion
#
endregion
#
region
AGV
#
region
AGV
private
bool
Process
ReviceShelf
=
false
;
private
bool
Process
ShelfEnter
=
false
;
private
bool
ProcessS
endShelf
=
false
;
private
bool
ProcessS
helfOut
=
false
;
internal
bool
ProcessAGVAction
(
string
name
,
Actions
action
)
internal
bool
ProcessAGVAction
(
string
name
,
Actions
action
)
{
{
string
logN
=
name
+
"收到调度【"
+
name
+
"】=【"
+
action
+
"】"
;
string
logN
=
name
+
"收到调度【"
+
name
+
"】=【"
+
action
+
"】"
;
...
@@ -389,9 +389,10 @@ namespace OnlineStore.DeviceLibrary
...
@@ -389,9 +389,10 @@ namespace OnlineStore.DeviceLibrary
if
(
action
.
Equals
(
Asa
.
Actions
.
Usable
))
if
(
action
.
Equals
(
Asa
.
Actions
.
Usable
))
{
{
//判断入口是否可用:入口无料架,缓冲工位无料架,不在入料架处理中
//判断入口是否可用:入口无料架,缓冲工位无料架,不在入料架处理中
bool
usable
=
(
runStatus
.
Equals
(
LineRunStatus
.
Runing
)
&&
bool
usable
=
(
runStatus
.
Equals
(
LineRunStatus
.
Runing
)
MoveInfo
.
MoveType
.
Equals
(
LineMoveType
.
None
)
&&
&&
MoveInfo
.
MoveType
.
Equals
(
LineMoveType
.
None
)
ProcessReviceShelf
.
Equals
(
false
)
&&
ProcessShelfEnter
.
Equals
(
false
)
&&
IOValue
(
IO_Type
.
SL_Entry_Check
).
Equals
(
IO_VALUE
.
LOW
)
&&
IOValue
(
IO_Type
.
SL_Stop_Check
).
Equals
(
IO_VALUE
.
LOW
));
&&
IOValue
(
IO_Type
.
SL_Stop_Check
).
Equals
(
IO_VALUE
.
LOW
));
LogUtil
.
info
(
logN
+
":"
+
usable
);
LogUtil
.
info
(
logN
+
":"
+
usable
);
...
@@ -405,10 +406,10 @@ namespace OnlineStore.DeviceLibrary
...
@@ -405,10 +406,10 @@ namespace OnlineStore.DeviceLibrary
return
false
;
return
false
;
}
}
//小车到达,开始处理
//小车到达,开始处理
if
(
runStatus
>=
(
LineRunStatus
.
Runing
)
&&
if
(
runStatus
>=
(
LineRunStatus
.
Runing
)
MoveInfo
.
MoveType
.
Equals
(
LineMoveType
.
None
)
&&
&&
MoveInfo
.
MoveType
.
Equals
(
LineMoveType
.
None
)
ProcessReviceShelf
.
Equals
(
false
)
&&
&&
ProcessShelfEnter
.
Equals
(
false
)
IOValue
(
IO_Type
.
SL_Stop_Check
).
Equals
(
IO_VALUE
.
LOW
))
&&
IOValue
(
IO_Type
.
SL_Stop_Check
).
Equals
(
IO_VALUE
.
LOW
))
{
{
ShelfEnterProcess
();
ShelfEnterProcess
();
return
true
;
return
true
;
...
@@ -431,7 +432,7 @@ namespace OnlineStore.DeviceLibrary
...
@@ -431,7 +432,7 @@ namespace OnlineStore.DeviceLibrary
//小车到达,开始处理
//小车到达,开始处理
if
(
runStatus
>=
(
LineRunStatus
.
Runing
)
&&
if
(
runStatus
>=
(
LineRunStatus
.
Runing
)
&&
MoveInfo
.
MoveType
.
Equals
(
LineMoveType
.
None
)
&&
MoveInfo
.
MoveType
.
Equals
(
LineMoveType
.
None
)
&&
Process
ReviceShelf
.
Equals
(
false
)
&&
Process
ShelfOut
.
Equals
(
false
)
&&
IOValue
(
IO_Type
.
SL_Out_Check
).
Equals
(
IO_VALUE
.
HIGH
))
IOValue
(
IO_Type
.
SL_Out_Check
).
Equals
(
IO_VALUE
.
HIGH
))
{
{
ShelfOutProcess
();
ShelfOutProcess
();
...
@@ -464,25 +465,29 @@ namespace OnlineStore.DeviceLibrary
...
@@ -464,25 +465,29 @@ namespace OnlineStore.DeviceLibrary
{
{
LogUtil
.
info
(
Name
+
"出库料架送入AGV 开始"
);
LogUtil
.
info
(
Name
+
"出库料架送入AGV 开始"
);
AgvClient
.
MayOut
(
Config
.
AgvOutName
);
AgvClient
.
MayOut
(
Config
.
AgvOutName
);
ProcessS
endShelf
=
true
;
ProcessS
helfOut
=
true
;
//出口阻挡下降,出口线体转动
//出口阻挡下降,出口线体转动
IOMove
(
IO_Type
.
SL_Out_StopDown
,
IO_VALUE
.
LOW
);
IOMove
(
IO_Type
.
SL_Out_StopDown
,
IO_VALUE
.
LOW
);
IOMove
(
IO_Type
.
SL_OutLine_Run
,
IO_VALUE
.
HIGH
);
IOMove
(
IO_Type
.
SL_OutLine_Run
,
IO_VALUE
.
HIGH
);
WaitIo
(
IO_Type
.
SL_Out_Check
,
IO_VALUE
.
LOW
,
2000
);
if
(
WaitIo
(
IO_Type
.
SL_Out_Check
,
IO_VALUE
.
LOW
,
2000
))
//等待收到AGV消息
WaitUtil
.
Wait
(
3000
,
delegate
{
{
return
AgvClient
.
GetAction
(
Config
.
AgvOutName
).
Equals
(
Actions
.
FinishOut
);
//等待收到AGV消息
},
"等待AGV收到料架"
);
WaitUtil
.
Wait
(
3000
,
delegate
{
//停止转动
return
AgvClient
.
GetAction
(
Config
.
AgvOutName
).
Equals
(
Actions
.
FinishOut
);
IOMove
(
IO_Type
.
SL_OutLine_Run
,
IO_VALUE
.
LOW
);
},
"等待AGV收到料架"
);
ProcessSendShelf
=
false
;
//停止转动
LogUtil
.
info
(
Name
+
"出库料架送入AGV 结束"
);
IOMove
(
IO_Type
.
SL_OutLine_Run
,
IO_VALUE
.
LOW
);
ProcessShelfOut
=
false
;
LogUtil
.
info
(
Name
+
"出库料架送入AGV 结束"
);
}
else
{
LogUtil
.
info
(
Name
+
"出库料架送入AGV 等待SL_Out_Check=LOW超时"
);
}
}
}
}
}
catch
(
TimeoutException
te
)
catch
(
TimeoutException
te
)
...
@@ -496,15 +501,15 @@ namespace OnlineStore.DeviceLibrary
...
@@ -496,15 +501,15 @@ namespace OnlineStore.DeviceLibrary
finally
finally
{
{
IOMove
(
IO_Type
.
SL_OutLine_Run
,
IO_VALUE
.
LOW
);
IOMove
(
IO_Type
.
SL_OutLine_Run
,
IO_VALUE
.
LOW
);
ProcessS
endShelf
=
false
;
ProcessS
helfOut
=
false
;
}
}
});
});
}
}
internal
void
ShelfEnterProcess
()
internal
void
ShelfEnterProcess
()
{
{
//判断料架的编码是否正确
//判断料架的编码是否正确
int
num
=
TrayManager
.
GetShelfNum
(
DeviceID
);
RFIDData
data
=
TrayManager
.
GetShelfData
(
DeviceID
);
if
(
n
um
<=
0
)
if
(
data
.
N
um
<=
0
)
{
{
MoveInfo
.
EndMove
();
MoveInfo
.
EndMove
();
runStatus
=
LineRunStatus
.
Runing
;
runStatus
=
LineRunStatus
.
Runing
;
...
@@ -512,7 +517,8 @@ namespace OnlineStore.DeviceLibrary
...
@@ -512,7 +517,8 @@ namespace OnlineStore.DeviceLibrary
return
;
return
;
}
}
//发送料架信息给调度系统
//发送料架信息给调度系统
AgvClient
.
SendRFID
(
Config
.
AgvInName
,
TrayManager
.
GetShelfData
(
DeviceID
));
AgvClient
.
SendRFID
(
Config
.
AgvInName
,
data
.
ToData
());
LogUtil
.
info
(
Name
+
"入料口读取到料架:"
+
data
.
ToStr
());
Task
.
Factory
.
StartNew
(
delegate
Task
.
Factory
.
StartNew
(
delegate
{
{
try
try
...
@@ -521,7 +527,7 @@ namespace OnlineStore.DeviceLibrary
...
@@ -521,7 +527,7 @@ namespace OnlineStore.DeviceLibrary
{
{
LogUtil
.
info
(
Name
+
"AGV料架进入缓冲工位 开始"
);
LogUtil
.
info
(
Name
+
"AGV料架进入缓冲工位 开始"
);
AgvClient
.
MayEnter
(
Config
.
AgvInName
);
AgvClient
.
MayEnter
(
Config
.
AgvInName
);
Process
ReviceShelf
=
true
;
Process
ShelfEnter
=
true
;
//进料阻挡下降,缓冲阻挡上升
//进料阻挡下降,缓冲阻挡上升
IOMove
(
IO_Type
.
SL_Entry_StopDown
,
IO_VALUE
.
HIGH
);
IOMove
(
IO_Type
.
SL_Entry_StopDown
,
IO_VALUE
.
HIGH
);
IOMove
(
IO_Type
.
SL_Buffer_StopDown
,
IO_VALUE
.
LOW
);
IOMove
(
IO_Type
.
SL_Buffer_StopDown
,
IO_VALUE
.
LOW
);
...
@@ -529,23 +535,29 @@ namespace OnlineStore.DeviceLibrary
...
@@ -529,23 +535,29 @@ namespace OnlineStore.DeviceLibrary
IOMove
(
IO_Type
.
SL_Line_Run
,
IO_VALUE
.
HIGH
);
IOMove
(
IO_Type
.
SL_Line_Run
,
IO_VALUE
.
HIGH
);
//等待阻挡检测信号
//等待阻挡检测信号
WaitIo
(
IO_Type
.
SL_Stop_Check
,
IO_VALUE
.
HIGH
,
3000
);
if
(
WaitIo
(
IO_Type
.
SL_Stop_Check
,
IO_VALUE
.
HIGH
,
3000
))
{
//料架完成进入
//料架完成进入
//AgvClient.FinishEnter(Config.AgvInName);
//AgvClient.FinishEnter(Config.AgvInName);
//上升入口阻挡信号
//上升入口阻挡信号
IOMove
(
IO_Type
.
SL_Entry_StopDown
,
IO_VALUE
.
HIGH
);
IOMove
(
IO_Type
.
SL_Entry_StopDown
,
IO_VALUE
.
HIGH
);
//等待200毫秒后停止转动
//等待200毫秒后停止转动
Thread
.
Sleep
(
200
);
Thread
.
Sleep
(
200
);
IOMove
(
IO_Type
.
SL_Line_Run
,
IO_VALUE
.
LOW
);
IOMove
(
IO_Type
.
SL_Line_Run
,
IO_VALUE
.
LOW
);
//料架可离开
//料架可离开
AgvClient
.
FinishEnter
(
Config
.
AgvInName
);
AgvClient
.
FinishEnter
(
Config
.
AgvInName
);
ProcessReviceShelf
=
false
;
ProcessShelfEnter
=
false
;
LogUtil
.
info
(
Name
+
"AGV料架进入缓冲工位 结束"
);
LogUtil
.
info
(
Name
+
"AGV料架进入缓冲工位 结束"
);
}
else
{
LogUtil
.
info
(
Name
+
"AGV料架进入缓冲工位 等待SL_Stop_Check=High超时"
);
}
}
}
}
}
...
@@ -560,7 +572,7 @@ namespace OnlineStore.DeviceLibrary
...
@@ -560,7 +572,7 @@ namespace OnlineStore.DeviceLibrary
finally
finally
{
{
IOMove
(
IO_Type
.
SL_Line_Run
,
IO_VALUE
.
LOW
);
IOMove
(
IO_Type
.
SL_Line_Run
,
IO_VALUE
.
LOW
);
Process
ReviceShelf
=
false
;
Process
ShelfEnter
=
false
;
}
}
});
});
}
}
...
...
source/DeviceLibrary/assemblyLine/FeedingEquip_Partial.cs
查看文件 @
44252d0
...
@@ -369,7 +369,7 @@ namespace OnlineStore.DeviceLibrary
...
@@ -369,7 +369,7 @@ namespace OnlineStore.DeviceLibrary
//小车到达,开始处理
//小车到达,开始处理
if
(
runStatus
>=
(
LineRunStatus
.
Runing
)
&&
if
(
runStatus
>=
(
LineRunStatus
.
Runing
)
&&
MoveInfo
.
MoveType
.
Equals
(
LineMoveType
.
None
)
&&
MoveInfo
.
MoveType
.
Equals
(
LineMoveType
.
None
)
&&
Process
ReviceShelf
.
Equals
(
false
)
&&
Process
ShelfEnter
.
Equals
(
false
)
&&
IOValue
(
IO_Type
.
SL_Stop_Check
).
Equals
(
IO_VALUE
.
LOW
))
IOValue
(
IO_Type
.
SL_Stop_Check
).
Equals
(
IO_VALUE
.
LOW
))
{
{
ShelfEnterProcess
();
ShelfEnterProcess
();
...
...
source/DeviceLibrary/assemblymanager/TrayManager.cs
查看文件 @
44252d0
...
@@ -199,7 +199,7 @@ namespace OnlineStore.DeviceLibrary
...
@@ -199,7 +199,7 @@ namespace OnlineStore.DeviceLibrary
{
{
string
ip
=
GetRFIP
(
subType
);
string
ip
=
GetRFIP
(
subType
);
//获取盘号
//获取盘号
RFIDData
data
=
RFIDManager
.
Read
RFID
Data
(
ip
);
RFIDData
data
=
RFIDManager
.
ReadData
(
ip
);
if
(
data
!=
null
)
if
(
data
!=
null
)
{
{
if
(
data
.
RFType
.
Equals
(
"E"
))
if
(
data
.
RFType
.
Equals
(
"E"
))
...
@@ -213,31 +213,25 @@ namespace OnlineStore.DeviceLibrary
...
@@ -213,31 +213,25 @@ namespace OnlineStore.DeviceLibrary
}
}
return
0
;
return
0
;
}
}
public
static
int
GetShelfNum
(
int
subType
)
public
static
RFIDData
GetShelfData
(
int
subType
)
{
{
string
ip
=
GetRFIP
(
subType
,
1
);
string
ip
=
GetRFIP
(
subType
,
1
);
//获取盘号
//获取盘号
RFIDData
data
=
RFIDManager
.
Read
RFID
Data
(
ip
);
RFIDData
data
=
RFIDManager
.
ReadData
(
ip
);
if
(
data
!=
null
)
if
(
data
!=
null
)
{
{
if
(
data
.
RFType
.
Equals
(
"B"
))
if
(
data
.
RFType
.
Equals
(
"B"
))
{
{
return
data
.
Num
;
return
data
;
}
}
else
else
{
{
LogUtil
.
error
(
"读取料架RFID["
+
subType
+
"]["
+
ip
+
"]的数据出错:"
+
data
.
ToStr
());
LogUtil
.
error
(
"读取料架RFID["
+
subType
+
"]["
+
ip
+
"]的数据出错:"
+
data
.
ToStr
());
}
}
}
}
return
0
;
}
public
static
byte
[]
GetShelfData
(
int
subType
)
{
string
ip
=
GetRFIP
(
subType
,
1
);
//获取盘号
byte
[]
data
=
RFIDManager
.
ReadData
(
ip
);
return
data
;
return
data
;
}
}
public
static
string
GetRFIP
(
int
subType
,
int
rtType
=
0
)
public
static
string
GetRFIP
(
int
subType
,
int
rtType
=
0
)
{
{
string
ip
=
""
;
string
ip
=
""
;
...
...
source/DeviceLibrary/deviceLibrary/RFID/RFIDManager.cs
查看文件 @
44252d0
...
@@ -134,7 +134,7 @@ namespace OnlineStore.DeviceLibrary
...
@@ -134,7 +134,7 @@ namespace OnlineStore.DeviceLibrary
byte
[]
sendData
=
obj
.
ToData
();
byte
[]
sendData
=
obj
.
ToData
();
return
WriteData
(
IP
,
sendData
,
3
);
return
WriteData
(
IP
,
sendData
,
3
);
}
}
public
static
RFIDData
Read
RFID
Data
(
string
IP
)
public
static
RFIDData
ReadData
(
string
IP
)
{
{
byte
[]
reviceData
=
ReadData
(
IP
,
3
);
byte
[]
reviceData
=
ReadData
(
IP
,
3
);
if
(
reviceData
!=
null
)
if
(
reviceData
!=
null
)
...
@@ -143,11 +143,11 @@ namespace OnlineStore.DeviceLibrary
...
@@ -143,11 +143,11 @@ namespace OnlineStore.DeviceLibrary
}
}
return
null
;
return
null
;
}
}
public
static
byte
[]
ReadData
(
string
IP
)
//
public static byte[] ReadData(string IP)
{
//
{
byte
[]
reviceData
=
ReadData
(
IP
,
3
);
//
byte[] reviceData = ReadData(IP, 3);
return
reviceData
;
//
return reviceData;
}
//
}
public
static
string
SearchIP
(
string
localIp
)
public
static
string
SearchIP
(
string
localIp
)
{
{
string
ip
=
""
;
string
ip
=
""
;
...
...
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论