Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
刘韬
/
1053_CycleLine
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit 1d786b63
由
刘韬
编写于
2023-04-14 13:35:27 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
优化MyCronic报错处理
1 个父辈
dff26e48
隐藏空白字符变更
内嵌
并排
正在显示
43 个修改的文件
包含
970 行增加
和
1145 行删除
Common/CodeResourceControl.cs
Common/Common.csproj
Common/Setting_Init.cs
DeviceLibrary/DeviceLibrary.csproj
DeviceLibrary/DeviceLibrary/AxisBean.cs
DeviceLibrary/DeviceLibrary/IOManager.cs
DeviceLibrary/DeviceLibrary/RobotMoveHelper.cs
DeviceLibrary/DeviceLibrary/ServerCommunication.cs
DeviceLibrary/StoreConfig/fixPositions.csv
DeviceLibrary/StoreConfig/linePositions.csv
DeviceLibrary/VirtuallyStore/VServerComm.cs
DeviceLibrary/VirtuallyStore/VStore.cs
DeviceLibrary/VirtuallyStore/VStoreCollection.cs
DeviceLibrary/theMachine/DeviceBase.cs
DeviceLibrary/theMachine/MainMachine _LedProcess.cs
DeviceLibrary/theMachine/MoveInfo.cs
DeviceLibrary/theMachine/RobotManage.cs
DeviceLibrary/theMachine/TrayManager.cs
DeviceLibrary/theMachine/sub/MI.cs
DeviceLibrary/theMachine/sub/SideMove.cs
DeviceLibrary/theMachine/sub/TransplantMove.cs
DeviceLibrary/theMachine/sub/TrayStop.cs
DeviceLibrary/userControl/FixtureSizeConfigControl.Designer.cs
LoadCVSLibrary/LoadCSVLibrary.csproj
LoadCVSLibrary/app.config
RemoteSheardObject/Class1.cs
RemoteSheardObject/RemoteSheardObject.csproj
RemoteSheardObject/TheLine.cs
TheMachine/App.config
TheMachine/Form1.Designer.cs
TheMachine/Form1.cs
TheMachine/IOControls.Designer.cs
TheMachine/TheMachine.csproj
TheMachine/TrayManagerControl.cs
TheMachine/UC/ConfigControl.cs
TheMachine/UC/FrmPassCheck.cs
TheMachine/UC/FrmPassCheck.designer.cs
TheMachine/UC/FrmPassCheck.resx
TheMachine/UC/RobotPosControl.cs
TheMachine/UC/UCURRobot.cs
TheMachine/device/Other/MycronicControl.Designer.cs
TheMachine/device/Other/MycronicControl.cs
TheMachine/device/TrayStopControl.cs
Common/CodeResourceControl.cs
查看文件 @
1d786b6
...
...
@@ -277,8 +277,8 @@ namespace OnlineStore
//}
//string className = cc.ClassName;
CurrLanguage
=
CodeResourceControl
.
GetLanguage
();
//string name = CodeResourceControl.GetString(CodeResourceControl.GetTextIdStr(className)
, cc.Text);
//
if (!name.Equals("")) { cc.Text = name; }
string
name
=
CodeResourceControl
.
GetString
(
class
Name
,
cc
.
Text
);
if
(!
name
.
Equals
(
""
))
{
cc
.
Text
=
name
;
}
PreControlLanaguage
(
cc
,
class
Name
);
RefreshLanguageEvent
?.
Invoke
();
...
...
Common/Common.csproj
查看文件 @
1d786b6
...
...
@@ -9,7 +9,7 @@
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>OnlineStore.Common</RootNamespace>
<AssemblyName>MyCommon</AssemblyName>
<TargetFrameworkVersion>v4.
6.2
</TargetFrameworkVersion>
<TargetFrameworkVersion>v4.
8
</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<TargetFrameworkProfile />
</PropertyGroup>
...
...
Common/Setting_Init.cs
查看文件 @
1d786b6
...
...
@@ -74,12 +74,15 @@ namespace OnlineStore.Common
[
MyConfigComment
(
"二维码扫码超时毫秒"
)]
public
static
MyConfig
<
int
>
CameraScan_CodeTimeOut
=
3000
;
[
MyConfigComment
(
"管理员密码"
)]
public
static
MyConfig
<
string
>
User_AdminPassword
=
"1"
;
[
MyConfigComment
(
"启用管理员密码"
)]
public
static
MyConfig
<
bool
>
User_Enable
=
false
;
public
static
MyConfig
<
string
>
Runtime_OutStoreReelInfo
;
public
static
MyConfig
<
string
>
Runtime_Robot_ReelInfo
;
public
static
MyConfig
<
string
>
Runtime_Robot_FromPos
;
public
static
MyConfig
<
string
>
Runtime_Robot_ToPos
;
public
static
MyConfig
<
string
>
RuntimeRobot_Arm_MoveStep
;
public
static
MyConfig
<
string
>
RuntimeRobot_MoveStep
;
//public static MyConfig<string> Runtime_Robot_ReelInfo;
//public static MyConfig<string> Runtime_Robot_FromPos;
//public static MyConfig<string> Runtime_Robot_ToPos;
}
}
DeviceLibrary/DeviceLibrary.csproj
查看文件 @
1d786b6
...
...
@@ -9,7 +9,7 @@
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>DeviceLibrary</RootNamespace>
<AssemblyName>DeviceLibrary</AssemblyName>
<TargetFrameworkVersion>v4.
7.2
</TargetFrameworkVersion>
<TargetFrameworkVersion>v4.
8
</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<Deterministic>true</Deterministic>
<TargetFrameworkProfile />
...
...
@@ -202,12 +202,6 @@
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="packages.config" />
<None Include="StoreConfig\fixPositions.csv">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="StoreConfig\linePositions.csv">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>
\ No newline at end of file
DeviceLibrary/DeviceLibrary/AxisBean.cs
查看文件 @
1d786b6
using
OnlineStore.Common
;
using
OnlineStore
;
using
OnlineStore.Common
;
using
OnlineStore.LoadCSVLibrary
;
using
System
;
using
System.Collections.Generic
;
...
...
@@ -46,28 +47,28 @@ namespace DeviceLibrary
openretry
++;
{
Msg
+=
string
.
Format
(
"第{0}次尝试打开轴:{1}"
,
openretry
,
Config
.
Explain
);
Msg
+=
string
.
Format
(
crc
.
GetString
(
"Res0073.1bf30741"
,
"第{0}次尝试打开轴:{1}"
)
,
openretry
,
Config
.
Explain
);
if
(
AxisManager
.
GetBusyStatus
(
portName
,
slvAddr
)
==
1
)
{
AxisManager
.
SuddenStop
(
portName
,
slvAddr
);
Msg
+=
string
.
Format
(
"...伺服忙碌,急停{0}次"
,
openretry
);
Msg
+=
string
.
Format
(
crc
.
GetString
(
"Res0074.814c87d5"
,
"...伺服忙碌,急停{0}次"
)
,
openretry
);
Thread
.
Sleep
(
100
);
}
AxisManager
.
ServoOn
(
portName
,
slvAddr
);
Thread
.
Sleep
(
200
);
if
(
AxisManager
.
IsServeoOn
(
portName
,
slvAddr
))
{
Msg
+=
"..."
+
"使能成功"
;
Msg
+=
"..."
+
crc
.
GetString
(
"Res0075.c054671f"
,
"使能成功"
)
;
openretry
=
0
;
return
true
;
}
else
Msg
+=
"..."
+
"尝试使能失败"
;
Msg
+=
"..."
+
crc
.
GetString
(
"Res0076.94b55bdf"
,
"尝试使能失败"
)
;
Thread
.
Sleep
(
1000
);
if
(
openretry
<
5
)
Msg
=
"伺服连接中"
+
"..."
;
Msg
=
crc
.
GetString
(
"Res0077.abdd7b6b"
,
"伺服连接中"
)
+
"..."
;
}
return
false
;
}
...
...
@@ -162,7 +163,7 @@ namespace DeviceLibrary
int
isAlarm
=
AxisManager
.
GetAlarmStatus
(
deviceName
,
axisNo
);
if
(
isAlarm
.
Equals
(
1
))
{
clearMsg
=
"清理报警"
+
","
;
clearMsg
=
crc
.
GetString
(
"Res0078.a6087377"
,
"清理报警"
)
+
","
;
AxisManager
.
AlarmClear
(
deviceName
,
axisNo
);
Thread
.
Sleep
(
200
);
AxisManager
.
ServoOn
(
deviceName
,
axisNo
);
...
...
@@ -183,7 +184,7 @@ namespace DeviceLibrary
}
else
{
msg
=
$
"{MoveInfo.Name} {MoveInfo.MoveStep} {axis.DisplayStr},"
+
"目标位置"
+
$
"{targetPosition},"
+
"当前位置"
+
$
"{outCount}"
+
",误差过大,需要报警"
;
msg
=
$
"{MoveInfo.Name} {MoveInfo.MoveStep} {axis.DisplayStr},"
+
crc
.
GetString
(
"Res0079.84ab6e6f"
,
"目标位置"
)
+
$
"{targetPosition},"
+
crc
.
GetString
(
"Res0080.5eac11b4"
,
"当前位置"
)
+
$
"{outCount}"
+
crc
.
GetString
(
"Res0081.8d390ec9"
,
",误差过大,需要报警"
)
;
MoveInfo
.
error
(
msg
);
}
}
...
...
@@ -204,14 +205,14 @@ namespace DeviceLibrary
//判断是否需要重新运动
if
(
MoveInfo
.
CanWhileCount
>
0
)
{
MoveInfo
.
error
(
MoveInfo
.
Name
+
axis
.
DisplayStr
+
"收到原点完成信号,当前位置["
+
outCount
+
"],重新回原点,剩余["
+
MoveInfo
.
CanWhileCount
+
"]次"
);
MoveInfo
.
error
(
MoveInfo
.
Name
+
axis
.
DisplayStr
+
crc
.
GetString
(
"Res0082.8aafcde8"
,
"收到原点完成信号,当前位置["
)
+
outCount
+
crc
.
GetString
(
"Res0083.b8b7de19"
,
"],重新回原点,剩余["
)
+
MoveInfo
.
CanWhileCount
+
crc
.
GetString
(
"Res0084.62bd0209"
,
"]次"
)
);
//LogUtil.error( StoreName + moveAxis.DisplayStr + "重新回原点");
AxisManager
.
HomeMove
(
axis
.
DeviceName
,
axis
.
GetAxisValue
(),
axis
.
HomeHighSpeed
,
axis
.
HomeLowSpeed
,
axis
.
HomeAddSpeed
);
MoveInfo
.
CanWhileCount
--;
}
else
{
msg
=
MoveInfo
.
Name
+
" "
+
MoveInfo
.
MoveStep
+
axis
.
DisplayStr
+
","
+
"收到原点完成信号,当前位置"
+
"["
+
outCount
+
"],"
+
"误差过大,需要报警"
;
msg
=
MoveInfo
.
Name
+
" "
+
MoveInfo
.
MoveStep
+
axis
.
DisplayStr
+
","
+
crc
.
GetString
(
"Res0085.89db0f26"
,
"收到原点完成信号,当前位置"
)
+
"["
+
outCount
+
"],"
+
crc
.
GetString
(
"Res0086.53ce14b2"
,
"误差过大,需要报警"
)
;
MoveInfo
.
error
(
msg
);
}
}
...
...
@@ -415,11 +416,11 @@ namespace DeviceLibrary
Thread
.
Sleep
(
200
);
if
(
AxisManager
.
GetAlarmStatus
(
portName
,
slvAddr
)
!=
0
)
{
msg
+=
string
.
Format
(
"轴(0)存在报警,清除失败"
,
axis
.
Config
.
Explain
);
msg
+=
string
.
Format
(
crc
.
GetString
(
"Res0087.95840864"
,
"轴(0)存在报警,清除失败"
)
,
axis
.
Config
.
Explain
);
isok
=
false
;
}
else
msg
+=
string
.
Format
(
"轴(0)存在报警,清除成功"
,
axis
.
Config
.
Explain
);
msg
+=
string
.
Format
(
crc
.
GetString
(
"Res0088.b5876296"
,
"轴(0)存在报警,清除成功"
)
,
axis
.
Config
.
Explain
);
}
}
Thread
.
Sleep
(
50
);
...
...
@@ -427,4 +428,4 @@ namespace DeviceLibrary
}
}
}
}
\ No newline at end of file
DeviceLibrary/DeviceLibrary/IOManager.cs
查看文件 @
1d786b6
...
...
@@ -27,11 +27,12 @@ namespace DeviceLibrary
{
ConfigIO
configIo
=
StoreManager
.
Config
.
DOList
[
device
][
ioType
];
instance
.
WriteSingleDO
(
configIo
.
DeviceName
,
configIo
.
SlaveID
,
configIo
.
GetIOAddr
(),
ioValue
);
if
(
configIo
.
GetIOAddr
()
==
9
||
configIo
.
GetIOAddr
()
==
12
)
{
if
(
configIo
.
GetIOAddr
()
==
0
)
//(configIo.GetIOAddr() == 9 || configIo.GetIOAddr() == 12)
{
LogUtil
.
info
(
$
"{configIo.GetIOAddr()}=={ioValue},device={device},ioType={ioType}"
);
StackTrace
stackTrace
=
new
StackTrace
();
for
(
int
i
=
0
;
i
<
stackTrace
.
FrameCount
;
i
++)
{
{
StackFrame
stackFrame
=
stackTrace
.
GetFrame
(
i
);
string
fileName
=
stackFrame
.
GetFileName
();
int
lineNumber
=
stackFrame
.
GetFileLineNumber
();
...
...
DeviceLibrary/DeviceLibrary/RobotMoveHelper.cs
查看文件 @
1d786b6
...
...
@@ -11,18 +11,20 @@ using System.Threading.Tasks;
namespace
DeviceLibrary
{
class
RobotHelper
public
class
RobotHelper
{
int
lastMoveCmd
=
0
;
int
lastSpeedRate
=
0
;
public
int
lastWeight
=
0
;
URRobotControl
robot
;
System
.
Timers
.
Timer
RobotCheck
;
string
Robotname
;
public
RobotHelper
(
URRobotControl
_robot
,
string
robotname
)
{
public
RobotHelper
(
URRobotControl
_robot
,
string
robotname
)
{
robot
=
_robot
;
Robotname
=
robotname
;
RobotCheck
=
new
System
.
Timers
.
Timer
(
5000
);
RobotCheck
.
Elapsed
+=
RobotCheck_Elapsed
;
}
public
volatile
bool
RobotStatus
=
false
;
private
void
RobotCheck_Elapsed
(
object
sender
,
System
.
Timers
.
ElapsedEventArgs
e
)
...
...
@@ -42,6 +44,10 @@ namespace DeviceLibrary
if
(
robot
.
CurDashboardReponse
.
Contains
(
"PROTECTIVE_STOP"
))
{
robot
.
SendCMD
(
"unlock protective stop"
,
0
);
lastWeight
=
lastWeight
+
1
;
if
(
lastWeight
>
4
)
lastWeight
=
1
;
robot
.
log
(
"触发保护性停止,调节负载重量:"
+
lastWeight
);
return
;
}
return
;
...
...
@@ -71,7 +77,7 @@ namespace DeviceLibrary
void
uploadStatus
()
{
EquipMsgData
equipMsg
=
new
EquipMsgData
();
equipMsg
.
msgList
=
new
List
<
EquipMessage
>();
equipMsg
.
status
=
RobotStatus
?
1
:
2
;
equipMsg
.
status
=
RobotStatus
?
1
:
2
;
if
(!
RobotStatus
)
{
equipMsg
.
msgList
.
Add
(
new
EquipMessage
()
...
...
@@ -83,13 +89,19 @@ namespace DeviceLibrary
equipMsg
.
equipName
=
Robotname
;
TheLine
.
UploadStatus
(
equipMsg
);
}
public
void
Move
(
MoveInfo
moveInfo
,
int
movecmd
)
{
DateTime
LastMoveTime
=
DateTime
.
Now
;
int
retrytime
=
0
;
public
void
Move
(
MoveInfo
moveInfo
,
int
movecmd
,
int
weight
)
{
if
(
moveInfo
!=
null
)
{
moveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitAction
(
new
Func
<
WaitResultInfo
,
bool
>(
IsMoveOk
),
crc
.
GetString
(
"Res0157"
,
"等待"
)
+
$
"[{robot.Name}]"
+
crc
.
GetString
(
"Res0057"
,
"移动到位"
)));
retrytime
=
0
;
LastMoveTime
=
DateTime
.
Now
;
moveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitAction
(
new
Func
<
WaitResultInfo
,
bool
>(
IsMoveOk
),
crc
.
GetString
(
"Res0157"
,
"等待"
)
+
$
"[{robot.Name}]"
+
crc
.
GetString
(
"Res0057"
,
"移动到位"
)));
}
lastMoveCmd
=
movecmd
;
robot
.
SendMoveCmd
(
movecmd
,
Setting_Init
.
URRobot_MI1_Speed_Rate
);
lastSpeedRate
=
Setting_Init
.
URRobot_MI1_Speed_Rate
;
lastWeight
=
weight
;
robot
.
SendMoveCmd
(
movecmd
,
lastSpeedRate
,
false
,
LoadRateParam
[
weight
]);
}
internal
void
Start
()
...
...
@@ -100,10 +112,18 @@ namespace DeviceLibrary
public
bool
IsMoveOk
(
WaitResultInfo
waitResultInfo
)
{
if
(
robot
.
CurCmdReponse
.
Contains
(
$
"{lastMoveCmd},done"
))
return
true
;
else
if
(
robot
.
CurCmdReponse
.
Contains
(
$
"done"
))
else
if
(
robot
.
CurCmdReponse
.
Contains
(
$
"done"
)
||
retrytime
>
1
)
{
LogUtil
.
error
(
$
"机器人没有移动到位,重新移动:{lastMoveCmd}"
);
robot
.
SendMoveCmd
(
lastMoveCmd
);
retrytime
=
0
;
LogUtil
.
error
(
$
"机器人没有移动到位,重新移动:{lastMoveCmd},{lastWeight}"
);
robot
.
SendMoveCmd
(
lastMoveCmd
,
lastSpeedRate
,
false
,
LoadRateParam
[
lastWeight
]);
return
false
;
}
else
if
((
DateTime
.
Now
-
LastMoveTime
).
TotalSeconds
>
30
)
{
retrytime
++;
LastMoveTime
=
DateTime
.
Now
;
LogUtil
.
error
(
$
"机器人超过30秒没有反馈,停止程序重试"
);
robot
.
StopProgram
();
return
false
;
}
else
...
...
@@ -115,5 +135,27 @@ namespace DeviceLibrary
{
RobotCheck
.
Enabled
=
false
;
}
/// <summary>
/// lb=kg/0.45359237f
/// in=mm/25.4f
/// key=load kg, value = load lb,x,y,z
/// </summary>
public
static
Dictionary
<
int
,
float
[
]>
LoadRateParam
=
new
Dictionary
<
int
,
float
[
]>
()
{
{
0
,
new
float
[]
{
4.5f
,
0
,
37
/
100f
,
100
/
100f
}
},
{
1
,
new
float
[]
{
5.5f
,
0
,
37
/
100f
,
146
/
100f
}
},
{
2
,
new
float
[]
{
6.5f
,
0
,
37
/
100f
,
174
/
100f
}
},
{
3
,
new
float
[]
{
7.5f
,
0
,
37
/
100f
,
204
/
100f
}
},
{
4
,
new
float
[]
{
8.5f
,
0
,
37
/
100f
,
212
/
100f
}
},
{
5
,
new
float
[]
{
9.5f
,
0
,
37
/
100f
,
224
/
100f
}
}
};
//public static Dictionary<int, float[]> LoadRateParam = new Dictionary<int, float[]>() {
// { 0, new float[] { 4.5f / 0.45359237f, 0, 37/25.4f, 100 / 25.4f } },
// { 1, new float[] { 5.5f / 0.45359237f, 0, 37 / 25.4f, 146 / 25.4f } },
// { 2, new float[] { 6.5f / 0.45359237f, 0, 37 / 25.4f, 174 / 25.4f } },
// { 3, new float[] { 7.5f / 0.45359237f, 0, 37 / 25.4f, 204 / 25.4f } },
// { 4, new float[] { 8.5f / 0.45359237f, 0, 37 / 25.4f, 212 / 25.4f } },
// { 5, new float[] { 9.5f / 0.45359237f, 0, 37 / 25.4f, 224 / 25.4f } }
//};
}
}
\ No newline at end of file
DeviceLibrary/DeviceLibrary/ServerCommunication.cs
查看文件 @
1d786b6
...
...
@@ -54,15 +54,19 @@ namespace DeviceLibrary
OutMaterialTaskCount
=
data
[
"pizzaBox"
]
+
data
[
"pcb"
]
+
data
[
"tray"
];
OutReelTaskCount
=
data
[
"reel"
];
}
TrayManager
.
Statistics
();
var
remoteLoad
=
new
RemoteLoad
();
remoteLoad
.
RequestLoadInfo
=
new
RequestLoadInfo
();
remoteLoad
.
RequestLoadInfo
.
TrayType
=
TrayTypeE
.
MTP1
.
ToString
();
var
r
=
TrayManager
.
IsNeedProcessNG
(
remoteLoad
);
TheLine
.
UploadCustData
(
"IsNeedProcessNG"
,
r
?
"true"
:
"false"
);
TheLine
.
UploadCustData
(
"EmptyCount_MTP1"
,
TrayManager
.
EmptyCount_MTP1
.
ToString
());
TheLine
.
UploadCustData
(
"EmptyCount_MTP2"
,
TrayManager
.
EmptyCount_MTP2
.
ToString
());
//if (!RobotManage.isRunning)
// ProcessMsg(MsgService.MSList);
//if (!string.IsNullOrWhiteSpace(server))
// SendLineStatus();
}
catch
(
Exception
ex
)
{
...
...
DeviceLibrary/StoreConfig/fixPositions.csv
deleted
100644 → 0
查看文件 @
dff26e4
位置,优先级,高度,宽度,料仓ID,旋转轴位置P2,升降轴库位入料高点P3,升降轴库位入料低点P4,进出轴库位点取料点P3
fix#7,1,24,7,1,139000,85635,76635,216000
fix#13,2,24,13,1,139000,114988,105988,216000
DeviceLibrary/StoreConfig/linePositions.csv
deleted
100644 → 0
查看文件 @
dff26e4
位置,优先级,高度,宽度,料仓ID,旋转轴位置P2,升降轴库位入料高点P3,升降轴库位入料低点P4,进出轴库位点取料点P3,,,
1069M02_01_11_01,796,8,7,1,219347,31048,20240,236990,,,
1069M02_01_11_02,795,8,7,1,219347,60595,49787,236990,,,18296
1069M02_01_11_03,794,8,7,1,219347,91377,80569,236990,,,
1069M02_01_11_04,793,8,7,1,219347,121147,110339,236990,,,4920
1069M02_01_11_05,792,8,7,1,219347,151889,141081,236990,,,
1069M02_01_11_06,791,8,7,1,219347,182278,171470,236990,,,
1069M02_01_11_07,790,8,7,1,219347,212452,201644,236990,,16926,
1069M02_01_11_08,789,8,7,1,219347,242880,232072,236990,,16926,
1069M02_01_11_09,788,8,7,1,219347,273824,263016,236990,,6118,
1069M02_01_11_10,787,8,7,1,219347,303630,292822,236990,,,
1069M02_01_11_11,786,8,7,1,219347,334223,323415,236990,,,
1069M02_01_11_12,785,8,7,1,219347,365075,354267,236990,,,
1069M02_01_11_13,784,8,7,1,219347,396359,385551,236990,,,
1069M02_01_11_14,783,8,7,1,219347,426437,415629,236990,,,
1069M02_01_11_15,782,8,7,1,219347,456331,445523,236990,,,
1069M02_01_11_16,781,8,7,1,219347,488190,477382,236990,,,
1069M02_01_11_17,780,8,7,1,219347,517826,507018,236990,,,
1069M02_01_21_01,779,8,7,1,219347,548997,538189,236990,,,
1069M02_01_21_02,778,8,7,1,219347,579010,568202,236990,,,
1069M02_01_21_03,777,8,7,1,219347,609659,598851,236990,,,
1069M02_01_21_04,776,8,7,1,219347,640419,629611,236990,,,
1069M02_01_21_05,775,8,7,1,219347,671882,661074,236990,,,
1069M02_01_21_06,774,8,7,1,219347,701758,690950,236990,,,
1069M02_01_21_07,773,8,7,1,219347,732293,721485,236990,,,
1069M02_01_21_08,772,8,7,1,219347,762346,751538,236990,,,
1069M02_01_21_09,771,8,7,1,219347,794033,783225,236990,,,
1069M02_01_21_10,770,8,7,1,219347,823405,812597,236990,,,
1069M02_01_21_11,769,8,7,1,219347,853356,842548,236990,,,
1069M02_01_21_12,768,8,7,1,219347,884553,873745,236990,,,
1069M02_01_21_13,767,8,7,1,219347,914542,903734,236990,,,
1069M02_01_21_14,766,8,7,1,219347,945451,934643,236990,,,
1069M02_01_21_15,765,8,7,1,219347,975287,964479,236990,,,
1069M02_01_21_16,764,8,7,1,219347,1006056,995248,236990,,,
1069M02_01_21_17,763,8,7,1,219347,1036562,1025754,236990,,,
1069M02_01_31_01,762,8,7,1,219347,1067806,1056998,236990,,,
1069M02_01_31_02,761,8,7,1,219347,1097161,1086353,236990,,,
1069M02_01_31_03,760,8,7,1,219347,1128071,1117263,236990,,,
1069M02_01_31_04,759,8,7,1,219347,1158489,1147681,236990,,,
1069M02_01_31_05,758,8,7,1,219347,1188443,1177635,236990,,,
1069M02_01_31_06,757,8,7,1,219347,1219398,1208590,236990,,,
1069M02_01_31_07,756,8,7,1,219347,1250186,1239378,236990,,,
1069M02_01_31_08,755,8,7,1,219347,1280611,1269803,236990,,,
1069M02_01_31_09,754,8,7,1,219347,1311064,1300256,236990,,,
1069M02_01_31_10,753,8,7,1,219347,1341992,1331184,236990,,,
1069M02_01_31_11,752,8,7,1,219347,1372295,1361487,236990,,,
1069M02_01_31_12,751,8,7,1,219347,1402484,1391676,236990,,,
1069M02_01_31_13,750,8,7,1,219347,1433486,1422678,236990,,,
1069M02_01_31_14,749,8,7,1,219347,1463404,1452596,236990,,,
1069M02_01_31_15,748,8,7,1,219347,1493926,1483118,236990,,,
1069M02_01_31_16,747,8,7,1,219347,1525099,1514291,236990,,,
1069M02_01_31_17,746,8,7,1,219347,1556210,1545402,236990,,,
1069M02_01_41_01,745,8,7,1,219347,1583889,1573081,236990,,,
1069M02_01_41_02,744,8,7,1,219347,1615371,1604563,236990,,,
1069M02_01_41_03,743,8,7,1,219347,1645844,1635036,236990,,,
1069M02_01_41_04,742,8,7,1,219347,1676317,1665509,236990,,,
1069M02_01_41_05,741,8,7,1,219347,1706928,1696120,236990,,,
1069M02_01_41_06,740,8,7,1,219347,1737328,1726520,236990,,,
1069M02_01_41_07,739,8,7,1,219347,1767633,1756825,236990,,,
1069M02_01_41_08,738,8,7,1,219347,1798085,1787277,236990,,,
1069M02_01_41_09,737,8,7,1,219347,1828813,1818005,236990,,,
1069M02_01_41_10,736,8,7,1,219347,1859612,1848804,236990,,,
1069M02_01_41_11,735,8,7,1,219347,1889603,1878795,236990,,,
1069M02_01_41_12,734,8,7,1,219347,1920211,1909403,236990,,,
1069M02_01_41_13,733,8,7,1,219347,1951392,1940584,236990,,,
1069M02_01_41_14,732,8,7,1,219347,1981711,1970903,236990,,,
1069M02_01_41_15,731,8,7,1,219347,2011997,2001189,236990,,,
1069M02_01_41_16,730,8,7,1,219347,2041246,2030438,236990,,,
1069M02_01_12_01,729,8,7,1,242048,31048,20240,236990,,,
1069M02_01_12_02,728,8,7,1,242048,60595,49787,236990,,,
1069M02_01_12_03,727,8,7,1,242048,91377,80569,236990,,,
1069M02_01_12_04,726,8,7,1,242048,121147,110339,236990,,,
1069M02_01_12_05,725,8,7,1,242048,151889,141081,236990,,,
1069M02_01_12_06,724,8,7,1,242048,182278,171470,236990,,,
1069M02_01_12_07,723,8,7,1,242048,212452,201644,236990,,,
1069M02_01_12_08,722,8,7,1,242048,242880,232072,236990,,,
1069M02_01_12_09,721,8,7,1,242048,273824,263016,236990,,,
1069M02_01_12_10,720,8,7,1,242048,303630,292822,236990,,,
1069M02_01_12_11,719,8,7,1,242048,334223,323415,236990,,,
1069M02_01_12_12,718,8,7,1,242048,365075,354267,236990,,,
1069M02_01_12_13,717,8,7,1,242048,396359,385551,236990,,,
1069M02_01_12_14,716,8,7,1,242048,426437,415629,236990,,,
1069M02_01_12_15,715,8,7,1,242048,456331,445523,236990,,,
1069M02_01_12_16,714,8,7,1,242048,488190,477382,236990,,,
1069M02_01_12_17,713,8,7,1,242048,517826,507018,236990,,,
1069M02_01_22_01,712,8,7,1,242048,548997,538189,236990,,,
1069M02_01_22_02,711,8,7,1,242048,579010,568202,236990,,,
1069M02_01_22_03,710,8,7,1,242048,609659,598851,236990,,,
1069M02_01_22_04,709,8,7,1,242048,640419,629611,236990,,,
1069M02_01_22_05,708,8,7,1,242048,671882,661074,236990,,,
1069M02_01_22_06,707,8,7,1,242048,701758,690950,236990,,,
1069M02_01_22_07,706,8,7,1,242048,732293,721485,236990,,,
1069M02_01_22_08,705,8,7,1,242048,762346,751538,236990,,,
1069M02_01_22_09,704,8,7,1,242048,794033,783225,236990,,,
1069M02_01_22_10,703,8,7,1,242048,823405,812597,236990,,,
1069M02_01_22_11,702,8,7,1,242048,853356,842548,236990,,,
1069M02_01_22_12,701,8,7,1,242048,884553,873745,236990,,,
1069M02_01_22_13,700,8,7,1,242048,914542,903734,236990,,,
1069M02_01_22_14,699,8,7,1,242048,945451,934643,236990,,,
1069M02_01_22_15,698,8,7,1,242048,975287,964479,236990,,,
1069M02_01_22_16,697,8,7,1,242048,1006056,995248,236990,,,
1069M02_01_22_17,696,8,7,1,242048,1036562,1025754,236990,,,
1069M02_01_32_01,695,8,7,1,242048,1067806,1056998,236990,,,
1069M02_01_32_02,694,8,7,1,242048,1097161,1086353,236990,,,
1069M02_01_32_03,693,8,7,1,242048,1128071,1117263,236990,,,
1069M02_01_32_04,692,8,7,1,242048,1158489,1147681,236990,,,
1069M02_01_32_05,691,8,7,1,242048,1188443,1177635,236990,,,
1069M02_01_32_06,690,8,7,1,242048,1219398,1208590,236990,,,
1069M02_01_32_07,689,8,7,1,242048,1250186,1239378,236990,,,
1069M02_01_32_08,688,8,7,1,242048,1280611,1269803,236990,,,
1069M02_01_32_09,687,8,7,1,242048,1311064,1300256,236990,,,
1069M02_01_32_10,686,8,7,1,242048,1341992,1331184,236990,,,
1069M02_01_32_11,685,8,7,1,242048,1372295,1361487,236990,,,
1069M02_01_32_12,684,8,7,1,242048,1402484,1391676,236990,,,
1069M02_01_32_13,683,8,7,1,242048,1433486,1422678,236990,,,
1069M02_01_32_14,682,8,7,1,242048,1463404,1452596,236990,,,
1069M02_01_32_15,681,8,7,1,242048,1493926,1483118,236990,,,
1069M02_01_32_16,680,8,7,1,242048,1525099,1514291,236990,,,
1069M02_01_32_17,679,8,7,1,242048,1556210,1545402,236990,,,
1069M02_01_42_01,678,8,7,1,242048,1583889,1573081,236990,,,
1069M02_01_42_02,677,8,7,1,242048,1615371,1604563,236990,,,
1069M02_01_42_03,676,8,7,1,242048,1645844,1635036,236990,,,
1069M02_01_42_04,675,8,7,1,242048,1676317,1665509,236990,,,
1069M02_01_42_05,674,8,7,1,242048,1706928,1696120,236990,,,
1069M02_01_42_06,673,8,7,1,242048,1737328,1726520,236990,,,
1069M02_01_42_07,672,8,7,1,242048,1767633,1756825,236990,,,
1069M02_01_42_08,671,8,7,1,242048,1798085,1787277,236990,,,
1069M02_01_42_09,670,8,7,1,242048,1828813,1818005,236990,,,
1069M02_01_42_10,669,8,7,1,242048,1859612,1848804,236990,,,
1069M02_01_42_11,668,8,7,1,242048,1889603,1878795,236990,,,
1069M02_01_42_12,667,8,7,1,242048,1920211,1909403,236990,,,
1069M02_01_42_13,666,8,7,1,242048,1951392,1940584,236990,,,
1069M02_01_42_14,665,8,7,1,242048,1981711,1970903,236990,,,
1069M02_01_42_15,664,8,7,1,242048,2011997,2001189,236990,,,
1069M02_01_42_16,663,8,7,1,242048,2041246,2030438,236990,,,
1069M02_02_11_01,662,8,7,1,266472,29412,18604,236990,,,
1069M02_02_11_02,661,8,7,1,266472,60089,49281,236990,,,
1069M02_02_11_03,660,8,7,1,266472,90502,79694,236990,,,
1069M02_02_11_04,659,8,7,1,266472,121421,110613,236990,,,
1069M02_02_11_05,658,8,7,1,266472,150984,140176,236990,,,
1069M02_02_11_06,657,8,7,1,266472,182299,171491,236990,,,
1069M02_02_11_07,656,8,7,1,266472,211626,200818,236990,,,
1069M02_02_11_08,655,8,7,1,266472,243176,232368,236990,,,
1069M02_02_11_09,654,8,7,1,266472,272810,262002,236990,,,
1069M02_02_11_10,653,8,7,1,266472,304047,293239,236990,,,
1069M02_02_11_11,652,8,7,1,266472,334171,323363,236990,,,
1069M02_02_11_12,651,8,7,1,266472,364598,353790,236990,,,
1069M02_02_11_13,650,8,7,1,266472,395966,385158,236990,,,
1069M02_02_11_14,649,8,7,1,266472,426225,415417,236990,,,
1069M02_02_11_15,648,8,7,1,266472,456806,445998,236990,,,
1069M02_02_11_16,647,8,7,1,266472,486935,476127,236990,,,
1069M02_02_11_17,646,8,7,1,266472,517901,507093,236990,,,
1069M02_02_21_01,645,8,7,1,266472,548212,537404,236990,,,
1069M02_02_21_02,644,8,7,1,266472,578535,567727,236990,,,
1069M02_02_21_03,643,8,7,1,266472,609181,598373,236990,,,
1069M02_02_21_04,642,8,7,1,266472,639797,628989,236990,,,
1069M02_02_21_05,641,8,7,1,266472,670830,660022,236990,,,
1069M02_02_21_06,640,8,7,1,266472,700482,689674,236990,,,
1069M02_02_21_07,639,8,7,1,266472,731209,720401,236990,,,
1069M02_02_21_08,638,8,7,1,266472,761235,750427,236990,,,
1069M02_02_21_09,637,8,7,1,266472,792932,782124,236990,,,
1069M02_02_21_10,636,8,7,1,266472,822789,811981,236990,,,
1069M02_02_21_11,635,8,7,1,266472,853455,842647,236990,,,
1069M02_02_21_12,634,8,7,1,266472,884758,873950,236990,,,
1069M02_02_21_13,633,8,7,1,266472,914255,903447,236990,,,
1069M02_02_21_14,632,8,7,1,266472,945267,934459,236990,,,
1069M02_02_21_15,631,8,7,1,266472,975145,964337,236990,,,
1069M02_02_21_16,630,8,7,1,266472,1005398,994590,236990,,,
1069M02_02_21_17,629,8,7,1,266472,1036262,1025454,236990,,,
1069M02_02_31_01,628,8,7,1,266472,1067501,1056693,236990,,,
1069M02_02_31_02,627,8,7,1,266472,1098671,1087863,236990,,,
1069M02_02_31_03,626,8,7,1,266472,1128943,1118135,236990,,,
1069M02_02_31_04,625,8,7,1,266472,1159727,1148919,236990,,,
1069M02_02_31_05,624,8,7,1,266472,1189654,1178846,236990,,,
1069M02_02_31_06,623,8,7,1,266472,1220585,1209777,236990,,,
1069M02_02_31_07,622,8,7,1,266472,1250968,1240160,236990,,,
1069M02_02_31_08,621,8,7,1,266472,1281772,1270964,236990,,,
1069M02_02_31_09,620,8,7,1,266472,1312111,1301303,236990,,,
1069M02_02_31_10,619,8,7,1,266472,1342123,1331315,236990,,,
1069M02_02_31_11,618,8,7,1,266472,1373376,1362568,236990,,,
1069M02_02_31_12,617,8,7,1,266472,1404022,1393214,236990,,,
1069M02_02_31_13,616,8,7,1,266472,1434300,1423492,236990,,,
1069M02_02_31_14,615,8,7,1,266472,1465179,1454371,236990,,,
1069M02_02_31_15,614,8,7,1,266472,1494848,1484040,236990,,,
1069M02_02_31_16,613,8,7,1,266472,1526087,1515279,236990,,,
1069M02_02_31_17,612,8,7,1,266472,1555648,1544840,236990,,,
1069M02_02_41_01,611,8,7,1,266472,1584210,1573402,236990,,,
1069M02_02_41_02,610,8,7,1,266472,1616842,1606034,236990,,,
1069M02_02_41_03,609,8,7,1,266472,1647737,1636929,236990,,,
1069M02_02_41_04,608,8,7,1,266472,1677945,1667137,236990,,,
1069M02_02_41_05,607,8,7,1,266472,1708256,1697448,236990,,,
1069M02_02_41_06,606,8,7,1,266472,1738689,1727881,236990,,,
1069M02_02_41_07,605,8,7,1,266472,1768628,1757820,236990,,,
1069M02_02_41_08,604,8,7,1,266472,1799325,1788517,236990,,,
1069M02_02_41_09,603,8,7,1,266472,1829498,1818690,236990,,,
1069M02_02_41_10,602,8,7,1,266472,1860163,1849355,236990,,,
1069M02_02_41_11,601,8,7,1,266472,1890438,1879630,236990,,,
1069M02_02_41_12,600,8,7,1,266472,1921075,1910267,236990,,,
1069M02_02_41_13,599,8,7,1,266472,1951060,1940252,236990,,,
1069M02_02_41_14,598,8,7,1,266472,1982399,1971591,236990,,,
1069M02_02_41_15,597,8,7,1,266472,2012330,2001522,236990,,,
1069M02_02_41_16,596,8,7,1,266472,2042193,2031385,236990,,,
1069M02_02_12_01,595,8,7,1,289159,29412,18604,236990,,,
1069M02_02_12_02,594,8,7,1,289159,60089,49281,236990,,,
1069M02_02_12_03,593,8,7,1,289159,90502,79694,236990,,,
1069M02_02_12_04,592,8,7,1,289159,121421,110613,236990,,,
1069M02_02_12_05,591,8,7,1,289159,150984,140176,236990,,,
1069M02_02_12_06,590,8,7,1,289159,182299,171491,236990,,,
1069M02_02_12_07,589,8,7,1,289159,211626,200818,236990,,,
1069M02_02_12_08,588,8,7,1,289159,243176,232368,236990,,,
1069M02_02_12_09,587,8,7,1,289159,272810,262002,236990,,,
1069M02_02_12_10,586,8,7,1,289159,304047,293239,236990,,,
1069M02_02_12_11,585,8,7,1,289159,334171,323363,236990,,,
1069M02_02_12_12,584,8,7,1,289159,364598,353790,236990,,,
1069M02_02_12_13,583,8,7,1,289159,395966,385158,236990,,,
1069M02_02_12_14,582,8,7,1,289159,426225,415417,236990,,,
1069M02_02_12_15,581,8,7,1,289159,456806,445998,236990,,,
1069M02_02_12_16,580,8,7,1,289159,486935,476127,236990,,,
1069M02_02_12_17,579,8,7,1,289159,517901,507093,236990,,,
1069M02_02_22_01,578,8,7,1,289159,548212,537404,236990,,,
1069M02_02_22_02,577,8,7,1,289159,578535,567727,236990,,,
1069M02_02_22_03,576,8,7,1,289159,609181,598373,236990,,,
1069M02_02_22_04,575,8,7,1,289159,639797,628989,236990,,,
1069M02_02_22_05,574,8,7,1,289159,670830,660022,236990,,,
1069M02_02_22_06,573,8,7,1,289159,700482,689674,236990,,,
1069M02_02_22_07,572,8,7,1,289159,731209,720401,236990,,,
1069M02_02_22_08,571,8,7,1,289159,761235,750427,236990,,,
1069M02_02_22_09,570,8,7,1,289159,792932,782124,236990,,,
1069M02_02_22_10,569,8,7,1,289159,822789,811981,236990,,,
1069M02_02_22_11,568,8,7,1,289159,853455,842647,236990,,,
1069M02_02_22_12,567,8,7,1,289159,884758,873950,236990,,,
1069M02_02_22_13,566,8,7,1,289159,914255,903447,236990,,,
1069M02_02_22_14,565,8,7,1,289159,945267,934459,236990,,,
1069M02_02_22_15,564,8,7,1,289159,975145,964337,236990,,,
1069M02_02_22_16,563,8,7,1,289159,1005398,994590,236990,,,
1069M02_02_22_17,562,8,7,1,289159,1036262,1025454,236990,,,
1069M02_02_32_01,561,8,7,1,289159,1067501,1056693,236990,,,
1069M02_02_32_02,560,8,7,1,289159,1098671,1087863,236990,,,
1069M02_02_32_03,559,8,7,1,289159,1128943,1118135,236990,,,
1069M02_02_32_04,558,8,7,1,289159,1159727,1148919,236990,,,
1069M02_02_32_05,557,8,7,1,289159,1189654,1178846,236990,,,
1069M02_02_32_06,556,8,7,1,289159,1220585,1209777,236990,,,
1069M02_02_32_07,555,8,7,1,289159,1250968,1240160,236990,,,
1069M02_02_32_08,554,8,7,1,289159,1281772,1270964,236990,,,
1069M02_02_32_09,553,8,7,1,289159,1312111,1301303,236990,,,
1069M02_02_32_10,552,8,7,1,289159,1342123,1331315,236990,,,
1069M02_02_32_11,551,8,7,1,289159,1373376,1362568,236990,,,
1069M02_02_32_12,550,8,7,1,289159,1404022,1393214,236990,,,
1069M02_02_32_13,549,8,7,1,289159,1434300,1423492,236990,,,
1069M02_02_32_14,548,8,7,1,289159,1465179,1454371,236990,,,
1069M02_02_32_15,547,8,7,1,289159,1494848,1484040,236990,,,
1069M02_02_32_16,546,8,7,1,289159,1526087,1515279,236990,,,
1069M02_02_32_17,545,8,7,1,289159,1555648,1544840,236990,,,
1069M02_02_42_01,544,8,7,1,289159,1584210,1573402,236990,,,
1069M02_02_42_02,543,8,7,1,289159,1616842,1606034,236990,,,
1069M02_02_42_03,542,8,7,1,289159,1647737,1636929,236990,,,
1069M02_02_42_04,541,8,7,1,289159,1677945,1667137,236990,,,
1069M02_02_42_05,540,8,7,1,289159,1708256,1697448,236990,,,
1069M02_02_42_06,539,8,7,1,289159,1738689,1727881,236990,,,
1069M02_02_42_07,538,8,7,1,289159,1768628,1757820,236990,,,
1069M02_02_42_08,537,8,7,1,289159,1799325,1788517,236990,,,
1069M02_02_42_09,536,8,7,1,289159,1829498,1818690,236990,,,
1069M02_02_42_10,535,8,7,1,289159,1860163,1849355,236990,,,
1069M02_02_42_11,534,8,7,1,289159,1890438,1879630,236990,,,
1069M02_02_42_12,533,8,7,1,289159,1921075,1910267,236990,,,
1069M02_02_42_13,532,8,7,1,289159,1951060,1940252,236990,,,
1069M02_02_42_14,531,8,7,1,289159,1982399,1971591,236990,,,
1069M02_02_42_15,530,8,7,1,289159,2012330,2001522,236990,,,
1069M02_02_42_16,529,8,7,1,289159,2042193,2031385,236990,,,
1069M02_03_11_01,528,8,7,1,313416,31228,20420,236990,,,
1069M02_03_11_02,527,8,7,1,313416,61946,51138,236990,,,
1069M02_03_11_03,526,8,7,1,313416,91727,80919,236990,,,
1069M02_03_11_04,525,8,7,1,313416,122512,111704,236990,,,
1069M02_03_11_05,524,8,7,1,313416,153169,142361,236990,,,
1069M02_03_11_06,523,8,7,1,313416,183571,172763,236990,,,
1069M02_03_11_07,522,8,7,1,313416,213902,203094,236990,,,
1069M02_03_11_08,521,8,7,1,313416,244310,233502,236990,,,
1069M02_03_11_09,520,8,7,1,313416,274868,264060,236990,,,
1069M02_03_11_10,519,8,7,1,313416,305465,294657,236990,,,
1069M02_03_11_11,518,8,7,1,313416,336084,325276,236990,,,
1069M02_03_11_12,517,8,7,1,313416,366318,355510,236990,,,
1069M02_03_11_13,516,8,7,1,313416,397175,386367,236990,,,
1069M02_03_11_14,515,8,7,1,313416,427718,416910,236990,,,
1069M02_03_11_15,514,8,7,1,313416,458119,447311,236990,,,
1069M02_03_11_16,513,8,7,1,313416,487997,477189,236990,,,
1069M02_03_11_17,512,8,7,1,313416,519421,508613,236990,,,
1069M02_03_21_01,511,8,7,1,313416,547956,537148,236990,,,
1069M02_03_21_02,510,8,7,1,313416,578950,568142,236990,,,
1069M02_03_21_03,509,8,7,1,313416,609267,598459,236990,,,
1069M02_03_21_04,508,8,7,1,313416,639833,629025,236990,,,
1069M02_03_21_05,507,8,7,1,313416,669837,659029,236990,,,
1069M02_03_21_06,506,8,7,1,313416,700548,689740,236990,,,
1069M02_03_21_07,505,8,7,1,313416,731548,720740,236990,,,
1069M02_03_21_08,504,8,7,1,313416,761706,750898,236990,,,
1069M02_03_21_09,503,8,7,1,313416,792233,781425,236990,,,
1069M02_03_21_10,502,8,7,1,313416,822418,811610,236990,,,
1069M02_03_21_11,501,8,7,1,313416,853210,842402,236990,,,
1069M02_03_21_12,500,8,7,1,313416,883642,872834,236990,,,
1069M02_03_21_13,499,8,7,1,313416,913824,903016,236990,,,
1069M02_03_21_14,498,8,7,1,313416,944410,933602,236990,,,
1069M02_03_21_15,497,8,7,1,313416,975670,964862,236990,,,
1069M02_03_21_16,496,8,7,1,313416,1005371,994563,236990,,,
1069M02_03_21_17,495,8,7,1,313416,1035990,1025182,236990,,,
1069M02_03_31_01,494,8,7,1,313416,1068012,1057204,236990,,,
1069M02_03_31_02,493,8,7,1,313416,1098281,1087473,236990,,,
1069M02_03_31_03,492,8,7,1,313416,1129612,1118804,236990,,,
1069M02_03_31_04,491,8,7,1,313416,1159719,1148911,236990,,,
1069M02_03_31_05,490,8,7,1,313416,1190376,1179568,236990,,,
1069M02_03_31_06,489,8,7,1,313416,1220856,1210048,236990,,,
1069M02_03_31_07,488,8,7,1,313416,1250868,1240060,236990,,,
1069M02_03_31_08,487,8,7,1,313416,1280676,1269868,236990,,,
1069M02_03_31_09,486,8,7,1,313416,1311143,1300335,236990,,,
1069M02_03_31_10,485,8,7,1,313416,1342024,1331216,236990,,,
1069M02_03_31_11,484,8,7,1,313416,1372805,1361997,236990,,,
1069M02_03_31_12,483,8,7,1,313416,1403269,1392461,236990,,,
1069M02_03_31_13,482,8,7,1,313416,1433742,1422934,236990,,,
1069M02_03_31_14,481,8,7,1,313416,1464688,1453880,236990,,,
1069M02_03_31_15,480,8,7,1,313416,1494320,1483512,236990,,,
1069M02_03_31_16,479,8,7,1,313416,1524408,1513600,236990,,,
1069M02_03_31_17,478,8,7,1,313416,1555379,1544571,236990,,,
1069M02_03_41_01,477,8,7,1,313416,1585838,1575030,236990,,,
1069M02_03_41_02,476,8,7,1,313416,1616213,1605405,236990,,,
1069M02_03_41_03,475,8,7,1,313416,1646712,1635904,236990,,,
1069M02_03_41_04,474,8,7,1,313416,1676360,1665552,236990,,,
1069M02_03_41_05,473,8,7,1,313416,1706533,1695725,236990,,,
1069M02_03_41_06,472,8,7,1,313416,1737279,1726471,236990,,,
1069M02_03_41_07,471,8,7,1,313416,1768095,1757287,236990,,,
1069M02_03_41_08,470,8,7,1,313416,1798331,1787523,236990,,,
1069M02_03_41_09,469,8,7,1,313416,1828573,1817765,236990,,,
1069M02_03_41_10,468,8,7,1,313416,1858922,1848114,236990,,,
1069M02_03_41_11,467,8,7,1,313416,1890121,1879313,236990,,,
1069M02_03_41_12,466,8,7,1,313416,1920204,1909396,236990,,,
1069M02_03_41_13,465,8,7,1,313416,1951279,1940471,236990,,,
1069M02_03_41_14,464,8,7,1,313416,1981641,1970833,236990,,,
1069M02_03_41_15,463,8,7,1,313416,2011521,2000713,236990,,,
1069M02_03_41_16,462,8,7,1,313416,2042310,2031502,236990,,,
1069M02_03_12_01,461,8,7,1,336078,31228,20420,236990,,,
1069M02_03_12_02,460,8,7,1,336078,61946,51138,236990,,,
1069M02_03_12_03,459,8,7,1,336078,91727,80919,236990,,,
1069M02_03_12_04,458,8,7,1,336078,122512,111704,236990,,,
1069M02_03_12_05,457,8,7,1,336078,153169,142361,236990,,,
1069M02_03_12_06,456,8,7,1,336078,183571,172763,236990,,,
1069M02_03_12_07,455,8,7,1,336078,213902,203094,236990,,,
1069M02_03_12_08,454,8,7,1,336078,244310,233502,236990,,,
1069M02_03_12_09,453,8,7,1,336078,274868,264060,236990,,,
1069M02_03_12_10,452,8,7,1,336078,305465,294657,236990,,,
1069M02_03_12_11,451,8,7,1,336078,336084,325276,236990,,,
1069M02_03_12_12,450,8,7,1,336078,366318,355510,236990,,,
1069M02_03_12_13,449,8,7,1,336078,397175,386367,236990,,,
1069M02_03_12_14,448,8,7,1,336078,427718,416910,236990,,,
1069M02_03_12_15,447,8,7,1,336078,458119,447311,236990,,,
1069M02_03_12_16,446,8,7,1,336078,487997,477189,236990,,,
1069M02_03_12_17,445,8,7,1,336078,519421,508613,236990,,,
1069M02_03_22_01,444,8,7,1,336078,547956,537148,236990,,,
1069M02_03_22_02,443,8,7,1,336078,578950,568142,236990,,,
1069M02_03_22_03,442,8,7,1,336078,609267,598459,236990,,,
1069M02_03_22_04,441,8,7,1,336078,639833,629025,236990,,,
1069M02_03_22_05,440,8,7,1,336078,669837,659029,236990,,,
1069M02_03_22_06,439,8,7,1,336078,700548,689740,236990,,,
1069M02_03_22_07,438,8,7,1,336078,731548,720740,236990,,,
1069M02_03_22_08,437,8,7,1,336078,761706,750898,236990,,,
1069M02_03_22_09,436,8,7,1,336078,792233,781425,236990,,,
1069M02_03_22_10,435,8,7,1,336078,822418,811610,236990,,,
1069M02_03_22_11,434,8,7,1,336078,853210,842402,236990,,,
1069M02_03_22_12,433,8,7,1,336078,883642,872834,236990,,,
1069M02_03_22_13,432,8,7,1,336078,913824,903016,236990,,,
1069M02_03_22_14,431,8,7,1,336078,944410,933602,236990,,,
1069M02_03_22_15,430,8,7,1,336078,975670,964862,236990,,,
1069M02_03_22_16,429,8,7,1,336078,1005371,994563,236990,,,
1069M02_03_22_17,428,8,7,1,336078,1035990,1025182,236990,,,
1069M02_03_32_01,427,8,7,1,336078,1068012,1057204,236990,,,
1069M02_03_32_02,426,8,7,1,336078,1098281,1087473,236990,,,
1069M02_03_32_03,425,8,7,1,336078,1129612,1118804,236990,,,
1069M02_03_32_04,424,8,7,1,336078,1159719,1148911,236990,,,
1069M02_03_32_05,423,8,7,1,336078,1190376,1179568,236990,,,
1069M02_03_32_06,422,8,7,1,336078,1220856,1210048,236990,,,
1069M02_03_32_07,421,8,7,1,336078,1250868,1240060,236990,,,
1069M02_03_32_08,420,8,7,1,336078,1280676,1269868,236990,,,
1069M02_03_32_09,419,8,7,1,336078,1311143,1300335,236990,,,
1069M02_03_32_10,418,8,7,1,336078,1342024,1331216,236990,,,
1069M02_03_32_11,417,8,7,1,336078,1372805,1361997,236990,,,
1069M02_03_32_12,416,8,7,1,336078,1403269,1392461,236990,,,
1069M02_03_32_13,415,8,7,1,336078,1433742,1422934,236990,,,
1069M02_03_32_14,414,8,7,1,336078,1464688,1453880,236990,,,
1069M02_03_32_15,413,8,7,1,336078,1494320,1483512,236990,,,
1069M02_03_32_16,412,8,7,1,336078,1524408,1513600,236990,,,
1069M02_03_32_17,411,8,7,1,336078,1555379,1544571,236990,,,
1069M02_03_42_01,410,8,7,1,336078,1585838,1575030,236990,,,
1069M02_03_42_02,409,8,7,1,336078,1616213,1605405,236990,,,
1069M02_03_42_03,408,8,7,1,336078,1646712,1635904,236990,,,
1069M02_03_42_04,407,8,7,1,336078,1676360,1665552,236990,,,
1069M02_03_42_05,406,8,7,1,336078,1706533,1695725,236990,,,
1069M02_03_42_06,405,8,7,1,336078,1737279,1726471,236990,,,
1069M02_03_42_07,404,8,7,1,336078,1768095,1757287,236990,,,
1069M02_03_42_08,403,8,7,1,336078,1798331,1787523,236990,,,
1069M02_03_42_09,402,8,7,1,336078,1828573,1817765,236990,,,
1069M02_03_42_10,401,8,7,1,336078,1858922,1848114,236990,,,
1069M02_03_42_11,400,8,7,1,336078,1890121,1879313,236990,,,
1069M02_03_42_12,399,8,7,1,336078,1920204,1909396,236990,,,
1069M02_03_42_13,398,8,7,1,336078,1951279,1940471,236990,,,
1069M02_03_42_14,397,8,7,1,336078,1981641,1970833,236990,,,
1069M02_03_42_15,396,8,7,1,336078,2011521,2000713,236990,,,
1069M02_03_42_16,395,8,7,1,336078,2042310,2031502,236990,,,
1069M02_04_11_01,394,8,7,1,476,30861,20053,236990,,,
1069M02_04_11_02,393,8,7,1,476,61424,50616,236990,,,
1069M02_04_11_03,392,8,7,1,476,92032,81224,236990,,,
1069M02_04_11_04,391,8,7,1,476,122982,112174,236990,,,
1069M02_04_11_05,390,8,7,1,476,152428,141620,236990,,,
1069M02_04_11_06,389,8,7,1,476,183282,172474,236990,,,
1069M02_04_11_07,388,8,7,1,476,214225,203417,236990,,,
1069M02_04_11_08,387,8,7,1,476,244689,233881,236990,,,
1069M02_04_11_09,386,8,7,1,476,274793,263985,236990,,,
1069M02_04_11_10,385,8,7,1,476,305581,294773,236990,,,
1069M02_04_11_11,384,8,7,1,476,336359,325551,236990,,,
1069M02_04_11_12,383,8,7,1,476,367463,356655,236990,,,
1069M02_04_11_13,382,8,7,1,476,397172,386364,236990,,,
1069M02_04_11_14,381,8,7,1,476,427788,416980,236990,,,
1069M02_04_11_15,380,8,7,1,476,457968,447160,236990,,,
1069M02_04_11_16,379,8,7,1,476,489517,478709,236990,,,
1069M02_04_11_17,378,8,7,1,476,519589,508781,236990,,,
1069M02_04_21_01,377,8,7,1,476,549110,538302,236990,,,
1069M02_04_21_02,376,8,7,1,476,579819,569011,236990,,,
1069M02_04_21_03,375,8,7,1,476,610361,599553,236990,,,
1069M02_04_21_04,374,8,7,1,476,641257,630449,236990,,,
1069M02_04_21_05,373,8,7,1,476,672594,661786,236990,,,
1069M02_04_21_06,372,8,7,1,476,703171,692363,236990,,,
1069M02_04_21_07,371,8,7,1,476,733791,722983,236990,,,
1069M02_04_21_08,370,8,7,1,476,763875,753067,236990,,,
1069M02_04_21_09,369,8,7,1,476,794350,783542,236990,,,
1069M02_04_21_10,368,8,7,1,476,823686,812878,236990,,,
1069M02_04_21_11,367,8,7,1,476,854883,844075,236990,,,
1069M02_04_21_12,366,8,7,1,476,885342,874534,236990,,,
1069M02_04_21_13,365,8,7,1,476,916677,905869,236990,,,
1069M02_04_21_14,364,8,7,1,476,946830,936022,236990,,,
1069M02_04_21_15,363,8,7,1,476,976549,965741,236990,,,
1069M02_04_21_16,362,8,7,1,476,1007505,996697,236990,,,
1069M02_04_21_17,361,8,7,1,476,1037678,1026870,236990,,,
1069M02_04_31_01,360,8,7,1,476,1068295,1057487,236990,,,
1069M02_04_31_02,359,8,7,1,476,1099077,1088269,236990,,,
1069M02_04_31_03,358,8,7,1,476,1130160,1119352,236990,,,
1069M02_04_31_04,357,8,7,1,476,1161277,1150469,236990,,,
1069M02_04_31_05,356,8,7,1,476,1191348,1180540,236990,,,
1069M02_04_31_06,355,8,7,1,476,1221680,1210872,236990,,,
1069M02_04_31_07,354,8,7,1,476,1252132,1241324,236990,,,
1069M02_04_31_08,353,8,7,1,476,1282926,1272118,236990,,,
1069M02_04_31_09,352,8,7,1,476,1313396,1302588,236990,,,
1069M02_04_31_10,351,8,7,1,476,1343782,1332974,236990,,,
1069M02_04_31_11,350,8,7,1,476,1374510,1363702,236990,,,
1069M02_04_31_12,349,8,7,1,476,1405043,1394235,236990,,,
1069M02_04_31_13,348,8,7,1,476,1435645,1424837,236990,,,
1069M02_04_31_14,347,8,7,1,476,1466104,1455296,236990,,,
1069M02_04_31_15,346,8,7,1,476,1495652,1484844,236990,,,
1069M02_04_31_16,345,8,7,1,476,1526166,1515358,236990,,,
1069M02_04_31_17,344,8,7,1,476,1555975,1545167,236990,,,
1069M02_04_41_01,343,8,7,1,476,1584077,1573269,236990,,,
1069M02_04_41_02,342,8,7,1,476,1615544,1604736,236990,,,
1069M02_04_41_03,341,8,7,1,476,1646166,1635358,236990,,,
1069M02_04_41_04,340,8,7,1,476,1676712,1665904,236990,,,
1069M02_04_41_05,339,8,7,1,476,1708050,1697242,236990,,,
1069M02_04_41_06,338,8,7,1,476,1738657,1727849,236990,,,
1069M02_04_41_07,337,8,7,1,476,1768554,1757746,236990,,,
1069M02_04_41_08,336,8,7,1,476,1798958,1788150,236990,,,
1069M02_04_41_09,335,8,7,1,476,1828931,1818123,236990,,,
1069M02_04_41_10,334,8,7,1,476,1860545,1849737,236990,,,
1069M02_04_41_11,333,8,7,1,476,1889618,1878810,236990,,,
1069M02_04_41_12,332,8,7,1,476,1921047,1910239,236990,,,
1069M02_04_41_13,331,8,7,1,476,1951449,1940641,236990,,,
1069M02_04_41_14,330,8,7,1,476,1981646,1970838,236990,,,
1069M02_04_41_15,329,8,7,1,476,2012009,2001201,236990,,,
1069M02_04_41_16,328,8,7,1,476,2042585,2031777,236990,,,
1069M02_04_12_01,327,8,7,1,23170,30861,20053,236990,,,
1069M02_04_12_02,326,8,7,1,23170,61424,50616,236990,,,
1069M02_04_12_03,325,8,7,1,23170,92032,81224,236990,,,
1069M02_04_12_04,324,8,7,1,23170,122982,112174,236990,,,
1069M02_04_12_05,323,8,7,1,23170,152428,141620,236990,,,
1069M02_04_12_06,322,8,7,1,23170,183282,172474,236990,,,
1069M02_04_12_07,321,8,7,1,23170,214225,203417,236990,,,
1069M02_04_12_08,320,8,7,1,23170,244689,233881,236990,,,
1069M02_04_12_09,319,8,7,1,23170,274793,263985,236990,,,
1069M02_04_12_10,318,8,7,1,23170,305581,294773,236990,,,
1069M02_04_12_11,317,8,7,1,23170,336359,325551,236990,,,
1069M02_04_12_12,316,8,7,1,23170,367463,356655,236990,,,
1069M02_04_12_13,315,8,7,1,23170,397172,386364,236990,,,
1069M02_04_12_14,314,8,7,1,23170,427788,416980,236990,,,
1069M02_04_12_15,313,8,7,1,23170,457968,447160,236990,,,
1069M02_04_12_16,312,8,7,1,23170,489517,478709,236990,,,
1069M02_04_12_17,311,8,7,1,23170,519589,508781,236990,,,
1069M02_04_22_01,310,8,7,1,23170,549110,538302,236990,,,
1069M02_04_22_02,309,8,7,1,23170,579819,569011,236990,,,
1069M02_04_22_03,308,8,7,1,23170,610361,599553,236990,,,
1069M02_04_22_04,307,8,7,1,23170,641257,630449,236990,,,
1069M02_04_22_05,306,8,7,1,23170,672594,661786,236990,,,
1069M02_04_22_06,305,8,7,1,23170,703171,692363,236990,,,
1069M02_04_22_07,304,8,7,1,23170,733791,722983,236990,,,
1069M02_04_22_08,303,8,7,1,23170,763875,753067,236990,,,
1069M02_04_22_09,302,8,7,1,23170,794350,783542,236990,,,
1069M02_04_22_10,301,8,7,1,23170,823686,812878,236990,,,
1069M02_04_22_11,300,8,7,1,23170,854883,844075,236990,,,
1069M02_04_22_12,299,8,7,1,23170,885342,874534,236990,,,
1069M02_04_22_13,298,8,7,1,23170,916677,905869,236990,,,
1069M02_04_22_14,297,8,7,1,23170,946830,936022,236990,,,
1069M02_04_22_15,296,8,7,1,23170,976549,965741,236990,,,
1069M02_04_22_16,295,8,7,1,23170,1007505,996697,236990,,,
1069M02_04_22_17,294,8,7,1,23170,1037678,1026870,236990,,,
1069M02_04_32_01,293,8,7,1,23170,1068295,1057487,236990,,,
1069M02_04_32_02,292,8,7,1,23170,1099077,1088269,236990,,,
1069M02_04_32_03,291,8,7,1,23170,1130160,1119352,236990,,,
1069M02_04_32_04,290,8,7,1,23170,1161277,1150469,236990,,,
1069M02_04_32_05,289,8,7,1,23170,1191348,1180540,236990,,,
1069M02_04_32_06,288,8,7,1,23170,1221680,1210872,236990,,,
1069M02_04_32_07,287,8,7,1,23170,1252132,1241324,236990,,,
1069M02_04_32_08,286,8,7,1,23170,1282926,1272118,236990,,,
1069M02_04_32_09,285,8,7,1,23170,1313396,1302588,236990,,,
1069M02_04_32_10,284,8,7,1,23170,1343782,1332974,236990,,,
1069M02_04_32_11,283,8,7,1,23170,1374510,1363702,236990,,,
1069M02_04_32_12,282,8,7,1,23170,1405043,1394235,236990,,,
1069M02_04_32_13,281,8,7,1,23170,1435645,1424837,236990,,,
1069M02_04_32_14,280,8,7,1,23170,1466104,1455296,236990,,,
1069M02_04_32_15,279,8,7,1,23170,1495652,1484844,236990,,,
1069M02_04_32_16,278,8,7,1,23170,1526166,1515358,236990,,,
1069M02_04_32_17,277,8,7,1,23170,1555975,1545167,236990,,,
1069M02_04_42_01,276,8,7,1,23170,1584077,1573269,236990,,,
1069M02_04_42_02,275,8,7,1,23170,1615544,1604736,236990,,,
1069M02_04_42_03,274,8,7,1,23170,1646166,1635358,236990,,,
1069M02_04_42_04,273,8,7,1,23170,1676712,1665904,236990,,,
1069M02_04_42_05,272,8,7,1,23170,1708050,1697242,236990,,,
1069M02_04_42_06,271,8,7,1,23170,1738657,1727849,236990,,,
1069M02_04_42_07,270,8,7,1,23170,1768554,1757746,236990,,,
1069M02_04_42_08,269,8,7,1,23170,1798958,1788150,236990,,,
1069M02_04_42_09,268,8,7,1,23170,1828931,1818123,236990,,,
1069M02_04_42_10,267,8,7,1,23170,1860545,1849737,236990,,,
1069M02_04_42_11,266,8,7,1,23170,1889618,1878810,236990,,,
1069M02_04_42_12,265,8,7,1,23170,1921047,1910239,236990,,,
1069M02_04_42_13,264,8,7,1,23170,1951449,1940641,236990,,,
1069M02_04_42_14,263,8,7,1,23170,1981646,1970838,236990,,,
1069M02_04_42_15,262,8,7,1,23170,2012009,2001201,236990,,,
1069M02_04_42_16,261,8,7,1,23170,2042585,2031777,236990,,,
1069M02_05_11_01,260,8,7,1,47435,30363,19555,236990,,,
1069M02_05_11_02,259,8,7,1,47435,60590,49782,236990,,,
1069M02_05_11_03,258,8,7,1,47435,91232,80424,236990,,,
1069M02_05_11_04,257,8,7,1,47435,121519,110711,236990,,,
1069M02_05_11_05,256,8,7,1,47435,152310,141502,236990,,,
1069M02_05_11_06,255,8,7,1,47435,182856,172048,236990,,,
1069M02_05_11_07,254,8,7,1,47435,213418,202610,236990,,,
1069M02_05_11_08,253,8,7,1,47435,244278,233470,236990,,,
1069M02_05_11_09,252,8,7,1,47435,274596,263788,236990,,,
1069M02_05_11_10,251,8,7,1,47435,304781,293973,236990,,,
1069M02_05_11_11,250,8,7,1,47435,336947,326139,236990,,,
1069M02_05_11_12,249,8,7,1,47435,365868,355060,236990,,,
1069M02_05_11_13,248,8,7,1,47435,396538,385730,236990,,,
1069M02_05_11_14,247,8,7,1,47435,428075,417267,236990,,,
1069M02_05_11_15,246,8,7,1,47435,457282,446474,236990,,,
1069M02_05_11_16,245,8,7,1,47435,487600,476792,236990,,,
1069M02_05_11_17,244,8,7,1,47435,518333,507525,236990,,,
1069M02_05_21_01,243,8,7,1,47435,549232,538424,236990,,,
1069M02_05_21_02,242,8,7,1,47435,580397,569589,236990,,,
1069M02_05_21_03,241,8,7,1,47435,611072,600264,236990,,,
1069M02_05_21_04,240,8,7,1,47435,641218,630410,236990,,,
1069M02_05_21_05,239,8,7,1,47435,672227,661419,236990,,,
1069M02_05_21_06,238,8,7,1,47435,702318,691510,236990,,,
1069M02_05_21_07,237,8,7,1,47435,732958,722150,236990,,,
1069M02_05_21_08,236,8,7,1,47435,764125,753317,236990,,,
1069M02_05_21_09,235,8,7,1,47435,794297,783489,236990,,,
1069M02_05_21_10,234,8,7,1,47435,824476,813668,236990,,,
1069M02_05_21_11,233,8,7,1,47435,855348,844540,236990,,,
1069M02_05_21_12,232,8,7,1,47435,885915,875107,236990,,,
1069M02_05_21_13,231,8,7,1,47435,916241,905433,236990,,,
1069M02_05_21_14,230,8,7,1,47435,946738,935930,236990,,,
1069M02_05_21_15,229,8,7,1,47435,977301,966493,236990,,,
1069M02_05_21_16,228,8,7,1,47435,1007768,996960,236990,,,
1069M02_05_21_17,227,8,7,1,47435,1037834,1027026,236990,,,
1069M02_05_31_01,226,8,7,1,47435,1068770,1057962,236990,,,
1069M02_05_31_02,225,8,7,1,47435,1099079,1088271,236990,,,
1069M02_05_31_03,224,8,7,1,47435,1128576,1117768,236990,,,
1069M02_05_31_04,223,8,7,1,47435,1159745,1148937,236990,,,
1069M02_05_31_05,222,8,7,1,47435,1189841,1179033,236990,,,
1069M02_05_31_06,221,8,7,1,47435,1220631,1209823,236990,,,
1069M02_05_31_07,220,8,7,1,47435,1250946,1240138,236990,,,
1069M02_05_31_08,219,8,7,1,47435,1281453,1270645,236990,,,
1069M02_05_31_09,218,8,7,1,47435,1312020,1301212,236990,,,
1069M02_05_31_10,217,8,7,1,47435,1342335,1331527,236990,,,
1069M02_05_31_11,216,8,7,1,47435,1372912,1362104,236990,,,
1069M02_05_31_12,215,8,7,1,47435,1403328,1392520,236990,,,
1069M02_05_31_13,214,8,7,1,47435,1434212,1423404,236990,,,
1069M02_05_31_14,213,8,7,1,47435,1464707,1453899,236990,,,
1069M02_05_31_15,212,8,7,1,47435,1495284,1484476,236990,,,
1069M02_05_31_16,211,8,7,1,47435,1525520,1514712,236990,,,
1069M02_05_31_17,210,8,7,1,47435,1555608,1544800,236990,,,
1069M02_05_41_01,209,8,7,1,47435,1585861,1575053,236990,,,
1069M02_05_41_02,208,8,7,1,47435,1616319,1605511,236990,,,
1069M02_05_41_03,207,8,7,1,47435,1646726,1635918,236990,,,
1069M02_05_41_04,206,8,7,1,47435,1677656,1666848,236990,,,
1069M02_05_41_05,205,8,7,1,47435,1708528,1697720,236990,,,
1069M02_05_41_06,204,8,7,1,47435,1738254,1727446,236990,,,
1069M02_05_41_07,203,8,7,1,47435,1769677,1758869,236990,,,
1069M02_05_41_08,202,8,7,1,47435,1800378,1789570,236990,,,
1069M02_05_41_09,201,8,7,1,47435,1829723,1818915,236990,,,
1069M02_05_41_10,200,8,7,1,47435,1860650,1849842,236990,,,
1069M02_05_41_11,199,8,7,1,47435,1890643,1879835,236990,,,
1069M02_05_41_12,198,8,7,1,47435,1921160,1910352,236990,,,
1069M02_05_41_13,197,8,7,1,47435,1952873,1942065,236990,,,
1069M02_05_41_14,196,8,7,1,47435,1983022,1972214,236990,,,
1069M02_05_41_15,195,8,7,1,47435,2013571,2002763,236990,,,
1069M02_05_41_16,194,8,7,1,47435,2043854,2033046,236990,,,
1069M02_05_12_01,193,8,7,1,70150,30363,19555,236990,,,
1069M02_05_12_02,192,8,7,1,70150,60590,49782,236990,,,
1069M02_05_12_03,191,8,7,1,70150,91232,80424,236990,,,
1069M02_05_12_04,190,8,7,1,70150,121519,110711,236990,,,
1069M02_05_12_05,189,8,7,1,70150,152310,141502,236990,,,
1069M02_05_12_06,188,8,7,1,70150,182856,172048,236990,,,
1069M02_05_12_07,187,8,7,1,70150,213418,202610,236990,,,
1069M02_05_12_08,186,8,7,1,70150,244278,233470,236990,,,
1069M02_05_12_09,185,8,7,1,70150,274596,263788,236990,,,
1069M02_05_12_10,184,8,7,1,70150,304781,293973,236990,,,
1069M02_05_12_11,183,8,7,1,70150,336947,326139,236990,,,
1069M02_05_12_12,182,8,7,1,70150,365868,355060,236990,,,
1069M02_05_12_13,181,8,7,1,70150,396538,385730,236990,,,
1069M02_05_12_14,180,8,7,1,70150,428075,417267,236990,,,
1069M02_05_12_15,179,8,7,1,70150,457282,446474,236990,,,
1069M02_05_12_16,178,8,7,1,70150,487600,476792,236990,,,
1069M02_05_12_17,177,8,7,1,70150,518333,507525,236990,,,
1069M02_05_22_01,176,8,7,1,70150,549232,538424,236990,,,
1069M02_05_22_02,175,8,7,1,70150,580397,569589,236990,,,
1069M02_05_22_03,174,8,7,1,70150,611072,600264,236990,,,
1069M02_05_22_04,173,8,7,1,70150,641218,630410,236990,,,
1069M02_05_22_05,172,8,7,1,70150,672227,661419,236990,,,
1069M02_05_22_06,171,8,7,1,70150,702318,691510,236990,,,
1069M02_05_22_07,170,8,7,1,70150,732958,722150,236990,,,
1069M02_05_22_08,169,8,7,1,70150,764125,753317,236990,,,
1069M02_05_22_09,168,8,7,1,70150,794297,783489,236990,,,
1069M02_05_22_10,167,8,7,1,70150,824476,813668,236990,,,
1069M02_05_22_11,166,8,7,1,70150,855348,844540,236990,,,
1069M02_05_22_12,165,8,7,1,70150,885915,875107,236990,,,
1069M02_05_22_13,164,8,7,1,70150,916241,905433,236990,,,
1069M02_05_22_14,163,8,7,1,70150,946738,935930,236990,,,
1069M02_05_22_15,162,8,7,1,70150,977301,966493,236990,,,
1069M02_05_22_16,161,8,7,1,70150,1007768,996960,236990,,,
1069M02_05_22_17,160,8,7,1,70150,1037834,1027026,236990,,,
1069M02_05_32_01,159,8,7,1,70150,1068770,1057962,236990,,,
1069M02_05_32_02,158,8,7,1,70150,1099079,1088271,236990,,,
1069M02_05_32_03,157,8,7,1,70150,1128576,1117768,236990,,,
1069M02_05_32_04,156,8,7,1,70150,1159745,1148937,236990,,,
1069M02_05_32_05,155,8,7,1,70150,1189841,1179033,236990,,,
1069M02_05_32_06,154,8,7,1,70150,1220631,1209823,236990,,,
1069M02_05_32_07,153,8,7,1,70150,1250946,1240138,236990,,,
1069M02_05_32_08,152,8,7,1,70150,1281453,1270645,236990,,,
1069M02_05_32_09,151,8,7,1,70150,1312020,1301212,236990,,,
1069M02_05_32_10,150,8,7,1,70150,1342335,1331527,236990,,,
1069M02_05_32_11,149,8,7,1,70150,1372912,1362104,236990,,,
1069M02_05_32_12,148,8,7,1,70150,1403328,1392520,236990,,,
1069M02_05_32_13,147,8,7,1,70150,1434212,1423404,236990,,,
1069M02_05_32_14,146,8,7,1,70150,1464707,1453899,236990,,,
1069M02_05_32_15,145,8,7,1,70150,1495284,1484476,236990,,,
1069M02_05_32_16,144,8,7,1,70150,1525520,1514712,236990,,,
1069M02_05_32_17,143,8,7,1,70150,1555608,1544800,236990,,,
1069M02_05_42_01,142,8,7,1,70150,1585861,1575053,236990,,,
1069M02_05_42_02,141,8,7,1,70150,1616319,1605511,236990,,,
1069M02_05_42_03,140,8,7,1,70150,1646726,1635918,236990,,,
1069M02_05_42_04,139,8,7,1,70150,1677656,1666848,236990,,,
1069M02_05_42_05,138,8,7,1,70150,1708528,1697720,236990,,,
1069M02_05_42_06,137,8,7,1,70150,1738254,1727446,236990,,,
1069M02_05_42_07,136,8,7,1,70150,1769677,1758869,236990,,,
1069M02_05_42_08,135,8,7,1,70150,1800378,1789570,236990,,,
1069M02_05_42_09,134,8,7,1,70150,1829723,1818915,236990,,,
1069M02_05_42_10,133,8,7,1,70150,1860650,1849842,236990,,,
1069M02_05_42_11,132,8,7,1,70150,1890643,1879835,236990,,,
1069M02_05_42_12,131,8,7,1,70150,1921160,1910352,236990,,,
1069M02_05_42_13,130,8,7,1,70150,1952873,1942065,236990,,,
1069M02_05_42_14,129,8,7,1,70150,1983022,1972214,236990,,,
1069M02_05_42_15,128,8,7,1,70150,2013571,2002763,236990,,,
1069M02_05_42_16,127,8,7,1,70150,2043854,2033046,236990,,,
1069M02_06_11_01,126,8,7,1,94430,153574,142766,236990,,,
1069M02_06_11_02,125,8,7,1,94430,182339,171531,236990,,,
1069M02_06_11_03,124,8,7,1,94430,212171,201363,236990,,,
1069M02_06_11_04,123,8,7,1,94430,242932,232124,236990,,,
1069M02_06_11_05,122,8,7,1,94430,274799,263991,236990,,,
1069M02_06_11_06,121,8,7,1,94430,303702,292894,236990,,,
1069M02_06_11_07,120,8,7,1,94430,334433,323625,236990,,,
1069M02_06_11_08,119,8,7,1,94430,365834,355026,236990,,,
1069M02_06_11_09,118,8,7,1,94430,395850,385042,236990,,,
1069M02_06_11_10,117,8,7,1,94430,427034,416226,236990,,,
1069M02_06_11_11,116,8,7,1,94430,456828,446020,236990,,,
1069M02_06_11_12,115,8,7,1,94430,488288,477480,236990,,,
1069M02_06_11_13,114,8,7,1,94430,517998,507190,236990,,,
1069M02_06_11_14,113,8,7,1,94430,547774,536966,236990,,,
1069M02_06_11_15,112,8,7,1,94430,579381,568573,236990,,,
1069M02_06_11_16,111,8,7,1,94430,609167,598359,236990,,,
1069M02_06_11_17,110,8,7,1,94430,639815,629007,236990,,,
1069M02_06_21_01,109,8,7,1,94430,672192,661384,236990,,,
1069M02_06_21_02,108,8,7,1,94430,701755,690947,236990,,,
1069M02_06_21_03,107,8,7,1,94430,732351,721543,236990,,,
1069M02_06_21_04,106,8,7,1,94430,763819,753011,236990,,,
1069M02_06_21_05,105,8,7,1,94430,794682,783874,236990,,,
1069M02_06_21_06,104,8,7,1,94430,824993,814185,236990,,,
1069M02_06_21_07,103,8,7,1,94430,855250,844442,236990,,,
1069M02_06_21_08,102,8,7,1,94430,885724,874916,236990,,,
1069M02_06_21_09,101,8,7,1,94430,915877,905069,236990,,,
1069M02_06_21_10,100,8,7,1,94430,946782,935974,236990,,,
1069M02_06_21_11,99,8,7,1,94430,976732,965924,236990,,,
1069M02_06_21_12,98,8,7,1,94430,1008281,997473,236990,,,
1069M02_06_21_13,97,8,7,1,94430,1037913,1027105,236990,,,
1069M02_06_21_14,96,8,7,1,94430,1068275,1057467,236990,,,
1069M02_06_21_15,95,8,7,1,94430,1099186,1088378,236990,,,
1069M02_06_21_16,94,8,7,1,94430,1129492,1118684,236990,,,
1069M02_06_21_17,93,8,7,1,94430,1160392,1149584,236990,,,
1069M02_06_31_01,92,8,7,1,94430,1188511,1177703,236990,,,
1069M02_06_31_02,91,8,7,1,94430,1219234,1208426,236990,,,
1069M02_06_31_03,90,8,7,1,94430,1249884,1239076,236990,,,
1069M02_06_31_04,89,8,7,1,94430,1280185,1269377,236990,,,
1069M02_06_31_05,88,8,7,1,94430,1312057,1301249,236990,,,
1069M02_06_31_06,87,8,7,1,94430,1341141,1330333,236990,,,
1069M02_06_31_07,86,8,7,1,94430,1372418,1361610,236990,,,
1069M02_06_31_08,85,8,7,1,94430,1402659,1391851,236990,,,
1069M02_06_31_09,84,8,7,1,94430,1432996,1422188,236990,,,
1069M02_06_31_10,83,8,7,1,94430,1463495,1452687,236990,,,
1069M02_06_31_11,82,8,7,1,94430,1494056,1483248,236990,,,
1069M02_06_31_12,81,8,7,1,94430,1524750,1513942,236990,,,
1069M02_06_31_13,80,8,7,1,94430,1554932,1544124,236990,,,
1069M02_06_31_14,79,8,7,1,94430,1585436,1574628,236990,,,
1069M02_06_31_15,78,8,7,1,94430,1616038,1605230,236990,,,
1069M02_06_31_16,77,8,7,1,94430,1645742,1634934,236990,,,
1069M02_06_31_17,76,8,7,1,94430,1676404,1665596,236990,,,
1069M02_06_41_01,75,8,7,1,94430,1708696,1697888,236990,,,
1069M02_06_41_02,74,8,7,1,94430,1739298,1728490,236990,,,
1069M02_06_41_03,73,8,7,1,94430,1769087,1758279,236990,,,
1069M02_06_41_04,72,8,7,1,94430,1800426,1789618,236990,,,
1069M02_06_41_05,71,8,7,1,94430,1830977,1820169,236990,,,
1069M02_06_41_06,70,8,7,1,94430,1860820,1850012,236990,,,
1069M02_06_41_07,69,8,7,1,94430,1891849,1881041,236990,,,
1069M02_06_41_08,68,8,7,1,94430,1922263,1911455,236990,,,
1069M02_06_41_09,67,8,7,1,94430,1952640,1941832,236990,,,
1069M02_06_41_10,66,8,7,1,94430,1983293,1972485,236990,,,
1069M02_06_41_11,65,8,7,1,94430,2013163,2002355,236990,,,
1069M02_06_41_12,64,8,7,1,94430,2043781,2032973,236990,,,
1069M02_06_12_01,63,8,7,1,117107,153574,142766,236990,,,
1069M02_06_12_02,62,8,7,1,117107,182339,171531,236990,,,
1069M02_06_12_03,61,8,7,1,117107,212171,201363,236990,,,
1069M02_06_12_04,60,8,7,1,117107,242932,232124,236990,,,
1069M02_06_12_05,59,8,7,1,117107,274799,263991,236990,,,
1069M02_06_12_06,58,8,7,1,117107,303702,292894,236990,,,
1069M02_06_12_07,57,8,7,1,117107,334433,323625,236990,,,
1069M02_06_12_08,56,8,7,1,117107,365834,355026,236990,,,
1069M02_06_12_09,55,8,7,1,117107,395850,385042,236990,,,
1069M02_06_12_10,54,8,7,1,117107,427034,416226,236990,,,
1069M02_06_12_11,53,8,7,1,117107,456828,446020,236990,,,
1069M02_06_12_12,52,8,7,1,117107,488288,477480,236990,,,
1069M02_06_12_13,51,8,7,1,117107,517998,507190,236990,,,
1069M02_06_12_14,50,8,7,1,117107,547774,536966,236990,,,
1069M02_06_12_15,49,8,7,1,117107,579381,568573,236990,,,
1069M02_06_12_16,48,8,7,1,117107,609167,598359,236990,,,
1069M02_06_12_17,47,8,7,1,117107,639815,629007,236990,,,
1069M02_06_22_01,46,8,7,1,117107,672192,661384,236990,,,
1069M02_06_22_02,45,8,7,1,117107,701755,690947,236990,,,
1069M02_06_22_03,44,8,7,1,117107,732351,721543,236990,,,
1069M02_06_22_04,43,8,7,1,117107,763819,753011,236990,,,
1069M02_06_22_05,42,8,7,1,117107,794682,783874,236990,,,
1069M02_06_22_06,41,8,7,1,117107,824993,814185,236990,,,
1069M02_06_22_07,40,8,7,1,117107,855250,844442,236990,,,
1069M02_06_22_08,39,8,7,1,117107,885724,874916,236990,,,
1069M02_06_22_09,38,8,7,1,117107,915877,905069,236990,,,
1069M02_06_22_10,37,8,7,1,117107,946782,935974,236990,,,
1069M02_06_22_11,36,8,7,1,117107,976732,965924,236990,,,
1069M02_06_22_12,35,8,7,1,117107,1008281,997473,236990,,,
1069M02_06_22_13,34,8,7,1,117107,1037913,1027105,236990,,,
1069M02_06_22_14,33,8,7,1,117107,1068275,1057467,236990,,,
1069M02_06_22_15,32,8,7,1,117107,1099186,1088378,236990,,,
1069M02_06_22_16,31,8,7,1,117107,1129492,1118684,236990,,,
1069M02_06_22_17,30,8,7,1,117107,1160392,1149584,236990,,,
1069M02_06_32_01,29,8,7,1,117107,1188511,1177703,236990,,,
1069M02_06_32_02,28,8,7,1,117107,1219234,1208426,236990,,,
1069M02_06_32_03,27,8,7,1,117107,1249884,1239076,236990,,,
1069M02_06_32_04,26,8,7,1,117107,1280185,1269377,236990,,,
1069M02_06_32_05,25,8,7,1,117107,1312057,1301249,236990,,,
1069M02_06_32_06,24,8,7,1,117107,1341141,1330333,236990,,,
1069M02_06_32_07,23,8,7,1,117107,1372418,1361610,236990,,,
1069M02_06_32_08,22,8,7,1,117107,1402659,1391851,236990,,,
1069M02_06_32_09,21,8,7,1,117107,1432996,1422188,236990,,,
1069M02_06_32_10,20,8,7,1,117107,1463495,1452687,236990,,,
1069M02_06_32_11,19,8,7,1,117107,1494056,1483248,236990,,,
1069M02_06_32_12,18,8,7,1,117107,1524750,1513942,236990,,,
1069M02_06_32_13,17,8,7,1,117107,1554932,1544124,236990,,,
1069M02_06_32_14,16,8,7,1,117107,1585436,1574628,236990,,,
1069M02_06_32_15,15,8,7,1,117107,1616038,1605230,236990,,,
1069M02_06_32_16,14,8,7,1,117107,1645742,1634934,236990,,,
1069M02_06_32_17,13,8,7,1,117107,1676404,1665596,236990,,,
1069M02_06_42_01,12,8,7,1,117107,1708696,1697888,236990,,,
1069M02_06_42_02,11,8,7,1,117107,1739298,1728490,236990,,,
1069M02_06_42_03,10,8,7,1,117107,1769087,1758279,236990,,,
1069M02_06_42_04,9,8,7,1,117107,1800426,1789618,236990,,,
1069M02_06_42_05,8,8,7,1,117107,1830977,1820169,236990,,,
1069M02_06_42_06,7,8,7,1,117107,1860820,1850012,236990,,,
1069M02_06_42_07,6,8,7,1,117107,1891849,1881041,236990,,,
1069M02_06_42_08,5,8,7,1,117107,1922263,1911455,236990,,,
1069M02_06_42_09,4,8,7,1,117107,1952640,1941832,236990,,,
1069M02_06_42_10,3,8,7,1,117107,1983293,1972485,236990,,,
1069M02_06_42_11,2,8,7,1,117107,2013163,2002355,236990,,,
1069M02_06_42_12,1,8,7,1,117107,2043781,2032973,236990,,,
DeviceLibrary/VirtuallyStore/VServerComm.cs
查看文件 @
1d786b6
...
...
@@ -68,7 +68,7 @@ namespace DeviceLibrary
{
try
{
if
(
RobotManage
.
isRunning
)
if
(
RobotManage
.
isRunning
&&
storeStatus
>
0
)
{
//ProcessMsg(VMsg.msg);
SendLineStatus
();
...
...
@@ -183,7 +183,7 @@ namespace DeviceLibrary
boxStatus
.
temperature
=
Temperature
.
ToString
();
//状态
boxStatus
.
status
=
(
int
)
storeStatus
;
boxStatus
.
data
.
Add
(
"capacity"
,
capacity
);
string
sendmsg
=
""
;
...
...
@@ -578,6 +578,8 @@ namespace DeviceLibrary
return
true
;
}
MydataWcfServiceTest
.
ServiceReference2
.
TowerAppWSClient
towerAppWSClient
;
internal
string
capacity
;
public
bool
SendCommand
(
string
command
,
bool
needlog
,
out
string
msg
,
params
string
[]
arg
)
{
string
errmsg
;
...
...
DeviceLibrary/VirtuallyStore/VStore.cs
查看文件 @
1d786b6
...
...
@@ -28,15 +28,17 @@ namespace DeviceLibrary
}
public
string
CID
;
public
string
TowerName
;
public
TowerInfo
TowerInfo
;
public
VStore
(
TowerInfo
towerInfo
,
VStoreCollection
storeCollection
)
{
vc
=
storeCollection
;
CID
=
towerInfo
.
TowerID
;
TowerName
=
towerInfo
.
TowerName
;
TowerInfo
=
towerInfo
;
VLog
=
new
VLog
(
CID
,
CID
);
ServerCM
=
new
VServerComm
(
CID
,
VLog
);
ServerCM
.
OutStoreEvent
+=
ServerCM_OutStoreEvent
;
ServerCM
.
storeStatus
=
StoreStatus
.
None
;
Msg
=
new
MsgService
(
"RT-"
+
CID
);
Msg
=
new
MsgService
(
"RT-"
+
CID
);
OutStoreJobList
=
new
StoreJobList
(
crc
.
GetString
(
"Res0050"
,
"出库任务"
));
}
...
...
@@ -53,6 +55,13 @@ namespace DeviceLibrary
DateTime
LastStatusTime
=
DateTime
.
Now
;
int
LastStatusCode
=
0
;
internal
void
VTowerProcess
()
{
if
(!
TowerInfo
.
Enable
)
{
ServerCM
.
storeStatus
=
StoreStatus
.
None
;
CurrentTowerStatusText
=
"Disable"
;
RTStoreStatus
=
RTStoreStatus
.
Offline
;
return
;
}
try
{
var
ti
=
ServerCM
.
GetTowerDetailInformation
(
CID
);
...
...
@@ -66,7 +75,16 @@ namespace DeviceLibrary
CurrentTowerStatusText
=
$
"[TI={ti.StatusCode}-{ti.StatusText}]"
;
ServerCM
.
Temperature
=
ti
.
Temperature
;
ServerCM
.
Humidity
=
ti
.
Humidity
;
if
(
ti
.
StatusCode
==
26
)
if
(
ServerCM
.
Humidity
>
ServerCM
.
Max_Humidity
||
ServerCM
.
Temperature
>
ServerCM
.
Max_Temperature
)
{
Msg
.
add
(
crc
.
GetString
(
"Res0098.70dccffd"
,
"温湿度超限"
),
MsgLevel
.
alarm
);
}
//if (ti.StatusCode == 26 && ti.StatusText != "Ready")
//{
// VLog.Info("料仓已空闲");
//}
//else
if
(
ti
.
StatusCode
==
26
&&
ti
.
StatusText
==
"Ready"
)
{
ServerCM
.
storeStatus
=
StoreStatus
.
StoreOnline
;
if
(
RTStoreStatus
!=
RTStoreStatus
.
LockToInStore
&&
RTStoreStatus
!=
RTStoreStatus
.
InStoreReady
)
...
...
@@ -83,6 +101,7 @@ namespace DeviceLibrary
RTStoreStatus
=
RTStoreStatus
.
LockToInStore
;
if
(!
ServerCM
.
BeginOutStore
(
jobInfo
.
Clone
(),
VLog
))
{
Msg
.
add
(
crc
.
GetString
(
"Res0105.f3331370"
,
"发送出库指令失败"
)
+
":"
+
jobInfo
.
WareNum
,
MsgLevel
.
alarm
);
RTStoreStatus
=
RTStoreStatus
.
Ready
;
}
CurrentTerminalReelID
=
jobInfo
.
WareNum
;
...
...
@@ -119,7 +138,7 @@ namespace DeviceLibrary
{
VLog
.
Error
(
$
"未知状态超时,RTStoreStatus={RTStoreStatus}:"
+
InStoreJobInfo
?.
ToStr
());
}
Msg
.
add
(
$
"TerminalError"
+
"入库超时"
,
MsgLevel
.
warning
);
Msg
.
add
(
$
"TerminalError"
+
crc
.
GetString
(
"Res0099.42525c5f"
,
"入库超时"
)
,
MsgLevel
.
warning
);
}
}
else
if
(
ti
.
StatusCode
==
1031
)
...
...
@@ -162,28 +181,38 @@ namespace DeviceLibrary
}
else
if
(
ti
.
StatusCode
==
1041
)
{
if
(
RTStoreStatus
!=
RTStoreStatus
.
OutStoreReady
)
if
(
InStoreJobInfo
==
null
)
{
VLog
.
Info
(
"出库已完成"
);
InStoreJobInfo
=
null
;
OutStoreEnd
(
CurrentTerminalReelID
,
CID
);
}
if
(
RTStoreStatus
!=
RTStoreStatus
.
OutStoreReady
)
{
VLog
.
Info
(
"出库物料已到舱门口:"
+
CurrentTerminalReelID
);
InStoreJobInfo
=
null
;
OutStoreEnd
(
CurrentTerminalReelID
,
CID
);
}
RTStoreStatus
=
RTStoreStatus
.
OutStoreReady
;
OutStoreJobList
.
ClearLastPosid
();
}
else
{
TerminalError
=
true
;
VLog
.
Info
(
"异常出库:"
+
CurrentTerminalReelID
);
RTStoreStatus
=
RTStoreStatus
.
OutStoreReady
;
OutStoreJobList
.
ClearLastPosid
();
}
}
else
if
(
ti
.
StatusCode
==
0
||
ti
.
StatusCode
==
18
)
{
RTStoreStatus
=
RTStoreStatus
.
Offline
;
ServerCM
.
storeStatus
=
StoreStatus
.
None
;
}
else
if
(
ti
.
StatusCode
==
310117
||
ti
.
StatusCode
==
310249
)
else
if
(
ti
.
StatusCode
>=
310000
)
{
Msg
.
add
(
$
"StatusCode:{ti.StatusCode},StatusText:{ti.StatusText},OnlineStatus:{ti.OnlineStatus}"
,
MsgLevel
.
warning
);
RTStoreStatus
=
RTStoreStatus
.
InStoreError
;
ServerCM
.
storeStatus
=
StoreStatus
.
InStoreFaild
;
InStoreJobInfo
=
null
;
//CurrentTowerStatusText = $"{ti.StatusText}-{ti.OnlineStatus}";
//InStoreJobInfo = null;
}
else
if
(
ti
.
StatusCode
<
10000
)
{
...
...
@@ -198,6 +227,7 @@ namespace DeviceLibrary
Msg
.
add
(
$
"StatusCode:{ti.StatusCode},StatusText:{ti.StatusText},OnlineStatus:{ti.OnlineStatus}"
,
MsgLevel
.
alarm
);
ServerCM
.
storeStatus
=
StoreStatus
.
InTrouble
;
RTStoreStatus
=
RTStoreStatus
.
Error
;
//CurrentTowerStatusText = $"{ti.StatusText}-{ti.OnlineStatus}";
}
}
else
...
...
@@ -216,9 +246,13 @@ namespace DeviceLibrary
1042 material unloaded to Terminal from Tower 物料已取走
6015 Reel already loaded.
3068 初始化中
310117 Opertion denied
310249 Error Reel Sensor (249)
310107,No scancode (107)
310234,Error clamping on opening (234)
*/
//统计剩余容量
string
capacity
=
""
;
for
(
int
i
=
0
;
i
<
ti
.
Slots
.
Count
;
i
++)
{
var
sn
=
ti
.
Slots
[
i
].
Slotname
;
...
...
@@ -240,11 +274,15 @@ namespace DeviceLibrary
int
.
TryParse
(
sn
.
Substring
(
2
),
out
h
);
}
//boxStatus.data.Add("capacity", "7X8=1000;7X12=345;13X32=100;");
SlotsInfo
[
$
"{w}x{h}"
]
=
$
"{ti.Slots[i].Slots_used}/{ti.Slots[i].Slots_free}"
;
capacity
+=
$
"{w}X{h}={ti.Slots[i].Slots_free};"
;
SlotsInfo
[
$
"{w}X{h}"
]
=
$
"{ti.Slots[i].Slots_used}/{ti.Slots[i].Slots_free}"
;
}
ServerCM
.
capacity
=
capacity
;
}
catch
(
Exception
ex
)
{
ServerCM
.
storeStatus
=
StoreStatus
.
None
;
RTStoreStatus
=
RTStoreStatus
.
Offline
;
VLog
.
Error
(
"VStore Error:"
+
ex
);
}
finally
...
...
@@ -256,6 +294,10 @@ namespace DeviceLibrary
public
Dictionary
<
string
,
string
>
SlotsInfo
=
new
Dictionary
<
string
,
string
>();
public
string
GetStateStr
()
{
if
(!
TowerInfo
.
Enable
)
{
return
"Disable"
;
}
if
(
RTStoreStatus
==
RTStoreStatus
.
OutStoreReady
)
return
crc
.
GetString
(
"Res0066"
,
"出库中"
)
+
(!
string
.
IsNullOrEmpty
(
CurrentTerminalReelID
)?
"SN:"
+
CurrentTerminalReelID
:
""
);
...
...
@@ -270,6 +312,11 @@ namespace DeviceLibrary
{
return
crc
.
GetString
(
"Res0069"
,
"入库出错,物料NG"
)
+
" Barcode:"
+
InStoreJobInfo
?.
WareNum
;
}
if
(
RTStoreStatus
==
RTStoreStatus
.
Error
)
{
return
CurrentTowerStatusText
;
}
return
crc
.
GetString
(
"Res0070"
,
"空闲中"
);
}
...
...
@@ -291,6 +338,11 @@ namespace DeviceLibrary
{
return
ServerCM
.
SendStoreState
(
""
,
posid
,
StoreStatus
.
InStoreEnd
);
}
internal
void
log
(
string
v
)
{
VLog
.
Info
(
v
);
}
}
public
enum
RTStoreStatus
{
Offline
,
...
...
DeviceLibrary/VirtuallyStore/VStoreCollection.cs
查看文件 @
1d786b6
...
...
@@ -53,6 +53,7 @@ namespace DeviceLibrary
var
reelid
=
r
.
Descendants
(
"Barcode"
).
FirstOrDefault
().
Value
;
var
towerid
=
r
.
Descendants
(
"TowerId"
).
FirstOrDefault
().
Value
;
VLog
.
Info
(
"收到入库完成通知:"
+
$
"ReelID:{reelid},TowerID:{towerid}"
);
VStoreList
[
towerid
].
log
(
"收到入库完成通知:"
+
$
"ReelID:{reelid},TowerID:{towerid}"
);
if
(!
VStoreList
.
ContainsKey
(
towerid
))
{
VLog
.
Error
(
"收到入库信息,但没有找到该料仓id"
);
...
...
@@ -65,6 +66,7 @@ namespace DeviceLibrary
reelid
=
r
.
Descendants
(
"Barcode"
).
FirstOrDefault
().
Value
;
towerid
=
r
.
Descendants
(
"TowerId"
).
FirstOrDefault
().
Value
;
VLog
.
Info
(
"收到出库完成通知:"
+
$
"ReelID:{reelid},TowerID:{towerid}"
);
VStoreList
[
towerid
].
log
(
"收到出库完成通知:"
+
$
"ReelID:{reelid},TowerID:{towerid}"
);
if
(!
VStoreList
.
ContainsKey
(
towerid
))
{
VLog
.
Error
(
"收到出库信息,但没有找到该料仓id"
);
}
...
...
DeviceLibrary/theMachine/DeviceBase.cs
查看文件 @
1d786b6
...
...
@@ -32,7 +32,7 @@ namespace DeviceLibrary
{
EquipMsgData
equipMsg
=
new
EquipMsgData
();
equipMsg
.
msgList
=
new
List
<
EquipMessage
>();
equipMsg
.
status
=
0
;
equipMsg
.
status
=
1
;
Msg
.
msg
.
ForEach
(
ml
=>
{
equipMsg
.
msgList
.
Add
(
new
EquipMessage
()
...
...
@@ -42,8 +42,6 @@ namespace DeviceLibrary
});
if
(
ml
.
msgLevel
==
MsgLevel
.
alarm
)
equipMsg
.
status
=
2
;
else
equipMsg
.
status
=
1
;
});
equipMsg
.
equipName
=
GroupName
;
TheLine
.
UploadStatus
(
equipMsg
);
...
...
DeviceLibrary/theMachine/MainMachine _LedProcess.cs
查看文件 @
1d786b6
...
...
@@ -106,7 +106,7 @@ namespace DeviceLibrary
foreach
(
var
ledcolor
in
ledcfg
.
Keys
)
{
if
(
ledcfg
[
ledcolor
]
==
LedState
.
none
)
return
;
continue
;
Led
.
LedColors
[
ledcolor
].
LedState
=
ledcfg
[
ledcolor
];
}
}
...
...
@@ -126,13 +126,13 @@ namespace DeviceLibrary
{
ProcessLefCfg
(
MachineLedStateE
.
Running
);
//出入库 绿闪 黄闪
if
(
RobotManage
.
isRunning
)
{
//RunningLed.LedState = LedState.blink;
//StandbyLed.LedState = LedState.blink;
ProcessLefCfg
(
MachineLedStateE
.
InOut
);
}
//
//
出入库 绿闪 黄闪
//
if (RobotManage.isRunning)
//
{
//
//RunningLed.LedState = LedState.blink;
//
//StandbyLed.LedState = LedState.blink;
//
ProcessLefCfg(MachineLedStateE.InOut);
//
}
//系统暂停,说明书未定义, 绿闪, 红闪
if
(!
canRunning
||
UserPause
)
{
...
...
DeviceLibrary/theMachine/MoveInfo.cs
查看文件 @
1d786b6
using
log4net
;
using
OnlineStore
;
using
log4net
;
using
OnlineStore.Common
;
using
OnlineStore.LoadCSVLibrary
;
using
System
;
...
...
@@ -262,36 +263,36 @@ namespace DeviceLibrary
{
if
(
IsHomeMove
)
{
return
"轴"
+
"【"
+
AxisInfo
.
DisplayStr
+
"】"
+
"原点返回"
;
return
crc
.
GetString
(
"Res0089.60c85b4b"
,
"轴"
)
+
"【"
+
AxisInfo
.
DisplayStr
+
"】"
+
crc
.
GetString
(
"AxisMoveControl_groupAxis_panel1_btnAxisReturnHome_Text"
,
"原点返回"
)
;
}
else
{
return
"轴"
+
"【"
+
AxisInfo
.
DisplayStr
+
"】"
+
"绝对运动,目标位置"
+
"【"
+
TargetPosition
+
"】"
;
return
crc
.
GetString
(
"Res0089.60c85b4b"
,
"轴"
)
+
"【"
+
AxisInfo
.
DisplayStr
+
"】"
+
crc
.
GetString
(
"Res0090.0c33436f"
,
"绝对运动,目标位置"
)
+
"【"
+
TargetPosition
+
"】"
;
}
}
else
if
(
WaitType
.
Equals
(
WaitEnum
.
W002_IOValue
))
{
return
"等待"
+
"【"
+
IoType
+
"】=【"
+
IoValue
+
"】"
;
return
crc
.
GetString
(
"Res0157"
,
"等待"
)
+
"【"
+
IoType
+
"】=【"
+
IoValue
+
"】"
;
}
else
if
(
WaitType
.
Equals
(
WaitEnum
.
W003_Time
))
{
return
"时间等待"
+
":【"
+
TimeMSeconds
+
"】"
+
"毫秒"
;
return
crc
.
GetString
(
"Res0091.d7647f48"
,
"时间等待"
)
+
":【"
+
TimeMSeconds
+
"】"
+
crc
.
GetString
(
"Res0092.21157cbf"
,
"毫秒"
)
;
}
else
if
(
WaitType
.
Equals
(
WaitEnum
.
W006_AxisOrg
))
{
return
"轴"
+
"【"
+
AxisInfo
.
DisplayStr
+
"】"
+
"ORG信号"
+
":【"
+
IoValue
+
"】"
;
return
crc
.
GetString
(
"Res0089.60c85b4b"
,
"轴"
)
+
"【"
+
AxisInfo
.
DisplayStr
+
"】"
+
crc
.
GetString
(
"Res0093.3802ba42"
,
"ORG信号"
)
+
":【"
+
IoValue
+
"】"
;
}
else
if
(
WaitType
.
Equals
(
WaitEnum
.
W007_ReelHeight
))
{
return
"料盘高度"
+
"【"
+
TargetPosition
+
"】"
;
return
crc
.
GetString
(
"Res0094.f4a8d691"
,
"料盘高度"
)
+
"【"
+
TargetPosition
+
"】"
;
}
else
if
(
WaitType
.
Equals
(
WaitEnum
.
W008_BatchAxis
))
{
return
"批量轴上升到上料点"
;
return
crc
.
GetString
(
"Res0095.84e7c741"
,
"批量轴上升到上料点"
)
;
}
else
if
(
WaitType
.
Equals
(
WaitEnum
.
W009_ScanCode
))
{
return
"扫码完成"
;
return
crc
.
GetString
(
"Res0096.ed4de1c6"
,
"扫码完成"
)
;
}
else
if
(
WaitType
.
Equals
(
WaitEnum
.
W013_Action
))
{
...
...
@@ -430,4 +431,4 @@ namespace DeviceLibrary
///// </summary>
//CheckFixture=6,
}
}
}
\ No newline at end of file
DeviceLibrary/theMachine/RobotManage.cs
查看文件 @
1d786b6
...
...
@@ -67,13 +67,13 @@ namespace DeviceLibrary
MI2Postion
=
CSVPositionReader
<
RobotPosition
>.
LoadCSVFile
(
MI2PostionFile
);
CIPostion
=
CSVPositionReader
<
RobotPosition
>.
LoadCSVFile
(
CIPostionFile
);
Robot_MI1
=
new
URRobotControl
(
Setting_Init
.
URRobot_MI1_IP
);
Robot_MI1
=
new
URRobotControl
(
Setting_Init
.
URRobot_MI1_IP
,
"Robot-R1"
);
Robot_MI1
.
Name
=
"R1"
;
Robot_MI1
.
SetSpeedRate
(
Setting_Init
.
URRobot_MI1_Speed_Rate
);
Robot_MI2
=
new
URRobotControl
(
Setting_Init
.
URRobot_MI2_IP
);
Robot_MI
1
.
Name
=
"R2"
;
Robot_MI2
=
new
URRobotControl
(
Setting_Init
.
URRobot_MI2_IP
,
"Robot-R2"
);
Robot_MI
2
.
Name
=
"R2"
;
Robot_MI2
.
SetSpeedRate
(
Setting_Init
.
URRobot_MI2_Speed_Rate
);
Robot_CI
=
new
URRobotControl
(
Setting_Init
.
URRobot_CI_IP
);
Robot_CI
=
new
URRobotControl
(
Setting_Init
.
URRobot_CI_IP
,
"Robot-CI"
);
Robot_CI
.
SetSpeedRate
(
Setting_Init
.
URRobot_CI_Speed_Rate
);
VStoreCollection
=
new
VStoreCollection
();
...
...
DeviceLibrary/theMachine/TrayManager.cs
查看文件 @
1d786b6
...
...
@@ -32,7 +32,7 @@ namespace DeviceLibrary
Traylist
.
Add
(
rfid
,
new
TrayInfo
());
Traylist
[
rfid
].
RFID
=
rfid
;
}
moveInfo
.
log
(
$
"处理RFID:{rfid},地址{addr},设备:{(AddrDesc.ContainsKey(addr) ? AddrDesc[addr] : "")},{(Traylist[rfid].HasLoad? Traylist[rfid].TrayParam?.ToStr():"
no
metrial
")}"
);
moveInfo
.
log
(
$
"处理RFID:{rfid},地址{addr},设备:{(AddrDesc.ContainsKey(addr) ? AddrDesc[addr] : "")},
mcheck:{reelcheck},
{(Traylist[rfid].HasLoad? Traylist[rfid].TrayParam?.ToStr():"
no
metrial
")}"
);
Traylist
[
rfid
].
LastUpdateTime
=
DateTime
.
Now
;
Traylist
[
rfid
].
LastAddr
=
addr
;
...
...
@@ -276,14 +276,16 @@ namespace DeviceLibrary
public
static
bool
IsNeedProcessNG
(
RemoteLoad
remoteLoad
)
{
var
requestLoadInfo
=
remoteLoad
.
RequestLoadInfo
;
var
xx
=
TrayManager
.
Traylist
.
Values
.
ToList
().
Where
(
t
=>
t
.
HasLoad
&&
t
.
LoadType
==
requestLoadInfo
.
GetTrayType
&&
(
t
.
LastAddr
>=
20
||
t
.
LastAddr
<=
3
));
var
xx
=
TrayManager
.
Traylist
.
Values
.
ToList
().
Where
(
t
=>
t
.
HasLoad
&&
t
.
LoadType
==
requestLoadInfo
.
GetTrayType
&&
t
.
DestinationAddr
==
3
&&
(
t
.
LastAddr
>=
20
||
t
.
LastAddr
<=
3
));
return
xx
.
Count
()
>
0
;
}
/// <summary>
/// 空托盘数量
/// </summary>
public
static
int
EmptyCount
;
public
volatile
static
int
EmptyCount
;
public
volatile
static
int
EmptyCount_MTP1
;
public
volatile
static
int
EmptyCount_MTP2
;
/// <summary>
/// 入库托盘数量
/// </summary>
...
...
@@ -301,6 +303,7 @@ namespace DeviceLibrary
static
DateTime
lastrefresh
;
public
static
void
Statistics
()
{
EmptyCount
=
0
;
EmptyCount_MTP1
=
EmptyCount_MTP2
=
0
;
InStoreCount
=
0
;
OutStoreCount
=
0
;
OfflineCount
=
0
;
...
...
@@ -317,6 +320,10 @@ namespace DeviceLibrary
else
OutStoreCount
++;
}
else
{
if
(
ti
.
TrayType
==
TrayTypeE
.
MTP1
)
EmptyCount_MTP1
++;
else
if
(
ti
.
TrayType
==
TrayTypeE
.
MTP2
)
EmptyCount_MTP2
++;
EmptyCount
++;
}
});
...
...
@@ -373,15 +380,16 @@ namespace DeviceLibrary
{
public
static
Dictionary
<
TrayTypeE
,
string
>
TrayTypeDesc
=
new
Dictionary
<
TrayTypeE
,
string
>();
public
static
Dictionary
<
int
,
string
>
AddrDesc
=
new
Dictionary
<
int
,
string
>();
static
TrayManager
()
{
TrayTypeDesc
.
Add
(
TrayTypeE
.
None
,
crc
.
GetString
(
"Res0002"
,
"空"
));
TrayTypeDesc
.
Add
(
TrayTypeE
.
MTP1
,
crc
.
GetString
(
"Res0004"
,
"流水线料盘托盘"
));
TrayTypeDesc
.
Add
(
TrayTypeE
.
MTP2
,
crc
.
GetString
(
"Res0003"
,
"流水线治具托盘"
));
TrayTypeDesc
.
Add
(
TrayTypeE
.
S007
,
crc
.
GetString
(
"Res0005"
,
"料串"
));
TrayTypeDesc
.
Add
(
TrayTypeE
.
M03
,
crc
.
GetString
(
"Res0006"
,
"Tray料格"
));
TrayTypeDesc
.
Add
(
TrayTypeE
.
M02
,
crc
.
GetString
(
"Res0007"
,
"PCB料格"
));
TrayTypeDesc
.
Add
(
TrayTypeE
.
M01
,
crc
.
GetString
(
"Res0008"
,
"PizzaBOX料格"
));
TrayTypeDesc
.
Add
(
TrayTypeE
.
M04
,
crc
.
GetString
(
"Res0009"
,
"ShoeBOX料格"
));
static
TrayManager
()
{
TrayTypeDesc
.
Add
(
TrayTypeE
.
None
,
crc
.
GetString
(
"TrayType_"
+
TrayTypeE
.
None
,
crc
.
GetString
(
"Res0002"
,
"空"
)));
TrayTypeDesc
.
Add
(
TrayTypeE
.
MTP1
,
crc
.
GetString
(
"TrayType_"
+
TrayTypeE
.
MTP1
,
crc
.
GetString
(
"Res0004"
,
"流水线料盘托盘"
)));
TrayTypeDesc
.
Add
(
TrayTypeE
.
MTP2
,
crc
.
GetString
(
"TrayType_"
+
TrayTypeE
.
MTP2
,
crc
.
GetString
(
"Res0003"
,
"流水线治具托盘"
)));
TrayTypeDesc
.
Add
(
TrayTypeE
.
S007
,
crc
.
GetString
(
"TrayType_"
+
TrayTypeE
.
S007
,
crc
.
GetString
(
"Res0005"
,
"料串"
)));
TrayTypeDesc
.
Add
(
TrayTypeE
.
M03
,
crc
.
GetString
(
"TrayType_"
+
TrayTypeE
.
M03
,
crc
.
GetString
(
"Res0006"
,
"Tray料格"
)));
TrayTypeDesc
.
Add
(
TrayTypeE
.
M02
,
crc
.
GetString
(
"TrayType_"
+
TrayTypeE
.
M02
,
crc
.
GetString
(
"Res0007"
,
"PCB料格"
)));
TrayTypeDesc
.
Add
(
TrayTypeE
.
M01
,
crc
.
GetString
(
"TrayType_"
+
TrayTypeE
.
M01
,
crc
.
GetString
(
"TrayType_M01"
,
"PizzaBOX料格"
)));
TrayTypeDesc
.
Add
(
TrayTypeE
.
M04
,
crc
.
GetString
(
"TrayType_"
+
TrayTypeE
.
M04
,
crc
.
GetString
(
"TrayType_M04"
,
"ShoeBOX料格"
)));
//TrayTypeDesc.Add(TrayTypeE.C01, crc.GetString("Res0010","PCB治具"));
//TrayTypeDesc.Add(TrayTypeE.C02, crc.GetString("Res0011","Pizza治具"));
//TrayTypeDesc.Add(TrayTypeE.C03, crc.GetString("Res0012","Tray治具"));
...
...
DeviceLibrary/theMachine/sub/MI.cs
查看文件 @
1d786b6
...
...
@@ -25,6 +25,9 @@ namespace DeviceLibrary
MI
sideMove
=
new
MI
(
devices
[
"AMH-MI1"
],
out
string
m
);
DeviceList
.
Add
(
devices
[
"AMH-MI1"
].
GroupName
,
sideMove
);
msg
+=
m
;
MI
sideMove2
=
new
MI
(
devices
[
"AMH-MI2"
],
out
m
);
DeviceList
.
Add
(
devices
[
"AMH-MI2"
].
GroupName
,
sideMove2
);
msg
+=
m
;
}
DeviceGroup
DeviceGroup
;
...
...
@@ -37,6 +40,7 @@ namespace DeviceLibrary
RobotHelper
robotHelper
;
BufferSlotsManger
BufferSlotsManger
;
string
POS_Start
=
"MI1"
;
string
robotname
=
""
;
public
MI
(
DeviceGroup
device
,
out
string
msg
)
:
base
()
{
msg
=
""
;
...
...
@@ -46,11 +50,11 @@ namespace DeviceLibrary
Msg
=
new
MsgService
(
GroupName
+
"-T"
);
MoveInfo
=
new
MoveInfo
(
GroupName
+
"-T"
);
RoboMoveInfo
=
new
MoveInfo
(
GroupName
+
"-Robo"
);
string
robotname
=
""
;
if
(
device
.
GroupName
==
"AMH-MI1"
)
{
Robot
=
RobotManage
.
Robot_MI1
;
robotname
=
"R1"
;
Robot
=
RobotManage
.
Robot_MI1
;
robotname
=
"R1"
;
}
else
{
...
...
@@ -58,6 +62,7 @@ namespace DeviceLibrary
POS_Start
=
"MI2"
;
robotname
=
"R2"
;
}
Robot
.
Name
=
robotname
;
robotHelper
=
new
RobotHelper
(
Robot
,
robotname
);
Comp
=
AxisBean
.
List
[
DeviceGroup
.
GroupName
][
0
];
//Rotate = AxisBean.List[DeviceGroup.GroupName][1];
...
...
@@ -90,12 +95,11 @@ namespace DeviceLibrary
{
LogUtil
.
OutputDebugString
(
$
"{GroupName} DeviceState:"
+
DeviceState
.
ToString
());
MsgService
.
MSList
[
GroupName
+
"-T"
].
clear
();
if
(!
DeviceCheck
())
{
return
;
}
MsgService
.
MSList
[
GroupName
+
"-T"
].
clear
();
if
(
DeviceState
==
DeviceStateE
.
HomeReset
)
ResetProcess
();
else
if
(
DeviceState
==
DeviceStateE
.
Run
)
...
...
@@ -111,9 +115,9 @@ namespace DeviceLibrary
public
void
Reset
()
{
Robot
.
SendMoveCmd
(
1
,
Setting_Init
.
URRobot_CI_Speed_Rate
);
Config
.
Set
(
"RuntimeRobot_MoveStep"
,
"Wait"
);
Config
.
Set
(
"RuntimeRobot_Arm_MoveStep"
,
"Wait"
);
Robot
.
SendMoveCmd
(
1
,
Setting_Init
.
URRobot_CI_Speed_Rate
,
false
,
RobotHelper
.
LoadRateParam
[
robotHelper
.
lastWeight
]
);
Config
.
Set
(
"RuntimeRobot_
"
+
robotname
+
"_
MoveStep"
,
"Wait"
);
Config
.
Set
(
"RuntimeRobot_
"
+
robotname
+
"_
Arm_MoveStep"
,
"Wait"
);
}
private
bool
DeviceCheck
()
...
...
@@ -150,6 +154,22 @@ namespace DeviceLibrary
switch
(
MoveInfo
.
MoveStep
)
{
case
MoveStep
.
Wait
:
//判断有无出库任务
var
testInStoreError
=
VStoreCollection
.
VStoreList
.
Values
.
Where
(
vs
=>
vs
.
TowerInfo
.
DeviceGroupName
==
GroupName
).
ToList
().
Find
(
vs
=>
vs
.
RTStoreStatus
==
RTStoreStatus
.
InStoreError
||
vs
.
RTStoreStatus
==
RTStoreStatus
.
InStoreDataTimeOut
||
vs
.
TerminalError
);
var
hasoutjob
=
false
;
if
(
testInStoreError
!=
null
)
hasoutjob
=
true
;
if
(!
hasoutjob
)
{
var
testOutReadyStore
=
VStoreCollection
.
VStoreList
.
Values
.
Where
(
vs
=>
vs
.
TowerInfo
.
DeviceGroupName
==
GroupName
).
ToList
().
Find
(
vs
=>
vs
.
RTStoreStatus
==
RTStoreStatus
.
OutStoreReady
);
if
(
testOutReadyStore
!=
null
)
hasoutjob
=
true
;
}
if
(
hasoutjob
)
{
MoveInfo
.
log
(
"查询到出库任务,开始优先出库"
);
MoveInfo
.
NextMoveStep
(
MoveStep
.
MI_50
);
}
//判断入库任务
LogUtil
.
OutputDebugString
(
"InStoreJobList:"
+
InStoreJobList
.
Count
.
ToString
());
if
(
InStoreJob
!=
null
)
{
...
...
@@ -166,9 +186,9 @@ namespace DeviceLibrary
var
cid
=
MoveInfo
.
MoveParam
.
PosID
;
//.Split('_')[0];
CurrentVStore
=
VStoreCollection
.
VStoreList
[
cid
];
ToPos
=
GetMIPosition
(
GroupName
,
TowerList
.
List
[
cid
].
PosID
);
Setting_Init
.
Runtime_Robot_ReelInfo
=
JsonConvert
.
SerializeObject
(
MoveInfo
.
MoveParam
);
Setting_Init
.
Runtime_Robot_FromPos
=
FromPos
.
PositionNum
;
Setting_Init
.
Runtime_Robot_ToPos
=
ToPos
.
PositionNum
;
Config
.
Set
(
"Runtime_Robot_"
+
robotname
+
"_ReelInfo"
,
JsonConvert
.
SerializeObject
(
MoveInfo
.
MoveParam
)
);
Config
.
Set
(
"Runtime_Robot_"
+
robotname
+
"_FromPos"
,
FromPos
.
PositionNum
)
;
Config
.
Set
(
"Runtime_Robot_"
+
robotname
+
"_ToPos"
,
ToPos
.
PositionNum
)
;
MoveInfo
.
log
(
$
"开始转移物料:{FromPos.PositionNum}=>{ToPos.PositionNum}"
);
}
...
...
@@ -229,24 +249,28 @@ namespace DeviceLibrary
break
;
case
MoveStep
.
MI_50
:
var
InStoreError
=
VStoreCollection
.
VStoreList
.
Values
.
ToList
().
Find
(
vs
=>
vs
.
RTStoreStatus
==
RTStoreStatus
.
InStoreError
||
vs
.
RTStoreStatus
==
RTStoreStatus
.
InStoreDataTimeOut
||
vs
.
TerminalError
);
var
InStoreError
=
VStoreCollection
.
VStoreList
.
Values
.
Where
(
vs
=>
vs
.
TowerInfo
.
DeviceGroupName
==
GroupName
).
ToList
().
Find
(
vs
=>
vs
.
RTStoreStatus
==
RTStoreStatus
.
InStoreError
||
vs
.
RTStoreStatus
==
RTStoreStatus
.
InStoreDataTimeOut
||
vs
.
TerminalError
);
if
(
InStoreError
!=
null
)
{
var
result
=
TheLine
.
GetReelSize
<
ResultData
>(
InStoreError
.
CurrentTerminalReelID
);
if
(
result
!=
null
&&
result
.
code
==
0
)
{
CurrntOutReadyStore
=
InStoreError
;
InStoreError
.
ServerCM
.
cancelPutInTask
(
InStoreError
.
CurrentTerminalReelID
);
//InStoreError.ServerCM.cancelPutInTask(CurrntOutReadyStore
.CurrentTerminalReelID);
CurrentJobInfo
=
new
JobInfo
(
InStoreError
.
CurrentTerminalReelID
,
""
,
int
.
Parse
(
result
.
data
[
"plateW"
]),
int
.
Parse
(
result
.
data
[
"plateH"
]));
InStoreError
.
InStoreJobInfo
=
null
;
MoveInfo
.
log
(
"从服务器检索到物料数据:"
+
CurrentJobInfo
.
ToStr
());
MoveInfo
.
MoveParam
.
IsNg
=
true
;
MoveInfo
.
MoveParam
.
NgMsg
=
InStoreError
.
CID
+
"-"
+
InStoreError
.
CurrentTowerStatusText
;
MoveInfo
.
log
(
"检测到有料仓入库NG:"
+
MoveInfo
.
MoveParam
.
NgMsg
);
}
else
{
MoveInfo
.
log
(
"没有找到,在等待出库的料仓 SN:"
+
InStoreError
.
CurrentTerminalReelID
);
if
(
result
!=
null
)
MoveInfo
.
log
(
JsonConvert
.
SerializeObject
(
result
));
MoveInfo
.
log
(
$
"没有找到,在等待出库的料仓 CID:{InStoreError.CID} SN:"
+
InStoreError
.
CurrentTerminalReelID
);
MoveInfo
.
NextMoveStep
(
MoveStep
.
Wait
);
TrayStop
.
DeviceList
[
GroupName
].
TrayRelease
();
return
;
...
...
@@ -254,7 +278,7 @@ namespace DeviceLibrary
}
else
{
var
random
=
new
Random
(
DateTime
.
Now
.
Millisecond
);
CurrntOutReadyStore
=
VStoreCollection
.
VStoreList
.
Values
.
ToList
().
FindAll
(
vs
=>
vs
.
RTStoreStatus
==
RTStoreStatus
.
OutStoreReady
).
OrderBy
(
x
=>
random
.
Next
()).
FirstOrDefault
();
CurrntOutReadyStore
=
VStoreCollection
.
VStoreList
.
Values
.
Where
(
vs
=>
vs
.
TowerInfo
.
DeviceGroupName
==
GroupName
).
ToList
().
FindAll
(
vs
=>
vs
.
RTStoreStatus
==
RTStoreStatus
.
OutStoreReady
).
OrderBy
(
x
=>
random
.
Next
()).
FirstOrDefault
();
if
(
CurrntOutReadyStore
!=
null
)
{
if
(
string
.
IsNullOrEmpty
(
CurrntOutReadyStore
.
CurrentTerminalReelID
))
...
...
@@ -297,9 +321,9 @@ namespace DeviceLibrary
MoveInfo
.
MoveParam
.
cid
=
CurrntOutReadyStore
.
CID
;
FromPos
=
GetMIPosition
(
GroupName
,
TowerList
.
List
[
MoveInfo
.
MoveParam
.
cid
].
PosID
);
ToPos
=
GetMIPosition
(
GroupName
,
POS_Start
+
"_MT"
);
Setting_Init
.
Runtime_Robot_ReelInfo
=
JsonConvert
.
SerializeObject
(
MoveInfo
.
MoveParam
);
Setting_Init
.
Runtime_Robot_FromPos
=
FromPos
.
PositionNum
;
Setting_Init
.
Runtime_Robot_ToPos
=
ToPos
.
PositionNum
;
Config
.
Set
(
"Runtime_Robot_"
+
robotname
+
"_ReelInfo"
,
JsonConvert
.
SerializeObject
(
MoveInfo
.
MoveParam
)
);
Config
.
Set
(
"Runtime_Robot_"
+
robotname
+
"_FromPos"
,
FromPos
.
PositionNum
)
;
Config
.
Set
(
"Runtime_Robot_"
+
robotname
+
"_ToPos"
,
ToPos
.
PositionNum
)
;
MoveInfo
.
NextMoveStep
(
MoveStep
.
MI_51
);
MoveInfo
.
log
(
$
"开始转移物料:{FromPos.PositionNum}=>{ToPos.PositionNum}"
);
break
;
...
...
@@ -324,20 +348,38 @@ namespace DeviceLibrary
MoveInfo
.
log
(
$
"当前出库料仓[{CurrntOutReadyStore.CID}]存在状态错误:"
+
CurrntOutReadyStore
.
RTStoreStatus
);
CurrntOutReadyStore
.
RTStoreStatus
=
RTStoreStatus
.
Busy
;
}
if
(
MoveInfo
.
MoveParam
.
IsNg
&&
CurrntOutReadyStore
.
TerminalError
&&
IOValue
(
IO_Type
.
MI_Robot_Reel_Check
).
Equals
(
IO_VALUE
.
LOW
)
if
(
(
MoveInfo
.
MoveParam
.
IsNg
||
CurrntOutReadyStore
.
TerminalError
)
&&
IOValue
(
IO_Type
.
MI_Robot_Reel_Check
).
Equals
(
IO_VALUE
.
LOW
)
&&
IOValue
(
IO_Type
.
MI_Robot_Clamp_Check
).
Equals
(
IO_VALUE
.
LOW
))
{
{
MoveInfo
.
log
(
"机器人抓取NG料后发现夹爪上没有料,流程结束处理"
);
CurrntOutReadyStore
.
TerminalError
=
false
;
TrayStop
.
DeviceList
[
GroupName
].
TrayRelease
();
RoboMoveInfo
.
NextMoveStep
(
MoveStep
.
Wait
);
MoveInfo
.
NextMoveStep
(
MoveStep
.
Wait
);
}
else
if
(
MoveInfo
.
MoveParam
.
IsNg
){
CurrntOutReadyStore
.
ServerCM
.
cancelPutInTask
(
CurrntOutReadyStore
.
CurrentTerminalReelID
);
MoveInfo
.
log
(
"物料NG取消入库:"
+
CurrntOutReadyStore
.
CurrentTerminalReelID
);
}
}
break
;
case
MoveStep
.
MI_53
:
MoveInfo
.
NextMoveStep
(
MoveStep
.
MI_54
);
RoboMoveInfo
.
NextMoveStep
(
MoveStep
.
MI_40
);
MoveInfo
.
log
(
"机器人开始放料"
);
if
(!
TrayStop
.
DeviceList
[
"AMH-"
+
POS_Start
].
IsFree
())
{
MoveInfo
.
NextMoveStep
(
MoveStep
.
MI_54
);
RoboMoveInfo
.
NextMoveStep
(
MoveStep
.
MI_40
);
MoveInfo
.
log
(
"机器人开始放料"
);
}
else
{
//RemoteLoad remoteLoad = new RemoteLoad();
//remoteLoad.Action = "SetTrayRequest";
//remoteLoad.GroupName= "AMH-" + POS_Start;
//remoteLoad.RequestLoadInfo = new RequestLoadInfo();
//remoteLoad.RequestLoadInfo.TrayType = TrayTypeE.MTP1.ToString();
//remoteLoad.RequestLoadInfo.IsEmpty = true;
//TrayManager.SetTrayRequest(remoteLoad);
Msg
.
add
(
crc
.
GetString
(
"Res0097.b5a12101"
,
"等待空托盘"
),
MsgLevel
.
info
);
}
break
;
case
MoveStep
.
MI_54
:
if
(
RoboMoveInfo
.
MoveStep
>=
MoveStep
.
MI_44
)
...
...
@@ -383,10 +425,11 @@ namespace DeviceLibrary
RoboMoveInfo
.
NextMoveStep
(
MoveStep
.
MI_02
);
CompTOP1
(
RoboMoveInfo
);
RoboMoveInfo
.
log
(
"压紧轴到待机点"
);
robotHelper
.
lastWeight
=
GetWeight
(
RoboMoveInfo
.
MoveParam
);
break
;
case
MoveStep
.
MI_02
:
RoboMoveInfo
.
NextMoveStep
(
MoveStep
.
MI_03
);
robotHelper
.
Move
(
RoboMoveInfo
,
FromPos
.
Take_P5
);
robotHelper
.
Move
(
RoboMoveInfo
,
FromPos
.
Take_P5
,
0
);
RoboMoveInfo
.
log
(
"机器人到Take_P5"
);
break
;
case
MoveStep
.
MI_03
:
...
...
@@ -399,30 +442,28 @@ namespace DeviceLibrary
if
(!
Comp
.
IsBusy
)
{
RoboMoveInfo
.
NextMoveStep
(
MoveStep
.
MI_05
);
robotHelper
.
Move
(
RoboMoveInfo
,
FromPos
.
Take_P6
);
robotHelper
.
Move
(
RoboMoveInfo
,
FromPos
.
Take_P6
,
0
);
RoboMoveInfo
.
log
(
"压紧轴到位"
);
RoboMoveInfo
.
log
(
"机器人到Take_P6"
);
}
break
;
case
MoveStep
.
MI_05
:
RoboMoveInfo
.
NextMoveStep
(
MoveStep
.
MI_06
);
CompTOCompression
(
RoboMoveInfo
);
RoboMoveInfo
.
log
(
"压紧轴都下压"
);
break
;
case
MoveStep
.
MI_06
:
if
(!
Comp
.
IsBusy
)
{
RoboMoveInfo
.
log
(
"压紧轴到位脉冲值:"
+
Comp
.
GetAclPosition
());
RoboMoveInfo
.
NextMoveStep
(
MoveStep
.
MI_07
);
robotHelper
.
Move
(
RoboMoveInfo
,
FromPos
.
Take_P7
);
robotHelper
.
Move
(
RoboMoveInfo
,
FromPos
.
Take_P7
,
robotHelper
.
lastWeight
);
RoboMoveInfo
.
log
(
"机器人到Take_P7"
);
}
break
;
case
MoveStep
.
MI_07
:
RoboMoveInfo
.
NextMoveStep
(
MoveStep
.
MI_08
);
robotHelper
.
Move
(
RoboMoveInfo
,
FromPos
.
P1
);
robotHelper
.
Move
(
RoboMoveInfo
,
FromPos
.
P1
,
robotHelper
.
lastWeight
);
RoboMoveInfo
.
log
(
"机器人到P1"
);
break
;
case
MoveStep
.
MI_08
:
...
...
@@ -433,25 +474,25 @@ namespace DeviceLibrary
//机器人放料
case
MoveStep
.
MI_40
:
RoboMoveInfo
.
NextMoveStep
(
MoveStep
.
MI_41
);
robotHelper
.
Move
(
RoboMoveInfo
,
ToPos
.
Put_P2
);
robotHelper
.
Move
(
RoboMoveInfo
,
ToPos
.
Put_P2
,
robotHelper
.
lastWeight
);
RoboMoveInfo
.
log
(
"机器人到Put_P2"
);
break
;
case
MoveStep
.
MI_41
:
RoboMoveInfo
.
NextMoveStep
(
MoveStep
.
MI_42
);
//Comp.AbsMove(RoboMoveInfo, RobotManage.Config.AMH_RoboMI1_Comp_P1, RobotManage.Config.AMH_RoboMI1_Comp_P1_speed);
CompTOP1
(
RoboMoveInfo
);
robotHelper
.
Move
(
RoboMoveInfo
,
ToPos
.
Put_P3
);
robotHelper
.
Move
(
RoboMoveInfo
,
ToPos
.
Put_P3
,
robotHelper
.
lastWeight
);
RoboMoveInfo
.
log
(
"压紧轴释放"
);
RoboMoveInfo
.
log
(
"机器人到Put_P3"
);
break
;
case
MoveStep
.
MI_42
:
RoboMoveInfo
.
NextMoveStep
(
MoveStep
.
MI_43
);
robotHelper
.
Move
(
RoboMoveInfo
,
ToPos
.
Put_P4
);
robotHelper
.
Move
(
RoboMoveInfo
,
ToPos
.
Put_P4
,
0
);
RoboMoveInfo
.
log
(
"机器人到Put_P4"
);
break
;
case
MoveStep
.
MI_43
:
RoboMoveInfo
.
NextMoveStep
(
MoveStep
.
MI_44
);
robotHelper
.
Move
(
RoboMoveInfo
,
ToPos
.
P1
);
robotHelper
.
Move
(
RoboMoveInfo
,
ToPos
.
P1
,
0
);
RoboMoveInfo
.
log
(
"机器人到P1"
);
break
;
case
MoveStep
.
MI_44
:
...
...
@@ -482,8 +523,15 @@ namespace DeviceLibrary
}
internal
void
StartOutStore
()
{
MoveInfo
.
NewMove
(
MoveStep
.
MI_50
);
MoveInfo
.
log
(
"开始出库"
);
if
(
MoveInfo
.
MoveStep
>=
MoveStep
.
MI_50
)
{
MoveInfo
.
log
(
"机器人正在等待托盘"
);
}
else
{
MoveInfo
.
NewMove
(
MoveStep
.
MI_50
);
MoveInfo
.
log
(
"开始出库"
);
}
}
/// <summary>
/// 释放托盘
...
...
@@ -523,22 +571,26 @@ namespace DeviceLibrary
break
;
case
MoveStep
.
H01_HomeReset
:
var
m1step
=
(
MoveStep
)
Enum
.
Parse
(
typeof
(
MoveStep
),
Config
.
Get
(
"RuntimeRobot_MoveStep"
));
var
m2step
=
(
MoveStep
)
Enum
.
Parse
(
typeof
(
MoveStep
),
Config
.
Get
(
"RuntimeRobot_Arm_MoveStep"
));
if
(!
Enum
.
TryParse
<
MoveStep
>(
Config
.
Get
(
"RuntimeRobot_"
+
robotname
+
"_MoveStep"
,
MoveStep
.
Wait
.
ToString
()),
out
MoveStep
m1step
))
m1step
=
MoveStep
.
Wait
;
if
(!
Enum
.
TryParse
<
MoveStep
>(
Config
.
Get
(
"RuntimeRobot_"
+
robotname
+
"_Arm_MoveStep"
,
MoveStep
.
Wait
.
ToString
()),
out
MoveStep
m2step
))
m2step
=
MoveStep
.
Wait
;
//var m1step = (MoveStep)Enum.Parse(typeof(MoveStep), Config.Get("RuntimeRobot_" + robotname + "_MoveStep", MoveStep.Wait.ToString()));
//var m2step = (MoveStep)Enum.Parse(typeof(MoveStep), Config.Get("RuntimeRobot_" + robotname + "_Arm_MoveStep", MoveStep.Wait.ToString()));
if
(
IOValue
(
IO_Type
.
MI_Robot_Clamp_Check
).
Equals
(
IO_VALUE
.
LOW
)
&&
IOValue
(
IO_Type
.
MI_Robot_Reel_Check
).
Equals
(
IO_VALUE
.
LOW
)
&&
m1step
==
MoveStep
.
Wait
)
{
MoveInfo
.
NextMoveStep
(
MoveStep
.
H09_HomeReset
);
Robot
.
SendMoveCmd
(
1
,
Setting_Init
.
URRobot_MI1_Speed_Rate
);
Robot
.
SendMoveCmd
(
1
,
Setting_Init
.
URRobot_MI1_Speed_Rate
,
false
,
RobotHelper
.
LoadRateParam
[
robotHelper
.
lastWeight
]
);
MoveInfo
.
log
(
"没有最后的动作, 机器人回待机点"
);
}
else
{
MoveInfo
.
MoveParam
=
JsonConvert
.
DeserializeObject
<
ReelParam
>(
Setting_Init
.
Runtime_Robot_ReelInfo
);
MoveInfo
.
MoveParam
=
JsonConvert
.
DeserializeObject
<
ReelParam
>(
Config
.
Get
(
"Runtime_Robot_"
+
robotname
+
"_ReelInfo"
)
);
RoboMoveInfo
.
MoveParam
=
MoveInfo
.
MoveParam
.
clone
();
FromPos
=
GetMIPosition
(
GroupName
,
Setting_Init
.
Runtime_Robot_FromPos
);
ToPos
=
GetMIPosition
(
GroupName
,
Setting_Init
.
Runtime_Robot_ToPos
);
FromPos
=
GetMIPosition
(
GroupName
,
Config
.
Get
(
"Runtime_Robot_"
+
robotname
+
"_FromPos"
)
);
ToPos
=
GetMIPosition
(
GroupName
,
Config
.
Get
(
"Runtime_Robot_"
+
robotname
+
"_ToPos"
)
);
CurrentVStore
=
VStoreCollection
.
VStoreList
[
MoveInfo
.
MoveParam
.
cid
];
MoveInfo
.
NextMoveStep
(
m1step
);
RoboMoveInfo
.
NextMoveStep
(
m2step
);
...
...
@@ -585,37 +637,7 @@ namespace DeviceLibrary
case
MoveStep
.
H05_HomeReset
:
MoveInfo
.
NextMoveStep
(
MoveStep
.
H09_HomeReset
);
return
;
m1step
=
(
MoveStep
)
Enum
.
Parse
(
typeof
(
MoveStep
),
Setting_Init
.
RuntimeRobot_MoveStep
);
m2step
=
(
MoveStep
)
Enum
.
Parse
(
typeof
(
MoveStep
),
Setting_Init
.
RuntimeRobot_Arm_MoveStep
);
if
(
IOValue
(
IO_Type
.
MI_Robot_Clamp_Check
).
Equals
(
IO_VALUE
.
LOW
)
&&
IOValue
(
IO_Type
.
MI_Robot_Reel_Check
).
Equals
(
IO_VALUE
.
LOW
)
&&
m1step
==
MoveStep
.
Wait
)
{
MoveInfo
.
NextMoveStep
(
MoveStep
.
H09_HomeReset
);
Robot
.
SendMoveCmd
(
1
,
Setting_Init
.
URRobot_MI1_Speed_Rate
);
MoveInfo
.
log
(
"没有最后的动作, 机器人回待机点"
);
}
else
{
MoveInfo
.
MoveParam
=
JsonConvert
.
DeserializeObject
<
ReelParam
>(
Setting_Init
.
Runtime_Robot_ReelInfo
);
FromPos
=
GetMIPosition
(
GroupName
,
Setting_Init
.
Runtime_Robot_FromPos
);
ToPos
=
GetMIPosition
(
GroupName
,
Setting_Init
.
Runtime_Robot_ToPos
);
CurrentVStore
=
VStoreCollection
.
VStoreList
[
MoveInfo
.
MoveParam
.
cid
];
MoveInfo
.
NextMoveStep
(
m1step
);
RoboMoveInfo
.
NextMoveStep
(
m2step
);
DeviceState
=
DeviceStateE
.
Run
;
}
//else if (int.TryParse(Robot.LastMoveCmd, out int cmdid))
//{
// lastCmd = cmdid;
// lastStep = cmdid % 10;
// lastPrefix = lastStep * 10;
// Robot.SendMoveCmd(lastCmd, Setting_Init.URRobot_MI1_Speed_Rate);
// MoveInfo.WaitList.Add(WaitResultInfo.WaitTime(1500));
// MoveInfo.log("机器人重做最后的动作:" + lastCmd);
//}
break
;
case
MoveStep
.
H06_HomeReset
:
if
(
Robot
.
MoveCmdOk
())
{
...
...
@@ -626,7 +648,7 @@ namespace DeviceLibrary
return
;
}
RoboMoveInfo
.
MoveParam
=
MoveInfo
.
MoveParam
.
clone
();
robotHelper
.
lastWeight
=
GetWeight
(
RoboMoveInfo
.
MoveParam
);
//如果上一步是回待机点,但料叉上有物料
if
(
lastStep
==
1
)
{
...
...
@@ -718,13 +740,17 @@ namespace DeviceLibrary
{
if
(
DeviceState
!=
DeviceStateE
.
Run
)
return
false
;
if
(
reelParam
==
null
&&
MoveInfo
.
MoveStep
>=
MoveStep
.
MI_50
)
//正在出库中
return
true
;
if
(
MoveInfo
.
MoveStep
!=
MoveStep
.
Wait
)
return
false
;
if
(
reelParam
==
null
)
{
//空托盘,判断有没有出库任务
var
sc
=
VStoreCollection
.
VStoreList
.
Values
.
ToList
().
Find
(
vs
=>
vs
.
RTStoreStatus
==
RTStoreStatus
.
OutStoreReady
||
vs
.
RTStoreStatus
==
RTStoreStatus
.
InStoreError
||
vs
.
RTStoreStatus
==
RTStoreStatus
.
InStoreDataTimeOut
||
vs
.
TerminalError
);
var
sc
=
VStoreCollection
.
VStoreList
.
Values
.
Where
(
vs
=>
vs
.
TowerInfo
.
DeviceGroupName
==
GroupName
).
ToList
().
Find
(
vs
=>
vs
.
RTStoreStatus
==
RTStoreStatus
.
OutStoreReady
||
vs
.
RTStoreStatus
==
RTStoreStatus
.
InStoreError
||
vs
.
RTStoreStatus
==
RTStoreStatus
.
InStoreDataTimeOut
||
vs
.
TerminalError
);
return
(
sc
!=
null
);
}
if
(
string
.
IsNullOrEmpty
(
reelParam
.
SubCID
))
{
...
...
@@ -778,6 +804,23 @@ namespace DeviceLibrary
return
RobotManage
.
CIPostion
[
pos
];
}
int
GetWeight
(
ReelParam
reelParam
)
{
int
w
=
0
;
if
(
reelParam
==
null
)
w
=
0
;
else
if
(
reelParam
.
PlateW
==
7
)
w
=
1
;
else
if
(
reelParam
.
PlateW
==
13
&&
reelParam
.
PlateH
==
8
)
w
=
2
;
else
if
(
reelParam
.
PlateW
==
13
)
w
=
3
;
else
if
(
reelParam
.
PlateW
==
15
)
w
=
3
;
else
w
=
2
;
RoboMoveInfo
.
log
(
$
"机器人负载设定: {reelParam?.PlateW}x{reelParam?.PlateH}={w}"
);
return
w
;
}
public
void
FrontStopProcess
()
{
...
...
DeviceLibrary/theMachine/sub/SideMove.cs
查看文件 @
1d786b6
...
...
@@ -125,16 +125,6 @@ namespace DeviceLibrary
case
MoveStep
.
SideMove_01
:
LSAMoveInfo
.
NextMoveStep
(
MoveStep
.
SideMove_01
);
bool
Forcetry
=
false
;
//if (LastGoInFail && (LastGoInFailTime - DateTime.Now).TotalSeconds > 10)
//{
// Forcetry = true;
// LSAMoveInfo.log("上次托盘进入失败本次重试");
//}
//if (IOValue(IO_Type.Ls_B_Tray_Check).Equals(IO_VALUE.HIGH))
//{
// break;
//}
//else
if
(
IOValue
(
IO_Type
.
Ls_A_Tray_Check
).
Equals
(
IO_VALUE
.
HIGH
))
{
LSAMoveInfo
.
NextMoveStep
(
MoveStep
.
SideMove_04
);
...
...
@@ -149,9 +139,9 @@ namespace DeviceLibrary
//LSAMoveInfo.WaitList.Add(WaitResultInfo.WaitTime(500));
}
else
else
if
(
LSAMoveInfo
.
IsTimeOut
(
120
))
{
//Msg.add(crc.GetString("Res0184", "空闲中"), MsgLevel.info
);
Msg
.
add
(
crc
.
GetString
(
"Res0100.9451681e"
,
"入口长时间未检测到托盘,请检查."
),
MsgLevel
.
alarm
);
}
break
;
case
MoveStep
.
SideMove_02
:
...
...
DeviceLibrary/theMachine/sub/TransplantMove.cs
查看文件 @
1d786b6
...
...
@@ -106,9 +106,9 @@ namespace DeviceLibrary
MoveInfo
.
NextMoveStep
(
MoveStep
.
TransplantMove_01
);
Location
.
ToLow
(
MoveInfo
);
}
else
else
if
(
MoveInfo
.
IsTimeOut
(
120
))
{
//Msg.add(crc.GetString("Res0184", "空闲中"), MsgLevel.info
);
Msg
.
add
(
crc
.
GetString
(
"Res0100.9451681e"
,
"入口长时间未检测到托盘,请检查."
),
MsgLevel
.
alarm
);
}
//if (TrayManager.TestTrayRequest(GroupName)) {
...
...
DeviceLibrary/theMachine/sub/TrayStop.cs
查看文件 @
1d786b6
...
...
@@ -113,8 +113,9 @@ namespace DeviceLibrary
IOMove
(
IO_Type
.
AMH_Front_Stop
,
IO_VALUE
.
HIGH
);
MoveInfo
.
WaitList
.
Add
(
WaitResultInfo
.
WaitTime
(
500
));
}
else
{
//Msg.add(crc.GetString("Res0184","空闲中"), MsgLevel.info);
else
if
(
MoveInfo
.
IsTimeOut
(
120
))
{
Msg
.
add
(
crc
.
GetString
(
"Res0100.9451681e"
,
"入口长时间未检测到托盘,请检查."
),
MsgLevel
.
alarm
);
}
break
;
case
MoveStep
.
TrayStop_01
:
...
...
@@ -148,8 +149,8 @@ namespace DeviceLibrary
TrayManager
.
Process
(
MoveInfo
,
CurrrentRFID
,
DeviceGroup
.
addr_1
,
IOValue
(
IO_Type
.
MI_Reel_Check
).
Equals
(
IO_VALUE
.
HIGH
)?
1
:
0
,
out
TrayInfo
trayInfo
);
var
stop
=
TrayManager
.
TryGetTrayRequest
(
GroupName
,
CurrrentRFID
,
out
_
);
MoveInfo
.
log
(
$
"CurrrentRFID:{CurrrentRFID},HasLoad:{trayInfo.HasLoad},MI_Reel_Check:{IOValue(IO_Type.MI_Reel_Check)},NeedStop:{stop}"
);
#
region
张东亮处理
if
(
GroupName
==
"AMH-MI1"
&&
trayInfo
.
TrayType
==
TrayTypeE
.
MTP1
)
// || GroupName == "AMH-MI2"
)
#
region
if
(
(
GroupName
==
"AMH-MI1"
||
GroupName
==
"AMH-MI2"
)
&&
trayInfo
.
TrayType
==
TrayTypeE
.
MTP1
)
{
/*
* 请求一个空托盘
...
...
@@ -345,6 +346,7 @@ namespace DeviceLibrary
if
(
IOValue
(
IO_Type
.
MI_Reel_Check
).
Equals
(
IO_VALUE
.
LOW
))
{
Msg
.
add
(
crc
.
GetString
(
"Res0062"
,
"托盘放料后没有检测到物料"
),
MsgLevel
.
alarm
);
MoveInfo
.
log
(
"托盘放料后没有检测到物料"
);
return
;
}
}
...
...
@@ -423,7 +425,7 @@ namespace DeviceLibrary
Msg
.
add
(
crc
.
GetString
(
"Res0041"
,
"ML5料口门光栅被遮挡"
),
MsgLevel
.
warning
);
break
;
}
var
dl
=
new
string
[]
{
"AMH-MI1"
};
//
, "AMH-MI2" };
var
dl
=
new
string
[]
{
"AMH-MI1"
,
"AMH-MI2"
};
foreach
(
var
d
in
dl
)
{
if
(
GroupName
==
d
&&
MI
.
DeviceList
[
d
].
DeviceState
!=
DeviceStateE
.
Run
...
...
@@ -458,7 +460,11 @@ namespace DeviceLibrary
break
;
}
}
/// <summary>
/// MoveInfo.MoveStep == MoveStep.TrayStop_WaitLoadProcess
/// 是返回false
/// </summary>
/// <returns></returns>
public
bool
IsFree
()
{
if
(
MoveInfo
.
MoveStep
==
MoveStep
.
TrayStop_WaitLoadProcess
)
...
...
DeviceLibrary/userControl/FixtureSizeConfigControl.Designer.cs
查看文件 @
1d786b6
...
...
@@ -59,9 +59,9 @@ namespace DeviceLibrary
//
// button1
//
this
.
button1
.
Location
=
new
System
.
Drawing
.
Point
(
207
,
160
);
this
.
button1
.
Location
=
new
System
.
Drawing
.
Point
(
187
,
194
);
this
.
button1
.
Name
=
"button1"
;
this
.
button1
.
Size
=
new
System
.
Drawing
.
Size
(
8
2
,
23
);
this
.
button1
.
Size
=
new
System
.
Drawing
.
Size
(
10
2
,
23
);
this
.
button1
.
TabIndex
=
1
;
this
.
button1
.
Text
=
"添加/修改"
;
this
.
button1
.
UseVisualStyleBackColor
=
true
;
...
...
@@ -143,7 +143,7 @@ namespace DeviceLibrary
this
.
checkBox_useedremove
.
AutoSize
=
true
;
this
.
checkBox_useedremove
.
Checked
=
true
;
this
.
checkBox_useedremove
.
CheckState
=
System
.
Windows
.
Forms
.
CheckState
.
Checked
;
this
.
checkBox_useedremove
.
Location
=
new
System
.
Drawing
.
Point
(
51
,
1
64
);
this
.
checkBox_useedremove
.
Location
=
new
System
.
Drawing
.
Point
(
51
,
1
59
);
this
.
checkBox_useedremove
.
Name
=
"checkBox_useedremove"
;
this
.
checkBox_useedremove
.
Size
=
new
System
.
Drawing
.
Size
(
72
,
16
);
this
.
checkBox_useedremove
.
TabIndex
=
5
;
...
...
@@ -173,7 +173,7 @@ namespace DeviceLibrary
this
.
groupBox_add
.
Controls
.
Add
(
this
.
button1
);
this
.
groupBox_add
.
Location
=
new
System
.
Drawing
.
Point
(
37
,
230
);
this
.
groupBox_add
.
Name
=
"groupBox_add"
;
this
.
groupBox_add
.
Size
=
new
System
.
Drawing
.
Size
(
341
,
2
16
);
this
.
groupBox_add
.
Size
=
new
System
.
Drawing
.
Size
(
341
,
2
34
);
this
.
groupBox_add
.
TabIndex
=
6
;
this
.
groupBox_add
.
TabStop
=
false
;
this
.
groupBox_add
.
Text
=
"添加或修改"
;
...
...
LoadCVSLibrary/LoadCSVLibrary.csproj
查看文件 @
1d786b6
...
...
@@ -9,7 +9,7 @@
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>OnlineStore.LoadCSVLibrary</RootNamespace>
<AssemblyName>LoadCSVLibrary</AssemblyName>
<TargetFrameworkVersion>v4.
6.2
</TargetFrameworkVersion>
<TargetFrameworkVersion>v4.
8
</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<TargetFrameworkProfile />
</PropertyGroup>
...
...
LoadCVSLibrary/app.config
查看文件 @
1d786b6
<?
xml
version
=
"1.0"
encoding
=
"utf-8"
?>
<
configuration
>
<
startup
><
supportedRuntime
version
=
"v4.0"
sku
=
".NETFramework,Version=v4.
6.2
"
/></
startup
></
configuration
>
<
startup
><
supportedRuntime
version
=
"v4.0"
sku
=
".NETFramework,Version=v4.
8
"
/></
startup
></
configuration
>
RemoteSheardObject/Class1.cs
查看文件 @
1d786b6
...
...
@@ -142,6 +142,7 @@ public class ReelParam
/// 料盘宽度
/// </summary>
public
int
PlateW
{
get
;
set
;
}
public
float
Weight
{
get
;
set
;
}
/// <summary>
/// 是否是入料NG料
/// </summary>
...
...
RemoteSheardObject/RemoteSheardObject.csproj
查看文件 @
1d786b6
...
...
@@ -9,7 +9,7 @@
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>RemoteSheardObject</RootNamespace>
<AssemblyName>RemoteSheardObject</AssemblyName>
<TargetFrameworkVersion>v4.
6.2
</TargetFrameworkVersion>
<TargetFrameworkVersion>v4.
8
</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<Deterministic>true</Deterministic>
<TargetFrameworkProfile />
...
...
RemoteSheardObject/TheLine.cs
查看文件 @
1d786b6
...
...
@@ -100,13 +100,13 @@ namespace RemoteSheardObject
public
static
void
UploadStatus
(
EquipMsgData
equipMsgData
)
{
string
url
=
CombineUrl
(
Config
.
Get
(
"Device_Server_Address"
),
"/rest/micron/device/updateStatus"
);
var
resultStr
=
HttpHelper
.
Post
<
EquipMsgData
,
ResultData
>(
url
,
equipMsgData
);
var
resultStr
=
HttpHelper
.
Post
<
EquipMsgData
,
ResultData
2
>(
url
,
equipMsgData
);
}
public
static
void
uploadNgReel
(
NgMsgData
ngMsgData
)
{
string
url
=
CombineUrl
(
Config
.
Get
(
"Device_Server_Address"
),
"/rest/micron/device/uploadNgReel"
);
var
resultStr
=
HttpHelper
.
Post
<
NgMsgData
,
ResultData
>(
url
,
ngMsgData
,
5000
,
true
);
var
resultStr
=
HttpHelper
.
Post
<
NgMsgData
,
ResultData
2
>(
url
,
ngMsgData
,
5000
,
true
);
}
/// <summary>
/// NG口位置,1=左侧,2=右侧
...
...
TheMachine/App.config
查看文件 @
1d786b6
...
...
@@ -193,13 +193,111 @@
<
level
value
=
"ALL"
/>
<
appender
-
ref
ref
=
"003048"
/>
</
logger
>
<
appender
name
=
"003035"
type
=
"log4net.Appender.RollingFileAppender"
>
<
file
value
=
"logs/RT-003035.log"
/>
<
param
name
=
"Encoding"
value
=
"UTF-8"
/>
<
appendToFile
value
=
"true"
/>
<
rollingStyle
value
=
"Date"
/>
<
datePattern
value
=
"yyyy-MM-dd"
/>
<
layout
type
=
"log4net.Layout.PatternLayout"
>
<
conversionPattern
value
=
"[%date][%t]%-5p %m%n"
/>
</
layout
>
</
appender
>
<
logger
name
=
"003035"
additivity
=
"false"
>
<
level
value
=
"ALL"
/>
<
appender
-
ref
ref
=
"003035"
/>
</
logger
>
<
appender
name
=
"003036"
type
=
"log4net.Appender.RollingFileAppender"
>
<
file
value
=
"logs/RT-003036.log"
/>
<
param
name
=
"Encoding"
value
=
"UTF-8"
/>
<
appendToFile
value
=
"true"
/>
<
rollingStyle
value
=
"Date"
/>
<
datePattern
value
=
"yyyy-MM-dd"
/>
<
layout
type
=
"log4net.Layout.PatternLayout"
>
<
conversionPattern
value
=
"[%date][%t]%-5p %m%n"
/>
</
layout
>
</
appender
>
<
logger
name
=
"003036"
additivity
=
"false"
>
<
level
value
=
"ALL"
/>
<
appender
-
ref
ref
=
"003036"
/>
</
logger
>
<
appender
name
=
"003041"
type
=
"log4net.Appender.RollingFileAppender"
>
<
file
value
=
"logs/RT-003041.log"
/>
<
param
name
=
"Encoding"
value
=
"UTF-8"
/>
<
appendToFile
value
=
"true"
/>
<
rollingStyle
value
=
"Date"
/>
<
datePattern
value
=
"yyyy-MM-dd"
/>
<
layout
type
=
"log4net.Layout.PatternLayout"
>
<
conversionPattern
value
=
"[%date][%t]%-5p %m%n"
/>
</
layout
>
</
appender
>
<
logger
name
=
"003041"
additivity
=
"false"
>
<
level
value
=
"ALL"
/>
<
appender
-
ref
ref
=
"003041"
/>
</
logger
>
<
appender
name
=
"003042"
type
=
"log4net.Appender.RollingFileAppender"
>
<
file
value
=
"logs/RT-003042.log"
/>
<
param
name
=
"Encoding"
value
=
"UTF-8"
/>
<
appendToFile
value
=
"true"
/>
<
rollingStyle
value
=
"Date"
/>
<
datePattern
value
=
"yyyy-MM-dd"
/>
<
layout
type
=
"log4net.Layout.PatternLayout"
>
<
conversionPattern
value
=
"[%date][%t]%-5p %m%n"
/>
</
layout
>
</
appender
>
<
logger
name
=
"003042"
additivity
=
"false"
>
<
level
value
=
"ALL"
/>
<
appender
-
ref
ref
=
"003042"
/>
</
logger
>
<
appender
name
=
"Robot-R1"
type
=
"log4net.Appender.RollingFileAppender"
>
<
file
value
=
"logs/Robot-R1.log"
/>
<
param
name
=
"Encoding"
value
=
"UTF-8"
/>
<
appendToFile
value
=
"true"
/>
<
rollingStyle
value
=
"Date"
/>
<
datePattern
value
=
"yyyy-MM-dd"
/>
<
layout
type
=
"log4net.Layout.PatternLayout"
>
<
conversionPattern
value
=
"[%date][%t]%-5p %m%n"
/>
</
layout
>
</
appender
>
<
logger
name
=
"Robot-R1"
additivity
=
"false"
>
<
level
value
=
"ALL"
/>
<
appender
-
ref
ref
=
"Robot-R1"
/>
</
logger
>
<
appender
name
=
"Robot-R2"
type
=
"log4net.Appender.RollingFileAppender"
>
<
file
value
=
"logs/Robot-R2.log"
/>
<
param
name
=
"Encoding"
value
=
"UTF-8"
/>
<
appendToFile
value
=
"true"
/>
<
rollingStyle
value
=
"Date"
/>
<
datePattern
value
=
"yyyy-MM-dd"
/>
<
layout
type
=
"log4net.Layout.PatternLayout"
>
<
conversionPattern
value
=
"[%date][%t]%-5p %m%n"
/>
</
layout
>
</
appender
>
<
logger
name
=
"Robot-R2"
additivity
=
"false"
>
<
level
value
=
"ALL"
/>
<
appender
-
ref
ref
=
"Robot-R2"
/>
</
logger
>
<
appender
name
=
"Robot-CI"
type
=
"log4net.Appender.RollingFileAppender"
>
<
file
value
=
"logs/Robot-CI.log"
/>
<
param
name
=
"Encoding"
value
=
"UTF-8"
/>
<
appendToFile
value
=
"true"
/>
<
rollingStyle
value
=
"Date"
/>
<
datePattern
value
=
"yyyy-MM-dd"
/>
<
layout
type
=
"log4net.Layout.PatternLayout"
>
<
conversionPattern
value
=
"[%date][%t]%-5p %m%n"
/>
</
layout
>
</
appender
>
<
logger
name
=
"Robot-CI"
additivity
=
"false"
>
<
level
value
=
"ALL"
/>
<
appender
-
ref
ref
=
"Robot-CI"
/>
</
logger
>
<!--<
root
>
<
level
value
=
"Info"
/>
<
appender
-
ref
ref
=
"RollingLogFileAppender"
/>
</
root
>-->
</
log4net
>
<
startup
>
<
supportedRuntime
version
=
"v4.0"
sku
=
".NETFramework,Version=v4.
7.2
"
/>
<
supportedRuntime
version
=
"v4.0"
sku
=
".NETFramework,Version=v4.
8
"
/>
</
startup
>
<
runtime
>
<
assemblyBinding
xmlns
=
"urn:schemas-microsoft-com:asm.v1"
>
...
...
TheMachine/Form1.Designer.cs
查看文件 @
1d786b6
...
...
@@ -38,6 +38,8 @@ namespace TheMachine
this
.
toolStripSeparator2
=
new
System
.
Windows
.
Forms
.
ToolStripSeparator
();
this
.
启用调试模式
ToolStripMenuItem
=
new
System
.
Windows
.
Forms
.
ToolStripMenuItem
();
this
.
toolStripSeparator4
=
new
System
.
Windows
.
Forms
.
ToolStripSeparator
();
this
.
禁用蜂鸣器
ToolStripMenuItem
=
new
System
.
Windows
.
Forms
.
ToolStripMenuItem
();
this
.
toolStripSeparator3
=
new
System
.
Windows
.
Forms
.
ToolStripSeparator
();
this
.
退出
ToolStripMenuItem
=
new
System
.
Windows
.
Forms
.
ToolStripMenuItem
();
this
.
语言
toolStripMenuItem
=
new
System
.
Windows
.
Forms
.
ToolStripMenuItem
();
this
.
简体中文
ToolStripMenuItem
=
new
System
.
Windows
.
Forms
.
ToolStripMenuItem
();
...
...
@@ -46,10 +48,8 @@ namespace TheMachine
this
.
tabc
=
new
System
.
Windows
.
Forms
.
TabControl
();
this
.
tabP1
=
new
System
.
Windows
.
Forms
.
TabPage
();
this
.
pnl
=
new
System
.
Windows
.
Forms
.
Panel
();
this
.
btn_PauseBuzzer
=
new
System
.
Windows
.
Forms
.
Button
();
this
.
禁用蜂鸣器
ToolStripMenuItem
=
new
System
.
Windows
.
Forms
.
ToolStripMenuItem
();
this
.
toolStripSeparator3
=
new
System
.
Windows
.
Forms
.
ToolStripSeparator
();
this
.
listView1
=
new
TheMachine
.
DoubleBufferListView
();
this
.
btn_PauseBuzzer
=
new
System
.
Windows
.
Forms
.
Button
();
this
.
menuStrip1
.
SuspendLayout
();
this
.
tabc
.
SuspendLayout
();
this
.
tabP1
.
SuspendLayout
();
...
...
@@ -118,14 +118,24 @@ namespace TheMachine
this
.
启用调试模式
ToolStripMenuItem
.
Size
=
new
System
.
Drawing
.
Size
(
204
,
32
);
this
.
启用调试模式
ToolStripMenuItem
.
Tag
=
"not"
;
this
.
启用调试模式
ToolStripMenuItem
.
Text
=
"启用配置模式"
;
this
.
启用调试模式
ToolStripMenuItem
.
Visible
=
false
;
this
.
启用调试模式
ToolStripMenuItem
.
Click
+=
new
System
.
EventHandler
(
this
.
启用调试模式
ToolStripMenuItem_Click
);
//
// toolStripSeparator4
//
this
.
toolStripSeparator4
.
Name
=
"toolStripSeparator4"
;
this
.
toolStripSeparator4
.
Size
=
new
System
.
Drawing
.
Size
(
201
,
6
);
this
.
toolStripSeparator4
.
Visible
=
false
;
//
// 禁用蜂鸣器ToolStripMenuItem
//
this
.
禁用蜂鸣器
ToolStripMenuItem
.
Name
=
"禁用蜂鸣器ToolStripMenuItem"
;
this
.
禁用蜂鸣器
ToolStripMenuItem
.
Size
=
new
System
.
Drawing
.
Size
(
204
,
32
);
this
.
禁用蜂鸣器
ToolStripMenuItem
.
Text
=
"禁用蜂鸣器"
;
this
.
禁用蜂鸣器
ToolStripMenuItem
.
Click
+=
new
System
.
EventHandler
(
this
.
禁用蜂鸣器
ToolStripMenuItem_Click
);
//
// toolStripSeparator3
//
this
.
toolStripSeparator3
.
Name
=
"toolStripSeparator3"
;
this
.
toolStripSeparator3
.
Size
=
new
System
.
Drawing
.
Size
(
201
,
6
);
//
// 退出ToolStripMenuItem
//
...
...
@@ -198,31 +208,6 @@ namespace TheMachine
this
.
pnl
.
Size
=
new
System
.
Drawing
.
Size
(
1000
,
431
);
this
.
pnl
.
TabIndex
=
273
;
//
// btn_PauseBuzzer
//
this
.
btn_PauseBuzzer
.
BackColor
=
System
.
Drawing
.
Color
.
OrangeRed
;
this
.
btn_PauseBuzzer
.
ForeColor
=
System
.
Drawing
.
Color
.
White
;
this
.
btn_PauseBuzzer
.
Location
=
new
System
.
Drawing
.
Point
(
490
,
0
);
this
.
btn_PauseBuzzer
.
Name
=
"btn_PauseBuzzer"
;
this
.
btn_PauseBuzzer
.
Size
=
new
System
.
Drawing
.
Size
(
301
,
29
);
this
.
btn_PauseBuzzer
.
TabIndex
=
6
;
this
.
btn_PauseBuzzer
.
Text
=
"本次暂停警报器响声"
;
this
.
btn_PauseBuzzer
.
UseVisualStyleBackColor
=
false
;
this
.
btn_PauseBuzzer
.
Visible
=
false
;
this
.
btn_PauseBuzzer
.
Click
+=
new
System
.
EventHandler
(
this
.
btn_PauseBuzzer_Click
);
//
// 禁用蜂鸣器ToolStripMenuItem
//
this
.
禁用蜂鸣器
ToolStripMenuItem
.
Name
=
"禁用蜂鸣器ToolStripMenuItem"
;
this
.
禁用蜂鸣器
ToolStripMenuItem
.
Size
=
new
System
.
Drawing
.
Size
(
204
,
32
);
this
.
禁用蜂鸣器
ToolStripMenuItem
.
Text
=
"禁用蜂鸣器"
;
this
.
禁用蜂鸣器
ToolStripMenuItem
.
Click
+=
new
System
.
EventHandler
(
this
.
禁用蜂鸣器
ToolStripMenuItem_Click
);
//
// toolStripSeparator3
//
this
.
toolStripSeparator3
.
Name
=
"toolStripSeparator3"
;
this
.
toolStripSeparator3
.
Size
=
new
System
.
Drawing
.
Size
(
201
,
6
);
//
// listView1
//
this
.
listView1
.
BorderStyle
=
System
.
Windows
.
Forms
.
BorderStyle
.
None
;
...
...
@@ -237,6 +222,19 @@ namespace TheMachine
this
.
listView1
.
TabIndex
=
2
;
this
.
listView1
.
UseCompatibleStateImageBehavior
=
false
;
//
// btn_PauseBuzzer
//
this
.
btn_PauseBuzzer
.
BackColor
=
System
.
Drawing
.
Color
.
OrangeRed
;
this
.
btn_PauseBuzzer
.
ForeColor
=
System
.
Drawing
.
Color
.
White
;
this
.
btn_PauseBuzzer
.
Location
=
new
System
.
Drawing
.
Point
(
490
,
0
);
this
.
btn_PauseBuzzer
.
Name
=
"btn_PauseBuzzer"
;
this
.
btn_PauseBuzzer
.
Size
=
new
System
.
Drawing
.
Size
(
301
,
29
);
this
.
btn_PauseBuzzer
.
TabIndex
=
6
;
this
.
btn_PauseBuzzer
.
Text
=
"本次暂停警报器响声"
;
this
.
btn_PauseBuzzer
.
UseVisualStyleBackColor
=
false
;
this
.
btn_PauseBuzzer
.
Visible
=
false
;
this
.
btn_PauseBuzzer
.
Click
+=
new
System
.
EventHandler
(
this
.
btn_PauseBuzzer_Click
);
//
// Form1
//
this
.
AutoScaleMode
=
System
.
Windows
.
Forms
.
AutoScaleMode
.
None
;
...
...
TheMachine/Form1.cs
查看文件 @
1d786b6
...
...
@@ -140,6 +140,24 @@ namespace TheMachine
pnl
.
Enabled
=
false
;
禁用蜂鸣器
ToolStripMenuItem_Click
(
this
,
EventArgs
.
Empty
);
tabc
.
Selecting
+=
Tabc_Selecting
;
}
bool
configpass
=
false
;
private
void
Tabc_Selecting
(
object
sender
,
TabControlCancelEventArgs
e
)
{
if
(
e
.
TabPageIndex
>
1
)
{
if
(
configpass
)
return
;
if
(!
FrmPassCheck
.
CheckPassword
())
e
.
Cancel
=
true
;
else
{
configpass
=
true
;
启用调试模式
ToolStripMenuItem
.
Enabled
=
true
;
}
}
}
private
void
AlarmBuzzer_BuzzerStateChange
(
object
sender
,
bool
e
)
...
...
@@ -155,16 +173,16 @@ namespace TheMachine
e
.
Cancel
=
true
;
}
const
int
tabpagecount
=
5
;
void
addTablePage
()
{
AddForm
(
"tab_io"
,
"MT"
,
ioc
);
void
addTablePage
()
{
AddForm
(
"tab_tmc"
,
crc
.
GetString
(
"Form1_tabc_tab_tmc_Text"
,
"托盘"
),
tmc
);
AddForm
(
"tab_io"
,
"MT"
,
ioc
);
AddForm
(
"tab_sidemove"
,
hy
.
DeviceName
,
hy
);
AddForm
(
"tab_transmove"
,
yz
.
DeviceName
,
yz
);
AddForm
(
"tab_traystopML"
,
"ML"
,
ml
);
AddForm
(
"tab_traystopMI"
,
"MI"
,
mi
);
AddForm
(
"tab_traystopCI"
,
"CI"
,
ci
);
AddForm
(
"tab_traystopML"
,
"M
T-M
L"
,
ml
);
AddForm
(
"tab_traystopMI"
,
"M
T-M
I"
,
mi
);
AddForm
(
"tab_traystopCI"
,
"
MT-
CI"
,
ci
);
AddForm
(
"tab_traysetting"
,
crc
.
GetString
(
"Form1_tabc_tab_setting__SettingControl_tabControl1_tabPage1_Text"
,
"治具设置"
),
sc
);
AddForm
(
"tab_other"
,
crc
.
GetString
(
"Form1_tabc_tab_other_Text"
,
"周边"
)
,
mc
);
AddForm
(
"tab_other"
,
"MI"
,
mc
);
crc
.
LanguageProcess
(
this
);
}
...
...
@@ -200,6 +218,11 @@ namespace TheMachine
private
void
启用调试模式
ToolStripMenuItem_Click
(
object
sender
,
EventArgs
e
)
{
configpass
=
false
;
tabc
.
SelectedIndex
=
0
;
启用调试模式
ToolStripMenuItem
.
Enabled
=
false
;
return
;
RobotManage
.
IsConfigMode
=
RobotManage
.
IsConfigMode
?
false
:
true
;
(
sender
as
ToolStripMenuItem
).
Text
=
!
RobotManage
.
IsConfigMode
?
crc
.
GetString
(
"Res0201"
,
"启用配置模式"
)
:
crc
.
GetString
(
"Res0202"
,
"停用配置模式"
);
...
...
@@ -279,18 +302,10 @@ namespace TheMachine
lm
.
Add
(
m
);
}
SetMsg
(
new
Dictionary
<
string
,
List
<
Msg
>>()
{
{
"root"
,
lm
}
});
//启用调试模式ToolStripMenuItem.Enabled = true;
//启用调试模式ToolStripMenuItem_Click(启用调试模式ToolStripMenuItem, EventArgs.Empty);
//RobotManage.LoadDebug();
Task
.
Run
(()=>
{
Task
.
Delay
(
100
).
Wait
();
this
.
Invoke
((
EventHandler
)
delegate
{
});
});
启用调试模式
ToolStripMenuItem
.
Text
=
crc
.
GetString
(
"Res0101.fe92dc50"
,
"退出调试模式"
);
//启用调试模式ToolStripMenuItem_Click(启用调试模式ToolStripMenuItem, EventArgs.Empty);
}
...
...
TheMachine/IOControls.Designer.cs
查看文件 @
1d786b6
...
...
@@ -48,7 +48,7 @@ namespace TheMachine
this
.
configControl1
.
Config
=
null
;
this
.
configControl1
.
Location
=
new
System
.
Drawing
.
Point
(
3
,
235
);
this
.
configControl1
.
Name
=
"configControl1"
;
this
.
configControl1
.
Size
=
new
System
.
Drawing
.
Size
(
705
,
2
54
);
this
.
configControl1
.
Size
=
new
System
.
Drawing
.
Size
(
705
,
2
38
);
this
.
configControl1
.
TabIndex
=
1
;
this
.
configControl1
.
Tag
=
"not"
;
//
...
...
TheMachine/TheMachine.csproj
查看文件 @
1d786b6
...
...
@@ -8,7 +8,7 @@
<OutputType>WinExe</OutputType>
<RootNamespace>TheMachine</RootNamespace>
<AssemblyName>MT</AssemblyName>
<TargetFrameworkVersion>v4.
7.2
</TargetFrameworkVersion>
<TargetFrameworkVersion>v4.
8
</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<Deterministic>false</Deterministic>
...
...
@@ -173,6 +173,12 @@
<Compile Include="UC\DoubleBufferListView.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="UC\FrmPassCheck.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="UC\FrmPassCheck.designer.cs">
<DependentUpon>FrmPassCheck.cs</DependentUpon>
</Compile>
<Compile Include="UC\RfidControl.cs">
<SubType>UserControl</SubType>
</Compile>
...
...
@@ -271,6 +277,9 @@
<EmbeddedResource Include="TrayManagerControl.resx">
<DependentUpon>TrayManagerControl.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="UC\FrmPassCheck.resx">
<DependentUpon>FrmPassCheck.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="UC\RfidControl.resx">
<DependentUpon>RfidControl.cs</DependentUpon>
</EmbeddedResource>
...
...
TheMachine/TrayManagerControl.cs
查看文件 @
1d786b6
...
...
@@ -110,13 +110,13 @@ namespace TheMachine
//listView1.Items.Clear();
foreach
(
var
ti
in
traylist
)
{
var
timego
=
(
DateTime
.
Now
-
ti
.
LastUpdateTime
);
var
lasttime
=
timego
.
Seconds
+
crc
.
GetString
(
"Res0
024
"
,
"秒前"
);
var
lasttime
=
timego
.
Seconds
+
crc
.
GetString
(
"Res0
102.cae20b9e
"
,
"秒前"
);
if
(
timego
.
Minutes
>
0
)
lasttime
=
timego
.
Minutes
+
crc
.
GetString
(
"Res0
025
"
,
"分 "
)
+
lasttime
;
lasttime
=
timego
.
Minutes
+
crc
.
GetString
(
"Res0
103.4c40da19
"
,
"分 "
)
+
lasttime
;
if
(
timego
.
Hours
>
0
)
lasttime
=
timego
.
Hours
+
crc
.
GetString
(
"Res0
026
"
,
"时 "
)
+
lasttime
;
var
traydesc
=
TrayManager
.
TrayTypeDesc
[
ti
.
TrayType
]
;
var
loaddesc
=
TrayManager
.
TrayTypeDesc
[
ti
.
LoadType
]
;
lasttime
=
timego
.
Hours
+
crc
.
GetString
(
"Res0
104.481f431e
"
,
"时 "
)
+
lasttime
;
var
traydesc
=
crc
.
GetString
(
"TrayType_"
+
ti
.
TrayType
,
TrayManager
.
TrayTypeDesc
[
ti
.
TrayType
])
;
var
loaddesc
=
crc
.
GetString
(
"TrayType_"
+
ti
.
LoadType
,
TrayManager
.
TrayTypeDesc
[
ti
.
LoadType
])
;
var
lastaddrdesc
=
TrayManager
.
AddrDesc
[
ti
.
LastAddr
];
var
toaddrdesc
=
TrayManager
.
AddrDesc
[
ti
.
DestinationAddr
];
var
reelid
=
""
;
...
...
@@ -156,7 +156,7 @@ namespace TheMachine
foreach
(
var
tivk
in
TrayManager
.
TrayRequest
.
ToArray
())
{
var
ti
=
tivk
.
Value
;
var
traydesc
=
TrayManager
.
TrayTypeDesc
[
ti
.
GetTrayType
]
;
var
traydesc
=
crc
.
GetString
(
"TrayType_"
+
ti
.
GetTrayType
,
TrayManager
.
TrayTypeDesc
[
ti
.
GetTrayType
])
;
var
desc
=
ti
.
IsEmpty
?
crc
.
GetString
(
"Res0030"
,
"空托盘"
)
:
""
;
var
items
=
new
string
[]
{
traydesc
,
desc
};
...
...
@@ -166,7 +166,7 @@ namespace TheMachine
listviewitem
.
SubItems
.
AddRange
(
items
);
ListView2
.
Items
.
Add
(
listviewitem
);
}
TrayManager
.
Statistics
();
//listView1.AutoResizeColumn(0, ColumnHeaderAutoResizeStyle.ColumnContent);
label_Statistics
.
Text
=
crc
.
GetString
(
"Res0027"
,
"托盘统计"
)+
":"
+
"\n"
...
...
TheMachine/UC/ConfigControl.cs
查看文件 @
1d786b6
...
...
@@ -69,7 +69,7 @@ namespace TheMachine
}
tableLayoutPanel1
.
SuspendLayout
();
int
maxrow
=
tableLayoutPanel1
.
Height
/
3
4
;
int
maxrow
=
tableLayoutPanel1
.
Height
/
3
6
;
tableLayoutPanel1
.
Controls
.
Clear
();
this
.
tableLayoutPanel1
.
RowStyles
.
Clear
();
//this.tableLayoutPanel1.RowStyles.Add(new RowStyle(SizeType., 26));
...
...
TheMachine/UC/FrmPassCheck.cs
0 → 100644
查看文件 @
1d786b6
using
OnlineStore
;
using
OnlineStore.Common
;
using
System
;
using
System.Collections.Generic
;
using
System.ComponentModel
;
using
System.Data
;
using
System.Drawing
;
using
System.Linq
;
using
System.Text
;
using
System.Threading.Tasks
;
using
System.Windows.Forms
;
namespace
TheMachine
{
public
partial
class
FrmPassCheck
:
Form
{
public
FrmPassCheck
()
{
InitializeComponent
();
crc
.
LanguageProcess
(
this
);
}
public
static
bool
CheckPassword
()
{
if
(!
Setting_Init
.
User_Enable
)
return
true
;
FrmPassCheck
frmPassCheck
=
new
FrmPassCheck
();
var
result
=
frmPassCheck
.
ShowDialog
();
return
(
result
==
DialogResult
.
OK
);
}
private
void
btn_cancel_Click
(
object
sender
,
EventArgs
e
)
{
DialogResult
=
DialogResult
.
Cancel
;
this
.
Close
();
}
private
void
btn_ok_Click
(
object
sender
,
EventArgs
e
)
{
if
(
textBox1
.
Text
.
Trim
()
==
Setting_Init
.
User_AdminPassword
.
Val
.
Trim
())
{
DialogResult
=
DialogResult
.
OK
;
this
.
Close
();
}
else
MessageBox
.
Show
(
crc
.
GetString
(
"Res0057"
,
"密码不正确请重新输入!"
));
}
}
}
\ No newline at end of file
TheMachine/UC/FrmPassCheck.designer.cs
0 → 100644
查看文件 @
1d786b6
namespace
TheMachine
{
partial
class
FrmPassCheck
{
/// <summary>
/// Required designer variable.
/// </summary>
private
System
.
ComponentModel
.
IContainer
components
=
null
;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected
override
void
Dispose
(
bool
disposing
)
{
if
(
disposing
&&
(
components
!=
null
))
{
components
.
Dispose
();
}
base
.
Dispose
(
disposing
);
}
#
region
Windows
Form
Designer
generated
code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private
void
InitializeComponent
()
{
this
.
textBox1
=
new
System
.
Windows
.
Forms
.
TextBox
();
this
.
btn_ok
=
new
System
.
Windows
.
Forms
.
Button
();
this
.
btn_cancel
=
new
System
.
Windows
.
Forms
.
Button
();
this
.
SuspendLayout
();
//
// textBox1
//
this
.
textBox1
.
Font
=
new
System
.
Drawing
.
Font
(
"微软雅黑"
,
12F
,
System
.
Drawing
.
FontStyle
.
Regular
,
System
.
Drawing
.
GraphicsUnit
.
Point
,
((
byte
)(
134
)));
this
.
textBox1
.
Location
=
new
System
.
Drawing
.
Point
(
114
,
88
);
this
.
textBox1
.
Name
=
"textBox1"
;
this
.
textBox1
.
PasswordChar
=
'*'
;
this
.
textBox1
.
Size
=
new
System
.
Drawing
.
Size
(
318
,
29
);
this
.
textBox1
.
TabIndex
=
0
;
//
// btn_ok
//
this
.
btn_ok
.
Location
=
new
System
.
Drawing
.
Point
(
352
,
189
);
this
.
btn_ok
.
Name
=
"btn_ok"
;
this
.
btn_ok
.
Size
=
new
System
.
Drawing
.
Size
(
129
,
49
);
this
.
btn_ok
.
TabIndex
=
1
;
this
.
btn_ok
.
Text
=
"确定"
;
this
.
btn_ok
.
UseVisualStyleBackColor
=
true
;
this
.
btn_ok
.
Click
+=
new
System
.
EventHandler
(
this
.
btn_ok_Click
);
//
// btn_cancel
//
this
.
btn_cancel
.
Location
=
new
System
.
Drawing
.
Point
(
40
,
189
);
this
.
btn_cancel
.
Name
=
"btn_cancel"
;
this
.
btn_cancel
.
Size
=
new
System
.
Drawing
.
Size
(
129
,
49
);
this
.
btn_cancel
.
TabIndex
=
1
;
this
.
btn_cancel
.
Text
=
"取消"
;
this
.
btn_cancel
.
UseVisualStyleBackColor
=
true
;
this
.
btn_cancel
.
Click
+=
new
System
.
EventHandler
(
this
.
btn_cancel_Click
);
//
// FrmPassCheck
//
this
.
AutoScaleDimensions
=
new
System
.
Drawing
.
SizeF
(
6F
,
12F
);
this
.
AutoScaleMode
=
System
.
Windows
.
Forms
.
AutoScaleMode
.
Font
;
this
.
ClientSize
=
new
System
.
Drawing
.
Size
(
548
,
275
);
this
.
Controls
.
Add
(
this
.
btn_cancel
);
this
.
Controls
.
Add
(
this
.
btn_ok
);
this
.
Controls
.
Add
(
this
.
textBox1
);
this
.
FormBorderStyle
=
System
.
Windows
.
Forms
.
FormBorderStyle
.
FixedDialog
;
this
.
MaximizeBox
=
false
;
this
.
MinimizeBox
=
false
;
this
.
Name
=
"FrmPassCheck"
;
this
.
ShowIcon
=
false
;
this
.
ShowInTaskbar
=
false
;
this
.
Text
=
"请输入密码"
;
this
.
ResumeLayout
(
false
);
this
.
PerformLayout
();
}
#
endregion
private
System
.
Windows
.
Forms
.
TextBox
textBox1
;
private
System
.
Windows
.
Forms
.
Button
btn_ok
;
private
System
.
Windows
.
Forms
.
Button
btn_cancel
;
}
}
\ No newline at end of file
TheMachine/UC/FrmPassCheck.resx
0 → 100644
查看文件 @
1d786b6
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>
\ No newline at end of file
TheMachine/UC/RobotPosControl.cs
查看文件 @
1d786b6
...
...
@@ -190,7 +190,7 @@ namespace TheMachine
var
axis
=
getConfigMoveAxis
((
int
)((
Button
)
sender
).
Tag
);
var
targetpos
=
int
.
Parse
(
cc
[
1
].
Text
);
axis
.
SendMoveCmd
(
targetpos
,
axis
.
SpeedRate
);
axis
.
SendMoveCmd
(
targetpos
,
axis
.
SpeedRate
,
false
,
RobotHelper
.
LoadRateParam
[
1
]
);
LogUtil
.
info
(
"手动点击机器人移动命令:"
+
axis
.
RobotIp
+
" - "
+
targetpos
);
}
URRobotControl
getConfigMoveAxis
(
int
Axisid
)
...
...
TheMachine/UC/UCURRobot.cs
查看文件 @
1d786b6
using
Robot.UR
;
using
DeviceLibrary
;
using
Robot.UR
;
using
System
;
using
System.Drawing
;
using
System.Windows.Forms
;
...
...
@@ -118,7 +119,7 @@ namespace URRobot
public
void
SendMoveCmd
(
int
CmdIdx
,
int
rate
=
50
)
{
robotControl
?.
SendMoveCmd
(
CmdIdx
,
rate
,
true
);
robotControl
?.
SendMoveCmd
(
CmdIdx
,
rate
,
true
,
RobotHelper
.
LoadRateParam
[
1
]
);
}
public
bool
IsSendCmdOk
(
int
cmdIdx
)
{
...
...
TheMachine/device/Other/MycronicControl.Designer.cs
查看文件 @
1d786b6
...
...
@@ -32,27 +32,30 @@ namespace TheMachine.device.Other
this
.
components
=
new
System
.
ComponentModel
.
Container
();
this
.
tabControl1
=
new
System
.
Windows
.
Forms
.
TabControl
();
this
.
tabPage4
=
new
System
.
Windows
.
Forms
.
TabPage
();
this
.
btn_ResetR2Robot
=
new
System
.
Windows
.
Forms
.
Button
();
this
.
groupBox2
=
new
System
.
Windows
.
Forms
.
GroupBox
();
this
.
stateView
=
new
TheMachine
.
DoubleBufferListView
();
this
.
btn_manualout
=
new
System
.
Windows
.
Forms
.
Button
();
this
.
txt_reelid
=
new
System
.
Windows
.
Forms
.
TextBox
();
this
.
tabPage1
=
new
System
.
Windows
.
Forms
.
TabPage
();
this
.
uc_boxdebug1
=
new
TheMachine
.
uc_boxdebug
();
this
.
tabPage2
=
new
System
.
Windows
.
Forms
.
TabPage
();
this
.
uc_boxdebug2
=
new
TheMachine
.
uc_boxdebug
();
this
.
tabPage3
=
new
System
.
Windows
.
Forms
.
TabPage
();
this
.
uc_boxdebug3
=
new
TheMachine
.
uc_boxdebug
();
this
.
tabPage5
=
new
System
.
Windows
.
Forms
.
TabPage
();
this
.
panel1
=
new
System
.
Windows
.
Forms
.
Panel
();
this
.
flowLayoutPanel1
=
new
System
.
Windows
.
Forms
.
FlowLayoutPanel
();
this
.
groupBox1
=
new
System
.
Windows
.
Forms
.
GroupBox
();
this
.
ucurRobot1
=
new
URRobot
.
UCURRobot
();
this
.
groupBox3
=
new
System
.
Windows
.
Forms
.
GroupBox
();
this
.
ucurRobot2
=
new
URRobot
.
UCURRobot
();
this
.
groupBox4
=
new
System
.
Windows
.
Forms
.
GroupBox
();
this
.
ucurRobot3
=
new
URRobot
.
UCURRobot
();
this
.
timer1
=
new
System
.
Windows
.
Forms
.
Timer
(
this
.
components
);
this
.
btn_ResetRobot
=
new
System
.
Windows
.
Forms
.
Button
();
this
.
button1
=
new
System
.
Windows
.
Forms
.
Button
();
this
.
flowLayoutPanel2
=
new
System
.
Windows
.
Forms
.
FlowLayoutPanel
();
this
.
stateView
=
new
TheMachine
.
DoubleBufferListView
();
this
.
uc_boxdebug1
=
new
TheMachine
.
uc_boxdebug
();
this
.
uc_boxdebug2
=
new
TheMachine
.
uc_boxdebug
();
this
.
uc_boxdebug3
=
new
TheMachine
.
uc_boxdebug
();
this
.
ucurRobot1
=
new
URRobot
.
UCURRobot
();
this
.
ucurRobot2
=
new
URRobot
.
UCURRobot
();
this
.
ucurRobot3
=
new
URRobot
.
UCURRobot
();
this
.
groupBox5
=
new
System
.
Windows
.
Forms
.
GroupBox
();
this
.
tabControl1
.
SuspendLayout
();
this
.
tabPage4
.
SuspendLayout
();
this
.
groupBox2
.
SuspendLayout
();
...
...
@@ -65,6 +68,7 @@ namespace TheMachine.device.Other
this
.
groupBox1
.
SuspendLayout
();
this
.
groupBox3
.
SuspendLayout
();
this
.
groupBox4
.
SuspendLayout
();
this
.
groupBox5
.
SuspendLayout
();
this
.
SuspendLayout
();
//
// tabControl1
...
...
@@ -83,7 +87,8 @@ namespace TheMachine.device.Other
//
// tabPage4
//
this
.
tabPage4
.
Controls
.
Add
(
this
.
btn_ResetRobot
);
this
.
tabPage4
.
Controls
.
Add
(
this
.
button1
);
this
.
tabPage4
.
Controls
.
Add
(
this
.
btn_ResetR2Robot
);
this
.
tabPage4
.
Controls
.
Add
(
this
.
groupBox2
);
this
.
tabPage4
.
Controls
.
Add
(
this
.
btn_manualout
);
this
.
tabPage4
.
Controls
.
Add
(
this
.
txt_reelid
);
...
...
@@ -97,34 +102,31 @@ namespace TheMachine.device.Other
this
.
tabPage4
.
UseVisualStyleBackColor
=
true
;
this
.
tabPage4
.
Click
+=
new
System
.
EventHandler
(
this
.
tabPage4_Click
);
//
// btn_ResetR2Robot
//
this
.
btn_ResetR2Robot
.
Location
=
new
System
.
Drawing
.
Point
(
19
,
437
);
this
.
btn_ResetR2Robot
.
Name
=
"btn_ResetR2Robot"
;
this
.
btn_ResetR2Robot
.
Size
=
new
System
.
Drawing
.
Size
(
236
,
93
);
this
.
btn_ResetR2Robot
.
TabIndex
=
25
;
this
.
btn_ResetR2Robot
.
Text
=
"R1机器人复位至待机点, 并释放压紧装置"
;
this
.
btn_ResetR2Robot
.
UseVisualStyleBackColor
=
true
;
this
.
btn_ResetR2Robot
.
Click
+=
new
System
.
EventHandler
(
this
.
btn_ResetRobot_Click
);
//
// groupBox2
//
this
.
groupBox2
.
Controls
.
Add
(
this
.
stateView
);
this
.
groupBox2
.
Location
=
new
System
.
Drawing
.
Point
(
19
,
24
);
this
.
groupBox2
.
Name
=
"groupBox2"
;
this
.
groupBox2
.
Size
=
new
System
.
Drawing
.
Size
(
561
,
3
65
);
this
.
groupBox2
.
Size
=
new
System
.
Drawing
.
Size
(
561
,
3
89
);
this
.
groupBox2
.
TabIndex
=
24
;
this
.
groupBox2
.
TabStop
=
false
;
this
.
groupBox2
.
Text
=
"Tower Status"
;
//
// stateView
//
this
.
stateView
.
BorderStyle
=
System
.
Windows
.
Forms
.
BorderStyle
.
None
;
this
.
stateView
.
Dock
=
System
.
Windows
.
Forms
.
DockStyle
.
Fill
;
this
.
stateView
.
HeaderStyle
=
System
.
Windows
.
Forms
.
ColumnHeaderStyle
.
Nonclickable
;
this
.
stateView
.
HideSelection
=
false
;
this
.
stateView
.
Location
=
new
System
.
Drawing
.
Point
(
3
,
29
);
this
.
stateView
.
MultiSelect
=
false
;
this
.
stateView
.
Name
=
"stateView"
;
this
.
stateView
.
Size
=
new
System
.
Drawing
.
Size
(
555
,
333
);
this
.
stateView
.
TabIndex
=
0
;
this
.
stateView
.
UseCompatibleStateImageBehavior
=
false
;
//
// btn_manualout
//
this
.
btn_manualout
.
Location
=
new
System
.
Drawing
.
Point
(
829
,
487
);
this
.
btn_manualout
.
Location
=
new
System
.
Drawing
.
Point
(
789
,
492
);
this
.
btn_manualout
.
Name
=
"btn_manualout"
;
this
.
btn_manualout
.
Size
=
new
System
.
Drawing
.
Size
(
1
00
,
38
);
this
.
btn_manualout
.
Size
=
new
System
.
Drawing
.
Size
(
1
78
,
38
);
this
.
btn_manualout
.
TabIndex
=
23
;
this
.
btn_manualout
.
Text
=
"reelid出库"
;
this
.
btn_manualout
.
UseVisualStyleBackColor
=
true
;
...
...
@@ -132,9 +134,9 @@ namespace TheMachine.device.Other
//
// txt_reelid
//
this
.
txt_reelid
.
Location
=
new
System
.
Drawing
.
Point
(
631
,
497
);
this
.
txt_reelid
.
Location
=
new
System
.
Drawing
.
Point
(
570
,
497
);
this
.
txt_reelid
.
Name
=
"txt_reelid"
;
this
.
txt_reelid
.
Size
=
new
System
.
Drawing
.
Size
(
192
,
33
);
this
.
txt_reelid
.
Size
=
new
System
.
Drawing
.
Size
(
213
,
33
);
this
.
txt_reelid
.
TabIndex
=
22
;
//
// tabPage1
...
...
@@ -148,16 +150,6 @@ namespace TheMachine.device.Other
this
.
tabPage1
.
Text
=
"MI1 点位"
;
this
.
tabPage1
.
UseVisualStyleBackColor
=
true
;
//
// uc_boxdebug1
//
this
.
uc_boxdebug1
.
Config
=
null
;
this
.
uc_boxdebug1
.
Dock
=
System
.
Windows
.
Forms
.
DockStyle
.
Fill
;
this
.
uc_boxdebug1
.
Font
=
new
System
.
Drawing
.
Font
(
"宋体"
,
9F
,
System
.
Drawing
.
FontStyle
.
Regular
,
System
.
Drawing
.
GraphicsUnit
.
Point
,
((
byte
)(
134
)));
this
.
uc_boxdebug1
.
Location
=
new
System
.
Drawing
.
Point
(
3
,
3
);
this
.
uc_boxdebug1
.
Name
=
"uc_boxdebug1"
;
this
.
uc_boxdebug1
.
Size
=
new
System
.
Drawing
.
Size
(
986
,
542
);
this
.
uc_boxdebug1
.
TabIndex
=
0
;
//
// tabPage2
//
this
.
tabPage2
.
Controls
.
Add
(
this
.
uc_boxdebug2
);
...
...
@@ -169,16 +161,6 @@ namespace TheMachine.device.Other
this
.
tabPage2
.
Text
=
"MI2 点位"
;
this
.
tabPage2
.
UseVisualStyleBackColor
=
true
;
//
// uc_boxdebug2
//
this
.
uc_boxdebug2
.
Config
=
null
;
this
.
uc_boxdebug2
.
Dock
=
System
.
Windows
.
Forms
.
DockStyle
.
Fill
;
this
.
uc_boxdebug2
.
Font
=
new
System
.
Drawing
.
Font
(
"宋体"
,
9F
,
System
.
Drawing
.
FontStyle
.
Regular
,
System
.
Drawing
.
GraphicsUnit
.
Point
,
((
byte
)(
134
)));
this
.
uc_boxdebug2
.
Location
=
new
System
.
Drawing
.
Point
(
3
,
3
);
this
.
uc_boxdebug2
.
Name
=
"uc_boxdebug2"
;
this
.
uc_boxdebug2
.
Size
=
new
System
.
Drawing
.
Size
(
986
,
542
);
this
.
uc_boxdebug2
.
TabIndex
=
0
;
//
// tabPage3
//
this
.
tabPage3
.
Controls
.
Add
(
this
.
uc_boxdebug3
);
...
...
@@ -190,18 +172,9 @@ namespace TheMachine.device.Other
this
.
tabPage3
.
Text
=
"CI 点位"
;
this
.
tabPage3
.
UseVisualStyleBackColor
=
true
;
//
// uc_boxdebug3
//
this
.
uc_boxdebug3
.
Config
=
null
;
this
.
uc_boxdebug3
.
Dock
=
System
.
Windows
.
Forms
.
DockStyle
.
Fill
;
this
.
uc_boxdebug3
.
Font
=
new
System
.
Drawing
.
Font
(
"宋体"
,
9F
,
System
.
Drawing
.
FontStyle
.
Regular
,
System
.
Drawing
.
GraphicsUnit
.
Point
,
((
byte
)(
134
)));
this
.
uc_boxdebug3
.
Location
=
new
System
.
Drawing
.
Point
(
3
,
3
);
this
.
uc_boxdebug3
.
Name
=
"uc_boxdebug3"
;
this
.
uc_boxdebug3
.
Size
=
new
System
.
Drawing
.
Size
(
986
,
542
);
this
.
uc_boxdebug3
.
TabIndex
=
0
;
//
// tabPage5
//
this
.
tabPage5
.
Controls
.
Add
(
this
.
groupBox5
);
this
.
tabPage5
.
Controls
.
Add
(
this
.
panel1
);
this
.
tabPage5
.
Font
=
new
System
.
Drawing
.
Font
(
"宋体"
,
9F
,
System
.
Drawing
.
FontStyle
.
Regular
,
System
.
Drawing
.
GraphicsUnit
.
Point
,
((
byte
)(
134
)));
this
.
tabPage5
.
Location
=
new
System
.
Drawing
.
Point
(
4
,
22
);
...
...
@@ -247,14 +220,6 @@ namespace TheMachine.device.Other
this
.
groupBox1
.
TabStop
=
false
;
this
.
groupBox1
.
Text
=
"MI1"
;
//
// ucurRobot1
//
this
.
ucurRobot1
.
Dock
=
System
.
Windows
.
Forms
.
DockStyle
.
Fill
;
this
.
ucurRobot1
.
Location
=
new
System
.
Drawing
.
Point
(
2
,
16
);
this
.
ucurRobot1
.
Name
=
"ucurRobot1"
;
this
.
ucurRobot1
.
Size
=
new
System
.
Drawing
.
Size
(
306
,
197
);
this
.
ucurRobot1
.
TabIndex
=
17
;
//
// groupBox3
//
this
.
groupBox3
.
Controls
.
Add
(
this
.
ucurRobot2
);
...
...
@@ -267,14 +232,6 @@ namespace TheMachine.device.Other
this
.
groupBox3
.
TabStop
=
false
;
this
.
groupBox3
.
Text
=
"MI2"
;
//
// ucurRobot2
//
this
.
ucurRobot2
.
Dock
=
System
.
Windows
.
Forms
.
DockStyle
.
Fill
;
this
.
ucurRobot2
.
Location
=
new
System
.
Drawing
.
Point
(
2
,
16
);
this
.
ucurRobot2
.
Name
=
"ucurRobot2"
;
this
.
ucurRobot2
.
Size
=
new
System
.
Drawing
.
Size
(
306
,
197
);
this
.
ucurRobot2
.
TabIndex
=
17
;
//
// groupBox4
//
this
.
groupBox4
.
Controls
.
Add
(
this
.
ucurRobot3
);
...
...
@@ -287,6 +244,90 @@ namespace TheMachine.device.Other
this
.
groupBox4
.
TabStop
=
false
;
this
.
groupBox4
.
Text
=
"CI"
;
//
// timer1
//
this
.
timer1
.
Enabled
=
true
;
this
.
timer1
.
Interval
=
1000
;
this
.
timer1
.
Tick
+=
new
System
.
EventHandler
(
this
.
timer1_Tick
);
//
// button1
//
this
.
button1
.
Location
=
new
System
.
Drawing
.
Point
(
276
,
437
);
this
.
button1
.
Name
=
"button1"
;
this
.
button1
.
Size
=
new
System
.
Drawing
.
Size
(
236
,
93
);
this
.
button1
.
TabIndex
=
25
;
this
.
button1
.
Text
=
"R2机器人复位至待机点, 并释放压紧装置"
;
this
.
button1
.
UseVisualStyleBackColor
=
true
;
this
.
button1
.
Click
+=
new
System
.
EventHandler
(
this
.
button1_Click
);
//
// flowLayoutPanel2
//
this
.
flowLayoutPanel2
.
Dock
=
System
.
Windows
.
Forms
.
DockStyle
.
Fill
;
this
.
flowLayoutPanel2
.
FlowDirection
=
System
.
Windows
.
Forms
.
FlowDirection
.
TopDown
;
this
.
flowLayoutPanel2
.
Location
=
new
System
.
Drawing
.
Point
(
3
,
17
);
this
.
flowLayoutPanel2
.
Name
=
"flowLayoutPanel2"
;
this
.
flowLayoutPanel2
.
Size
=
new
System
.
Drawing
.
Size
(
221
,
227
);
this
.
flowLayoutPanel2
.
TabIndex
=
23
;
//
// stateView
//
this
.
stateView
.
BorderStyle
=
System
.
Windows
.
Forms
.
BorderStyle
.
None
;
this
.
stateView
.
Dock
=
System
.
Windows
.
Forms
.
DockStyle
.
Fill
;
this
.
stateView
.
HeaderStyle
=
System
.
Windows
.
Forms
.
ColumnHeaderStyle
.
Nonclickable
;
this
.
stateView
.
HideSelection
=
false
;
this
.
stateView
.
Location
=
new
System
.
Drawing
.
Point
(
3
,
29
);
this
.
stateView
.
MultiSelect
=
false
;
this
.
stateView
.
Name
=
"stateView"
;
this
.
stateView
.
Size
=
new
System
.
Drawing
.
Size
(
555
,
357
);
this
.
stateView
.
TabIndex
=
0
;
this
.
stateView
.
UseCompatibleStateImageBehavior
=
false
;
//
// uc_boxdebug1
//
this
.
uc_boxdebug1
.
Config
=
null
;
this
.
uc_boxdebug1
.
Dock
=
System
.
Windows
.
Forms
.
DockStyle
.
Fill
;
this
.
uc_boxdebug1
.
Font
=
new
System
.
Drawing
.
Font
(
"宋体"
,
9F
,
System
.
Drawing
.
FontStyle
.
Regular
,
System
.
Drawing
.
GraphicsUnit
.
Point
,
((
byte
)(
134
)));
this
.
uc_boxdebug1
.
Location
=
new
System
.
Drawing
.
Point
(
3
,
3
);
this
.
uc_boxdebug1
.
Name
=
"uc_boxdebug1"
;
this
.
uc_boxdebug1
.
Size
=
new
System
.
Drawing
.
Size
(
986
,
542
);
this
.
uc_boxdebug1
.
TabIndex
=
0
;
//
// uc_boxdebug2
//
this
.
uc_boxdebug2
.
Config
=
null
;
this
.
uc_boxdebug2
.
Dock
=
System
.
Windows
.
Forms
.
DockStyle
.
Fill
;
this
.
uc_boxdebug2
.
Font
=
new
System
.
Drawing
.
Font
(
"宋体"
,
9F
,
System
.
Drawing
.
FontStyle
.
Regular
,
System
.
Drawing
.
GraphicsUnit
.
Point
,
((
byte
)(
134
)));
this
.
uc_boxdebug2
.
Location
=
new
System
.
Drawing
.
Point
(
3
,
3
);
this
.
uc_boxdebug2
.
Name
=
"uc_boxdebug2"
;
this
.
uc_boxdebug2
.
Size
=
new
System
.
Drawing
.
Size
(
986
,
542
);
this
.
uc_boxdebug2
.
TabIndex
=
0
;
//
// uc_boxdebug3
//
this
.
uc_boxdebug3
.
Config
=
null
;
this
.
uc_boxdebug3
.
Dock
=
System
.
Windows
.
Forms
.
DockStyle
.
Fill
;
this
.
uc_boxdebug3
.
Font
=
new
System
.
Drawing
.
Font
(
"宋体"
,
9F
,
System
.
Drawing
.
FontStyle
.
Regular
,
System
.
Drawing
.
GraphicsUnit
.
Point
,
((
byte
)(
134
)));
this
.
uc_boxdebug3
.
Location
=
new
System
.
Drawing
.
Point
(
3
,
3
);
this
.
uc_boxdebug3
.
Name
=
"uc_boxdebug3"
;
this
.
uc_boxdebug3
.
Size
=
new
System
.
Drawing
.
Size
(
986
,
542
);
this
.
uc_boxdebug3
.
TabIndex
=
0
;
//
// ucurRobot1
//
this
.
ucurRobot1
.
Dock
=
System
.
Windows
.
Forms
.
DockStyle
.
Fill
;
this
.
ucurRobot1
.
Location
=
new
System
.
Drawing
.
Point
(
2
,
16
);
this
.
ucurRobot1
.
Name
=
"ucurRobot1"
;
this
.
ucurRobot1
.
Size
=
new
System
.
Drawing
.
Size
(
306
,
197
);
this
.
ucurRobot1
.
TabIndex
=
17
;
//
// ucurRobot2
//
this
.
ucurRobot2
.
Dock
=
System
.
Windows
.
Forms
.
DockStyle
.
Fill
;
this
.
ucurRobot2
.
Location
=
new
System
.
Drawing
.
Point
(
2
,
16
);
this
.
ucurRobot2
.
Name
=
"ucurRobot2"
;
this
.
ucurRobot2
.
Size
=
new
System
.
Drawing
.
Size
(
306
,
197
);
this
.
ucurRobot2
.
TabIndex
=
17
;
//
// ucurRobot3
//
this
.
ucurRobot3
.
Dock
=
System
.
Windows
.
Forms
.
DockStyle
.
Fill
;
...
...
@@ -295,21 +336,15 @@ namespace TheMachine.device.Other
this
.
ucurRobot3
.
Size
=
new
System
.
Drawing
.
Size
(
306
,
197
);
this
.
ucurRobot3
.
TabIndex
=
17
;
//
// timer1
//
this
.
timer1
.
Enabled
=
true
;
this
.
timer1
.
Interval
=
1000
;
this
.
timer1
.
Tick
+=
new
System
.
EventHandler
(
this
.
timer1_Tick
);
//
// btn_ResetRobot
// groupBox5
//
this
.
btn_ResetRobot
.
Location
=
new
System
.
Drawing
.
Point
(
19
,
437
);
this
.
btn_ResetRobot
.
Name
=
"btn_ResetRobot"
;
this
.
btn_ResetRobot
.
Size
=
new
System
.
Drawing
.
Size
(
267
,
93
)
;
this
.
btn_ResetRobot
.
TabIndex
=
25
;
this
.
btn_ResetRobot
.
Text
=
"机器人复位至待机点, 并释放压紧装置"
;
this
.
btn_ResetRobot
.
UseVisualStyleBackColor
=
tru
e
;
this
.
btn_ResetRobot
.
Click
+=
new
System
.
EventHandler
(
this
.
btn_ResetRobot_Click
)
;
this
.
groupBox5
.
Controls
.
Add
(
this
.
flowLayoutPanel2
);
this
.
groupBox5
.
Location
=
new
System
.
Drawing
.
Point
(
7
,
232
)
;
this
.
groupBox5
.
Name
=
"groupBox5"
;
this
.
groupBox5
.
Size
=
new
System
.
Drawing
.
Size
(
227
,
247
)
;
this
.
groupBox5
.
TabIndex
=
24
;
this
.
groupBox5
.
TabStop
=
fals
e
;
this
.
groupBox5
.
Text
=
"Tower enable"
;
//
// MycronicControl
//
...
...
@@ -331,6 +366,7 @@ namespace TheMachine.device.Other
this
.
groupBox1
.
ResumeLayout
(
false
);
this
.
groupBox3
.
ResumeLayout
(
false
);
this
.
groupBox4
.
ResumeLayout
(
false
);
this
.
groupBox5
.
ResumeLayout
(
false
);
this
.
ResumeLayout
(
false
);
}
...
...
@@ -359,6 +395,9 @@ namespace TheMachine.device.Other
private
System
.
Windows
.
Forms
.
GroupBox
groupBox2
;
private
DoubleBufferListView
stateView
;
private
System
.
Windows
.
Forms
.
Timer
timer1
;
private
System
.
Windows
.
Forms
.
Button
btn_ResetRobot
;
private
System
.
Windows
.
Forms
.
Button
btn_ResetR2Robot
;
private
System
.
Windows
.
Forms
.
Button
button1
;
private
System
.
Windows
.
Forms
.
FlowLayoutPanel
flowLayoutPanel2
;
private
System
.
Windows
.
Forms
.
GroupBox
groupBox5
;
}
}
TheMachine/device/Other/MycronicControl.cs
查看文件 @
1d786b6
...
...
@@ -51,8 +51,49 @@ namespace TheMachine.device.Other
#
endregion
crc
.
LanguageChangeEvent
+=
Crc_LanguageChangeEvent
;
;
// 假设 TowerInfo 列表已经存在并被填充了
List
<
TowerInfo
>
towerList
=
TowerList
.
List
.
Values
.
ToList
();
// 创建一个 checkbox 的列表控件
List
<
CheckBox
>
checkBoxList
=
new
List
<
CheckBox
>();
// 遍历 TowerInfo 列表,并生成一个带有 checkbox 的列表
foreach
(
var
tower
in
towerList
)
{
// 创建一个新的 checkbox 控件
CheckBox
checkBox
=
new
CheckBox
();
checkBox
.
Text
=
tower
.
TowerName
;
checkBox
.
Checked
=
tower
.
Enable
;
// 添加一个 Tag 属性,用于保存对应的 TowerInfo 对象
checkBox
.
Tag
=
tower
;
// 将 checkbox 控件添加到列表中
checkBoxList
.
Add
(
checkBox
);
// 将 checkbox 的 CheckedChanged 事件与一个方法绑定,用于修改对应的 TowerInfo 对象的 enable 属性
checkBox
.
CheckedChanged
+=
CheckBox_CheckedChanged
;
}
// 将 checkbox 列表添加到窗体中的一个容器控件中
foreach
(
var
checkBox
in
checkBoxList
)
{
flowLayoutPanel2
.
Controls
.
Add
(
checkBox
);
}
}
// CheckBox 的 CheckedChanged 事件的处理方法
private
void
CheckBox_CheckedChanged
(
object
sender
,
EventArgs
e
)
{
// 获取当前 checkbox 控件和对应的 TowerInfo 对象
CheckBox
checkBox
=
(
CheckBox
)
sender
;
TowerInfo
tower
=
(
TowerInfo
)
checkBox
.
Tag
;
// 更新 TowerInfo 对象的 enable 属性
tower
.
Enable
=
checkBox
.
Checked
;
}
private
void
Crc_LanguageChangeEvent
(
object
sender
,
EventArgs
e
)
{
stateView
.
Columns
[
1
].
Text
=
"Tower ID"
;
...
...
@@ -91,5 +132,16 @@ namespace TheMachine.device.Other
MI
.
DeviceList
[
"AMH-MI1"
].
Reset
();
}
private
void
button1_Click
(
object
sender
,
EventArgs
e
)
{
if
(
RobotManage
.
isRunning
)
{
MessageBox
.
Show
(
crc
.
GetString
(
"Res0072"
,
"请先停止系统运行"
));
return
;
}
MI
.
DeviceList
[
"AMH-MI2"
].
Reset
();
}
}
}
\ No newline at end of file
TheMachine/device/TrayStopControl.cs
查看文件 @
1d786b6
...
...
@@ -41,7 +41,8 @@ namespace TheMachine
var
axis
=
RobotManage
.
Config
.
moveAxisList
.
Find
(
ma
=>
ma
.
GetAxisValue
()
==
RobotManage
.
DeviceGroup
[
deviceGroupName
].
AxisID
);
if
(
axis
!=
null
)
axisMoveControl1
.
LoadData
(
AxisBean
.
List
[
deviceGroupName
]);
else
crc
.
LanguageProcess
(
axisMoveControl1
);
if
(
TrayStop
.
DeviceList
[
deviceGroupName
].
RFID_1
!=
null
)
rfidControl1
.
Init
(
deviceGroupName
,
TrayStop
.
DeviceList
[
deviceGroupName
].
RFID_1
);
...
...
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论