Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
张东亮
/
SO1037-LiftController
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit 7477cfe3
由
张东亮
编写于
2023-02-24 13:13:44 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
1
1 个父辈
a6da74b6
全部展开
显示空白字符变更
内嵌
并排
正在显示
21 个修改的文件
包含
295 行增加
和
36 行删除
LiftController/FrmIO.Designer.cs
LiftController/FrmIO.cs
LiftController/FrmMain.Designer.cs
LiftController/FrmMain.cs
LiftController/FrmMain.resx
source/Common/SettingString.cs
source/DeviceLibrary/Config/LineConfig.csv
source/DeviceLibrary/Context/LiftContext.cs
source/DeviceLibrary/DeviceLibrary.csproj
source/DeviceLibrary/IO/AIOBOX/AIOBOXManager.cs
source/DeviceLibrary/IO/IOManager.cs
source/DeviceLibrary/Models/ClientInfo.cs
source/DeviceLibrary/Models/LiftInfo.cs
source/DeviceLibrary/Models/Service/Request/DoorInfo.cs
source/DeviceLibrary/Models/Service/Request/FinishedInfo.cs
source/DeviceLibrary/Models/Service/Request/SendInInfo.cs
source/DeviceLibrary/Models/Service/Response/Status.cs
source/DeviceLibrary/Service/IService.cs
source/DeviceLibrary/Service/Services.cs
source/LoadCVSLibrary/Config/bean/Config.cs
source/LoadCVSLibrary/Config/bean/IO_Type.cs
LiftController/FrmIO.Designer.cs
查看文件 @
7477cfe
此文件的差异被折叠,
点击展开。
LiftController/FrmIO.cs
查看文件 @
7477cfe
using
Common
;
using
Common
;
using
DeviceLibrary
;
using
DeviceLibrary
;
using
DeviceLibrary.Context
;
using
LoadCSVLibrary
;
using
LoadCSVLibrary
;
using
System
;
using
System
;
using
System.Collections.Generic
;
using
System.Collections.Generic
;
...
@@ -22,6 +23,10 @@ namespace LiftController
...
@@ -22,6 +23,10 @@ namespace LiftController
InitializeComponent
();
InitializeComponent
();
groupBox4
.
Enabled
=
false
;
groupBox4
.
Enabled
=
false
;
LoadIOList
(
config
);
LoadIOList
(
config
);
string
[]
lifts
=
Common
.
AppConfigHelper
.
GetValue
(
Common
.
SettingString
.
Lift_Ids
).
Split
(
','
);
comboBox1
.
Items
.
AddRange
(
lifts
);
if
(
comboBox1
.
Items
.
Count
>
0
)
comboBox1
.
SelectedIndex
=
0
;
}
}
Dictionary
<
string
,
IOTextControl
>
DIControlList
=
new
Dictionary
<
string
,
IOTextControl
>();
Dictionary
<
string
,
IOTextControl
>
DIControlList
=
new
Dictionary
<
string
,
IOTextControl
>();
Dictionary
<
string
,
IOTextControl
>
DOControlList
=
new
Dictionary
<
string
,
IOTextControl
>();
Dictionary
<
string
,
IOTextControl
>
DOControlList
=
new
Dictionary
<
string
,
IOTextControl
>();
...
@@ -209,5 +214,19 @@ namespace LiftController
...
@@ -209,5 +214,19 @@ namespace LiftController
{
{
timer1
.
Start
();
timer1
.
Start
();
}
}
private
void
button2_Click
(
object
sender
,
EventArgs
e
)
{
if
(
comboBox1
.
SelectedIndex
>
-
1
)
{
string
liftId
=
comboBox1
.
SelectedItem
.
ToString
();
DialogResult
dialogResult
=
MessageBox
.
Show
(
$
"确定删除电梯{liftId}的缓存信息?"
,
"提示"
,
MessageBoxButtons
.
YesNo
);
if
(
dialogResult
.
Equals
(
DialogResult
.
Yes
))
{
LiftContext
.
Clear
(
comboBox1
.
SelectedItem
.
ToString
());
LogUtil
.
info
(
$
"手动清除电梯{liftId}缓存"
);
}
}
}
}
}
}
}
LiftController/FrmMain.Designer.cs
查看文件 @
7477cfe
...
@@ -37,8 +37,11 @@ namespace LogisticsIntelligence
...
@@ -37,8 +37,11 @@ namespace LogisticsIntelligence
this
.
label1
=
new
System
.
Windows
.
Forms
.
Label
();
this
.
label1
=
new
System
.
Windows
.
Forms
.
Label
();
this
.
timer1
=
new
System
.
Windows
.
Forms
.
Timer
(
this
.
components
);
this
.
timer1
=
new
System
.
Windows
.
Forms
.
Timer
(
this
.
components
);
this
.
backgroundWorker1
=
new
System
.
ComponentModel
.
BackgroundWorker
();
this
.
backgroundWorker1
=
new
System
.
ComponentModel
.
BackgroundWorker
();
this
.
statusStrip1
=
new
System
.
Windows
.
Forms
.
StatusStrip
();
this
.
lblRequestResponse
=
new
System
.
Windows
.
Forms
.
ToolStripStatusLabel
();
this
.
tableLayoutPanel1
.
SuspendLayout
();
this
.
tableLayoutPanel1
.
SuspendLayout
();
this
.
groupBox1
.
SuspendLayout
();
this
.
groupBox1
.
SuspendLayout
();
this
.
statusStrip1
.
SuspendLayout
();
this
.
SuspendLayout
();
this
.
SuspendLayout
();
//
//
// tableLayoutPanel1
// tableLayoutPanel1
...
@@ -49,22 +52,24 @@ namespace LogisticsIntelligence
...
@@ -49,22 +52,24 @@ namespace LogisticsIntelligence
this
.
tableLayoutPanel1
.
Controls
.
Add
(
this
.
groupBox1
,
0
,
0
);
this
.
tableLayoutPanel1
.
Controls
.
Add
(
this
.
groupBox1
,
0
,
0
);
this
.
tableLayoutPanel1
.
Dock
=
System
.
Windows
.
Forms
.
DockStyle
.
Fill
;
this
.
tableLayoutPanel1
.
Dock
=
System
.
Windows
.
Forms
.
DockStyle
.
Fill
;
this
.
tableLayoutPanel1
.
Location
=
new
System
.
Drawing
.
Point
(
0
,
0
);
this
.
tableLayoutPanel1
.
Location
=
new
System
.
Drawing
.
Point
(
0
,
0
);
this
.
tableLayoutPanel1
.
Margin
=
new
System
.
Windows
.
Forms
.
Padding
(
4
,
4
,
4
,
4
);
this
.
tableLayoutPanel1
.
Name
=
"tableLayoutPanel1"
;
this
.
tableLayoutPanel1
.
Name
=
"tableLayoutPanel1"
;
this
.
tableLayoutPanel1
.
RowCount
=
2
;
this
.
tableLayoutPanel1
.
RowCount
=
2
;
this
.
tableLayoutPanel1
.
RowStyles
.
Add
(
new
System
.
Windows
.
Forms
.
RowStyle
(
System
.
Windows
.
Forms
.
SizeType
.
Percent
,
39.32806F
));
this
.
tableLayoutPanel1
.
RowStyles
.
Add
(
new
System
.
Windows
.
Forms
.
RowStyle
(
System
.
Windows
.
Forms
.
SizeType
.
Percent
,
39.32806F
));
this
.
tableLayoutPanel1
.
RowStyles
.
Add
(
new
System
.
Windows
.
Forms
.
RowStyle
(
System
.
Windows
.
Forms
.
SizeType
.
Percent
,
60.67194F
));
this
.
tableLayoutPanel1
.
RowStyles
.
Add
(
new
System
.
Windows
.
Forms
.
RowStyle
(
System
.
Windows
.
Forms
.
SizeType
.
Percent
,
60.67194F
));
this
.
tableLayoutPanel1
.
RowStyles
.
Add
(
new
System
.
Windows
.
Forms
.
RowStyle
(
System
.
Windows
.
Forms
.
SizeType
.
Absolute
,
2
0
F
));
this
.
tableLayoutPanel1
.
RowStyles
.
Add
(
new
System
.
Windows
.
Forms
.
RowStyle
(
System
.
Windows
.
Forms
.
SizeType
.
Absolute
,
2
5
F
));
this
.
tableLayoutPanel1
.
Size
=
new
System
.
Drawing
.
Size
(
1
216
,
470
);
this
.
tableLayoutPanel1
.
Size
=
new
System
.
Drawing
.
Size
(
1
621
,
636
);
this
.
tableLayoutPanel1
.
TabIndex
=
1
;
this
.
tableLayoutPanel1
.
TabIndex
=
1
;
//
//
// tabControl1
// tabControl1
//
//
this
.
tabControl1
.
Dock
=
System
.
Windows
.
Forms
.
DockStyle
.
Fill
;
this
.
tabControl1
.
Dock
=
System
.
Windows
.
Forms
.
DockStyle
.
Fill
;
this
.
tabControl1
.
Font
=
new
System
.
Drawing
.
Font
(
"宋体"
,
10.5F
,
System
.
Drawing
.
FontStyle
.
Regular
,
System
.
Drawing
.
GraphicsUnit
.
Point
,
((
byte
)(
134
)));
this
.
tabControl1
.
Font
=
new
System
.
Drawing
.
Font
(
"宋体"
,
10.5F
,
System
.
Drawing
.
FontStyle
.
Regular
,
System
.
Drawing
.
GraphicsUnit
.
Point
,
((
byte
)(
134
)));
this
.
tabControl1
.
Location
=
new
System
.
Drawing
.
Point
(
3
,
187
);
this
.
tabControl1
.
Location
=
new
System
.
Drawing
.
Point
(
4
,
254
);
this
.
tabControl1
.
Margin
=
new
System
.
Windows
.
Forms
.
Padding
(
4
,
4
,
4
,
4
);
this
.
tabControl1
.
Name
=
"tabControl1"
;
this
.
tabControl1
.
Name
=
"tabControl1"
;
this
.
tabControl1
.
SelectedIndex
=
0
;
this
.
tabControl1
.
SelectedIndex
=
0
;
this
.
tabControl1
.
Size
=
new
System
.
Drawing
.
Size
(
1
210
,
280
);
this
.
tabControl1
.
Size
=
new
System
.
Drawing
.
Size
(
1
613
,
378
);
this
.
tabControl1
.
TabIndex
=
0
;
this
.
tabControl1
.
TabIndex
=
0
;
//
//
// groupBox1
// groupBox1
...
@@ -72,9 +77,11 @@ namespace LogisticsIntelligence
...
@@ -72,9 +77,11 @@ namespace LogisticsIntelligence
this
.
groupBox1
.
Controls
.
Add
(
this
.
label1
);
this
.
groupBox1
.
Controls
.
Add
(
this
.
label1
);
this
.
groupBox1
.
Dock
=
System
.
Windows
.
Forms
.
DockStyle
.
Fill
;
this
.
groupBox1
.
Dock
=
System
.
Windows
.
Forms
.
DockStyle
.
Fill
;
this
.
groupBox1
.
Font
=
new
System
.
Drawing
.
Font
(
"宋体"
,
10.5F
,
System
.
Drawing
.
FontStyle
.
Regular
,
System
.
Drawing
.
GraphicsUnit
.
Point
,
((
byte
)(
134
)));
this
.
groupBox1
.
Font
=
new
System
.
Drawing
.
Font
(
"宋体"
,
10.5F
,
System
.
Drawing
.
FontStyle
.
Regular
,
System
.
Drawing
.
GraphicsUnit
.
Point
,
((
byte
)(
134
)));
this
.
groupBox1
.
Location
=
new
System
.
Drawing
.
Point
(
3
,
3
);
this
.
groupBox1
.
Location
=
new
System
.
Drawing
.
Point
(
4
,
4
);
this
.
groupBox1
.
Margin
=
new
System
.
Windows
.
Forms
.
Padding
(
4
,
4
,
4
,
4
);
this
.
groupBox1
.
Name
=
"groupBox1"
;
this
.
groupBox1
.
Name
=
"groupBox1"
;
this
.
groupBox1
.
Size
=
new
System
.
Drawing
.
Size
(
1210
,
178
);
this
.
groupBox1
.
Padding
=
new
System
.
Windows
.
Forms
.
Padding
(
4
,
4
,
4
,
4
);
this
.
groupBox1
.
Size
=
new
System
.
Drawing
.
Size
(
1613
,
242
);
this
.
groupBox1
.
TabIndex
=
1
;
this
.
groupBox1
.
TabIndex
=
1
;
this
.
groupBox1
.
TabStop
=
false
;
this
.
groupBox1
.
TabStop
=
false
;
this
.
groupBox1
.
Text
=
"电梯状态"
;
this
.
groupBox1
.
Text
=
"电梯状态"
;
...
@@ -83,9 +90,10 @@ namespace LogisticsIntelligence
...
@@ -83,9 +90,10 @@ namespace LogisticsIntelligence
//
//
this
.
label1
.
Dock
=
System
.
Windows
.
Forms
.
DockStyle
.
Fill
;
this
.
label1
.
Dock
=
System
.
Windows
.
Forms
.
DockStyle
.
Fill
;
this
.
label1
.
Font
=
new
System
.
Drawing
.
Font
(
"宋体"
,
10.5F
,
System
.
Drawing
.
FontStyle
.
Regular
,
System
.
Drawing
.
GraphicsUnit
.
Point
,
((
byte
)(
134
)));
this
.
label1
.
Font
=
new
System
.
Drawing
.
Font
(
"宋体"
,
10.5F
,
System
.
Drawing
.
FontStyle
.
Regular
,
System
.
Drawing
.
GraphicsUnit
.
Point
,
((
byte
)(
134
)));
this
.
label1
.
Location
=
new
System
.
Drawing
.
Point
(
3
,
19
);
this
.
label1
.
Location
=
new
System
.
Drawing
.
Point
(
4
,
24
);
this
.
label1
.
Margin
=
new
System
.
Windows
.
Forms
.
Padding
(
4
,
0
,
4
,
0
);
this
.
label1
.
Name
=
"label1"
;
this
.
label1
.
Name
=
"label1"
;
this
.
label1
.
Size
=
new
System
.
Drawing
.
Size
(
1
204
,
156
);
this
.
label1
.
Size
=
new
System
.
Drawing
.
Size
(
1
605
,
214
);
this
.
label1
.
TabIndex
=
2
;
this
.
label1
.
TabIndex
=
2
;
this
.
label1
.
Text
=
"label1"
;
this
.
label1
.
Text
=
"label1"
;
//
//
...
@@ -94,13 +102,33 @@ namespace LogisticsIntelligence
...
@@ -94,13 +102,33 @@ namespace LogisticsIntelligence
this
.
timer1
.
Interval
=
1000
;
this
.
timer1
.
Interval
=
1000
;
this
.
timer1
.
Tick
+=
new
System
.
EventHandler
(
this
.
timer1_Tick
);
this
.
timer1
.
Tick
+=
new
System
.
EventHandler
(
this
.
timer1_Tick
);
//
//
// statusStrip1
//
this
.
statusStrip1
.
ImageScalingSize
=
new
System
.
Drawing
.
Size
(
20
,
20
);
this
.
statusStrip1
.
Items
.
AddRange
(
new
System
.
Windows
.
Forms
.
ToolStripItem
[]
{
this
.
lblRequestResponse
});
this
.
statusStrip1
.
Location
=
new
System
.
Drawing
.
Point
(
0
,
610
);
this
.
statusStrip1
.
Name
=
"statusStrip1"
;
this
.
statusStrip1
.
Padding
=
new
System
.
Windows
.
Forms
.
Padding
(
1
,
0
,
19
,
0
);
this
.
statusStrip1
.
Size
=
new
System
.
Drawing
.
Size
(
1621
,
26
);
this
.
statusStrip1
.
TabIndex
=
2
;
this
.
statusStrip1
.
Text
=
"statusStrip1"
;
//
// lblRequestResponse
//
this
.
lblRequestResponse
.
Name
=
"lblRequestResponse"
;
this
.
lblRequestResponse
.
Size
=
new
System
.
Drawing
.
Size
(
27
,
20
);
this
.
lblRequestResponse
.
Text
=
"ok"
;
//
// FrmMain
// FrmMain
//
//
this
.
AutoScaleDimensions
=
new
System
.
Drawing
.
SizeF
(
6F
,
12
F
);
this
.
AutoScaleDimensions
=
new
System
.
Drawing
.
SizeF
(
8F
,
15
F
);
this
.
AutoScaleMode
=
System
.
Windows
.
Forms
.
AutoScaleMode
.
Font
;
this
.
AutoScaleMode
=
System
.
Windows
.
Forms
.
AutoScaleMode
.
Font
;
this
.
ClientSize
=
new
System
.
Drawing
.
Size
(
1216
,
470
);
this
.
ClientSize
=
new
System
.
Drawing
.
Size
(
1621
,
636
);
this
.
Controls
.
Add
(
this
.
statusStrip1
);
this
.
Controls
.
Add
(
this
.
tableLayoutPanel1
);
this
.
Controls
.
Add
(
this
.
tableLayoutPanel1
);
this
.
Icon
=
((
System
.
Drawing
.
Icon
)(
resources
.
GetObject
(
"$this.Icon"
)));
this
.
Icon
=
((
System
.
Drawing
.
Icon
)(
resources
.
GetObject
(
"$this.Icon"
)));
this
.
Margin
=
new
System
.
Windows
.
Forms
.
Padding
(
4
,
4
,
4
,
4
);
this
.
MaximizeBox
=
false
;
this
.
MaximizeBox
=
false
;
this
.
Name
=
"FrmMain"
;
this
.
Name
=
"FrmMain"
;
this
.
Text
=
"LiftController"
;
this
.
Text
=
"LiftController"
;
...
@@ -108,7 +136,10 @@ namespace LogisticsIntelligence
...
@@ -108,7 +136,10 @@ namespace LogisticsIntelligence
this
.
Load
+=
new
System
.
EventHandler
(
this
.
FrmMain_Load
);
this
.
Load
+=
new
System
.
EventHandler
(
this
.
FrmMain_Load
);
this
.
tableLayoutPanel1
.
ResumeLayout
(
false
);
this
.
tableLayoutPanel1
.
ResumeLayout
(
false
);
this
.
groupBox1
.
ResumeLayout
(
false
);
this
.
groupBox1
.
ResumeLayout
(
false
);
this
.
statusStrip1
.
ResumeLayout
(
false
);
this
.
statusStrip1
.
PerformLayout
();
this
.
ResumeLayout
(
false
);
this
.
ResumeLayout
(
false
);
this
.
PerformLayout
();
}
}
...
@@ -119,6 +150,8 @@ namespace LogisticsIntelligence
...
@@ -119,6 +150,8 @@ namespace LogisticsIntelligence
private
System
.
Windows
.
Forms
.
GroupBox
groupBox1
;
private
System
.
Windows
.
Forms
.
GroupBox
groupBox1
;
private
System
.
Windows
.
Forms
.
Label
label1
;
private
System
.
Windows
.
Forms
.
Label
label1
;
private
System
.
ComponentModel
.
BackgroundWorker
backgroundWorker1
;
private
System
.
ComponentModel
.
BackgroundWorker
backgroundWorker1
;
private
System
.
Windows
.
Forms
.
StatusStrip
statusStrip1
;
private
System
.
Windows
.
Forms
.
ToolStripStatusLabel
lblRequestResponse
;
}
}
}
}
LiftController/FrmMain.cs
查看文件 @
7477cfe
using
DeviceLibrary
;
using
Common
;
using
DeviceLibrary
;
using
DeviceLibrary.Context
;
using
LiftController
;
using
LiftController
;
using
System
;
using
System
;
using
System.Collections.Generic
;
using
System.Collections.Generic
;
...
@@ -18,7 +20,6 @@ namespace LogisticsIntelligence
...
@@ -18,7 +20,6 @@ namespace LogisticsIntelligence
{
{
InitializeComponent
();
InitializeComponent
();
appContext
.
Init
();
appContext
.
Init
();
}
}
DeviceLibrary
.
Context
.
Context
appContext
=
new
DeviceLibrary
.
Context
.
Context
();
DeviceLibrary
.
Context
.
Context
appContext
=
new
DeviceLibrary
.
Context
.
Context
();
private
void
FrmMain_Load
(
object
sender
,
EventArgs
e
)
private
void
FrmMain_Load
(
object
sender
,
EventArgs
e
)
...
@@ -31,10 +32,17 @@ namespace LogisticsIntelligence
...
@@ -31,10 +32,17 @@ namespace LogisticsIntelligence
}
}
private
void
UpdateLift
()
private
void
UpdateLift
()
{
{
this
.
Invoke
(
new
Action
(()=>
{
try
{
this
.
Invoke
(
new
Action
(()
=>
{
label1
.
Text
=
DeviceLibrary
.
Context
.
LiftContext
.
ToListInfos
();
label1
.
Text
=
DeviceLibrary
.
Context
.
LiftContext
.
ToListInfos
();
lblRequestResponse
.
Text
=
$
"请求反馈信息:{DeviceLibrary.Context.LiftContext.RequestMsg}"
;
}));
}));
}
}
catch
{
}
}
private
void
timer1_Tick
(
object
sender
,
EventArgs
e
)
private
void
timer1_Tick
(
object
sender
,
EventArgs
e
)
{
{
...
...
LiftController/FrmMain.resx
查看文件 @
7477cfe
...
@@ -123,6 +123,9 @@
...
@@ -123,6 +123,9 @@
<metadata name="backgroundWorker1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<metadata name="backgroundWorker1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>107, 17</value>
<value>107, 17</value>
</metadata>
</metadata>
<metadata name="statusStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>281, 17</value>
</metadata>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
<value>
...
...
source/Common/SettingString.cs
查看文件 @
7477cfe
...
@@ -34,7 +34,8 @@ namespace Common
...
@@ -34,7 +34,8 @@ namespace Common
/// DI,D2-到达4F,_AtFourth
/// DI,D2-到达4F,_AtFourth
/// </summary>
/// </summary>
public
static
string
_AtFourth
=
"_AtFourth"
;
public
static
string
_AtFourth
=
"_AtFourth"
;
public
static
string
_HasEmptyFinished
=
"_HasEmptyFinished"
;
public
static
string
_HasFullFinished
=
"_HasFullFinished"
;
/// <summary>
/// <summary>
/// DI,D2-门已开,_DoorOpen
/// DI,D2-门已开,_DoorOpen
/// </summary>
/// </summary>
...
...
source/DeviceLibrary/Config/LineConfig.csv
查看文件 @
7477cfe
类型,说明,名称,属性值,设备名称,默认值,描述,电器定义,代码定义,SlaveID
类型,说明,名称,属性值,设备名称,默认值,描述,电器定义,代码定义,SlaveID
PRO,IO模块对应的DI数量,IO_DILength,10.85.199.29#
8;192.168.103.22
#8,,,,,,
PRO,IO模块对应的DI数量,IO_DILength,10.85.199.29#
16;172.16.31.151
#8,,,,,,
PRO,模块对应的DO数量,IO_DOLength,10.85.199.29#
8;192.168.103.22
#8,,,,,,
PRO,模块对应的DO数量,IO_DOLength,10.85.199.29#
16;172.16.31.151
#8,,,,,,
PRO,IO模块IP,PRO_AOI_IP_1,10.85.199.29,,,,,,
PRO,IO模块IP,PRO_AOI_IP_1,10.85.199.29,,,,,,
PRO,IO模块IP,PRO_AOI_IP_2,172.16.31.151,,,,,,
,,,,,,,,,
,,,,,,,,,
DI,D2-任务应答,LIFT_D2_Response,0,PRO_AOI_IP_1,0,D2-任务应答,X21,X21,0
DI,D2-任务应答,LIFT_D2_Response,0,PRO_AOI_IP_1,0,D2-任务应答,X21,X21,0
DI,D2-到达1F,LIFT_D2_AtFirst,1,PRO_AOI_IP_1,0,D2-到达1F,X22,X22,0
DI,D2-到达1F,LIFT_D2_AtFirst,1,PRO_AOI_IP_1,0,D2-到达1F,X22,X22,0
...
@@ -10,6 +11,7 @@ DI,D2-到达4F,LIFT_D2_AtFourth,3,PRO_AOI_IP_1,0,D2-到达4F,X24,X24,0
...
@@ -10,6 +11,7 @@ DI,D2-到达4F,LIFT_D2_AtFourth,3,PRO_AOI_IP_1,0,D2-到达4F,X24,X24,0
DI,D2-门已开,LIFT_D2_DoorOpen,4,PRO_AOI_IP_1,0,D2-门已开,X25,X25,0
DI,D2-门已开,LIFT_D2_DoorOpen,4,PRO_AOI_IP_1,0,D2-门已开,X25,X25,0
DI,D2-故障中,LIFT_D2_InFault,5,PRO_AOI_IP_1,0,D2-故障中,X26,X26,0
DI,D2-故障中,LIFT_D2_InFault,5,PRO_AOI_IP_1,0,D2-故障中,X26,X26,0
DI,D2-运行中,LIFT_D2_InRun,6,PRO_AOI_IP_1,0,D2-运行中,X27,X27,0
DI,D2-运行中,LIFT_D2_InRun,6,PRO_AOI_IP_1,0,D2-运行中,X27,X27,0
DI,D2-回收空成品料架,LIFT_D2_HasEmptyFinished,7,PRO_AOI_IP_1,0,D2-回收空成品料架,X28,X28,0
,,,,,,,,,
,,,,,,,,,
DO,D2-AGV请求,LIFT_D2_AGVRequest,0,PRO_AOI_IP_1,0,D2-AGV请求,Y21,Y21,0
DO,D2-AGV请求,LIFT_D2_AGVRequest,0,PRO_AOI_IP_1,0,D2-AGV请求,Y21,Y21,0
DO,D2-AGV离开,LIFT_D2_AGVLeave,1,PRO_AOI_IP_1,0,D2-AGV离开,Y22,Y22,0
DO,D2-AGV离开,LIFT_D2_AGVLeave,1,PRO_AOI_IP_1,0,D2-AGV离开,Y22,Y22,0
...
@@ -19,6 +21,7 @@ DO,D2-AGV呼叫4F,LIFT_D2_FourthCall,4,PRO_AOI_IP_1,0,D2-AGV呼叫4F,Y25,Y25,0
...
@@ -19,6 +21,7 @@ DO,D2-AGV呼叫4F,LIFT_D2_FourthCall,4,PRO_AOI_IP_1,0,D2-AGV呼叫4F,Y25,Y25,0
DO,D2-送料信号1F,LIFT_D2_RunToFirst,5,PRO_AOI_IP_1,0,D2-送料信号1F,Y26,Y26,0
DO,D2-送料信号1F,LIFT_D2_RunToFirst,5,PRO_AOI_IP_1,0,D2-送料信号1F,Y26,Y26,0
DO,D2-送料信号3F,LIFT_D2_RunToThird,6,PRO_AOI_IP_1,0,D2-送料信号3F,Y27,Y27,0
DO,D2-送料信号3F,LIFT_D2_RunToThird,6,PRO_AOI_IP_1,0,D2-送料信号3F,Y27,Y27,0
DO,D2-送料信号4F,LIFT_D2_RunToFourth,7,PRO_AOI_IP_1,0,D2-送料信号4F,Y28,Y28,0
DO,D2-送料信号4F,LIFT_D2_RunToFourth,7,PRO_AOI_IP_1,0,D2-送料信号4F,Y28,Y28,0
DO,D2-送满成品料架,LIFT_D2_HasFullFinished,8,PRO_AOI_IP_1,0,D2-送满成品料架,Y29,Y29,0
,,,,,,,,,
,,,,,,,,,
DI,C1-任务应答,LIFT_C1_Response,0,PRO_AOI_IP_2,0,C1-任务应答,X31,X31,0
DI,C1-任务应答,LIFT_C1_Response,0,PRO_AOI_IP_2,0,C1-任务应答,X31,X31,0
DI,C1-到达1F,LIFT_C1_AtFirst,1,PRO_AOI_IP_2,0,C1-到达1F,X32,X32,0
DI,C1-到达1F,LIFT_C1_AtFirst,1,PRO_AOI_IP_2,0,C1-到达1F,X32,X32,0
...
...
source/DeviceLibrary/Context/LiftContext.cs
查看文件 @
7477cfe
...
@@ -55,6 +55,20 @@ namespace DeviceLibrary.Context
...
@@ -55,6 +55,20 @@ namespace DeviceLibrary.Context
}
}
}
}
/// <summary>
/// 清空缓存
/// </summary>
/// <param name="liftId"></param>
public
static
void
Clear
(
string
liftId
)
{
LiftInfo
info
=
elevatorInfos
.
Find
(
s
=>
s
.
liftId
.
Equals
(
liftId
));
if
(
info
!=
null
)
{
elevatorInfos
.
Remove
(
info
);
elevatorInfos
.
Add
(
new
LiftInfo
(
liftId
));
SaveLiftInfo
();
}
}
public
static
string
ToListInfos
()
public
static
string
ToListInfos
()
{
{
StringBuilder
sb
=
new
StringBuilder
();
StringBuilder
sb
=
new
StringBuilder
();
...
@@ -94,6 +108,7 @@ namespace DeviceLibrary.Context
...
@@ -94,6 +108,7 @@ namespace DeviceLibrary.Context
Common
.
LogUtil
.
error
(
$
"SaveLiftInfo Fail:{Common.JsonHelper.SerializeObject(elevatorInfos)}"
);
Common
.
LogUtil
.
error
(
$
"SaveLiftInfo Fail:{Common.JsonHelper.SerializeObject(elevatorInfos)}"
);
}
}
}
}
public
static
string
RequestMsg
=
""
;
/// <summary>
/// <summary>
/// 请求电梯
/// 请求电梯
/// </summary>
/// </summary>
...
@@ -115,6 +130,7 @@ namespace DeviceLibrary.Context
...
@@ -115,6 +130,7 @@ namespace DeviceLibrary.Context
}
}
bool
rtn
=
elevatorInfo
.
RequestUse
(
lift
,
out
msg
);
bool
rtn
=
elevatorInfo
.
RequestUse
(
lift
,
out
msg
);
SaveLiftInfo
();
SaveLiftInfo
();
RequestMsg
=
$
"【{lift}】【{msg}】"
;
return
rtn
;
return
rtn
;
}
}
...
@@ -140,6 +156,27 @@ namespace DeviceLibrary.Context
...
@@ -140,6 +156,27 @@ namespace DeviceLibrary.Context
elevatorInfo
.
UpdateClient
(
clientStatus
);
elevatorInfo
.
UpdateClient
(
clientStatus
);
}
}
public
static
void
UpdateFinishedInfo
(
FinishedInfo
finished
,
out
string
msg
)
{
msg
=
"ok"
;
if
(
elevatorInfos
.
Count
==
0
)
{
msg
=
"系统未添加电梯信息"
;
return
;
}
LiftInfo
elevatorInfo
=
elevatorInfos
.
Find
(
s
=>
s
.
liftId
.
Equals
(
finished
.
liftId
));
if
(
elevatorInfo
==
null
)
{
msg
=
$
"系统不存在该电梯标识:{finished.liftId}"
;
return
;
}
if
(
finished
.
HasFullFinishedShelf
)
elevatorInfo
.
OpenFinishedFullSig
();
else
{
elevatorInfo
.
CloseFinishedFullSig
();
}
}
/// <summary>
/// <summary>
/// 获取电梯状态
/// 获取电梯状态
/// </summary>
/// </summary>
...
...
source/DeviceLibrary/DeviceLibrary.csproj
查看文件 @
7477cfe
...
@@ -72,6 +72,7 @@
...
@@ -72,6 +72,7 @@
<Compile Include="Models\ClientInfo.cs" />
<Compile Include="Models\ClientInfo.cs" />
<Compile Include="Models\LiftInfo.cs" />
<Compile Include="Models\LiftInfo.cs" />
<Compile Include="Models\Service\Request\DoorInfo.cs" />
<Compile Include="Models\Service\Request\DoorInfo.cs" />
<Compile Include="Models\Service\Request\FinishedInfo.cs" />
<Compile Include="Models\Service\Request\SendInInfo.cs" />
<Compile Include="Models\Service\Request\SendInInfo.cs" />
<Compile Include="Models\Service\Request\ClientStatus.cs" />
<Compile Include="Models\Service\Request\ClientStatus.cs" />
<Compile Include="Models\Service\Response\Status.cs" />
<Compile Include="Models\Service\Response\Status.cs" />
...
...
source/DeviceLibrary/IO/AIOBOX/AIOBOXManager.cs
查看文件 @
7477cfe
...
@@ -15,7 +15,6 @@ namespace DeviceLibrary
...
@@ -15,7 +15,6 @@ namespace DeviceLibrary
{
{
public
class
AIOBOXManager
:
IOManager
public
class
AIOBOXManager
:
IOManager
{
{
public
readonly
ILog
LOGGER
=
LogManager
.
GetLogger
(
MethodBase
.
GetCurrentMethod
().
DeclaringType
);
public
Dictionary
<
string
,
AIOBOX
>
AIOMap
=
new
Dictionary
<
string
,
AIOBOX
>();
public
Dictionary
<
string
,
AIOBOX
>
AIOMap
=
new
Dictionary
<
string
,
AIOBOX
>();
public
Dictionary
<
string
,
List
<
Box_Sta
>>
DIValueMap
=
new
Dictionary
<
string
,
List
<
Box_Sta
>>();
public
Dictionary
<
string
,
List
<
Box_Sta
>>
DIValueMap
=
new
Dictionary
<
string
,
List
<
Box_Sta
>>();
...
@@ -105,7 +104,7 @@ namespace DeviceLibrary
...
@@ -105,7 +104,7 @@ namespace DeviceLibrary
}
}
catch
(
Exception
error
)
catch
(
Exception
error
)
{
{
LogUtil
.
error
(
LOGGER
,
"连接IO模块 "
+
logName
+
" 出错:"
+
error
.
ToString
());
LogUtil
.
error
(
"连接IO模块 "
+
logName
+
" 出错:"
+
error
.
ToString
());
}
}
}
}
...
@@ -269,12 +268,12 @@ namespace DeviceLibrary
...
@@ -269,12 +268,12 @@ namespace DeviceLibrary
}
}
else
else
{
{
LogUtil
.
error
(
LOGGER
,
"WriteSingleDO出错 没有连接IO模块:"
+
ioIp
);
LogUtil
.
error
(
"WriteSingleDO出错 没有连接IO模块:"
+
ioIp
);
}
}
}
}
catch
(
Exception
ex
)
catch
(
Exception
ex
)
{
{
L
OGGER
.
E
rror
(
"AIO WriteSingleDO ["
+
ioIp
+
"] ["
+
StartAddress
+
"] 出错啦:"
,
ex
);
L
ogUtil
.
e
rror
(
"AIO WriteSingleDO ["
+
ioIp
+
"] ["
+
StartAddress
+
"] 出错啦:"
,
ex
);
}
}
}
}
public
override
void
WriteSingleDO
(
string
ioIp
,
byte
slaveId
,
ushort
StartAddress
,
IO_VALUE
onOff
,
int
mSeconds
)
public
override
void
WriteSingleDO
(
string
ioIp
,
byte
slaveId
,
ushort
StartAddress
,
IO_VALUE
onOff
,
int
mSeconds
)
...
@@ -294,11 +293,11 @@ namespace DeviceLibrary
...
@@ -294,11 +293,11 @@ namespace DeviceLibrary
try
try
{
{
aioBox
.
WriteDO
(
StartAddress
,
aioBox
.
ReverseStatus
(
currBox_Sta
));
aioBox
.
WriteDO
(
StartAddress
,
aioBox
.
ReverseStatus
(
currBox_Sta
));
LogUtil
.
debug
(
LOGGER
,
"**********定时回写入 IO ["
+
ioIp
+
"] ["
+
StartAddress
+
"]值"
+
aioBox
.
ReverseStatus
(
currBox_Sta
)
+
"】:"
);
LogUtil
.
debug
(
"**********定时回写入 IO ["
+
ioIp
+
"] ["
+
StartAddress
+
"]值"
+
aioBox
.
ReverseStatus
(
currBox_Sta
)
+
"】:"
);
}
}
catch
(
Exception
ex
)
catch
(
Exception
ex
)
{
{
LogUtil
.
error
(
LOGGER
,
"**********定时回写入 出错:"
,
ex
);
LogUtil
.
error
(
"**********定时回写入 出错:"
,
ex
);
}
}
};
};
mytimer
.
AutoReset
=
false
;
//设置是否自动重启,即自动执行多次;
mytimer
.
AutoReset
=
false
;
//设置是否自动重启,即自动执行多次;
...
@@ -307,7 +306,7 @@ namespace DeviceLibrary
...
@@ -307,7 +306,7 @@ namespace DeviceLibrary
}
}
else
else
{
{
LogUtil
.
error
(
LOGGER
,
"AIO WriteSingleDO ["
+
ioIp
+
"] ["
+
StartAddress
+
"] 出错 没有连接IO模块:"
+
ioIp
);
LogUtil
.
error
(
"AIO WriteSingleDO ["
+
ioIp
+
"] ["
+
StartAddress
+
"] 出错 没有连接IO模块:"
+
ioIp
);
}
}
}
}
catch
(
Exception
ex
)
catch
(
Exception
ex
)
...
@@ -435,7 +434,7 @@ namespace DeviceLibrary
...
@@ -435,7 +434,7 @@ namespace DeviceLibrary
}
}
catch
(
Exception
ex
)
catch
(
Exception
ex
)
{
{
LogUtil
.
error
(
LOGGER
,
" GetIOValue ["
+
configIO
.
IO_IP
+
"] ["
+
configIO
.
GetIOAddr
()
+
"] 获取数据出错:"
,
ex
);
LogUtil
.
error
(
" GetIOValue ["
+
configIO
.
IO_IP
+
"] ["
+
configIO
.
GetIOAddr
()
+
"] 获取数据出错:"
,
ex
);
}
}
return
value
;
return
value
;
}
}
...
...
source/DeviceLibrary/IO/IOManager.cs
查看文件 @
7477cfe
...
@@ -23,9 +23,16 @@ namespace DeviceLibrary
...
@@ -23,9 +23,16 @@ namespace DeviceLibrary
{
{
ConfigIO
configIo
=
LineManager
.
Config
.
DOList
[
ioType
];
ConfigIO
configIo
=
LineManager
.
Config
.
DOList
[
ioType
];
instance
.
WriteSingleDO
(
configIo
.
IO_IP
,
configIo
.
SlaveID
,
configIo
.
GetIOAddr
(),
ioValue
);
instance
.
WriteSingleDO
(
configIo
.
IO_IP
,
configIo
.
SlaveID
,
configIo
.
GetIOAddr
(),
ioValue
);
Thread
.
Sleep
(
60
);
// Thread.Sleep(60);
if
(!
IOValue
(
ioType
).
Equals
(
ioValue
))
Task
task
=
Task
.
Factory
.
StartNew
(
delegate
{
while
(!
IOValue
(
ioType
).
Equals
(
ioValue
))
{
instance
.
WriteSingleDO
(
configIo
.
IO_IP
,
configIo
.
SlaveID
,
configIo
.
GetIOAddr
(),
ioValue
);
instance
.
WriteSingleDO
(
configIo
.
IO_IP
,
configIo
.
SlaveID
,
configIo
.
GetIOAddr
(),
ioValue
);
Thread
.
Sleep
(
1000
);
}
});
task
.
Wait
();
}
}
else
else
{
{
...
...
source/DeviceLibrary/Models/ClientInfo.cs
查看文件 @
7477cfe
...
@@ -26,7 +26,7 @@ namespace DeviceLibrary.Models
...
@@ -26,7 +26,7 @@ namespace DeviceLibrary.Models
public
bool
Online
{
get
public
bool
Online
{
get
{
{
double
upInterval
=
(
DateTime
.
Now
-
lastUpdateTime
).
TotalSeconds
;
double
upInterval
=
(
DateTime
.
Now
-
lastUpdateTime
).
TotalSeconds
;
if
(
upInterval
>
5
)
if
(
upInterval
>
10
)
return
false
;
return
false
;
return
true
;
return
true
;
}
}
}
}
...
...
source/DeviceLibrary/Models/LiftInfo.cs
查看文件 @
7477cfe
...
@@ -154,6 +154,12 @@ namespace DeviceLibrary.Models
...
@@ -154,6 +154,12 @@ namespace DeviceLibrary.Models
/// <returns>true:请求成功</returns>
/// <returns>true:请求成功</returns>
public
bool
RequestUse
(
SendInInfo
lift
,
out
string
msg
)
public
bool
RequestUse
(
SendInInfo
lift
,
out
string
msg
)
{
{
msg
=
"ok"
;
if
(
lift
.
updateInfo
)
{
Status
.
Set
(
lift
);
return
true
;
}
if
(
IsIdle
(
out
msg
))
if
(
IsIdle
(
out
msg
))
{
{
ClientInfo
clientInfo
=
Clients
.
Find
(
s
=>
s
.
sourceClient
.
Equals
(
lift
.
destinationClient
));
ClientInfo
clientInfo
=
Clients
.
Find
(
s
=>
s
.
sourceClient
.
Equals
(
lift
.
destinationClient
));
...
@@ -168,11 +174,26 @@ namespace DeviceLibrary.Models
...
@@ -168,11 +174,26 @@ namespace DeviceLibrary.Models
return
false
;
return
false
;
}
}
if
(!
clientInfo
.
sourceClient
.
Equals
(
"NEOTEL-1F"
)&&
!
clientInfo
.
hasIdleAgv
)
//if (!clientInfo.sourceClient.Equals("NEOTEL-1F") && !clientInfo.hasIdleAgv)
//{
// msg = $"目标AGV系统无可用Agv:{lift.destinationClient}";
// return false;
//}
if
(
liftId
.
Equals
(
"LIFT_D2"
))
{
if
(
IOManager
.
IOValue
(
$
"{liftId}{SettingString._HasEmptyFinished}"
).
Equals
(
IO_VALUE
.
HIGH
))
{
msg
=
$
"{liftId}有移远成品空料架,暂不允许请求使用"
;
if
(
IOManager
.
IOValue
(
$
"{liftId}{SettingString._Response}"
).
Equals
(
IO_VALUE
.
HIGH
))
{
{
msg
=
$
"目标AGV系统无可用Agv:{lift.destinationClient}"
;
CloseCallFloor
();
Status
.
Clear
();
SetState
(
LiftState
.
Idle
);
OpenAGVRequest
(
false
);
}
return
false
;
return
false
;
}
}
}
if
(
IOManager
.
IOValue
(
$
"{liftId}{SettingString._AGVRequest}"
).
Equals
(
IO_VALUE
.
HIGH
))
if
(
IOManager
.
IOValue
(
$
"{liftId}{SettingString._AGVRequest}"
).
Equals
(
IO_VALUE
.
HIGH
))
{
{
if
(
IOManager
.
IOValue
(
$
"{liftId}{SettingString._Response}"
).
Equals
(
IO_VALUE
.
HIGH
)
&&
if
(
IOManager
.
IOValue
(
$
"{liftId}{SettingString._Response}"
).
Equals
(
IO_VALUE
.
HIGH
)
&&
...
@@ -205,7 +226,7 @@ namespace DeviceLibrary.Models
...
@@ -205,7 +226,7 @@ namespace DeviceLibrary.Models
{
{
SetState
(
LiftState
.
Busy
);
SetState
(
LiftState
.
Busy
);
Status
.
Set
(
lift
);
Status
.
Set
(
lift
);
OpenAGVLeave
(
5
);
//
OpenAGVLeave(5);
msg
=
"ok"
;
msg
=
"ok"
;
return
true
;
return
true
;
}
}
...
@@ -229,6 +250,25 @@ namespace DeviceLibrary.Models
...
@@ -229,6 +250,25 @@ namespace DeviceLibrary.Models
/// <returns></returns>
/// <returns></returns>
public
bool
AGVLeave
(
DoorInfo
doorInfo
)
public
bool
AGVLeave
(
DoorInfo
doorInfo
)
{
{
if
(
doorInfo
.
force
)
{
Task
.
Factory
.
StartNew
(
delegate
{
OpenAGVLeave
(
true
);
Thread
.
Sleep
(
10000
);
OpenAGVLeave
(
false
);
//关闭送料信号
CloseSendFloor
(
doorInfo
);
//关闭呼叫信号
CloseCallFloor
();
OpenAGVRequest
(
false
);
Status
.
Clear
();
SetState
(
LiftState
.
Idle
);
LogUtil
.
info
(
$
"AGV离开,【{doorInfo}】取出电梯内的成品料"
);
});
return
true
;
}
if
(
CanControl
(
doorInfo
))
if
(
CanControl
(
doorInfo
))
{
{
...
@@ -241,7 +281,7 @@ namespace DeviceLibrary.Models
...
@@ -241,7 +281,7 @@ namespace DeviceLibrary.Models
Status
.
Clear
();
Status
.
Clear
();
SetState
(
LiftState
.
Idle
);
SetState
(
LiftState
.
Idle
);
//是否继续使用电梯
//是否继续使用电梯
OpenAGVRequest
(
doorInfo
.
continueU
se
);
OpenAGVRequest
(
fal
se
);
LogUtil
.
info
(
$
"AGV离开,【{doorInfo}】取出电梯内的产品,清除电梯占用"
);
LogUtil
.
info
(
$
"AGV离开,【{doorInfo}】取出电梯内的产品,清除电梯占用"
);
}
}
...
@@ -251,16 +291,51 @@ namespace DeviceLibrary.Models
...
@@ -251,16 +291,51 @@ namespace DeviceLibrary.Models
CloseCallFloor
(
doorInfo
);
CloseCallFloor
(
doorInfo
);
//AGV离开信号,使得门关
//AGV离开信号,使得门关
CloseDoor
();
CloseDoor
();
if
(
doorInfo
.
continueUse
)
{
if
(!
Status
.
destinationFloor
.
Equals
(-
1
))
if
(!
Status
.
destinationFloor
.
Equals
(-
1
))
{
{
RunToFloor
(
Status
.
destinationFloor
,
doorInfo
);
RunToFloor
(
Status
.
destinationFloor
,
doorInfo
);
LogUtil
.
info
(
$
"AGV离开,【{doorInfo}】将产品送入电梯"
);
LogUtil
.
info
(
$
"AGV离开,【{doorInfo}】将产品送入电梯"
);
}
}
}
}
else
{
Status
.
Clear
();
SetState
(
LiftState
.
Idle
);
CloseFinishedFullSig
();
//是否继续使用电梯
OpenAGVRequest
(
false
);
LogUtil
.
info
(
$
"AGV离开,【{doorInfo}】不继续使用电梯,清除电梯占用"
);
}
}
return
true
;
return
true
;
}
}
return
false
;
return
false
;
}
}
public
bool
OpenFinishedFullSig
()
{
if
(!
liftId
.
Contains
(
"D2"
))
{
LogUtil
.
info
(
$
"{liftId}无送满料成品信号"
);
return
false
;
}
IOManager
.
IOMove
(
$
"{liftId}{SettingString._HasFullFinished}"
,
IO_VALUE
.
HIGH
);
LogUtil
.
info
(
$
"{liftId}打开送满料成品信号"
);
return
true
;
}
public
bool
CloseFinishedFullSig
()
{
if
(!
liftId
.
Contains
(
"D2"
))
{
LogUtil
.
info
(
$
"{liftId}无送满料成品信号"
);
return
false
;
}
IOManager
.
IOMove
(
$
"{liftId}{SettingString._HasFullFinished}"
,
IO_VALUE
.
LOW
);
LogUtil
.
info
(
$
"{liftId}关闭送满料成品信号"
);
return
true
;
}
/// <summary>
/// <summary>
/// 运行到指定楼层(送料信号)
/// 运行到指定楼层(送料信号)
/// </summary>
/// </summary>
...
@@ -391,9 +466,16 @@ namespace DeviceLibrary.Models
...
@@ -391,9 +466,16 @@ namespace DeviceLibrary.Models
{
{
floor
=
4
;
floor
=
4
;
}
}
if
(
liftId
.
Contains
(
"D2"
))
{
if
(
IOManager
.
IOValue
(
$
"{liftId}{SettingString._HasEmptyFinished}"
).
Equals
(
IO_VALUE
.
HIGH
))
Status
.
HasEmptyFinishedShelf
=
true
;
else
Status
.
HasEmptyFinishedShelf
=
false
;
}
Status
.
floor
=
floor
;
Status
.
floor
=
floor
;
if
(
IOManager
.
IOValue
(
$
"{liftId}{SettingString._DoorOpen}"
).
Equals
(
IO_VALUE
.
HIGH
))
if
(
IOManager
.
IOValue
(
$
"{liftId}{SettingString._DoorOpen}"
).
Equals
(
IO_VALUE
.
HIGH
))
// && IOManager.IOValue($"{liftId}{SettingString._Response}").Equals(IO_VALUE.HIGH)
{
{
Status
.
door
=
"opened"
;
Status
.
door
=
"opened"
;
RunState
=
LiftRunState
.
DoorOpen
;
RunState
=
LiftRunState
.
DoorOpen
;
...
...
source/DeviceLibrary/Models/Service/Request/DoorInfo.cs
查看文件 @
7477cfe
...
@@ -26,7 +26,8 @@ namespace DeviceLibrary.Models.Service.Request
...
@@ -26,7 +26,8 @@ namespace DeviceLibrary.Models.Service.Request
/// <summary>
/// <summary>
/// 继续使用电梯
/// 继续使用电梯
/// </summary>
/// </summary>
public
bool
continueUse
{
get
;
set
;}=
false
;
public
bool
continueUse
{
get
;
set
;}=
true
;
public
bool
force
{
get
;
set
;
}
=
false
;
public
override
string
ToString
()
public
override
string
ToString
()
{
{
return
$
"{sourceClient}[{sourceFloor}][continue={continueUse}]:{liftId}"
;
return
$
"{sourceClient}[{sourceFloor}][continue={continueUse}]:{liftId}"
;
...
...
source/DeviceLibrary/Models/Service/Request/FinishedInfo.cs
0 → 100644
查看文件 @
7477cfe
using
System
;
using
System.Collections.Generic
;
using
System.Linq
;
using
System.Text
;
using
System.Threading.Tasks
;
namespace
DeviceLibrary.Models.Service.Request
{
public
class
FinishedInfo
{
/// <summary>
/// 电梯标识
/// </summary>
public
string
liftId
{
get
;
set
;
}
=
""
;
public
bool
HasFullFinishedShelf
{
get
;
set
;
}
=
false
;
}
}
source/DeviceLibrary/Models/Service/Request/SendInInfo.cs
查看文件 @
7477cfe
...
@@ -11,6 +11,7 @@ namespace DeviceLibrary.Models.Service.Request
...
@@ -11,6 +11,7 @@ namespace DeviceLibrary.Models.Service.Request
/// </summary>
/// </summary>
public
class
SendInInfo
public
class
SendInInfo
{
{
/// <summary>
/// <summary>
/// 电梯标识
/// 电梯标识
/// </summary>
/// </summary>
...
@@ -39,7 +40,10 @@ namespace DeviceLibrary.Models.Service.Request
...
@@ -39,7 +40,10 @@ namespace DeviceLibrary.Models.Service.Request
/// 目的地点位
/// 目的地点位
/// </summary>
/// </summary>
public
string
destinationPoint
{
get
;
set
;
}
public
string
destinationPoint
{
get
;
set
;
}
/// <summary>
/// 更新电梯信息
/// </summary>
public
bool
updateInfo
{
get
;
set
;
}
=
false
;
public
override
string
ToString
()
public
override
string
ToString
()
{
{
return
$
"请求使用电梯[{liftId}]:[{sourceClient}][{sourceFloor}][{sourcePoint}]-->"
+
return
$
"请求使用电梯[{liftId}]:[{sourceClient}][{sourceFloor}][{sourcePoint}]-->"
+
...
...
source/DeviceLibrary/Models/Service/Response/Status.cs
查看文件 @
7477cfe
...
@@ -42,6 +42,10 @@ namespace DeviceLibrary.Models.Service.Response
...
@@ -42,6 +42,10 @@ namespace DeviceLibrary.Models.Service.Response
/// 目的地点位
/// 目的地点位
/// </summary>
/// </summary>
public
string
destinationPoint
{
get
;
set
;
}
=
""
;
public
string
destinationPoint
{
get
;
set
;
}
=
""
;
/// <summary>
/// 成品空架子标识
/// </summary>
public
bool
HasEmptyFinishedShelf
{
get
;
set
;
}
=
false
;
[
JsonIgnore
]
[
JsonIgnore
]
public
bool
Occupied
{
get
{
return
!
string
.
IsNullOrEmpty
(
sourceClient
);
}
}
public
bool
Occupied
{
get
{
return
!
string
.
IsNullOrEmpty
(
sourceClient
);
}
}
...
...
source/DeviceLibrary/Service/IService.cs
查看文件 @
7477cfe
...
@@ -35,6 +35,9 @@ namespace DeviceLibrary.Service
...
@@ -35,6 +35,9 @@ namespace DeviceLibrary.Service
[
OperationContract
]
[
OperationContract
]
[
WebInvoke
(
UriTemplate
=
"/lift/status"
,
Method
=
"POST"
,
BodyStyle
=
WebMessageBodyStyle
.
Bare
,
RequestFormat
=
WebMessageFormat
.
Json
,
ResponseFormat
=
WebMessageFormat
.
Json
)]
[
WebInvoke
(
UriTemplate
=
"/lift/status"
,
Method
=
"POST"
,
BodyStyle
=
WebMessageBodyStyle
.
Bare
,
RequestFormat
=
WebMessageFormat
.
Json
,
ResponseFormat
=
WebMessageFormat
.
Json
)]
StatusResult
status
(
Stream
stream
);
StatusResult
status
(
Stream
stream
);
[
OperationContract
]
[
WebInvoke
(
UriTemplate
=
"/lift/finishedProdcut"
,
Method
=
"POST"
,
BodyStyle
=
WebMessageBodyStyle
.
Bare
,
RequestFormat
=
WebMessageFormat
.
Json
,
ResponseFormat
=
WebMessageFormat
.
Json
)]
Result
finishedProdcut
(
Stream
stream
);
}
}
[
DataContract
]
[
DataContract
]
internal
class
Result
internal
class
Result
...
...
source/DeviceLibrary/Service/Services.cs
查看文件 @
7477cfe
...
@@ -118,6 +118,27 @@ namespace DeviceLibrary.Service
...
@@ -118,6 +118,27 @@ namespace DeviceLibrary.Service
}
}
return
result
;
return
result
;
}
}
public
Result
finishedProdcut
(
Stream
stream
)
{
Result
result
=
new
Result
();
StreamReader
sr
=
new
StreamReader
(
stream
);
string
s
=
sr
.
ReadToEnd
();
FinishedInfo
info
=
JsonHelper
.
DeserializeJsonToObject
<
FinishedInfo
>(
s
);
if
(
info
==
null
)
{
result
.
code
=
-
1
;
result
.
msg
=
$
"解析异常:{s}"
;
Log
.
Error
(
$
"sendIn 解析异常:{s}"
);
}
else
{
Context
.
LiftContext
.
UpdateFinishedInfo
(
info
,
out
string
msg
);
LogInfo
(
$
"成品入库状态接口被调用:{info},[{msg}]"
);
result
.
msg
=
msg
;
}
return
result
;
}
}
}
public
class
LiftService
public
class
LiftService
...
...
source/LoadCVSLibrary/Config/bean/Config.cs
查看文件 @
7477cfe
...
@@ -63,7 +63,11 @@ namespace LoadCSVLibrary
...
@@ -63,7 +63,11 @@ namespace LoadCSVLibrary
/// </summary>
/// </summary>
[
ConfigProAttribute
(
"LIFT_D2_InRun"
,
false
)]
[
ConfigProAttribute
(
"LIFT_D2_InRun"
,
false
)]
public
string
LIFT_D2_InRun
{
get
;
set
;
}
public
string
LIFT_D2_InRun
{
get
;
set
;
}
/// <summary>
/// DI,D2-运行中,D2_InRun,6,PRO_AOI_IP_1,0,D2-运行中,X27,X27,0
/// </summary>
[
ConfigProAttribute
(
"LIFT_D2__HasEmptyFinished"
,
false
)]
public
string
LIFT_D2__HasEmptyFinished
{
get
;
set
;
}
/// <summary>
/// <summary>
/// DO,D2-AGV请求,D2_AGVRequest,0,PRO_AOI_IP_1,0,D2-AGV请求,Y21,Y21,0
/// DO,D2-AGV请求,D2_AGVRequest,0,PRO_AOI_IP_1,0,D2-AGV请求,Y21,Y21,0
...
@@ -105,7 +109,11 @@ namespace LoadCSVLibrary
...
@@ -105,7 +109,11 @@ namespace LoadCSVLibrary
/// </summary>
/// </summary>
[
ConfigProAttribute
(
"LIFT_D2_RunToFourth"
,
false
)]
[
ConfigProAttribute
(
"LIFT_D2_RunToFourth"
,
false
)]
public
string
LIFT_D2_RunToFourth
{
get
;
set
;
}
public
string
LIFT_D2_RunToFourth
{
get
;
set
;
}
/// <summary>
/// DO,D2-送料信号4F,D2_RunToFourth,7,PRO_AOI_IP_1,0,D2-送料信号4F,Y27,Y27,0
/// </summary>
[
ConfigProAttribute
(
"LIFT_D2__HasFullFinished"
,
false
)]
public
string
LIFT_D2__HasFullFinished
{
get
;
set
;
}
/// <summary>
/// <summary>
/// DI,C1-任务应答,LIFT_C1_Response,0,PRO_AOI_IP_2,0,C1-任务应答,X31,X31,0
/// DI,C1-任务应答,LIFT_C1_Response,0,PRO_AOI_IP_2,0,C1-任务应答,X31,X31,0
/// </summary>
/// </summary>
...
...
source/LoadCVSLibrary/Config/bean/IO_Type.cs
查看文件 @
7477cfe
...
@@ -56,6 +56,10 @@ namespace LoadCSVLibrary
...
@@ -56,6 +56,10 @@ namespace LoadCSVLibrary
/// </summary>
/// </summary>
public
static
string
LIFT_D2_InRun
=
"LIFT_D2_InRun"
;
public
static
string
LIFT_D2_InRun
=
"LIFT_D2_InRun"
;
/// <summary>
/// <summary>
/// DI,D2-回收空成品料架,LIFT_D2__HasEmptyFinished,7,PRO_AOI_IP_1,0,D2-回收空成品料架,X28,X28,0
/// </summary>
public
static
string
LIFT_D2_HasEmptyFinished
=
"LIFT_D2_HasEmptyFinished"
;
/// <summary>
/// DO,D2-AGV请求,D2_AGVRequest,0,PRO_AOI_IP_1,0,D2-AGV请求,Y21,Y21,0
/// DO,D2-AGV请求,D2_AGVRequest,0,PRO_AOI_IP_1,0,D2-AGV请求,Y21,Y21,0
/// </summary>
/// </summary>
public
static
string
LIFT_D2_AGVRequest
=
"LIFT_D2_AGVRequest"
;
public
static
string
LIFT_D2_AGVRequest
=
"LIFT_D2_AGVRequest"
;
...
@@ -89,6 +93,10 @@ namespace LoadCSVLibrary
...
@@ -89,6 +93,10 @@ namespace LoadCSVLibrary
///DO,D2-送料信号4F,D2_RunToFourth,7,PRO_AOI_IP_1,0,D2-送料信号4F,Y27,Y27,0
///DO,D2-送料信号4F,D2_RunToFourth,7,PRO_AOI_IP_1,0,D2-送料信号4F,Y27,Y27,0
/// </summary>
/// </summary>
public
static
string
LIFT_D2_RunToFourth
=
"LIFT_D2_RunToFourth"
;
public
static
string
LIFT_D2_RunToFourth
=
"LIFT_D2_RunToFourth"
;
/// <summary>
/// DO,D2-送满成品料架,LIFT_D2__HasFullFinished,8,PRO_AOI_IP_1,0,D2-送满成品料架,Y29,Y29,0
/// </summary>
public
static
string
LIFT_D2_HasFullFinished
=
"LIFT_D2_HasFullFinished"
;
#
endregion
#
endregion
#
region
C1
电梯
#
region
C1
电梯
...
...
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论