Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in
Toggle navigation
P
PastureGateway
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
steven.sha
PastureGateway
Commits
fc5bbaa0
Commit
fc5bbaa0
authored
Jun 19, 2019
by
shaxuezheng
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Automatic deployment
parent
de89515f
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
249 additions
and
178 deletions
+249
-178
AutoControl.cs
ModbusDemo/application/AutoControl.cs
+122
-18
Form1.cs
ModbusDemo/windows/Form1.cs
+127
-160
No files found.
ModbusDemo/application/AutoControl.cs
View file @
fc5bbaa0
...
@@ -8,6 +8,7 @@ using ModbusDemo.windows;
...
@@ -8,6 +8,7 @@ using ModbusDemo.windows;
using
ModbusDemo.Modular
;
using
ModbusDemo.Modular
;
using
ModbusDemo.MessageFormat
;
using
ModbusDemo.MessageFormat
;
using
ModbusDemo.Common
;
using
ModbusDemo.Common
;
using
System.IO
;
namespace
ModbusDemo.application
namespace
ModbusDemo.application
{
{
...
@@ -37,6 +38,16 @@ namespace ModbusDemo.application
...
@@ -37,6 +38,16 @@ namespace ModbusDemo.application
public
int
modularx
;
public
int
modularx
;
public
byte
modbusID
;
public
byte
modbusID
;
}
}
public
static
byte
[]
EmodbusId
=
{
5
,
51
};
public
static
byte
[]
WmodbusId
=
{
35
,
31
};
public
static
byte
[]
LevelmodbusID
=
{
6
,
13
};
public
static
bool
[]
state_ON
=
{
true
,
true
,
true
,
true
,
true
,
true
};
public
static
bool
[]
state_OFF
=
{
false
,
false
,
false
,
false
,
false
,
false
};
public
static
bool
timerun
=
false
;
public
static
bool
Wtimerun
=
false
;
static
System
.
Diagnostics
.
Stopwatch
ETime
=
new
System
.
Diagnostics
.
Stopwatch
();
static
System
.
Diagnostics
.
Stopwatch
WTime
=
new
System
.
Diagnostics
.
Stopwatch
();
private
static
readonly
int
Runtimeout
=
1
;
public
static
void
CriticalValueMonitoring
(
ref
Control
usControl
,
bool
Enabl
,
string
Affiliation
,
out
Control
control
)
public
static
void
CriticalValueMonitoring
(
ref
Control
usControl
,
bool
Enabl
,
string
Affiliation
,
out
Control
control
)
{
{
...
@@ -75,6 +86,7 @@ namespace ModbusDemo.application
...
@@ -75,6 +86,7 @@ namespace ModbusDemo.application
}
}
control
=
usControl
;
control
=
usControl
;
}
}
public
static
double
Meanfilter
(
double
Value
)
public
static
double
Meanfilter
(
double
Value
)
{
{
double
[]
MeanValue
=
new
double
[
10
];
double
[]
MeanValue
=
new
double
[
10
];
...
@@ -85,15 +97,6 @@ namespace ModbusDemo.application
...
@@ -85,15 +97,6 @@ namespace ModbusDemo.application
Value
=
MeanValue
[
0
]
*
0.1
+
MeanValue
[
5
]
*
0.3
+
MeanValue
[
9
]
*
0.6
;
Value
=
MeanValue
[
0
]
*
0.1
+
MeanValue
[
5
]
*
0.3
+
MeanValue
[
9
]
*
0.6
;
return
Value
;
return
Value
;
}
}
public
static
byte
[]
EmodbusId
={
5
,
51
};
public
static
byte
[]
WmodbusId
=
{
35
,
31
};
public
static
bool
[]
state_ON
=
{
true
,
true
,
true
,
true
,
true
,
true
};
public
static
bool
[]
state_OFF
=
{
false
,
false
,
false
,
false
,
false
,
false
};
public
static
bool
timerun
=
false
;
public
static
bool
Wtimerun
=
false
;
static
System
.
Diagnostics
.
Stopwatch
ETime
=
new
System
.
Diagnostics
.
Stopwatch
();
static
System
.
Diagnostics
.
Stopwatch
WTime
=
new
System
.
Diagnostics
.
Stopwatch
();
public
static
void
Automatic_control
(
bool
Eenabl
,
bool
Wenabl
)
public
static
void
Automatic_control
(
bool
Eenabl
,
bool
Wenabl
)
{
{
...
@@ -139,7 +142,7 @@ namespace ModbusDemo.application
...
@@ -139,7 +142,7 @@ namespace ModbusDemo.application
ETime
.
Start
();
// 开始监视运行时间
ETime
.
Start
();
// 开始监视运行时间
timerun
=
true
;
timerun
=
true
;
}
}
if
(
timespan
.
TotalMinutes
>
2
)
if
(
timespan
.
TotalMinutes
>
Runtimeout
)
{
{
ModualAlarm
.
vSet_Modual_Alarm
(
EmodbusId
[
i
],
ModualAlarm
.
vSet_Modual_Alarm
(
EmodbusId
[
i
],
(
ushort
)
ModualAlarm
.
eAlarmCode
.
ChannelControlError
|
(
ushort
)
ModualAlarm
.
eAlarmCode
.
ChannelControlError
|
...
@@ -149,10 +152,13 @@ namespace ModbusDemo.application
...
@@ -149,10 +152,13 @@ namespace ModbusDemo.application
(
ushort
)
ModualAlarm
.
eAlarmCode
.
ChannelControlError
|
(
ushort
)
ModualAlarm
.
eAlarmCode
.
ChannelControlError
|
(
ushort
)
ModualAlarm
.
eAlarmCode
.
ChannelRunOverTimeError
,
true
,
1
,
(
ushort
)
ModualAlarm
.
eAlarmCode
.
ChannelRunOverTimeError
,
true
,
1
,
"d0"
,
"d1"
,
"d2"
,
"d3"
,
"d4"
,
"d5"
,
"d6"
,
"d7"
);
"d0"
,
"d1"
,
"d2"
,
"d3"
,
"d4"
,
"d5"
,
"d6"
,
"d7"
);
if
(
Runtimeout
>
Runtimeout
*
2
)
{
ETime
.
Reset
();
ETime
.
Reset
();
ETime
.
Stop
();
// 停止监视
ETime
.
Stop
();
// 停止监视
}
}
}
}
}
else
else
{
{
if
(
ModbusComm
.
Modbus_WriteMultipleCoils
(
EmodbusId
[
i
],
16
,
state_OFF
)
if
(
ModbusComm
.
Modbus_WriteMultipleCoils
(
EmodbusId
[
i
],
16
,
state_OFF
)
...
@@ -187,7 +193,7 @@ namespace ModbusDemo.application
...
@@ -187,7 +193,7 @@ namespace ModbusDemo.application
"d0"
,
"d1"
,
"d2"
,
"d3"
,
"d4"
,
"d5"
,
"d6"
,
"d7"
);
"d0"
,
"d1"
,
"d2"
,
"d3"
,
"d4"
,
"d5"
,
"d6"
,
"d7"
);
}
}
ETime
.
Reset
();
ETime
.
Reset
();
ETime
.
Stop
();
// 停止监视
ETime
.
Stop
();
timerun
=
false
;
timerun
=
false
;
}
}
...
@@ -229,7 +235,7 @@ namespace ModbusDemo.application
...
@@ -229,7 +235,7 @@ namespace ModbusDemo.application
WTime
.
Start
();
//开始监视
WTime
.
Start
();
//开始监视
Wtimerun
=
true
;
Wtimerun
=
true
;
}
}
if
(
Wtime
.
TotalMinutes
>
1
)
if
(
Wtime
.
TotalMinutes
>
Runtimeout
)
{
{
ModualAlarm
.
vSet_Modual_Alarm
(
WmodbusId
[
i
],
ModualAlarm
.
vSet_Modual_Alarm
(
WmodbusId
[
i
],
(
ushort
)
ModualAlarm
.
eAlarmCode
.
ChannelControlError
|
(
ushort
)
ModualAlarm
.
eAlarmCode
.
ChannelControlError
|
...
@@ -239,9 +245,11 @@ namespace ModbusDemo.application
...
@@ -239,9 +245,11 @@ namespace ModbusDemo.application
(
ushort
)
ModualAlarm
.
eAlarmCode
.
ChannelControlError
|
(
ushort
)
ModualAlarm
.
eAlarmCode
.
ChannelControlError
|
(
ushort
)
ModualAlarm
.
eAlarmCode
.
ChannelRunOverTimeError
,
true
,
1
,
(
ushort
)
ModualAlarm
.
eAlarmCode
.
ChannelRunOverTimeError
,
true
,
1
,
"d0"
,
"d1"
,
"d2"
,
"d3"
,
"d4"
,
"d5"
,
"d6"
,
"d7"
);
"d0"
,
"d1"
,
"d2"
,
"d3"
,
"d4"
,
"d5"
,
"d6"
,
"d7"
);
if
(
Runtimeout
>
Runtimeout
*
2
)
{
WTime
.
Reset
();
WTime
.
Reset
();
WTime
.
Stop
();
//停止监视
WTime
.
Stop
();
//停止监视
Wtimerun
=
false
;
}
}
}
}
}
else
else
...
@@ -281,7 +289,6 @@ namespace ModbusDemo.application
...
@@ -281,7 +289,6 @@ namespace ModbusDemo.application
WTime
.
Reset
();
WTime
.
Reset
();
WTime
.
Stop
();
//停止监视
WTime
.
Stop
();
//停止监视
Wtimerun
=
false
;
Wtimerun
=
false
;
}
}
double
Whours
=
Wtime
.
TotalHours
;
double
Whours
=
Wtime
.
TotalHours
;
...
@@ -296,5 +303,102 @@ namespace ModbusDemo.application
...
@@ -296,5 +303,102 @@ namespace ModbusDemo.application
Console
.
WriteLine
(
timespan
);
Console
.
WriteLine
(
timespan
);
}
}
}
}
public
static
void
T_AutoControl
()
{
Control
usEcontrol
=
new
Control
();
Control
usEcontrolB
=
new
Control
();
Control
usWcontrol
=
new
Control
();
Control
usWcontrolB
=
new
Control
();
while
(
true
)
{
FileInfo
file
=
new
FileInfo
(
InIHelper
.
FileName
);
if
(
ModualControl
.
cPoolLevelConfig
.
Count
!=
0
)
{
for
(
int
i
=
0
;
i
<
ModualControl
.
cPoolLevelConfig
.
Count
;
i
++)
{
for
(
int
j
=
0
;
j
<
ModualPoll
.
byX18xNumber
;
j
++)
{
if
(
ModualPoll
.
cx18x
.
byModbusID
[
j
]
==
LevelmodbusID
[
0
])
{
usWcontrol
.
realTimeLevel
=
ModualPoll
.
cx18x
.
sX18xDataStruct
[
j
].
dNowConvertData
[
0
];
usWcontrol
.
modularx
=
j
;
usWcontrol
.
modbusID
=
LevelmodbusID
[
0
];
}
if
(
ModualPoll
.
cx18x
.
byModbusID
[
j
]
==
LevelmodbusID
[
1
])
{
usEcontrol
.
realTimeLevel
=
ModualPoll
.
cx18x
.
sX18xDataStruct
[
j
].
dNowConvertData
[
0
];
usEcontrol
.
modularx
=
j
;
usEcontrol
.
modbusID
=
LevelmodbusID
[
1
];
}
}
if
(
ModualControl
.
cPoolLevelConfig
[
i
].
byModbusID
==
LevelmodbusID
[
0
])
{
usWcontrol
.
maxLevel
=
ModualControl
.
cPoolLevelConfig
[
i
].
dUpLevel
;
usWcontrol
.
minLevel
=
ModualControl
.
cPoolLevelConfig
[
i
].
dDownLevel
;
usWcontrol
.
Name
=
"西·中转池"
;
usWcontrol
.
Enablation
=
true
;
InIHelper
.
WriteConfig
(
"Channel number"
,
"西液位通道"
,
usWcontrol
.
modularx
.
ToString
());
CriticalValueMonitoring
(
ref
usWcontrol
,
true
,
"西·中转池"
,
out
usWcontrolB
);
ModualControl
.
cPoolLevelConfig
.
Remove
(
ModualControl
.
cPoolLevelConfig
[
i
]);
}
if
(
ModualControl
.
cPoolLevelConfig
[
i
].
byModbusID
==
LevelmodbusID
[
1
])
{
usEcontrol
.
maxLevel
=
ModualControl
.
cPoolLevelConfig
[
i
].
dUpLevel
;
usEcontrol
.
minLevel
=
ModualControl
.
cPoolLevelConfig
[
i
].
dDownLevel
;
usEcontrol
.
Name
=
"东·中转池"
;
usEcontrol
.
Enablation
=
true
;
InIHelper
.
WriteConfig
(
"Channel number"
,
"东液位通道"
,
usEcontrol
.
modularx
.
ToString
());
CriticalValueMonitoring
(
ref
usEcontrol
,
true
,
"东·中转池"
,
out
usEcontrolB
);
ModualControl
.
cPoolLevelConfig
.
Remove
(
ModualControl
.
cPoolLevelConfig
[
i
]);
}
}
Automatic_control
(
usWcontrolB
.
status
,
usEcontrolB
.
status
);
}
else
if
(
file
.
Length
!=
0
)
{
usEcontrol
.
modularx
=
InIHelper
.
ReadConfig
<
int
>(
"Channel number"
,
"东液位通道"
);
usWcontrol
.
modularx
=
InIHelper
.
ReadConfig
<
int
>(
"Channel number"
,
"西液位通道"
);
usWcontrol
.
maxLevel
=
InIHelper
.
ReadConfig
<
float
>(
"MaxLevel"
,
"西·中转池"
);
usWcontrol
.
minLevel
=
InIHelper
.
ReadConfig
<
float
>(
"MinLevel"
,
"西·中转池"
);
usEcontrol
.
maxLevel
=
InIHelper
.
ReadConfig
<
float
>(
"MaxLevel"
,
"东·中转池"
);
usEcontrol
.
minLevel
=
InIHelper
.
ReadConfig
<
float
>(
"MinLevel"
,
"东·中转池"
);
usEcontrol
.
realTimeLevel
=
ModualPoll
.
cx18x
.
sX18xDataStruct
[
usEcontrol
.
modularx
].
dNowConvertData
[
0
];
usWcontrol
.
realTimeLevel
=
ModualPoll
.
cx18x
.
sX18xDataStruct
[
usWcontrol
.
modularx
].
dNowConvertData
[
0
];
CriticalValueMonitoring
(
ref
usEcontrol
,
true
,
"东·中转池"
,
out
usEcontrolB
);
CriticalValueMonitoring
(
ref
usWcontrol
,
true
,
"西·中转池"
,
out
usWcontrolB
);
Automatic_control
(
usWcontrolB
.
status
,
usEcontrolB
.
status
);
}
else
{
usWcontrol
.
status
=
false
;
usEcontrol
.
status
=
false
;
Automatic_control
(
usWcontrol
.
status
,
usEcontrol
.
status
);
}
}
}
}
}
}
}
ModbusDemo/windows/Form1.cs
View file @
fc5bbaa0
...
@@ -32,6 +32,7 @@ namespace ModbusDemo
...
@@ -32,6 +32,7 @@ namespace ModbusDemo
private
int
waitTime
;
private
int
waitTime
;
private
Thread
t_UpgradeConn
;
private
Thread
t_UpgradeConn
;
private
Thread
t_AutoControl
;
private
Thread
t_AutoControl
;
public
delegate
void
invokeDelegate
();
public
delegate
void
invokeDelegate
();
System
.
Timers
.
Timer
MQTTTimer
=
new
System
.
Timers
.
Timer
();
System
.
Timers
.
Timer
MQTTTimer
=
new
System
.
Timers
.
Timer
();
BackgroundWorker
m_bgw0
=
new
BackgroundWorker
();
BackgroundWorker
m_bgw0
=
new
BackgroundWorker
();
...
@@ -60,7 +61,9 @@ namespace ModbusDemo
...
@@ -60,7 +61,9 @@ namespace ModbusDemo
t_UpgradeConn
=
new
Thread
(
UpgradeProc
);
t_UpgradeConn
=
new
Thread
(
UpgradeProc
);
t_UpgradeConn
.
IsBackground
=
true
;
t_UpgradeConn
.
IsBackground
=
true
;
t_UpgradeConn
.
Start
();
t_UpgradeConn
.
Start
();
run
();
}
}
private
void
Form1_FormClosed
(
object
sender
,
FormClosedEventArgs
e
)
private
void
Form1_FormClosed
(
object
sender
,
FormClosedEventArgs
e
)
{
{
System
.
Environment
.
Exit
(
0
);
System
.
Environment
.
Exit
(
0
);
...
@@ -76,8 +79,8 @@ namespace ModbusDemo
...
@@ -76,8 +79,8 @@ namespace ModbusDemo
int
mqttPort
;
int
mqttPort
;
string
mqttUsername
;
string
mqttUsername
;
string
mqttPwd
;
string
mqttPwd
;
byte
[]
LevelmodbusID
=
{
6
,
13
};
public
const
string
mqttSn
=
"
66666666
"
;
public
const
string
mqttSn
=
"
256333344
"
;
public
const
string
mqttSubscribeControlTopic
=
"Witium/WTDS78X/"
+
mqttSn
+
"/Ctrl"
;
public
const
string
mqttSubscribeControlTopic
=
"Witium/WTDS78X/"
+
mqttSn
+
"/Ctrl"
;
public
const
string
mqttBackTopic
=
"Witium/WTDS78X/"
+
mqttSn
+
"/Back"
;
public
const
string
mqttBackTopic
=
"Witium/WTDS78X/"
+
mqttSn
+
"/Back"
;
public
const
string
mqttCfgTopic
=
"Witium/WTDS78X/"
+
mqttSn
+
"/Config"
;
public
const
string
mqttCfgTopic
=
"Witium/WTDS78X/"
+
mqttSn
+
"/Config"
;
...
@@ -159,7 +162,6 @@ namespace ModbusDemo
...
@@ -159,7 +162,6 @@ namespace ModbusDemo
.
WithRetainFlag
(
false
)
.
WithRetainFlag
(
false
)
.
Build
();
.
Build
();
await
mqttClient
.
PublishAsync
(
message
);
await
mqttClient
.
PublishAsync
(
message
);
totxt
.
Log
(
"我在247,执行了Back"
);
}
}
private
async
Task
vCfgResponseBack
(
string
data
)
private
async
Task
vCfgResponseBack
(
string
data
)
...
@@ -198,9 +200,6 @@ namespace ModbusDemo
...
@@ -198,9 +200,6 @@ namespace ModbusDemo
txtReceiveMessage
.
AppendText
(
$"已订阅[
{
mqttSubscribeControlTopic
}
]主题
{
Environment
.
NewLine
}
"
);
txtReceiveMessage
.
AppendText
(
$"已订阅[
{
mqttSubscribeControlTopic
}
]主题
{
Environment
.
NewLine
}
"
);
txtReceiveMessage
.
AppendText
(
$"已订阅[
{
mqttCfgTopic
}
]主题
{
Environment
.
NewLine
}
"
);
txtReceiveMessage
.
AppendText
(
$"已订阅[
{
mqttCfgTopic
}
]主题
{
Environment
.
NewLine
}
"
);
//totxt.Log($"已订阅[{mqttSubscribeTopic}]主题{Environment.NewLine}");
//txtReceiveMessage.AppendText($"已订阅[{Data}]主题{Environment.NewLine}");
})));
})));
}
}
private
async
Task
ConnectMqttServerAsync
()
private
async
Task
ConnectMqttServerAsync
()
...
@@ -371,113 +370,24 @@ namespace ModbusDemo
...
@@ -371,113 +370,24 @@ namespace ModbusDemo
private
static
bool
bSetDataIsRunning
=
false
;
private
static
bool
bSetDataIsRunning
=
false
;
private
Thread
ModbusPollThread
;
private
Thread
ModbusPollThread
;
private
void
T_AutoControl
()
{
AutoControl
.
Control
usEcontrol
=
new
AutoControl
.
Control
();
AutoControl
.
Control
usEcontrolB
=
new
AutoControl
.
Control
();
AutoControl
.
Control
usWcontrol
=
new
AutoControl
.
Control
();
AutoControl
.
Control
usWcontrolB
=
new
AutoControl
.
Control
();
while
(
true
)
{
FileInfo
file
=
new
FileInfo
(
InIHelper
.
FileName
);
if
(
ModualControl
.
cPoolLevelConfig
.
Count
!=
0
)
{
for
(
int
i
=
0
;
i
<
ModualControl
.
cPoolLevelConfig
.
Count
;
i
++)
{
for
(
int
j
=
0
;
j
<
ModualPoll
.
byX18xNumber
;
j
++)
{
if
(
ModualPoll
.
cx18x
.
byModbusID
[
j
]
==
LevelmodbusID
[
0
])
{
usWcontrol
.
realTimeLevel
=
ModualPoll
.
cx18x
.
sX18xDataStruct
[
j
].
dNowConvertData
[
0
];
usWcontrol
.
modularx
=
j
;
usWcontrol
.
modbusID
=
LevelmodbusID
[
0
];
}
if
(
ModualPoll
.
cx18x
.
byModbusID
[
j
]
==
LevelmodbusID
[
1
])
{
usEcontrol
.
realTimeLevel
=
ModualPoll
.
cx18x
.
sX18xDataStruct
[
j
].
dNowConvertData
[
0
];
usEcontrol
.
modularx
=
j
;
usEcontrol
.
modbusID
=
LevelmodbusID
[
1
];
}
}
if
(
ModualControl
.
cPoolLevelConfig
[
i
].
byModbusID
==
LevelmodbusID
[
0
])
{
usWcontrol
.
maxLevel
=
ModualControl
.
cPoolLevelConfig
[
i
].
dUpLevel
;
usWcontrol
.
minLevel
=
ModualControl
.
cPoolLevelConfig
[
i
].
dDownLevel
;
usWcontrol
.
Name
=
"西·中转池"
;
usWcontrol
.
Enablation
=
true
;
InIHelper
.
WriteConfig
(
"Channel number"
,
"西液位通道"
,
usWcontrol
.
modularx
.
ToString
());
AutoControl
.
CriticalValueMonitoring
(
ref
usWcontrol
,
true
,
"西·中转池"
,
out
usWcontrolB
);
ModualControl
.
cPoolLevelConfig
.
Remove
(
ModualControl
.
cPoolLevelConfig
[
i
]);
}
if
(
ModualControl
.
cPoolLevelConfig
[
i
].
byModbusID
==
LevelmodbusID
[
1
])
{
usEcontrol
.
maxLevel
=
ModualControl
.
cPoolLevelConfig
[
i
].
dUpLevel
;
usEcontrol
.
minLevel
=
ModualControl
.
cPoolLevelConfig
[
i
].
dDownLevel
;
usEcontrol
.
Name
=
"东·中转池"
;
usEcontrol
.
Enablation
=
true
;
InIHelper
.
WriteConfig
(
"Channel number"
,
"东液位通道"
,
usEcontrol
.
modularx
.
ToString
());
AutoControl
.
CriticalValueMonitoring
(
ref
usEcontrol
,
true
,
"东·中转池"
,
out
usEcontrolB
);
ModualControl
.
cPoolLevelConfig
.
Remove
(
ModualControl
.
cPoolLevelConfig
[
i
]);
}
}
AutoControl
.
Automatic_control
(
usWcontrolB
.
status
,
usEcontrolB
.
status
);
}
else
if
(
file
.
Length
!=
0
)
{
usEcontrol
.
modularx
=
InIHelper
.
ReadConfig
<
int
>(
"Channel number"
,
"东液位通道"
);
usWcontrol
.
modularx
=
InIHelper
.
ReadConfig
<
int
>(
"Channel number"
,
"西液位通道"
);
usWcontrol
.
maxLevel
=
InIHelper
.
ReadConfig
<
float
>(
"MaxLevel"
,
"西·中转池"
);
usWcontrol
.
minLevel
=
InIHelper
.
ReadConfig
<
float
>(
"MinLevel"
,
"西·中转池"
);
usEcontrol
.
maxLevel
=
InIHelper
.
ReadConfig
<
float
>(
"MaxLevel"
,
"东·中转池"
);
usEcontrol
.
minLevel
=
InIHelper
.
ReadConfig
<
float
>(
"MinLevel"
,
"东·中转池"
);
usEcontrol
.
realTimeLevel
=
ModualPoll
.
cx18x
.
sX18xDataStruct
[
usEcontrol
.
modularx
].
dNowConvertData
[
0
];
usWcontrol
.
realTimeLevel
=
ModualPoll
.
cx18x
.
sX18xDataStruct
[
usWcontrol
.
modularx
].
dNowConvertData
[
0
];
AutoControl
.
CriticalValueMonitoring
(
ref
usEcontrol
,
true
,
"东·中转池"
,
out
usEcontrolB
);
AutoControl
.
CriticalValueMonitoring
(
ref
usWcontrol
,
true
,
"西·中转池"
,
out
usWcontrolB
);
AutoControl
.
Automatic_control
(
usWcontrolB
.
status
,
usEcontrolB
.
status
);
}
else
{
usWcontrol
.
status
=
false
;
usEcontrol
.
status
=
false
;
AutoControl
.
Automatic_control
(
usWcontrol
.
status
,
usEcontrol
.
status
);
totxt
.
Log
(
"Self - control has not started"
);
}
}
}
private
void
vModbusPoll
()
private
void
vModbusPoll
()
{
{
while
(
true
)
while
(
true
)
{
Parallel
.
Invoke
(
()
=>
{
{
bSetDataIsRunning
=
true
;
bSetDataIsRunning
=
true
;
ModualPoll
.
vAllNodePoll
();
ModualPoll
.
vAllNodePoll
();
mqttData
=
ModualPoll
.
stAll_Poll_Package
();
mqttData
=
ModualPoll
.
stAll_Poll_Package
();
ModualPoll
.
vCheckAlarm_And_Send
(
mqttClient
);
ModualPoll
.
vCheckAlarm_And_Send
(
mqttClient
);
label5
.
Text
=
ModbusComm
.
usCommunFailTimes
.
ToString
();
label5
.
Text
=
ModbusComm
.
usCommunFailTimes
.
ToString
();
Thread
.
Sleep
(
100
);
},
()
=>
{
AutoControl
.
T_AutoControl
();
})
;
}
}
}
}
private
void
Sendout
()
private
void
Sendout
()
...
@@ -537,8 +447,7 @@ namespace ModbusDemo
...
@@ -537,8 +447,7 @@ namespace ModbusDemo
}
}
else
else
{
{
//txtbox.Text = message;
totxt
.
Log
(
message
);
//totxt.Log(message);
}
}
}
}
#
endregion
#
endregion
...
@@ -994,7 +903,7 @@ namespace ModbusDemo
...
@@ -994,7 +903,7 @@ namespace ModbusDemo
errCnt
++;
errCnt
++;
Console
.
WriteLine
(
DateTime
.
Now
.
ToString
()
+
" "
+
exception
.
Message
);
Console
.
WriteLine
(
DateTime
.
Now
.
ToString
()
+
" "
+
exception
.
Message
);
MessageBox
.
Show
(
DateTime
.
Now
.
ToString
()
+
" "
+
exception
.
Message
);
//
MessageBox.Show(DateTime.Now.ToString() + " " + exception.Message);
this
.
UpdateBar
.
Value
=
this
.
UpdateBar
.
Minimum
;
this
.
UpdateBar
.
Value
=
this
.
UpdateBar
.
Minimum
;
//this.StartTest.Enabled = false;
//this.StartTest.Enabled = false;
//this.reset.Enabled = false;
//this.reset.Enabled = false;
...
@@ -1085,13 +994,13 @@ namespace ModbusDemo
...
@@ -1085,13 +994,13 @@ namespace ModbusDemo
}
}
private
async
void
SubscribeBut_Click
(
object
sender
,
EventArgs
e
)
private
void
SubscribeBut_Click
(
object
sender
,
EventArgs
e
)
{
{
await
Subscribe
();
}
}
[
Obsolete
]
[
Obsolete
]
private
void
btOpenCOM_Click
(
object
sender
,
EventArgs
e
)
private
async
void
btOpenCOM_Click
(
object
sender
,
EventArgs
e
)
{
{
if
(
LOCALDEBUG
==
true
)
if
(
LOCALDEBUG
==
true
)
{
{
...
@@ -1139,22 +1048,26 @@ namespace ModbusDemo
...
@@ -1139,22 +1048,26 @@ namespace ModbusDemo
SetMqtt
();
SetMqtt
();
MQTT_thread
=
new
MethodInvoker
(
Sendout
);
MQTT_thread
=
new
MethodInvoker
(
Sendout
);
MQTT_thread
.
BeginInvoke
(
null
,
null
);
MQTT_thread
.
BeginInvoke
(
null
,
null
);
Task
.
Run
(
async
()
=>
{
await
ConnectMqttServerAsync
();
});
await
Task
.
Run
(
async
()
=>
{
await
ConnectMqttServerAsync
();
});
ModbusComm
.
Modbus
=
ModbusSerialMaster
.
CreateRtu
(
comPort
);
ModbusComm
.
Modbus
=
ModbusSerialMaster
.
CreateRtu
(
comPort
);
ModbusComm
.
Modbus
.
Transport
.
Retries
=
0
;
ModbusComm
.
Modbus
.
Transport
.
Retries
=
0
;
ModbusComm
.
Modbus
.
Transport
.
ReadTimeout
=
1000
;
ModbusComm
.
Modbus
.
Transport
.
ReadTimeout
=
1000
;
ModbusComm
.
Modbus
.
Transport
.
WriteTimeout
=
1000
;
ModbusComm
.
Modbus
.
Transport
.
WriteTimeout
=
1000
;
ModbusComm
.
Modbus
.
Transport
.
WaitToRetryMilliseconds
=
0
;
ModbusComm
.
Modbus
.
Transport
.
WaitToRetryMilliseconds
=
0
;
t_AutoControl
=
new
Thread
(
T_AutoControl
);
t_AutoControl
.
IsBackground
=
true
;
//t_AutoControl = new Thread(T_AutoControl)
t_AutoControl
.
Start
();
//{
// IsBackground = true
//};
//t_AutoControl.Start();
modbus_Timer
.
Enabled
=
true
;
modbus_Timer
.
Enabled
=
true
;
btOpenCOM
.
Enabled
=
false
;
btOpenCOM
.
Enabled
=
false
;
btCloseCOM
.
Enabled
=
true
;
btCloseCOM
.
Enabled
=
true
;
if
(
bCretaThead
==
false
)
if
(
bCretaThead
==
false
)
{
{
bCretaThead
=
true
;
bCretaThead
=
true
;
ModbusPollThread
=
new
Thread
(
vModbusPoll
);
ModbusPollThread
=
new
Thread
(
vModbusPoll
);
ModbusPollThread
.
Start
();
ModbusPollThread
.
Start
();
ModbusControlThread
=
new
Thread
(
ModualControl
.
vControl_Poll
);
ModbusControlThread
=
new
Thread
(
ModualControl
.
vControl_Poll
);
...
@@ -1165,6 +1078,7 @@ namespace ModbusDemo
...
@@ -1165,6 +1078,7 @@ namespace ModbusDemo
ModbusPollThread
.
Resume
();
ModbusPollThread
.
Resume
();
}
}
totxt
.
Log
(
DateTime
.
Now
.
ToString
()
+
" =>Open "
+
comPort
.
PortName
+
" sucessfully!"
);
totxt
.
Log
(
DateTime
.
Now
.
ToString
()
+
" =>Open "
+
comPort
.
PortName
+
" sucessfully!"
);
await
Subscribe
();
}
}
catch
(
Exception
ex
)
catch
(
Exception
ex
)
{
{
...
@@ -1172,7 +1086,60 @@ namespace ModbusDemo
...
@@ -1172,7 +1086,60 @@ namespace ModbusDemo
MessageBox
.
Show
(
"Error: "
+
ex
.
Message
);
MessageBox
.
Show
(
"Error: "
+
ex
.
Message
);
return
;
return
;
}
}
}
private
async
void
run
()
{
comPort
.
PortName
=
"COM1"
;
comPort
.
BaudRate
=
9600
;
comPort
.
Parity
=
Parity
.
None
;
comPort
.
StopBits
=
StopBits
.
One
;
comPort
.
DataBits
=
8
;
try
{
comPort
.
Open
();
isReconnect
=
true
;
SetMqtt
();
MQTT_thread
=
new
MethodInvoker
(
Sendout
);
MQTT_thread
.
BeginInvoke
(
null
,
null
);
await
Task
.
Run
(
async
()
=>
{
await
ConnectMqttServerAsync
();
});
ModbusComm
.
Modbus
=
ModbusSerialMaster
.
CreateRtu
(
comPort
);
ModbusComm
.
Modbus
.
Transport
.
Retries
=
0
;
ModbusComm
.
Modbus
.
Transport
.
ReadTimeout
=
1000
;
ModbusComm
.
Modbus
.
Transport
.
WriteTimeout
=
1000
;
ModbusComm
.
Modbus
.
Transport
.
WaitToRetryMilliseconds
=
0
;
//t_AutoControl = new Thread(T_AutoControl)
//{
// IsBackground = true
//};
//t_AutoControl.Start();
modbus_Timer
.
Enabled
=
true
;
btOpenCOM
.
Enabled
=
false
;
btCloseCOM
.
Enabled
=
true
;
if
(
bCretaThead
==
false
)
{
bCretaThead
=
true
;
ModbusPollThread
=
new
Thread
(
vModbusPoll
);
ModbusPollThread
.
Start
();
ModbusControlThread
=
new
Thread
(
ModualControl
.
vControl_Poll
);
ModbusControlThread
.
Start
();
}
else
{
ModbusPollThread
.
Resume
();
}
totxt
.
Log
(
DateTime
.
Now
.
ToString
()
+
" =>Open "
+
comPort
.
PortName
+
" sucessfully!"
);
await
Subscribe
();
}
catch
(
Exception
ex
)
{
totxt
.
Log
(
"Error: "
+
ex
.
Message
);
MessageBox
.
Show
(
"Error: "
+
ex
.
Message
);
return
;
}
}
}
[
Obsolete
]
[
Obsolete
]
private
void
btCloseCOM_Click
(
object
sender
,
EventArgs
e
)
private
void
btCloseCOM_Click
(
object
sender
,
EventArgs
e
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment