Skip to content
切换导航条
切换导航条
当前项目
正在载入...
登录
张东亮
/
SO1057-XLRStore
转到一个项目
切换导航栏
切换导航栏固定状态
项目
群组
代码片段
帮助
项目
活动
版本库
流水线
图表
问题
0
合并请求
0
维基
网络
创建新的问题
作业
提交
问题看板
文件
提交
网络
比较
分支
标签
Commit 919a9f63
由
张东亮
编写于
2025-09-10 13:46:35 +0800
浏览文件
选项
浏览文件
标签
下载
电子邮件补丁
差异文件
温湿度不在范围提示
1 个父辈
43f6fe96
显示空白字符变更
内嵌
并排
正在显示
7 个修改的文件
包含
92 行增加
和
36 行删除
source/Common/bean/Bean.cs
source/DeviceLibrary/manager/StoreManager.cs
source/DeviceLibrary/storeBean/EquipBase.cs
source/DeviceLibrary/storeBean/boxBean/BoxEquip.cs
source/DeviceLibrary/storeBean/boxBean/BoxEquip_ConnectServerTimer.cs
source/DeviceLibrary/storeBean/boxBean/Humiture/HumitureBean.cs
source/DeviceLibrary/storeBean/boxBean/Humiture/HumitureController.cs
source/Common/bean/Bean.cs
查看文件 @
919a9f6
...
...
@@ -238,11 +238,12 @@ namespace OnlineStore.Common
/// 湿度报警值
/// </summary>
public
static
string
maxHumidity
=
"humi"
;
public
static
string
minTemperature
=
"minTemp"
;
/// <summary>
/// 温度报警值
/// </summary>
public
static
string
maxTemperature
=
"temp"
;
public
static
string
minHumidity
=
"minHumi"
;
/// <summary>
/// urgentReel: true 表示紧急料,需要出到料串上
/// </summary>
...
...
source/DeviceLibrary/manager/StoreManager.cs
查看文件 @
919a9f6
...
...
@@ -31,6 +31,21 @@ namespace OnlineStore.DeviceLibrary
public
static
XLRStoreBean
XLRStore
=
null
;
public
static
XLRStore_Config
Config
=
null
;
public
static
Dictionary
<
int
,
DeviceConfig
>
allConfigMap
=
null
;
public
static
double
averageHumidity
()
{
var
ss
=
HumitureBean
.
GetHumitureParams
().
FindAll
(
s
=>
s
.
Humidity
>
0
);
if
(
ss
!=
null
&&
ss
.
Count
>
0
)
return
ss
.
Average
(
x
=>
x
.
Humidity
);
return
0
;
}
public
static
double
averageTemp
()
{
var
ss
=
HumitureBean
.
GetHumitureParams
().
FindAll
(
s
=>
s
.
Temperate
>
0
);
if
(
ss
!=
null
&&
ss
.
Count
>
0
)
return
ss
.
Average
(
x
=>
x
.
Temperate
);
return
0
;
}
public
StoreManager
()
{
}
...
...
source/DeviceLibrary/storeBean/EquipBase.cs
查看文件 @
919a9f6
...
...
@@ -518,6 +518,7 @@ namespace OnlineStore.DeviceLibrary
}
protected
AlarmType
alarmRedLedType
=
AlarmType
.
AxisAlarm
;
protected
bool
isHumiTemOverlimit
=
false
;
protected
void
LedProcess
(
object
sender
,
ElapsedEventArgs
e
)
{
try
...
...
@@ -539,12 +540,12 @@ namespace OnlineStore.DeviceLibrary
{
isNeedAlarmLed
=
true
;
}
else
if
(
alarmType
.
Equals
(
AlarmType
.
None
).
Equals
(
false
))
else
if
(
alarmType
.
Equals
(
AlarmType
.
None
).
Equals
(
false
)
||
isHumiTemOverlimit
)
{
yellowMove
=
true
;
}
if
(
isNoAirpressure_Check
||
isInSuddenDown
||
alarmType
>=
alarmRedLedType
)
if
(
isNoAirpressure_Check
||
isInSuddenDown
||
alarmType
>=
alarmRedLedType
||
isHumiTemOverlimit
)
{
isNeedAlarmLed
=
true
;
}
...
...
source/DeviceLibrary/storeBean/boxBean/BoxEquip.cs
查看文件 @
919a9f6
...
...
@@ -1018,6 +1018,19 @@ namespace OnlineStore.DeviceLibrary
//// Msg.add(input.WarnMsg, MsgLevel.warning);
////}
}
if
(
StoreManager
.
averageHumidity
()
>
HumitureBean
.
Max_Humidity
||
StoreManager
.
averageHumidity
()
<
HumitureBean
.
Min_Humidity
||
StoreManager
.
averageTemp
()
>
HumitureBean
.
Max_Temperature
||
StoreManager
.
averageTemp
()
<
HumitureBean
.
Min_Temperature
)
{
isHumiTemOverlimit
=
true
;
Msg
.
add
(
$
"温湿度超出范围,当前温度:{StoreManager.averageTemp()},范围:{HumitureBean.Min_Temperature}~{HumitureBean.Max_Temperature},"
+
$
"当前湿度:{StoreManager.averageHumidity()},范围:{HumitureBean.Min_Humidity}~{HumitureBean.Max_Humidity}"
,
MsgLevel
.
warning
);
}
else
{
isHumiTemOverlimit
=
false
;
}
}
catch
(
Exception
ex
)
{
LogUtil
.
error
(
"boxequip BaseTimerProcess"
,
ex
);
}
finally
...
...
source/DeviceLibrary/storeBean/boxBean/BoxEquip_ConnectServerTimer.cs
查看文件 @
919a9f6
...
...
@@ -252,14 +252,16 @@ namespace OnlineStore.DeviceLibrary
if
(
humitureParams
!=
null
)
{
List
<
Dictionary
<
string
,
string
>>
valuePairs
=
new
List
<
Dictionary
<
string
,
string
>>();
boxStatus
.
humidity
=
StoreManager
.
averageHumidity
().
ToString
();
boxStatus
.
temperature
=
StoreManager
.
averageTemp
().
ToString
();
for
(
int
i
=
0
;
i
<
humitureParams
.
Count
;
i
++)
{
boxStatus
.
humidity
=
humitureParams
[
i
].
Humidity
.
ToString
();
boxStatus
.
temperature
=
humitureParams
[
i
].
Temperate
.
ToString
();
Dictionary
<
string
,
string
>
vals
=
new
Dictionary
<
string
,
string
>();
vals
.
Add
(
"id"
,
(
i
+
1
).
ToString
());
vals
.
Add
(
"humidity"
,
humitureParams
[
i
].
Humidity
.
ToString
());
vals
.
Add
(
"temperature"
,
humitureParams
[
i
].
Temperate
.
ToString
())
;
Dictionary
<
string
,
string
>
vals
=
new
Dictionary
<
string
,
string
>
{
{
"id"
,
(
i
+
1
).
ToString
()
},
{
"humidity"
,
humitureParams
[
i
].
Humidity
.
ToString
()
},
{
"temperature"
,
humitureParams
[
i
].
Temperate
.
ToString
()
}
}
;
valuePairs
.
Add
(
vals
);
}
boxStatus
.
data
.
Add
(
ParamDefine
.
humiAndtempList
,
JsonHelper
.
SerializeObject
(
valuePairs
));
...
...
source/DeviceLibrary/storeBean/boxBean/Humiture/HumitureBean.cs
查看文件 @
919a9f6
...
...
@@ -11,19 +11,19 @@ namespace OnlineStore.DeviceLibrary
private
string
Name
=
""
;
public
static
List
<
HumitureParam
>
LastData
=
new
List
<
HumitureParam
>();
static
List
<
HumitureBean
>
humitureBeans
=
new
List
<
HumitureBean
>();
internal
HumitureBean
(
string
port
,
string
deviceName
)
internal
HumitureBean
(
string
port
,
string
deviceName
)
{
this
.
Name
=
deviceName
;
this
.
PortName
=
port
;
HumitureController
.
Init
(
this
.
PortName
);
}
public
static
void
LoadHumitures
(
string
[]
ports
,
string
deviceName
)
public
static
void
LoadHumitures
(
string
[]
ports
,
string
deviceName
)
{
for
(
int
i
=
0
;
i
<
ports
.
Length
;
i
++)
{
humitureBeans
.
Add
(
new
HumitureBean
(
ports
[
i
],
deviceName
+
(
i
+
1
)));
HumitureParam
param
=
new
HumitureParam
(
0
,
0
,
100
);
param
.
DeviceAddress
=
ports
[
i
];
param
.
DeviceAddress
=
ports
[
i
];
LastData
.
Add
(
param
);
}
}
...
...
@@ -34,23 +34,23 @@ namespace OnlineStore.DeviceLibrary
return
param
;
}
static
void
updateData
(
string
port
,
HumitureParam
param
)
static
void
updateData
(
string
port
,
HumitureParam
param
)
{
var
find
=
LastData
.
Find
(
s
=>
port
.
Equals
(
s
.
DeviceAddress
));
if
(
find
!=
null
)
var
find
=
LastData
.
Find
(
s
=>
port
.
Equals
(
s
.
DeviceAddress
));
if
(
find
!=
null
)
{
find
.
Temperate
=
param
.
Temperate
;
find
.
UpdateTime
=
param
.
UpdateTime
;
find
.
Humidity
=
param
.
Humidity
;
find
.
OxygenV
=
param
.
OxygenV
;
find
.
Temperate
=
param
.
Temperate
;
find
.
UpdateTime
=
param
.
UpdateTime
;
find
.
Humidity
=
param
.
Humidity
;
find
.
OxygenV
=
param
.
OxygenV
;
}
}
public
static
double
GetMinOxygenV
()
{
double
maxV
=
0.0
;
double
maxV
=
0.0
;
foreach
(
var
item
in
humitureBeans
)
{
double
val
=
item
.
QueryData
().
OxygenV
;
double
val
=
item
.
QueryData
().
OxygenV
;
if
(
val
>
maxV
)
{
maxV
=
val
;
...
...
@@ -78,17 +78,36 @@ namespace OnlineStore.DeviceLibrary
LogUtil
.
error
(
"转换温湿度失败:"
+
ex
.
ToString
());
}
}
if
(
data
!=
null
&&
data
.
ContainsKey
(
ParamDefine
.
minHumidity
)
&&
data
.
ContainsKey
(
ParamDefine
.
minTemperature
))
{
string
maxHumidity
=
data
[
ParamDefine
.
minHumidity
];
string
maxTemp
=
data
[
ParamDefine
.
minTemperature
];
LogUtil
.
info
(
"收到服务器温湿度预警值:minHumidity="
+
maxHumidity
+
",minTemperature="
+
maxTemp
);
try
{
Min_Humidity
=
(
float
)
Convert
.
ToDouble
(
maxHumidity
);
Min_Temperature
=
(
float
)
Convert
.
ToDouble
(
maxTemp
);
LogUtil
.
info
(
"保存温湿度预警值:Min_Humidity="
+
Min_Humidity
+
",Min_Temperature="
+
Min_Temperature
);
}
catch
(
Exception
ex
)
{
LogUtil
.
error
(
"转换温湿度失败:"
+
ex
.
ToString
());
}
}
}
#
region
温湿度处理
/// <summary>
/// 湿度标准,超过后需要报警
/// </summary>
static
float
Max_Humidity
=
0
;
public
static
float
Max_Humidity
=
0
;
/// <summary>
/// 温度标准,超过后需要报警
/// </summary>
static
float
Max_Temperature
=
0
;
public
static
float
Max_Temperature
=
0
;
public
static
float
Min_Humidity
=
0
;
public
static
float
Min_Temperature
=
0
;
private
static
bool
IsInBlowing
=
false
;
private
static
DateTime
LastBeginBlowTime
=
DateTime
.
Now
;
private
static
DateTime
LastEndBlowTime
=
new
DateTime
(
1997
,
1
,
1
);
...
...
@@ -106,32 +125,32 @@ namespace OnlineStore.DeviceLibrary
double
curMinTemp
=
double
.
MaxValue
;
foreach
(
var
item
in
humitureBeans
)
{
HumitureParam
param
=
item
.
QueryData
();
if
(
param
.
Humidity
>
curMaxHumidity
)
HumitureParam
param
=
item
.
QueryData
();
if
(
param
.
Humidity
>
curMaxHumidity
)
{
curMaxHumidity
=
param
.
Humidity
;
curMaxHumidity
=
param
.
Humidity
;
}
if
(
param
.
Temperate
<
curMinTemp
)
if
(
param
.
Temperate
<
curMinTemp
)
{
curMinTemp
=
param
.
Temperate
;
curMinTemp
=
param
.
Temperate
;
}
}
HumidityProcess
(
box
,
curMaxHumidity
,
curMinTemp
);
HumidityProcess
(
box
,
curMaxHumidity
,
curMinTemp
);
}
public
static
List
<
HumitureParam
>
GetHumitureParams
()
{
return
LastData
;
}
internal
static
void
HumidityProcess
(
BoxEquip
box
,
double
currMaxHumidity
,
double
curMinTemp
)
internal
static
void
HumidityProcess
(
BoxEquip
box
,
double
currMaxHumidity
,
double
curMinTemp
)
{
if
(
IOManager
.
IOValue
(
IO_Type
.
Air_OpenValve
,
1
).
Equals
(
IO_VALUE
.
HIGH
)
||
IOManager
.
IOValue
(
IO_Type
.
LeftDoor_Limit
,
2
).
Equals
(
IO_VALUE
.
LOW
)
||
IOManager
.
IOValue
(
IO_Type
.
RightDoor_Limit
,
2
).
Equals
(
IO_VALUE
.
LOW
)
||
IOManager
.
IOValue
(
IO_Type
.
BackDoor_Limit
,
2
).
Equals
(
IO_VALUE
.
LOW
))
{
IOManager
.
IOMove
(
IO_Type
.
Nitrogen_OpenValve
,
IO_VALUE
.
HIGH
,
1
);
IOManager
.
IOMove
(
IO_Type
.
Nitrogen_OpenValve
,
IO_VALUE
.
HIGH
,
1
);
return
;
}
try
{
if
((
DateTime
.
Now
-
preLogTime
).
TotalSeconds
>
(
8
+
box
.
DeviceID
))
if
((
DateTime
.
Now
-
preLogTime
).
TotalSeconds
>
(
8
+
box
.
DeviceID
))
{
preLogTime
=
DateTime
.
Now
;
//用最大的湿度判断是否需要吹气,开始吹气的值=发过来的值-4
...
...
@@ -141,7 +160,7 @@ namespace OnlineStore.DeviceLibrary
float
startBlowHumidity
=
Max_Humidity
-
StartBlowValue
;
float
stopBlowHumidity
=
Max_Humidity
-
StopBlowValue
;
IsInBlowing
=
IOManager
.
DOValue
(
IO_Type
.
Nitrogen_OpenValve
,
1
).
Equals
(
IO_VALUE
.
LOW
);
IsInBlowing
=
IOManager
.
DOValue
(
IO_Type
.
Nitrogen_OpenValve
,
1
).
Equals
(
IO_VALUE
.
LOW
);
//判断是否需要吹气
if
(
startBlowHumidity
>
0
&&
startBlowHumidity
<
currMaxHumidity
&&
IsInBlowing
.
Equals
(
false
))
{
...
...
source/DeviceLibrary/storeBean/boxBean/Humiture/HumitureController.cs
查看文件 @
919a9f6
...
...
@@ -117,7 +117,7 @@ namespace OnlineStore.DeviceLibrary
// else
// data[0] += humidityadjust;
//}
data
[
0
]
=
ProcessHumity
(
data
[
0
]);
data
[
0
]
=
ProcessHumity
(
port
,
data
[
0
]);
//double tempadjust = (double)ConfigAppSettings.GetNumValue(Setting_Init.Device_TemptureAdjust);
//double templimited = (double)ConfigAppSettings.GetNumValue(Setting_Init.Device_TemptureLimited);
//if (tempadjust != 0 && templimited != 0)
...
...
@@ -174,7 +174,7 @@ namespace OnlineStore.DeviceLibrary
/// </summary>
/// <param name="nowHumity"></param>
/// <returns></returns>
private
static
double
ProcessHumity
(
double
nowHumity
)
private
static
double
ProcessHumity
(
string
port
,
double
nowHumity
)
{
double
temp
=
nowHumity
;
double
minVal
=
ConfigHelper
.
Config
.
Get
(
"HumidityThreshold_Min"
,
5
);
...
...
@@ -189,7 +189,12 @@ namespace OnlineStore.DeviceLibrary
{
temp
=
(
nowHumity
-
minVal
)
*
coefVal
+
minVal
;
}
else
{
var
calib
=
ConfigHelper
.
Config
.
Get
(
$
"HumidityCalib_{port}"
,
0
);
nowHumity
+=
calib
;
return
nowHumity
;
}
return
Math
.
Round
(
temp
,
1
);
}
/// <summary>
...
...
编写
预览
支持
Markdown
格式
附加文件
你添加了
0
人
到此讨论。请谨慎行事。
Finish editing this message first!
Cancel
请
注册
或
登录
后发表评论