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
5635bdf7
Commit
5635bdf7
authored
Jun 18, 2019
by
shaxuezheng
Browse files
Options
Browse Files
Download
Plain Diff
Updata cotrol logic
parents
beb1f654
83d8d9d1
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
707 additions
and
249 deletions
+707
-249
ModualAlarm.cs
ModbusDemo/Common/ModualAlarm.cs
+133
-0
ModualControl.cs
ModbusDemo/MessageFormat/ModualControl.cs
+245
-177
ModualPoll.cs
ModbusDemo/Modular/ModualPoll.cs
+288
-69
Form1.cs
ModbusDemo/windows/Form1.cs
+41
-3
No files found.
ModbusDemo/Common/ModualAlarm.cs
View file @
5635bdf7
...
@@ -7,6 +7,7 @@ using System.Collections;
...
@@ -7,6 +7,7 @@ using System.Collections;
using
MQTTnet
;
using
MQTTnet
;
using
MQTTnet.Client
;
using
MQTTnet.Client
;
using
Newtonsoft.Json
;
using
Newtonsoft.Json
;
using
ModbusDemo.Modular
;
namespace
ModbusDemo.Common
namespace
ModbusDemo.Common
{
{
public
static
class
ModualAlarm
public
static
class
ModualAlarm
...
@@ -55,5 +56,137 @@ namespace ModbusDemo.Common
...
@@ -55,5 +56,137 @@ namespace ModbusDemo.Common
.
Build
();
.
Build
();
await
mqttClient
.
PublishAsync
(
message
);
await
mqttClient
.
PublishAsync
(
message
);
}
}
public
static
void
vSet_Modual_Alarm
(
byte
byModbusID
,
ushort
usAlarmCodde
,
bool
bSetAlarm
,
byte
byCommFailTimes
,
params
string
[]
strChannalList
)
{
for
(
int
i
=
0
;
i
<
ModualPoll
.
byX14pNumber
;
i
++)
{
if
(
byModbusID
==
ModualPoll
.
cx14P
.
byModbusID
[
i
])
{
for
(
int
j
=
0
;
j
<
strChannalList
.
Count
();
j
++)
{
for
(
int
k
=
0
;
k
<
8
;
k
++)
{
string
strChannel
=
"d"
+
i
.
ToString
();
if
(
strChannalList
[
k
]
==
strChannel
)
{
if
(
bSetAlarm
==
true
)
{
if
((
usAlarmCodde
&
(
ushort
)
eAlarmCode
.
ChannelCommunError
)
==
(
ushort
)
eAlarmCode
.
ChannelCommunError
)
{
ModualPoll
.
cx14P
.
sX14PAlarmStruct
[
i
].
usCommFailTimes
[
k
]
+=
byCommFailTimes
;
}
ModualPoll
.
cx14P
.
sX14PAlarmStruct
[
i
].
usNowAlarmCode
[
k
]
|=
usAlarmCodde
;
}
else
{
if
((
usAlarmCodde
&
(
ushort
)
eAlarmCode
.
ChannelCommunError
)
==
(
ushort
)
eAlarmCode
.
ChannelCommunError
)
{
ModualPoll
.
cx14P
.
sX14PAlarmStruct
[
i
].
usCommFailTimes
[
k
]
=
0
;
}
ModualPoll
.
cx14P
.
sX14PAlarmStruct
[
i
].
usNowAlarmCode
[
k
]
&=
usAlarmCodde
;
}
}
}
}
}
}
for
(
int
i
=
0
;
i
<
ModualPoll
.
byX18xNumber
;
i
++)
{
if
(
byModbusID
==
ModualPoll
.
cx18x
.
byModbusID
[
i
])
{
for
(
int
j
=
0
;
j
<
strChannalList
.
Count
();
j
++)
{
for
(
int
k
=
0
;
k
<
8
;
k
++)
{
string
strChannel
=
"d"
+
i
.
ToString
();
if
(
strChannalList
[
k
]
==
strChannel
)
{
if
(
bSetAlarm
==
true
)
{
if
((
usAlarmCodde
&
(
ushort
)
eAlarmCode
.
ChannelCommunError
)
==
(
ushort
)
eAlarmCode
.
ChannelCommunError
)
{
ModualPoll
.
cx18x
.
sX18xAlarmstruct
[
i
].
usCommFailTimes
[
k
]
+=
byCommFailTimes
;
}
ModualPoll
.
cx18x
.
sX18xAlarmstruct
[
i
].
usNowAlarmCode
[
k
]
|=
usAlarmCodde
;
}
else
{
if
((
usAlarmCodde
&
(
ushort
)
eAlarmCode
.
ChannelCommunError
)
==
(
ushort
)
eAlarmCode
.
ChannelCommunError
)
{
ModualPoll
.
cx18x
.
sX18xAlarmstruct
[
i
].
usCommFailTimes
[
k
]
=
0
;
}
ModualPoll
.
cx18x
.
sX18xAlarmstruct
[
i
].
usNowAlarmCode
[
k
]
&=
usAlarmCodde
;
}
}
}
}
}
}
for
(
int
i
=
0
;
i
<
ModualPoll
.
byX78cNumber
;
i
++)
{
if
(
byModbusID
==
ModualPoll
.
cx78c
.
byModbusID
[
i
])
{
for
(
int
j
=
0
;
j
<
strChannalList
.
Count
();
j
++)
{
for
(
int
k
=
0
;
k
<
16
;
k
++)
{
string
strChannel
=
"d"
+
i
.
ToString
();
if
(
strChannalList
[
k
]
==
strChannel
)
{
if
(
bSetAlarm
==
true
)
{
if
((
usAlarmCodde
&
(
ushort
)
eAlarmCode
.
ChannelCommunError
)
==
(
ushort
)
eAlarmCode
.
ChannelCommunError
)
{
ModualPoll
.
cx78c
.
sX78cAlarmStruct
[
i
].
usCommFailTimes
[
k
]
+=
byCommFailTimes
;
}
ModualPoll
.
cx78c
.
sX78cAlarmStruct
[
i
].
usNowAlarmCode
[
k
]
|=
usAlarmCodde
;
}
else
{
if
((
usAlarmCodde
&
(
ushort
)
eAlarmCode
.
ChannelCommunError
)
==
(
ushort
)
eAlarmCode
.
ChannelCommunError
)
{
ModualPoll
.
cx78c
.
sX78cAlarmStruct
[
i
].
usCommFailTimes
[
k
]
=
0
;
}
ModualPoll
.
cx78c
.
sX78cAlarmStruct
[
i
].
usNowAlarmCode
[
k
]
&=
usAlarmCodde
;
}
}
}
}
}
}
for
(
int
i
=
0
;
i
<
ModualPoll
.
byX66cNumber
;
i
++)
{
if
(
byModbusID
==
ModualPoll
.
cx66c
.
byModbusID
[
i
])
{
for
(
int
j
=
0
;
j
<
strChannalList
.
Count
();
j
++)
{
for
(
int
k
=
0
;
k
<
ModualPoll
.
byX66cRelayRegNumber
;
k
++)
{
string
strChannel
=
"d"
+
i
.
ToString
();
if
(
strChannalList
[
k
]
==
strChannel
)
{
if
(
bSetAlarm
==
true
)
{
if
((
usAlarmCodde
&
(
ushort
)
eAlarmCode
.
ChannelCommunError
)
==
(
ushort
)
eAlarmCode
.
ChannelCommunError
)
{
ModualPoll
.
cx66c
.
sX66cAlarmStruct
[
i
].
usCommFailTimes
[
k
]
+=
byCommFailTimes
;
}
ModualPoll
.
cx66c
.
sX66cAlarmStruct
[
i
].
usNowAlarmCode
[
k
]
|=
usAlarmCodde
;
}
else
{
if
((
usAlarmCodde
&
(
ushort
)
eAlarmCode
.
ChannelCommunError
)
==
(
ushort
)
eAlarmCode
.
ChannelCommunError
)
{
ModualPoll
.
cx66c
.
sX66cAlarmStruct
[
i
].
usCommFailTimes
[
k
]
=
0
;
}
ModualPoll
.
cx66c
.
sX66cAlarmStruct
[
i
].
usNowAlarmCode
[
k
]
&=
usAlarmCodde
;
}
}
}
}
}
}
}
}
}
}
}
ModbusDemo/MessageFormat/ModualControl.cs
View file @
5635bdf7
...
@@ -12,7 +12,6 @@ using ModbusDemo;
...
@@ -12,7 +12,6 @@ using ModbusDemo;
using
ModbusDemo.Modular
;
using
ModbusDemo.Modular
;
using
ModbusDemo.Common
;
using
ModbusDemo.Common
;
using
System.Threading
;
using
System.Threading
;
using
System.Threading.Tasks
;
namespace
ModbusDemo.MessageFormat
namespace
ModbusDemo.MessageFormat
{
{
public
class
ModualControl
public
class
ModualControl
...
@@ -54,6 +53,7 @@ namespace ModbusDemo.MessageFormat
...
@@ -54,6 +53,7 @@ namespace ModbusDemo.MessageFormat
public
byte
d5
{
get
;
set
;
}
public
byte
d5
{
get
;
set
;
}
public
byte
d6
{
get
;
set
;
}
public
byte
d6
{
get
;
set
;
}
public
byte
d7
{
get
;
set
;
}
public
byte
d7
{
get
;
set
;
}
public
string
name
{
get
;
set
;
}
public
string
down
{
get
;
set
;
}
public
string
down
{
get
;
set
;
}
public
string
upper
{
get
;
set
;
}
public
string
upper
{
get
;
set
;
}
public
UInt64
ts
{
get
;
set
;
}
public
UInt64
ts
{
get
;
set
;
}
...
@@ -76,6 +76,7 @@ namespace ModbusDemo.MessageFormat
...
@@ -76,6 +76,7 @@ namespace ModbusDemo.MessageFormat
public
string
srcId
{
get
;
set
;
}
public
string
srcId
{
get
;
set
;
}
public
string
srcType
{
get
;
set
;
}
public
string
srcType
{
get
;
set
;
}
public
string
srcCh
{
get
;
set
;
}
public
string
srcCh
{
get
;
set
;
}
public
string
opType
{
get
;
set
;
}
public
string
resId
{
get
;
set
;
}
public
string
resId
{
get
;
set
;
}
public
string
resType
{
get
;
set
;
}
public
string
resType
{
get
;
set
;
}
public
string
resCh
{
get
;
set
;
}
public
string
resCh
{
get
;
set
;
}
...
@@ -103,7 +104,8 @@ namespace ModbusDemo.MessageFormat
...
@@ -103,7 +104,8 @@ namespace ModbusDemo.MessageFormat
public
UInt64
ulStartTime
;
public
UInt64
ulStartTime
;
public
bool
[]
bControlBit
=
new
bool
[
8
];
public
bool
[]
bControlBit
=
new
bool
[
8
];
public
modual
.
eModualType
eModualType
;
public
modual
.
eModualType
eModualType
;
public
ModualRespControl
[]
xModualRespControl
=
new
ModualRespControl
[
8
];
public
bool
bOpenMachine
;
public
ModualRespControl
xModualRespControl
;
}
}
public
class
pcLiquidLevelConfig
public
class
pcLiquidLevelConfig
...
@@ -117,30 +119,25 @@ namespace ModbusDemo.MessageFormat
...
@@ -117,30 +119,25 @@ namespace ModbusDemo.MessageFormat
public
static
List
<
ModualCntrol
>
liModuualControl
=
new
List
<
ModualCntrol
>();
public
static
List
<
ModualCntrol
>
liModuualControl
=
new
List
<
ModualCntrol
>();
public
const
ushort
usDefineControlTimes
=
1
;
public
const
ushort
usDefineControlTimes
=
1
;
private
static
pcControlMap
cControlMap
=
new
pcControlMap
();
private
static
pcControlMap
cControlMap
=
new
pcControlMap
();
private
static
object
obLock
=
new
object
();
#if DEBUG_TEST
#if DEBUG_TEST
public
const
string
strMapCfg
=
"{chMap:[{ \"srcId\": \"31\", \"srcType\": \"WTDR66C\", \"srcCh\":\"d0\", \"dstCh\":[\"d0\",\"d1\",\"d2\"],\"resId\":\"23\",\"resType\":\"WTDR78C\",\"resCh\":\"d0\"},"
+
public
const
string
strMapCfg
=
"{chMap:["
+
"{ \"srcId\": \"31\", \"srcType\": \"WTDR66C\", \"srcCh\":\"d2\", \"dstCh\":[\"d2\",\"d3\"],\"resId\":\"23\",\"resType\":\"WTDR78C\",\"resCh\":\"d0\"},"
+
"{ \"srcId\": \"31\", \"srcType\": \"WTDR66C\", \"srcCh\":\"d1\", \"dstCh\":[\"d1\",\"d2\"],\"resId\":\"23\",\"resType\":\"WTDR78C\",\"resCh\":\"d0\"},"
+
"{ \"srcId\": \"31\", \"srcType\": \"WTDR66C\", \"srcCh\":\"d4\", \"dstCh\":[\"d4\",\"d5\"],\"resId\":\"23\",\"resType\":\"WTDR78C\",\"resCh\":\"d0\"},"
+
"{ \"srcId\": \"16\", \"srcType\": \"WTDR66C\", \"srcCh\":\"d0\", \"dstCh\":[\"d0\",\"d1\"],\"resId\":\"23\",\"resType\":\"WTDR78C\",\"resCh\":\"d0\"},"
+
"{ \"srcId\": \"16\", \"srcType\": \"WTDR66C\", \"srcCh\":\"d0\", \"dstCh\":[\"d0\",\"d1\"],\"resId\":\"23\",\"resType\":\"WTDR78C\",\"resCh\":\"d0\"},"
+
"{ \"srcId\": \"16\", \"srcType\": \"WTDR66C\", \"srcCh\":\"d2\", \"dstCh\":[\"d2\",\"d3\"],\"resId\":\"23\",\"resType\":\"WTDR78C\",\"resCh\":\"d0\"},"
+
"{ \"srcId\": \"16\", \"srcType\": \"WTDR66C\", \"srcCh\":\"d2\", \"dstCh\":[\"d2\",\"d3\"],\"resId\":\"23\",\"resType\":\"WTDR78C\",\"resCh\":\"d0\"},"
+
"{ \"srcId\": \"16\", \"srcType\": \"WTDR66C\", \"srcCh\":\"d4\", \"dstCh\":[\"d4\",\"d5\"],\"resId\":\"23\",\"resType\":\"WTDR78C\",\"resCh\":\"d0\"},"
+
"{ \"srcId\": \"35\", \"srcType\": \"WTDR66C\", \"srcCh\":\"d0\", \"dstCh\":[\"d0\",\"d1\"],\"resId\":\"23\",\"resType\":\"WTDR78C\",\"resCh\":\"d0\"},"
+
"{ \"srcId\": \"35\", \"srcType\": \"WTDR66C\", \"srcCh\":\"d0\", \"dstCh\":[\"d0\",\"d1\"],\"resId\":\"23\",\"resType\":\"WTDR78C\",\"resCh\":\"d0\"},"
+
"{ \"srcId\": \"35\", \"srcType\": \"WTDR66C\", \"srcCh\":\"d2\", \"dstCh\":[\"d2\",\"d3\"],\"resId\":\"23\",\"resType\":\"WTDR78C\",\"resCh\":\"d0\"},"
+
"{ \"srcId\": \"35\", \"srcType\": \"WTDR66C\", \"srcCh\":\"d2\", \"dstCh\":[\"d2\",\"d3\"],\"resId\":\"23\",\"resType\":\"WTDR78C\",\"resCh\":\"d0\"},"
+
"{ \"srcId\": \"35\", \"srcType\": \"WTDR66C\", \"srcCh\":\"d4\", \"dstCh\":[\"d4\",\"d5\"],\"resId\":\"23\",\"resType\":\"WTDR78C\",\"resCh\":\"d0\"},"
+
"{ \"srcId\": \"90\", \"srcType\": \"WTDR66C\", \"srcCh\":\"d2\", \"dstCh\":[\"d2\",\"d3\"],\"resId\":\"23\",\"resType\":\"WTDR78C\",\"resCh\":\"d0\"},"
+
"{ \"srcId\": \"39\", \"srcType\": \"WTDR66C\", \"srcCh\":\"d0\", \"dstCh\":[\"d0\",\"d1\"],\"resId\":\"23\",\"resType\":\"WTDR78C\",\"resCh\":\"d0\"},"
+
"{ \"srcId\": \"39\", \"srcType\": \"WTDR66C\", \"srcCh\":\"d0\", \"dstCh\":[\"d0\",\"d1\"],\"resId\":\"23\",\"resType\":\"WTDR78C\",\"resCh\":\"d0\"},"
+
"{ \"srcId\": \"39\", \"srcType\": \"WTDR66C\", \"srcCh\":\"d2\", \"dstCh\":[\"d2\",\"d3\"],\"resId\":\"23\",\"resType\":\"WTDR78C\",\"resCh\":\"d0\"},"
+
"{ \"srcId\": \"39\", \"srcType\": \"WTDR66C\", \"srcCh\":\"d2\", \"dstCh\":[\"d2\",\"d3\"],\"resId\":\"23\",\"resType\":\"WTDR78C\",\"resCh\":\"d0\"},"
+
"{ \"srcId\": \"39\", \"srcType\": \"WTDR66C\", \"srcCh\":\"d4\", \"dstCh\":[\"d4\",\"d5\"],\"resId\":\"23\",\"resType\":\"WTDR78C\",\"resCh\":\"d0\"},"
+
"{ \"srcId\": \"13\", \"srcType\": \"WTDR66C\", \"srcCh\":\"d0\", \"dstCh\":[\"d0\",\"d1\"],\"resId\":\"23\",\"resType\":\"WTDR78C\",\"resCh\":\"d0\"},"
+
"{ \"srcId\": \"13\", \"srcType\": \"WTDR66C\", \"srcCh\":\"d2\", \"dstCh\":[\"d2\",\"d3\"],\"resId\":\"23\",\"resType\":\"WTDR78C\",\"resCh\":\"d0\"},"
+
//"{ \"srcId\": \"13\", \"srcType\": \"WTDR66C\", \"srcCh\":\"d0\", \"dstCh\":[\"d0\",\"d1\"],\"resId\":\"23\",\"resType\":\"WTDR78C\",\"resCh\":\"d0\"}," +
"{ \"srcId\": \"13\", \"srcType\": \"WTDR66C\", \"srcCh\":\"d4\", \"dstCh\":[\"d4\",\"d5\"],\"resId\":\"23\",\"resType\":\"WTDR78C\",\"resCh\":\"d0\"},"
+
//"{ \"srcId\": \"13\", \"srcType\": \"WTDR66C\", \"srcCh\":\"d2\", \"dstCh\":[\"d2\",\"d3\"],\"resId\":\"23\",\"resType\":\"WTDR78C\",\"resCh\":\"d0\"}," +
"{ \"srcId\": \"13\", \"srcType\": \"WTDR66C\", \"srcCh\":\"d6\", \"dstCh\":[\"d6\",\"d7\"],\"resId\":\"23\",\"resType\":\"WTDR78C\",\"resCh\":\"d0\"},"
+
//"{ \"srcId\": \"13\", \"srcType\": \"WTDR66C\", \"srcCh\":\"d4\", \"dstCh\":[\"d4\",\"d5\"],\"resId\":\"23\",\"resType\":\"WTDR78C\",\"resCh\":\"d0\"}," +
//"{ \"srcId\": \"13\", \"srcType\": \"WTDR66C\", \"srcCh\":\"d6\", \"dstCh\":[\"d6\",\"d7\"],\"resId\":\"23\",\"resType\":\"WTDR78C\",\"resCh\":\"d0\"}," +
"]}"
;
"]}"
;
#endif
#endif
public
static
void
vGetaWay_Receive_Control
(
string
sDataString
,
out
string
stResponseData
)
public
static
void
vGetaWay_Receive_Control
(
string
sDataString
,
out
string
stResponseData
)
...
@@ -164,7 +161,7 @@ namespace ModbusDemo.MessageFormat
...
@@ -164,7 +161,7 @@ namespace ModbusDemo.MessageFormat
ModualCntrol
cModualCntrol
=
new
ModualCntrol
ModualCntrol
cModualCntrol
=
new
ModualCntrol
{
{
sbModbusID
=
byte
.
Parse
(
cControl
.
ss
[
i
].
addr
),
sbModbusID
=
byte
.
Parse
(
cControl
.
ss
[
i
].
addr
),
usDurationTime
=
cControl
.
ss
[
i
].
op
.
duration
,
usDurationTime
=
(
ushort
)(
cControl
.
ss
[
i
].
op
.
duration
*
60
)
,
ulStartTime
=
cControl
.
ss
[
i
].
op
.
startTime
ulStartTime
=
cControl
.
ss
[
i
].
op
.
startTime
};
};
cModualCntrol
.
eModualType
=
eModdusId_Find_ModualType
(
cControl
.
ss
[
i
].
addr
);
cModualCntrol
.
eModualType
=
eModdusId_Find_ModualType
(
cControl
.
ss
[
i
].
addr
);
...
@@ -240,6 +237,7 @@ namespace ModbusDemo.MessageFormat
...
@@ -240,6 +237,7 @@ namespace ModbusDemo.MessageFormat
{
{
vFindChannelMap
(
cControl
.
ss
[
i
].
addr
,
"d7"
,
Convert
.
ToBoolean
(
cControl
.
ss
[
i
].
op
.
d7
),
ref
cModualCntrol
);
vFindChannelMap
(
cControl
.
ss
[
i
].
addr
,
"d7"
,
Convert
.
ToBoolean
(
cControl
.
ss
[
i
].
op
.
d7
),
ref
cModualCntrol
);
}
}
if
(
ModbusErrorCode
==
ModbusComm
.
eModbusErrorCode
.
MB_EMASTERNOERR
&&
cModualCntrol
.
ulStartTime
<=
Form1
.
GetTimeStamp
())
if
(
ModbusErrorCode
==
ModbusComm
.
eModbusErrorCode
.
MB_EMASTERNOERR
&&
cModualCntrol
.
ulStartTime
<=
Form1
.
GetTimeStamp
())
{
{
cModualCntrol
.
bStartControl
=
true
;
cModualCntrol
.
bStartControl
=
true
;
...
@@ -259,6 +257,9 @@ namespace ModbusDemo.MessageFormat
...
@@ -259,6 +257,9 @@ namespace ModbusDemo.MessageFormat
}
}
if
(
ModbusErrorCode
==
ModbusComm
.
eModbusErrorCode
.
MB_EMASTERNOERR
)
if
(
ModbusErrorCode
==
ModbusComm
.
eModbusErrorCode
.
MB_EMASTERNOERR
)
{
{
lock
(
obLock
)
{
vDelete_Same_Control
(
cModualCntrol
);
if
(
cModualCntrol
.
bStartControl
==
true
&&
cModualCntrol
.
ulStartTime
!=
0
&&
cModualCntrol
.
bControlStatus
==
true
)
if
(
cModualCntrol
.
bStartControl
==
true
&&
cModualCntrol
.
ulStartTime
!=
0
&&
cModualCntrol
.
bControlStatus
==
true
)
{
{
liModuualControl
.
Add
(
cModualCntrol
);
liModuualControl
.
Add
(
cModualCntrol
);
...
@@ -268,6 +269,7 @@ namespace ModbusDemo.MessageFormat
...
@@ -268,6 +269,7 @@ namespace ModbusDemo.MessageFormat
liModuualControl
.
Add
(
cModualCntrol
);
liModuualControl
.
Add
(
cModualCntrol
);
}
}
}
}
}
for
(
int
k
=
0
;
k
<
8
;
k
++)
for
(
int
k
=
0
;
k
<
8
;
k
++)
{
{
if
(
cModualCntrol
.
bControlBit
[
k
]
==
true
&&
ModbusErrorCode
==
ModbusComm
.
eModbusErrorCode
.
MB_EMASTERNOERR
)
if
(
cModualCntrol
.
bControlBit
[
k
]
==
true
&&
ModbusErrorCode
==
ModbusComm
.
eModbusErrorCode
.
MB_EMASTERNOERR
)
...
@@ -329,6 +331,8 @@ namespace ModbusDemo.MessageFormat
...
@@ -329,6 +331,8 @@ namespace ModbusDemo.MessageFormat
{
{
cControlMap
=
JsonConvert
.
DeserializeObject
<
pcControlMap
>(
strMapCfg
);
cControlMap
=
JsonConvert
.
DeserializeObject
<
pcControlMap
>(
strMapCfg
);
while
(
true
)
while
(
true
)
{
lock
(
obLock
)
{
{
for
(
sbyte
i
=
0
;
i
<
liModuualControl
.
Count
;
i
++)
for
(
sbyte
i
=
0
;
i
<
liModuualControl
.
Count
;
i
++)
{
{
...
@@ -377,9 +381,9 @@ namespace ModbusDemo.MessageFormat
...
@@ -377,9 +381,9 @@ namespace ModbusDemo.MessageFormat
}
}
else
if
(
liModuualControl
[
i
].
eModualType
==
modual
.
eModualType
.
WTDR78C
)
else
if
(
liModuualControl
[
i
].
eModualType
==
modual
.
eModualType
.
WTDR78C
)
{
{
ModualPoll
.
cx66c
.
sX66cAlarmStruct
[
liModuualControl
[
i
].
sbModualIndex
].
usNowAlarmCode
[
k
+
8
]
|=
(
ushort
)
ModualAlarm
.
eAlarmCode
.
ChannelCommunError
;
ModualPoll
.
cx66c
.
sX66cAlarmStruct
[
liModuualControl
[
i
].
sbModualIndex
].
usNowAlarmCode
[
k
+
8
]
|=
(
ushort
)
ModualAlarm
.
eAlarmCode
.
ChannelCommunError
;
ModualPoll
.
cx66c
.
sX66cAlarmStruct
[
liModuualControl
[
i
].
sbModualIndex
].
usNowAlarmCode
[
k
+
8
]
+=
usDefineControlTimes
;
ModualPoll
.
cx66c
.
sX66cAlarmStruct
[
liModuualControl
[
i
].
sbModualIndex
].
usNowAlarmCode
[
k
+
8
]
+=
usDefineControlTimes
;
ModualPoll
.
cx66c
.
sX66cAlarmStruct
[
liModuualControl
[
i
].
sbModualIndex
].
usNowAlarmCode
[
k
+
8
]
|=
(
ushort
)
ModualAlarm
.
eAlarmCode
.
ChannelControlError
;
ModualPoll
.
cx66c
.
sX66cAlarmStruct
[
liModuualControl
[
i
].
sbModualIndex
].
usNowAlarmCode
[
k
+
8
]
|=
(
ushort
)
ModualAlarm
.
eAlarmCode
.
ChannelControlError
;
}
}
}
}
}
}
...
@@ -399,10 +403,10 @@ namespace ModbusDemo.MessageFormat
...
@@ -399,10 +403,10 @@ namespace ModbusDemo.MessageFormat
}
}
else
if
(
liModuualControl
[
i
].
eModualType
==
modual
.
eModualType
.
WTDR78C
)
else
if
(
liModuualControl
[
i
].
eModualType
==
modual
.
eModualType
.
WTDR78C
)
{
{
ModualPoll
.
cx78c
.
sX78cAlarmStruct
[
liModuualControl
[
i
].
sbModualIndex
].
usNowAlarmCode
[
k
+
8
]
&=
(
ushort
)~
ModualAlarm
.
eAlarmCode
.
ChannelCommunError
;
ModualPoll
.
cx78c
.
sX78cAlarmStruct
[
liModuualControl
[
i
].
sbModualIndex
].
usNowAlarmCode
[
k
+
8
]
&=
(
ushort
)~
ModualAlarm
.
eAlarmCode
.
ChannelCommunError
;
ModualPoll
.
cx78c
.
sX78cAlarmStruct
[
liModuualControl
[
i
].
sbModualIndex
].
usNowAlarmCode
[
k
+
8
]
=
0
;
ModualPoll
.
cx78c
.
sX78cAlarmStruct
[
liModuualControl
[
i
].
sbModualIndex
].
usNowAlarmCode
[
k
+
8
]
=
0
;
if
(
Enumerable
.
SequenceEqual
(
bControlData
,
btReadTempData
))
if
(
Enumerable
.
SequenceEqual
(
bControlData
,
btReadTempData
))
ModualPoll
.
cx78c
.
sX78cAlarmStruct
[
liModuualControl
[
i
].
sbModualIndex
].
usNowAlarmCode
[
k
+
8
]
&=
(
ushort
)~
ModualAlarm
.
eAlarmCode
.
ChannelControlError
;
ModualPoll
.
cx78c
.
sX78cAlarmStruct
[
liModuualControl
[
i
].
sbModualIndex
].
usNowAlarmCode
[
k
+
8
]
&=
(
ushort
)~
ModualAlarm
.
eAlarmCode
.
ChannelControlError
;
}
}
}
}
}
}
...
@@ -418,23 +422,41 @@ namespace ModbusDemo.MessageFormat
...
@@ -418,23 +422,41 @@ namespace ModbusDemo.MessageFormat
bool
[]
bControlData
=
new
bool
[
6
];
bool
[]
bControlData
=
new
bool
[
6
];
bool
[]
btReadTempData
;
bool
[]
btReadTempData
;
byte
ChannelNumber
=
0
;
byte
ChannelNumber
=
0
;
byte
byOperatinChannelNUmber
=
0
;
if
(
liModuualControl
[
i
].
eModualType
==
modual
.
eModualType
.
WTDR66C
)
if
(
liModuualControl
[
i
].
eModualType
==
modual
.
eModualType
.
WTDR66C
)
{
{
ModbusErrorCode
|=
ModbusComm
.
Modbus_ReadCoilsTask
(
out
bControlData
,
liModuualControl
[
i
].
sbModbusID
,
16
,
6
);
ModbusErrorCode
|=
ModbusComm
.
Modbus_ReadCoilsTask
(
out
bControlData
,
liModuualControl
[
i
].
sbModbusID
,
16
,
6
);
ChannelNumber
=
6
;
ChannelNumber
=
6
;
}
}
else
if
(
liModuualControl
[
i
].
eModualType
==
modual
.
eModualType
.
WTDR78C
)
else
if
(
liModuualControl
[
i
].
eModualType
==
modual
.
eModualType
.
WTDR78C
)
{
{
ChannelNumber
=
8
;
ChannelNumber
=
8
;
ModbusErrorCode
|=
ModbusComm
.
Modbus_ReadCoilsTask
(
out
bControlData
,
liModuualControl
[
i
].
sbModbusID
,
16
,
8
);
ModbusErrorCode
|=
ModbusComm
.
Modbus_ReadCoilsTask
(
out
bControlData
,
liModuualControl
[
i
].
sbModbusID
,
16
,
8
);
}
}
for
(
sbyte
k
=
0
;
k
<
ChannelNumber
;
k
++)
{
if
(
liModuualControl
[
i
].
bControlBit
[
k
]
==
true
)
{
byOperatinChannelNUmber
++;
}
}
for
(
sbyte
j
=
0
;
j
<
ChannelNumber
;
j
++)
for
(
sbyte
j
=
0
;
j
<
ChannelNumber
;
j
++)
{
if
(
byOperatinChannelNUmber
==
3
)
{
if
(
liModuualControl
[
i
].
bControlBit
[
j
]
==
true
&&
j
!=
2
)
{
bControlData
[
j
]
=
!
liModuualControl
[
i
].
bControlData
[
j
];
}
}
else
{
{
if
(
liModuualControl
[
i
].
bControlBit
[
j
]
==
true
)
if
(
liModuualControl
[
i
].
bControlBit
[
j
]
==
true
)
{
{
bControlData
[
j
]
=
!
liModuualControl
[
i
].
bControlData
[
j
];
bControlData
[
j
]
=
!
liModuualControl
[
i
].
bControlData
[
j
];
}
}
}
}
}
ModbusErrorCode
|=
ModbusComm
.
Modbus_WriteMultipleCoils
(
liModuualControl
[
i
].
sbModbusID
,
16
,
bControlData
);
ModbusErrorCode
|=
ModbusComm
.
Modbus_WriteMultipleCoils
(
liModuualControl
[
i
].
sbModbusID
,
16
,
bControlData
);
ModbusErrorCode
|=
ModbusComm
.
Modbus_ReadCoilsTask
(
out
btReadTempData
,
liModuualControl
[
i
].
sbModbusID
,
16
,
ChannelNumber
);
ModbusErrorCode
|=
ModbusComm
.
Modbus_ReadCoilsTask
(
out
btReadTempData
,
liModuualControl
[
i
].
sbModbusID
,
16
,
ChannelNumber
);
if
(
ModbusErrorCode
!=
ModbusComm
.
eModbusErrorCode
.
MB_EMASTERNOERR
)
if
(
ModbusErrorCode
!=
ModbusComm
.
eModbusErrorCode
.
MB_EMASTERNOERR
)
...
@@ -451,9 +473,9 @@ namespace ModbusDemo.MessageFormat
...
@@ -451,9 +473,9 @@ namespace ModbusDemo.MessageFormat
}
}
else
if
(
liModuualControl
[
i
].
eModualType
==
modual
.
eModualType
.
WTDR78C
)
else
if
(
liModuualControl
[
i
].
eModualType
==
modual
.
eModualType
.
WTDR78C
)
{
{
ModualPoll
.
cx78c
.
sX78cAlarmStruct
[
liModuualControl
[
i
].
sbModualIndex
].
usNowAlarmCode
[
k
+
8
]
|=
(
ushort
)
ModualAlarm
.
eAlarmCode
.
ChannelCommunError
;
ModualPoll
.
cx78c
.
sX78cAlarmStruct
[
liModuualControl
[
i
].
sbModualIndex
].
usNowAlarmCode
[
k
+
8
]
|=
(
ushort
)
ModualAlarm
.
eAlarmCode
.
ChannelCommunError
;
ModualPoll
.
cx78c
.
sX78cAlarmStruct
[
liModuualControl
[
i
].
sbModualIndex
].
usNowAlarmCode
[
k
+
8
]
+=
usDefineControlTimes
;
ModualPoll
.
cx78c
.
sX78cAlarmStruct
[
liModuualControl
[
i
].
sbModualIndex
].
usNowAlarmCode
[
k
+
8
]
+=
usDefineControlTimes
;
ModualPoll
.
cx78c
.
sX78cAlarmStruct
[
liModuualControl
[
i
].
sbModualIndex
].
usNowAlarmCode
[
k
+
8
]
|=
(
ushort
)
ModualAlarm
.
eAlarmCode
.
ChannelControlError
;
ModualPoll
.
cx78c
.
sX78cAlarmStruct
[
liModuualControl
[
i
].
sbModualIndex
].
usNowAlarmCode
[
k
+
8
]
|=
(
ushort
)
ModualAlarm
.
eAlarmCode
.
ChannelControlError
;
}
}
}
}
}
}
...
@@ -473,10 +495,10 @@ namespace ModbusDemo.MessageFormat
...
@@ -473,10 +495,10 @@ namespace ModbusDemo.MessageFormat
}
}
else
if
(
liModuualControl
[
i
].
eModualType
==
modual
.
eModualType
.
WTDR78C
)
else
if
(
liModuualControl
[
i
].
eModualType
==
modual
.
eModualType
.
WTDR78C
)
{
{
ModualPoll
.
cx78c
.
sX78cAlarmStruct
[
liModuualControl
[
i
].
sbModualIndex
].
usNowAlarmCode
[
k
+
8
]
&=
(
ushort
)~
ModualAlarm
.
eAlarmCode
.
ChannelCommunError
;
ModualPoll
.
cx78c
.
sX78cAlarmStruct
[
liModuualControl
[
i
].
sbModualIndex
].
usNowAlarmCode
[
k
+
8
]
&=
(
ushort
)~
ModualAlarm
.
eAlarmCode
.
ChannelCommunError
;
ModualPoll
.
cx78c
.
sX78cAlarmStruct
[
liModuualControl
[
i
].
sbModualIndex
].
usNowAlarmCode
[
k
+
8
]
=
0
;
ModualPoll
.
cx78c
.
sX78cAlarmStruct
[
liModuualControl
[
i
].
sbModualIndex
].
usNowAlarmCode
[
k
+
8
]
=
0
;
if
(
Enumerable
.
SequenceEqual
(
bControlData
,
btReadTempData
))
if
(
Enumerable
.
SequenceEqual
(
bControlData
,
btReadTempData
))
ModualPoll
.
cx78c
.
sX78cAlarmStruct
[
liModuualControl
[
i
].
sbModualIndex
].
usNowAlarmCode
[
k
+
8
]
&=
(
ushort
)~
ModualAlarm
.
eAlarmCode
.
ChannelControlError
;
ModualPoll
.
cx78c
.
sX78cAlarmStruct
[
liModuualControl
[
i
].
sbModualIndex
].
usNowAlarmCode
[
k
+
8
]
&=
(
ushort
)~
ModualAlarm
.
eAlarmCode
.
ChannelControlError
;
}
}
}
}
}
}
...
@@ -486,52 +508,95 @@ namespace ModbusDemo.MessageFormat
...
@@ -486,52 +508,95 @@ namespace ModbusDemo.MessageFormat
}
}
}
}
}
}
}
Thread
.
Sleep
(
100
);
Thread
.
Sleep
(
100
);
}
}
}
}
public
static
modual
.
eModualType
eModdusId_Find_ModualType
(
string
sModbusID
)
public
static
modual
.
eModualType
eModdusId_Find_ModualType
(
string
sModbusID
)
{
{
for
(
int
i
=
0
;
i
<
cControlMap
.
chMap
.
Count
;
i
++)
for
(
int
i
=
0
;
i
<
ModualPoll
.
byX66cNumber
;
i
++)
{
{
if
(
sModbusID
==
cControlMap
.
chMap
[
i
].
srcId
)
if
(
byte
.
Parse
(
sModbusID
)
==
ModualPoll
.
cx66c
.
byModbusID
[
i
]
)
{
{
if
(
cControlMap
.
chMap
[
i
].
srcType
==
"WTDR14P"
)
return
modual
.
eModualType
.
WTDR14P
;
else
if
(
cControlMap
.
chMap
[
i
].
srcType
==
"WTDR18X"
)
return
modual
.
eModualType
.
WTDR18X
;
else
if
(
cControlMap
.
chMap
[
i
].
srcType
==
"WTDR78C"
)
return
modual
.
eModualType
.
WTDR78C
;
else
if
(
cControlMap
.
chMap
[
i
].
srcType
==
"WTDR66C"
)
return
modual
.
eModualType
.
WTDR66C
;
return
modual
.
eModualType
.
WTDR66C
;
}
}
}
}
for
(
int
i
=
0
;
i
<
ModualPoll
.
byX18xNumber
;
i
++)
{
if
(
byte
.
Parse
(
sModbusID
)
==
ModualPoll
.
cx78c
.
byModbusID
[
i
])
{
return
modual
.
eModualType
.
WTDR78C
;
}
}
//if(cControlMap.chMap[i].srcType == "WTDR14P")
// return modual.eModualType.WTDR14P;
//else if(cControlMap.chMap[i].srcType == "WTDR18X")
// return modual.eModualType.WTDR18X;
//else if(cControlMap.chMap[i].srcType == "WTDR78C")
// return modual.eModualType.WTDR78C;
//else if(cControlMap.chMap[i].srcType == "WTDR66C")
// return modual.eModualType.WTDR66C;
return
modual
.
eModualType
.
IDLE
;
return
modual
.
eModualType
.
IDLE
;
}
}
private
static
void
vFindChannelMap
(
string
stContrID
,
string
stChannelName
,
bool
bControlValue
,
ref
ModualCntrol
cModualCntrol
)
private
static
void
vFindChannelMap
(
string
stContrID
,
string
stChannelName
,
bool
bControlValue
,
ref
ModualCntrol
cModualCntrol
)
{
{
bool
bHadRef
=
false
;
if
(
bControlValue
==
true
)
{
cModualCntrol
.
bOpenMachine
=
true
;
}
for
(
int
i
=
0
;
i
<
cControlMap
.
chMap
.
Count
;
i
++)
for
(
int
i
=
0
;
i
<
cControlMap
.
chMap
.
Count
;
i
++)
{
{
if
(
cControlMap
.
chMap
[
i
].
srcId
==
stContrID
)
if
(
cControlMap
.
chMap
[
i
].
srcId
==
stContrID
)
{
{
bHadRef
=
true
;
if
(
cControlMap
.
chMap
[
i
].
srcCh
==
stChannelName
&&
cControlMap
.
chMap
[
i
].
dstCh
.
Count
!=
0
)
if
(
cControlMap
.
chMap
[
i
].
srcCh
==
stChannelName
&&
cControlMap
.
chMap
[
i
].
dstCh
.
Count
!=
0
)
{
{
if
(
cControlMap
.
chMap
[
i
].
opType
==
"durOp"
)
{
cModualCntrol
.
usDurationTime
=
1
;
cModualCntrol
.
ulStartTime
=
0xFF
;
}
for
(
int
j
=
0
;
j
<
cControlMap
.
chMap
[
i
].
dstCh
.
Count
;
j
++)
for
(
int
j
=
0
;
j
<
cControlMap
.
chMap
[
i
].
dstCh
.
Count
;
j
++)
{
{
for
(
int
k
=
0
;
k
<
8
;
k
++)
for
(
int
k
=
0
;
k
<
8
;
k
++)
{
{
string
str
=
"d"
+
k
.
ToString
();
string
str
=
"d"
+
k
.
ToString
();
if
(
cControlMap
.
chMap
[
i
].
dstCh
[
j
]
==
str
)
if
(
cControlMap
.
chMap
[
i
].
dstCh
[
j
]
==
str
)
{
if
(
cControlMap
.
chMap
[
i
].
dstCh
.
Count
==
3
)
{
if
(
j
==
0
)
{
cModualCntrol
.
bControlData
[
k
]
=
bControlValue
;
}
else
if
(
j
==
1
)
{
cModualCntrol
.
bControlData
[
k
]
=
true
;
}
else
if
(
j
==
2
)
{
cModualCntrol
.
bControlData
[
k
]
=
!
bControlValue
;
}
else
{
{
cModualCntrol
.
bControlData
[
k
]
=
bControlValue
;
cModualCntrol
.
bControlData
[
k
]
=
bControlValue
;
}
}
else
if
(
cControlMap
.
chMap
[
i
].
dstCh
.
Count
==
2
)
{
cModualCntrol
.
bControlData
[
k
]
=
bControlValue
;
}
cModualCntrol
.
bControlBit
[
k
]
=
true
;
cModualCntrol
.
bControlBit
[
k
]
=
true
;
cModualCntrol
.
xModualRespControl
[
k
].
byResModualID
=
byte
.
Parse
(
cControlMap
.
chMap
[
i
].
resId
);
cModualCntrol
.
xModualRespControl
[
k
].
eModualType
=
eModdusId_Find_ModualType
(
cControlMap
.
chMap
[
i
].
resId
);
cModualCntrol
.
xModualRespControl
[
k
].
stResChannel
=
cControlMap
.
chMap
[
i
].
resCh
;
}
}
}
}
}
}
cModualCntrol
.
xModualRespControl
.
byResModualID
=
byte
.
Parse
(
cControlMap
.
chMap
[
i
].
resId
);
cModualCntrol
.
xModualRespControl
.
eModualType
=
eModdusId_Find_ModualType
(
cControlMap
.
chMap
[
i
].
resId
);
cModualCntrol
.
xModualRespControl
.
stResChannel
=
cControlMap
.
chMap
[
i
].
resCh
;
}
}
else
else
{
{
...
@@ -547,38 +612,41 @@ namespace ModbusDemo.MessageFormat
...
@@ -547,38 +612,41 @@ namespace ModbusDemo.MessageFormat
}
}
}
}
}
}
if
(
bHadRef
==
false
)
{
for
(
int
k
=
0
;
k
<
8
;
k
++)
{
string
str
=
"d"
+
k
.
ToString
();
if
(
stChannelName
==
str
)
{
cModualCntrol
.
bControlData
[
k
]
=
bControlValue
;
cModualCntrol
.
bControlBit
[
k
]
=
true
;
}
}
}
}
}
//public static ModbusComm.eModbusErrorCode eOperation_Machine(
modual.eModualType eModualType, byte bMoualID, bool[] bControldata,bool[] bControlBit, out bool bControlStatus,
ModualRespControl sModualRespControl)
//public static ModbusComm.eModbusErrorCode eOperation_Machine(
ModualCntrol cModualCntrol, out bool bControlStatus,
ModualRespControl sModualRespControl)
//{
//{
// ushort[] usRegData,usRegType;
// ModbusComm.eModbusErrorCode ModbusErrorCode = ModbusComm.eModbusErrorCode.MB_EMASTERNOERR;
// if (sModualRespControl.eModualType == modual.eModualType.WTDR78C)
// {
// double[] dConvertData = new double[8];
// string[] strDoubleString;
// _418X c18xformulasormual = new _418X();
// if ((ModbusErrorCode |= ModbusComm.Modbus_WriteMultipleCoils(bMoualID, 16, bControldata)) == ModbusComm.eModbusErrorCode.MB_EMASTERNOERR)
// {
// for (int i = 0; i < 8; i++)
// {
// ModualPoll.cx18x.sX18xAlarmstruct
// }
// }
// ModbusErrorCode |= ModbusComm.Modbus_ReadHoldingRegistersTask(out usRegData, bMoualID, 0, 8);
// ModbusErrorCode |= ModbusComm.Modbus_ReadHoldingRegistersTask(out usRegType, bMoualID, 10,8);
// strDoubleString = c18xformulasormual.Value(usRegData, usRegType);
// for (int i = 0; i < 8; i++)
// {
// dConvertData[i] = double.Parse(strDoubleString[i]);
// }
// }
//}
//}
public
static
void
vDelete_Same_Control
(
ModualCntrol
cModualCntrol
)
{
for
(
sbyte
i
=
0
;
i
<
liModuualControl
.
Count
;
i
++)
{
if
(
liModuualControl
[
i
].
sbModbusID
==
cModualCntrol
.
sbModbusID
)
{
if
(
Enumerable
.
SequenceEqual
(
liModuualControl
[
i
].
bControlBit
,
cModualCntrol
.
bControlBit
))
{
liModuualControl
.
Remove
(
liModuualControl
[
i
]);
}
}
}
}
public
static
void
vPoolLevelParse
(
string
stConfigString
,
out
string
stResponseStrign
)
public
static
void
vPoolLevelParse
(
string
stConfigString
,
out
string
stResponseStrign
)
{
{
pcCfgRoot
cCfgRoot
=
new
pcCfgRoot
();
pcCfgRoot
cCfgRoot
=
new
pcCfgRoot
();
...
@@ -589,23 +657,23 @@ namespace ModbusDemo.MessageFormat
...
@@ -589,23 +657,23 @@ namespace ModbusDemo.MessageFormat
jsonObj
=
JObject
.
Parse
(
stConfigString
);
jsonObj
=
JObject
.
Parse
(
stConfigString
);
for
(
int
i
=
0
;
i
<
cCfgRoot
.
ss
.
Count
;
i
++)
for
(
int
i
=
0
;
i
<
cCfgRoot
.
ss
.
Count
;
i
++)
{
{
string
strChannelString
=
"d"
+
i
.
ToString
();
pcLiquidLevelConfig
cLiquidLevelConfig
=
new
pcLiquidLevelConfig
pcLiquidLevelConfig
cLiquidLevelConfig
=
new
pcLiquidLevelConfig
{
{
byModbusID
=
byte
.
Parse
(
cCfgRoot
.
ss
[
i
].
addr
),
byModbusID
=
byte
.
Parse
(
cCfgRoot
.
ss
[
i
].
addr
),
dUpLevel
=
double
.
Parse
(
cCfgRoot
.
ss
[
i
].
cfg
.
upper
),
dUpLevel
=
double
.
Parse
(
cCfgRoot
.
ss
[
i
].
cfg
.
upper
),
dDownLevel
=
double
.
Parse
(
cCfgRoot
.
ss
[
i
].
cfg
.
down
)
dDownLevel
=
double
.
Parse
(
cCfgRoot
.
ss
[
i
].
cfg
.
down
)
};
};
if
(
jsonObj
[
"ss"
][
i
][
"cfg"
][
strChannelString
]
!=
null
)
string
strChannelString
=
"d"
+
i
.
ToString
();
for
(
int
j
=
0
;
j
<
8
;
j
++)
{
if
(
jsonObj
[
"ss"
][
i
][
"cfg"
].
Value
<
string
>(
"name"
)
==
strChannelString
)
{
{
cLiquidLevelConfig
.
stChannelNumber
=
strChannelString
;
cLiquidLevelConfig
.
stChannelNumber
=
strChannelString
;
jsonObj
[
"ss"
][
i
][
"cfg"
][
strChannelString
]
=
1
;
jsonObj
[
"ss"
][
i
][
"cfg"
][
strChannelString
]
=
1
;
break
;
}
}
else
{
jsonObj
[
"ss"
][
i
][
"cfg"
][
strChannelString
]
=
0
;
continue
;
}
}
if
(
jsonObj
[
"ss"
][
i
][
"cfg"
][
"ts"
]
!=
null
)
if
(
jsonObj
[
"ss"
][
i
][
"cfg"
][
"ts"
]
!=
null
)
{
{
jsonObj
[
"ss"
][
i
][
"cfg"
][
"ts"
]
=
Form1
.
GetTimeStamp
();
jsonObj
[
"ss"
][
i
][
"cfg"
][
"ts"
]
=
Form1
.
GetTimeStamp
();
...
...
ModbusDemo/Modular/ModualPoll.cs
View file @
5635bdf7
...
@@ -17,8 +17,8 @@ namespace ModbusDemo.Modular
...
@@ -17,8 +17,8 @@ namespace ModbusDemo.Modular
{
{
#if DEBUG_TEST
#if DEBUG_TEST
public
const
byte
byX14pNumber
=
1
;
public
const
byte
byX14pNumber
=
1
;
public
static
byte
[]
byX14pIdlist
=
{
27
};
public
static
byte
[]
byX14pIdlist
=
{
27
};
private
static
modual
.
eX14pSensorChannelType
[,]
sX14pChannelType
=
new
modual
.
eX14pSensorChannelType
[
byX14pNumber
,
byX14pReadTypeNumber
]
{
{
modual
.
eX14pSensorChannelType
.
Normal
,
modual
.
eX14pSensorChannelType
.
Null
,
modual
.
eX14pSensorChannelType
.
Null
,
modual
.
eX14pSensorChannelType
.
Null
}};
private
static
modual
.
eX14pSensorChannelType
[,]
sX14pChannelType
=
new
modual
.
eX14pSensorChannelType
[
byX14pNumber
,
byX14pReadTypeNumber
]
{
{
modual
.
eX14pSensorChannelType
.
Normal
,
modual
.
eX14pSensorChannelType
.
Null
,
modual
.
eX14pSensorChannelType
.
Null
,
modual
.
eX14pSensorChannelType
.
Null
}
};
#else
#else
public
const
byte
byX14pNumber
=
2
;
public
const
byte
byX14pNumber
=
2
;
public
static
byte
[]
byX14pIdlist
=
{
1
,
17
};
public
static
byte
[]
byX14pIdlist
=
{
1
,
17
};
...
@@ -35,8 +35,8 @@ namespace ModbusDemo.Modular
...
@@ -35,8 +35,8 @@ namespace ModbusDemo.Modular
public
static
_414P
c14formulasormual
=
new
_414P
();
public
static
_414P
c14formulasormual
=
new
_414P
();
#if DEBUG_TEST
#if DEBUG_TEST
public
const
byte
byX18xNumber
=
1
;
public
const
byte
byX18xNumber
=
1
;
public
static
byte
[]
byX18xIdlist
=
{
13
};
public
static
byte
[]
byX18xIdlist
=
{
13
};
private
static
modual
.
eX18xSensorChannelType
[,]
sX18xChannelType
=
new
modual
.
eX18xSensorChannelType
[
byX18xNumber
,
byX18xReadDataNumber
]
{
{
modual
.
eX18xSensorChannelType
.
Mike_6
,
modual
.
eX18xSensorChannelType
.
Null
,
modual
.
eX18xSensorChannelType
.
Null
,
modual
.
eX18xSensorChannelType
.
Null
,
modual
.
eX18xSensorChannelType
.
Null
,
modual
.
eX18xSensorChannelType
.
Null
,
modual
.
eX18xSensorChannelType
.
Null
,
modual
.
eX18xSensorChannelType
.
Null
}};
private
static
modual
.
eX18xSensorChannelType
[,]
sX18xChannelType
=
new
modual
.
eX18xSensorChannelType
[
byX18xNumber
,
byX18xReadDataNumber
]
{
{
modual
.
eX18xSensorChannelType
.
Mike_6
,
modual
.
eX18xSensorChannelType
.
Null
,
modual
.
eX18xSensorChannelType
.
Null
,
modual
.
eX18xSensorChannelType
.
Null
,
modual
.
eX18xSensorChannelType
.
Null
,
modual
.
eX18xSensorChannelType
.
Null
,
modual
.
eX18xSensorChannelType
.
Null
,
modual
.
eX18xSensorChannelType
.
Null
}
};
#else
#else
public
const
byte
byX18xNumber
=
6
;
public
const
byte
byX18xNumber
=
6
;
public
static
byte
[]
byX18xIdlist
=
{
3
,
53
,
6
,
12
,
21
,
25
};
public
static
byte
[]
byX18xIdlist
=
{
3
,
53
,
6
,
12
,
21
,
25
};
...
@@ -59,7 +59,7 @@ namespace ModbusDemo.Modular
...
@@ -59,7 +59,7 @@ namespace ModbusDemo.Modular
#if DEBUG_TEST
#if DEBUG_TEST
public
const
byte
byX78cNumber
=
1
;
public
const
byte
byX78cNumber
=
1
;
public
static
byte
[]
byX78cIdlist
=
{
20
};
public
static
byte
[]
byX78cIdlist
=
{
20
};
#else
#else
public
const
byte
byX78cNumber
=
0
;
public
const
byte
byX78cNumber
=
0
;
public
static
byte
[]
byX78cIdlist
=
{
11
,
20
,
33
,
34
,
55
,
56
};
public
static
byte
[]
byX78cIdlist
=
{
11
,
20
,
33
,
34
,
55
,
56
};
...
@@ -72,7 +72,7 @@ namespace ModbusDemo.Modular
...
@@ -72,7 +72,7 @@ namespace ModbusDemo.Modular
#if DEBUG_TEST
#if DEBUG_TEST
public
const
byte
byX66cNumber
=
5
;
public
const
byte
byX66cNumber
=
5
;
public
static
byte
[]
byX66cIdlist
=
{
16
,
31
,
35
,
39
,
90
};
public
static
byte
[]
byX66cIdlist
=
{
16
,
31
,
35
,
39
,
90
};
#else
#else
public
const
byte
byX66cNumber
=
32
;
public
const
byte
byX66cNumber
=
32
;
public
static
byte
[]
byX66cIdlist
=
{
4
,
5
,
7
,
8
,
9
,
10
,
14
,
15
,
19
,
22
,
23
,
24
,
26
,
30
,
32
,
36
,
37
,
38
,
40
,
41
,
42
,
43
,
44
,
46
,
47
,
48
,
49
,
50
,
51
,
52
,
54
,
57
};
public
static
byte
[]
byX66cIdlist
=
{
4
,
5
,
7
,
8
,
9
,
10
,
14
,
15
,
19
,
22
,
23
,
24
,
26
,
30
,
32
,
36
,
37
,
38
,
40
,
41
,
42
,
43
,
44
,
46
,
47
,
48
,
49
,
50
,
51
,
52
,
54
,
57
};
...
@@ -126,7 +126,7 @@ namespace ModbusDemo.Modular
...
@@ -126,7 +126,7 @@ namespace ModbusDemo.Modular
{
{
cx14P
.
sX14pDataStruct
[
i
].
dNowConvertData
[
j
]
=
0
;
cx14P
.
sX14pDataStruct
[
i
].
dNowConvertData
[
j
]
=
0
;
}
}
if
(
cx14P
.
sX14PAlarmStruct
[
i
].
bDataNotFirstIncreaseOrDecrease
==
true
&&
sX14pChannelType
[
i
,
j
]
!=
modual
.
eX14pSensorChannelType
.
Null
)
if
(
cx14P
.
sX14PAlarmStruct
[
i
].
bDataNotFirstIncreaseOrDecrease
==
true
&&
sX14pChannelType
[
i
,
j
]
!=
modual
.
eX14pSensorChannelType
.
Null
)
{
{
if
(
cx14P
.
sX14pDataStruct
[
i
].
dNowConvertData
[
j
]
-
cx14P
.
sX14pDataStruct
[
i
].
dBeforeConvertData
[
j
]
>=
us14pMaxJumTemper
||
cx14P
.
sX14pDataStruct
[
i
].
dBeforeConvertData
[
j
]
-
cx14P
.
sX14pDataStruct
[
i
].
dNowConvertData
[
j
]
>=
us14pMaxJumTemper
)
if
(
cx14P
.
sX14pDataStruct
[
i
].
dNowConvertData
[
j
]
-
cx14P
.
sX14pDataStruct
[
i
].
dBeforeConvertData
[
j
]
>=
us14pMaxJumTemper
||
cx14P
.
sX14pDataStruct
[
i
].
dBeforeConvertData
[
j
]
-
cx14P
.
sX14pDataStruct
[
i
].
dNowConvertData
[
j
]
>=
us14pMaxJumTemper
)
{
{
...
@@ -173,7 +173,7 @@ namespace ModbusDemo.Modular
...
@@ -173,7 +173,7 @@ namespace ModbusDemo.Modular
cx18x
.
sX18xAlarmstruct
[
i
].
usCommFailTimes
[
j
]
=
0
;
cx18x
.
sX18xAlarmstruct
[
i
].
usCommFailTimes
[
j
]
=
0
;
}
}
}
}
for
(
byte
j
=
0
;
j
<
byX18xReadTypeNumber
;
j
++)
for
(
byte
j
=
0
;
j
<
byX18xReadTypeNumber
;
j
++)
{
{
if
(
ModbusErrorCode
==
ModbusComm
.
eModbusErrorCode
.
MB_EMASTERNOERR
)
if
(
ModbusErrorCode
==
ModbusComm
.
eModbusErrorCode
.
MB_EMASTERNOERR
)
{
{
...
@@ -205,7 +205,7 @@ namespace ModbusDemo.Modular
...
@@ -205,7 +205,7 @@ namespace ModbusDemo.Modular
{
{
cx18x
.
sX18xDataStruct
[
i
].
dNowConvertData
[
j
]
=
0
;
cx18x
.
sX18xDataStruct
[
i
].
dNowConvertData
[
j
]
=
0
;
}
}
if
(
cx18x
.
sX18xAlarmstruct
[
i
].
bDataNotFirstIncreaseOrDecrease
==
true
&&
sX18xChannelType
[
i
,
j
]
!=
modual
.
eX18xSensorChannelType
.
Null
)
if
(
cx18x
.
sX18xAlarmstruct
[
i
].
bDataNotFirstIncreaseOrDecrease
==
true
&&
sX18xChannelType
[
i
,
j
]
!=
modual
.
eX18xSensorChannelType
.
Null
)
{
{
if
(
cx18x
.
sX18xDataStruct
[
i
].
dNowConvertData
[
j
]
-
cx18x
.
sX18xDataStruct
[
i
].
dBeforeConvertData
[
j
]
>=
dX18xMaxJumpData
||
cx18x
.
sX18xDataStruct
[
i
].
dBeforeConvertData
[
j
]
-
cx18x
.
sX18xDataStruct
[
i
].
dNowConvertData
[
j
]
>=
dX18xMaxJumpData
)
if
(
cx18x
.
sX18xDataStruct
[
i
].
dNowConvertData
[
j
]
-
cx18x
.
sX18xDataStruct
[
i
].
dBeforeConvertData
[
j
]
>=
dX18xMaxJumpData
||
cx18x
.
sX18xDataStruct
[
i
].
dBeforeConvertData
[
j
]
-
cx18x
.
sX18xDataStruct
[
i
].
dNowConvertData
[
j
]
>=
dX18xMaxJumpData
)
{
{
...
@@ -238,7 +238,7 @@ namespace ModbusDemo.Modular
...
@@ -238,7 +238,7 @@ namespace ModbusDemo.Modular
for
(
sbyte
j
=
0
;
j
<
byX78cInputRegNumber
+
byX78cOutputRegNumber
;
j
++)
for
(
sbyte
j
=
0
;
j
<
byX78cInputRegNumber
+
byX78cOutputRegNumber
;
j
++)
{
{
cx78c
.
sX78cAlarmStruct
[
i
].
usNowAlarmCode
[
j
]
|=
(
ushort
)
ModualAlarm
.
eAlarmCode
.
ChannelCommunError
;
cx78c
.
sX78cAlarmStruct
[
i
].
usNowAlarmCode
[
j
]
|=
(
ushort
)
ModualAlarm
.
eAlarmCode
.
ChannelCommunError
;
cx78c
.
sX78cAlarmStruct
[
i
].
usCommFailTimes
[
j
]
++;
cx78c
.
sX78cAlarmStruct
[
i
].
usCommFailTimes
[
j
]++;
}
}
}
}
else
else
...
@@ -260,7 +260,7 @@ namespace ModbusDemo.Modular
...
@@ -260,7 +260,7 @@ namespace ModbusDemo.Modular
for
(
sbyte
j
=
0
;
j
<
byX66cRelayRegNumber
;
j
++)
for
(
sbyte
j
=
0
;
j
<
byX66cRelayRegNumber
;
j
++)
{
{
cx66c
.
sX66cAlarmStruct
[
i
].
usNowAlarmCode
[
j
]
|=
(
ushort
)
ModualAlarm
.
eAlarmCode
.
ChannelCommunError
;
cx66c
.
sX66cAlarmStruct
[
i
].
usNowAlarmCode
[
j
]
|=
(
ushort
)
ModualAlarm
.
eAlarmCode
.
ChannelCommunError
;
cx66c
.
sX66cAlarmStruct
[
i
].
usCommFailTimes
[
j
]
++;
cx66c
.
sX66cAlarmStruct
[
i
].
usCommFailTimes
[
j
]++;
}
}
}
}
else
else
...
@@ -293,10 +293,10 @@ namespace ModbusDemo.Modular
...
@@ -293,10 +293,10 @@ namespace ModbusDemo.Modular
{
{
string
stIdString
=
cx78c
.
byModbusID
[
i
].
ToString
();
string
stIdString
=
cx78c
.
byModbusID
[
i
].
ToString
();
_478C
cBoolConvertInt
=
new
_478C
();
_478C
cBoolConvertInt
=
new
_478C
();
int
[]
InputConvert
,
OutPutConver
;
int
[]
InputConvert
,
OutPutConver
;
InputConvert
=
cBoolConvertInt
.
IO
(
cx78c
.
sX78cRegStatusStruct
[
i
].
bInputRegStatus
);
InputConvert
=
cBoolConvertInt
.
IO
(
cx78c
.
sX78cRegStatusStruct
[
i
].
bInputRegStatus
);
OutPutConver
=
cBoolConvertInt
.
IO
(
cx78c
.
sX78cRegStatusStruct
[
i
].
bOutPutRegStatus
);
OutPutConver
=
cBoolConvertInt
.
IO
(
cx78c
.
sX78cRegStatusStruct
[
i
].
bOutPutRegStatus
);
WTDR78C
OneNodeJsonPackage
=
new
WTDR78C
(
stIdString
,
InputConvert
[
0
],
InputConvert
[
1
],
InputConvert
[
2
],
InputConvert
[
3
],
InputConvert
[
4
],
InputConvert
[
5
],
InputConvert
[
6
],
InputConvert
[
7
],
OutPutConver
[
0
],
OutPutConver
[
1
],
OutPutConver
[
2
],
OutPutConver
[
3
],
OutPutConver
[
4
],
OutPutConver
[
5
],
OutPutConver
[
6
],
OutPutConver
[
7
],
Form1
.
GetTimeStamp
());
WTDR78C
OneNodeJsonPackage
=
new
WTDR78C
(
stIdString
,
InputConvert
[
0
],
InputConvert
[
1
],
InputConvert
[
2
],
InputConvert
[
3
],
InputConvert
[
4
],
InputConvert
[
5
],
InputConvert
[
6
],
InputConvert
[
7
],
OutPutConver
[
0
],
OutPutConver
[
1
],
OutPutConver
[
2
],
OutPutConver
[
3
],
OutPutConver
[
4
],
OutPutConver
[
5
],
OutPutConver
[
6
],
OutPutConver
[
7
],
Form1
.
GetTimeStamp
());
stPollString
+=
JsonConvert
.
SerializeObject
(
OneNodeJsonPackage
)
+
","
;
stPollString
+=
JsonConvert
.
SerializeObject
(
OneNodeJsonPackage
)
+
","
;
}
}
...
@@ -307,7 +307,7 @@ namespace ModbusDemo.Modular
...
@@ -307,7 +307,7 @@ namespace ModbusDemo.Modular
int
[]
sRelayConvert
;
int
[]
sRelayConvert
;
sRelayConvert
=
cBoolConvertInt
.
IO
(
cx66c
.
sX66cRegStatusStruct
[
i
].
bRegRelayStatus
);
sRelayConvert
=
cBoolConvertInt
.
IO
(
cx66c
.
sX66cRegStatusStruct
[
i
].
bRegRelayStatus
);
WTDR66C
OneNodeJsonPackage
=
new
WTDR66C
(
stIdString
,
sRelayConvert
[
0
],
sRelayConvert
[
1
],
sRelayConvert
[
2
],
sRelayConvert
[
3
],
sRelayConvert
[
4
],
sRelayConvert
[
5
],
Form1
.
GetTimeStamp
());
WTDR66C
OneNodeJsonPackage
=
new
WTDR66C
(
stIdString
,
sRelayConvert
[
0
],
sRelayConvert
[
1
],
sRelayConvert
[
2
],
sRelayConvert
[
3
],
sRelayConvert
[
4
],
sRelayConvert
[
5
],
Form1
.
GetTimeStamp
());
if
(
i
>=
byX66cNumber
-
1
)
if
(
i
>=
byX66cNumber
-
1
)
{
{
stPollString
+=
JsonConvert
.
SerializeObject
(
OneNodeJsonPackage
)
+
"]"
;
stPollString
+=
JsonConvert
.
SerializeObject
(
OneNodeJsonPackage
)
+
"]"
;
return
stPollString
;
return
stPollString
;
...
@@ -363,7 +363,7 @@ namespace ModbusDemo.Modular
...
@@ -363,7 +363,7 @@ namespace ModbusDemo.Modular
{
{
bX18xError
=
true
;
bX18xError
=
true
;
bOccurErrorChange
=
true
;
bOccurErrorChange
=
true
;
usChannelErrorlist
.
Add
(
j
);
usChannelErrorlist
.
Add
(
j
);
usChannelErrorCodeList
.
Add
((
ushort
)
cx18x
.
sX18xAlarmstruct
[
i
].
usNowAlarmCode
[
j
]);
usChannelErrorCodeList
.
Add
((
ushort
)
cx18x
.
sX18xAlarmstruct
[
i
].
usNowAlarmCode
[
j
]);
}
}
cx18x
.
sX18xAlarmstruct
[
i
].
usBeforeAlarmCode
[
j
]
=
cx18x
.
sX18xAlarmstruct
[
i
].
usNowAlarmCode
[
j
];
cx18x
.
sX18xAlarmstruct
[
i
].
usBeforeAlarmCode
[
j
]
=
cx18x
.
sX18xAlarmstruct
[
i
].
usNowAlarmCode
[
j
];
...
@@ -437,5 +437,224 @@ namespace ModbusDemo.Modular
...
@@ -437,5 +437,224 @@ namespace ModbusDemo.Modular
await
ModualAlarm
.
vPublishAlarmPackageJson
(
mqttClient
);
await
ModualAlarm
.
vPublishAlarmPackageJson
(
mqttClient
);
}
}
}
}
public
static
ArrayList
arryGet_channel_Value
(
byte
byModbusID
,
out
bool
bGetStatus
,
params
string
[]
strChannelList
)
{
ModbusComm
.
eModbusErrorCode
ModbusErrorCode
=
ModbusComm
.
eModbusErrorCode
.
MB_EMASTERNOERR
;
bGetStatus
=
true
;
ArrayList
arrayList
=
new
ArrayList
();
ushort
[]
usRegValue
,
usRegType
;
string
[]
strCalculData
;
for
(
int
i
=
0
;
i
<
strChannelList
.
Count
();
i
++)
{
arrayList
.
Add
(
0
);
}
for
(
int
i
=
0
;
i
<
ModualPoll
.
byX18xNumber
;
i
++)
{
if
(
byModbusID
==
ModualPoll
.
cx18x
.
byModbusID
[
i
])
{
if
((
ModbusErrorCode
|=
ModbusComm
.
Modbus_ReadHoldingRegistersTask
(
out
usRegValue
,
byModbusID
,
byX18xReadDataStartAddress
,
byX18xReadDataNumber
))
==
ModbusComm
.
eModbusErrorCode
.
MB_EMASTERNOERR
)
{
ModualAlarm
.
vSet_Modual_Alarm
(
byModbusID
,
(
ushort
)
ModbusComm
.
eModbusErrorCode
.
MB_EMASTERNOERR
,
false
,
1
,
"d0"
,
"d1"
,
"d2"
,
"d3"
,
"d4"
,
"d5"
,
"d6"
,
"d7"
);
}
else
{
ModualAlarm
.
vSet_Modual_Alarm
(
byModbusID
,
(
ushort
)
ModbusComm
.
eModbusErrorCode
.
MB_EMASTERNOERR
,
true
,
1
,
"d0"
,
"d1"
,
"d2"
,
"d3"
,
"d4"
,
"d5"
,
"d6"
,
"d7"
);
bGetStatus
=
false
;
}
if
((
ModbusErrorCode
|=
ModbusComm
.
Modbus_ReadHoldingRegistersTask
(
out
usRegType
,
byModbusID
,
byX18xReadTypeStartAddress
,
byX18xReadTypeNumber
))
==
ModbusComm
.
eModbusErrorCode
.
MB_EMASTERNOERR
)
{
ModualAlarm
.
vSet_Modual_Alarm
(
byModbusID
,
(
ushort
)
ModbusComm
.
eModbusErrorCode
.
MB_EMASTERNOERR
,
false
,
1
,
"d0"
,
"d1"
,
"d2"
,
"d3"
,
"d4"
,
"d5"
,
"d6"
,
"d7"
);
}
else
{
ModualAlarm
.
vSet_Modual_Alarm
(
byModbusID
,
(
ushort
)
ModbusComm
.
eModbusErrorCode
.
MB_EMASTERNOERR
,
true
,
1
,
"d0"
,
"d1"
,
"d2"
,
"d3"
,
"d4"
,
"d5"
,
"d6"
,
"d7"
);
bGetStatus
=
false
;
}
strCalculData
=
c18xformulasormual
.
Value
(
usRegValue
,
usRegType
);
for
(
int
j
=
0
;
j
<
strChannelList
.
Count
();
j
++)
{
for
(
int
k
=
0
;
k
<
8
;
k
++)
{
string
str
=
"d"
+
k
.
ToString
();
if
(
str
==
strChannelList
[
j
])
{
switch
(
cx18x
.
beChannelType
[
i
,
j
])
{
case
modual
.
eX18xSensorChannelType
.
Weiertai
:
arrayList
.
Add
(
8
-
((
double
.
Parse
(
strCalculData
[
k
])
-
4
)
/
16
*
8
));
break
;
case
modual
.
eX18xSensorChannelType
.
Mike_5
:
arrayList
.
Add
(
5
-
((
double
.
Parse
(
strCalculData
[
k
])
-
4
)
/
16
*
5
));
break
;
case
modual
.
eX18xSensorChannelType
.
Mike_6
:
arrayList
.
Add
(
6
-
((
double
.
Parse
(
strCalculData
[
k
])
-
4
)
/
16
*
6
));
break
;
case
modual
.
eX18xSensorChannelType
.
Mike_7
:
arrayList
.
Add
(
7
-
((
double
.
Parse
(
strCalculData
[
k
])
-
4
)
/
16
*
7
));
break
;
case
modual
.
eX18xSensorChannelType
.
NormalCurrent
:
arrayList
.
Add
(
double
.
Parse
(
strCalculData
[
k
]));
break
;
case
modual
.
eX18xSensorChannelType
.
Null
:
arrayList
.
Add
(
0
);
break
;
default
:
break
;
}
}
}
}
}
}
for
(
int
i
=
0
;
i
<
ModualPoll
.
byX14pNumber
;
i
++)
{
if
(
byModbusID
==
ModualPoll
.
cx14P
.
byModbusID
[
i
])
{
if
((
ModbusErrorCode
|=
ModbusComm
.
Modbus_ReadHoldingRegistersTask
(
out
usRegValue
,
byModbusID
,
byX14pReadDataStartAddress
,
byX14pReadDataNumber
))
==
ModbusComm
.
eModbusErrorCode
.
MB_EMASTERNOERR
)
{
ModualAlarm
.
vSet_Modual_Alarm
(
byModbusID
,
(
ushort
)
ModbusComm
.
eModbusErrorCode
.
MB_EMASTERNOERR
,
false
,
1
,
"d0"
,
"d1"
,
"d2"
,
"d3"
,
"d4"
,
"d5"
,
"d6"
,
"d7"
);
}
else
{
ModualAlarm
.
vSet_Modual_Alarm
(
byModbusID
,
(
ushort
)
ModbusComm
.
eModbusErrorCode
.
MB_EMASTERNOERR
,
true
,
1
,
"d0"
,
"d1"
,
"d2"
,
"d3"
,
"d4"
,
"d5"
,
"d6"
,
"d7"
);
bGetStatus
=
false
;
}
if
((
ModbusErrorCode
|=
ModbusComm
.
Modbus_ReadHoldingRegistersTask
(
out
usRegType
,
byModbusID
,
byX14pReadTypeStartAddress
,
byX14pReadTypeNumber
))
==
ModbusComm
.
eModbusErrorCode
.
MB_EMASTERNOERR
)
{
ModualAlarm
.
vSet_Modual_Alarm
(
byModbusID
,
(
ushort
)
ModbusComm
.
eModbusErrorCode
.
MB_EMASTERNOERR
,
false
,
1
,
"d0"
,
"d1"
,
"d2"
,
"d3"
,
"d4"
,
"d5"
,
"d6"
,
"d7"
);
}
else
{
ModualAlarm
.
vSet_Modual_Alarm
(
byModbusID
,
(
ushort
)
ModbusComm
.
eModbusErrorCode
.
MB_EMASTERNOERR
,
true
,
1
,
"d0"
,
"d1"
,
"d2"
,
"d3"
,
"d4"
,
"d5"
,
"d6"
,
"d7"
);
bGetStatus
=
false
;
}
strCalculData
=
c14formulasormual
.
RtdValue
(
usRegValue
,
usRegType
);
for
(
int
j
=
0
;
j
<
strChannelList
.
Count
();
j
++)
{
for
(
int
k
=
0
;
k
<
8
;
k
++)
{
string
str
=
"d"
+
k
.
ToString
();
if
(
str
==
strChannelList
[
j
])
{
arrayList
.
Add
(
double
.
Parse
(
strCalculData
[
k
]));
}
}
}
}
}
for
(
int
i
=
0
;
i
<
ModualPoll
.
byX78cNumber
;
i
++)
{
bool
[]
bInputData
,
bOutPutData
;
if
(
byModbusID
==
ModualPoll
.
cx78c
.
byModbusID
[
i
])
{
if
((
ModbusErrorCode
|=
ModbusComm
.
Modbus_ReadCoilsTask
(
out
bInputData
,
byModbusID
,
byX78cInputRegStartAddress
,
byX78cInputRegNumber
))
==
ModbusComm
.
eModbusErrorCode
.
MB_EMASTERNOERR
)
{
ModualAlarm
.
vSet_Modual_Alarm
(
byModbusID
,
(
ushort
)
ModbusComm
.
eModbusErrorCode
.
MB_EMASTERNOERR
,
false
,
1
,
"d0"
,
"d1"
,
"d2"
,
"d3"
,
"d4"
,
"d5"
,
"d6"
,
"d7"
);
}
else
{
ModualAlarm
.
vSet_Modual_Alarm
(
byModbusID
,
(
ushort
)
ModbusComm
.
eModbusErrorCode
.
MB_EMASTERNOERR
,
true
,
1
,
"d0"
,
"d1"
,
"d2"
,
"d3"
,
"d4"
,
"d5"
,
"d6"
,
"d7"
);
bGetStatus
=
false
;
}
if
((
ModbusErrorCode
|=
ModbusComm
.
Modbus_ReadCoilsTask
(
out
bOutPutData
,
byModbusID
,
byX78cOutputRegStartAddress
,
byX78cOutputRegNumber
))
==
ModbusComm
.
eModbusErrorCode
.
MB_EMASTERNOERR
)
{
ModualAlarm
.
vSet_Modual_Alarm
(
byModbusID
,
(
ushort
)
ModbusComm
.
eModbusErrorCode
.
MB_EMASTERNOERR
,
false
,
1
,
"d0"
,
"d1"
,
"d2"
,
"d3"
,
"d4"
,
"d5"
,
"d6"
,
"d7"
);
}
else
{
ModualAlarm
.
vSet_Modual_Alarm
(
byModbusID
,
(
ushort
)
ModbusComm
.
eModbusErrorCode
.
MB_EMASTERNOERR
,
true
,
1
,
"d0"
,
"d1"
,
"d2"
,
"d3"
,
"d4"
,
"d5"
,
"d6"
,
"d7"
);
bGetStatus
=
false
;
}
for
(
int
j
=
0
;
j
<
strChannelList
.
Count
();
j
++)
{
for
(
int
k
=
0
;
k
<
8
;
k
++)
{
string
str
=
"d"
+
k
.
ToString
();
if
(
str
==
strChannelList
[
j
])
{
arrayList
.
Add
(
bInputData
[
j
]);
}
}
for
(
int
k
=
8
;
k
<
16
;
k
++)
{
string
str
=
"d"
+
k
.
ToString
();
if
(
str
==
strChannelList
[
j
])
{
arrayList
.
Add
(
bOutPutData
[
j
]);
}
}
}
}
}
for
(
int
i
=
0
;
i
<
ModualPoll
.
byX66cNumber
;
i
++)
{
if
(
byModbusID
==
ModualPoll
.
cx66c
.
byModbusID
[
i
])
{
bool
[]
bRelayValue
;
if
((
ModbusErrorCode
|=
ModbusComm
.
Modbus_ReadCoilsTask
(
out
bRelayValue
,
byModbusID
,
byX66cRelayRegStartAddress
,
byX66cRelayRegNumber
))
==
ModbusComm
.
eModbusErrorCode
.
MB_EMASTERNOERR
)
{
ModualAlarm
.
vSet_Modual_Alarm
(
byModbusID
,
(
ushort
)
ModbusComm
.
eModbusErrorCode
.
MB_EMASTERNOERR
,
false
,
1
,
"d0"
,
"d1"
,
"d2"
,
"d3"
,
"d4"
,
"d5"
,
"d6"
,
"d7"
);
}
else
{
ModualAlarm
.
vSet_Modual_Alarm
(
byModbusID
,
(
ushort
)
ModbusComm
.
eModbusErrorCode
.
MB_EMASTERNOERR
,
true
,
1
,
"d0"
,
"d1"
,
"d2"
,
"d3"
,
"d4"
,
"d5"
,
"d6"
,
"d7"
);
bGetStatus
=
false
;
}
for
(
int
j
=
0
;
j
<
strChannelList
.
Count
();
j
++)
{
for
(
int
k
=
0
;
k
<
8
;
k
++)
{
string
str
=
"d"
+
k
.
ToString
();
if
(
str
==
strChannelList
[
j
])
{
arrayList
.
Add
(
bRelayValue
[
j
]);
}
}
}
}
}
return
arrayList
;
}
public
static
void
vSet_All_Channel_Value
(
byte
byModbusID
,
bool
[]
bControlData
,
out
bool
bControlStatus
)
{
bControlStatus
=
true
;
for
(
int
i
=
0
;
i
<
ModualPoll
.
byX14pNumber
;
i
++)
{
if
(
byModbusID
==
ModualPoll
.
cx14P
.
byModbusID
[
i
])
{
if
((
ModbusComm
.
Modbus_WriteMultipleCoils
(
byModbusID
,
byX66cRelayRegStartAddress
,
bControlData
))
==
ModbusComm
.
eModbusErrorCode
.
MB_EMASTERNOERR
)
{
ModualAlarm
.
vSet_Modual_Alarm
(
byModbusID
,
(
ushort
)
ModbusComm
.
eModbusErrorCode
.
MB_EMASTERNOERR
,
false
,
1
,
"d0"
,
"d1"
,
"d2"
,
"d3"
,
"d4"
,
"d5"
,
"d6"
,
"d7"
);
}
else
{
ModualAlarm
.
vSet_Modual_Alarm
(
byModbusID
,
(
ushort
)
ModbusComm
.
eModbusErrorCode
.
MB_EMASTERNOERR
,
true
,
1
,
"d0"
,
"d1"
,
"d2"
,
"d3"
,
"d4"
,
"d5"
,
"d6"
,
"d7"
);
bControlStatus
=
false
;
}
}
}
for
(
int
i
=
0
;
i
<
ModualPoll
.
byX78cNumber
;
i
++)
{
if
(
byModbusID
==
ModualPoll
.
cx78c
.
byModbusID
[
i
])
{
if
((
ModbusComm
.
Modbus_WriteMultipleCoils
(
byModbusID
,
byX78cOutputRegStartAddress
,
bControlData
))
==
ModbusComm
.
eModbusErrorCode
.
MB_EMASTERNOERR
)
{
ModualAlarm
.
vSet_Modual_Alarm
(
byModbusID
,
(
ushort
)
ModbusComm
.
eModbusErrorCode
.
MB_EMASTERNOERR
,
false
,
1
,
"d0"
,
"d1"
,
"d2"
,
"d3"
,
"d4"
,
"d5"
,
"d6"
,
"d7"
);
}
else
{
ModualAlarm
.
vSet_Modual_Alarm
(
byModbusID
,
(
ushort
)
ModbusComm
.
eModbusErrorCode
.
MB_EMASTERNOERR
,
true
,
1
,
"d0"
,
"d1"
,
"d2"
,
"d3"
,
"d4"
,
"d5"
,
"d6"
,
"d7"
);
bControlStatus
=
false
;
}
}
}
}
}
}
}
}
ModbusDemo/windows/Form1.cs
View file @
5635bdf7
...
@@ -155,7 +155,7 @@ namespace ModbusDemo
...
@@ -155,7 +155,7 @@ namespace ModbusDemo
var
message
=
new
MqttApplicationMessageBuilder
()
var
message
=
new
MqttApplicationMessageBuilder
()
.
WithTopic
(
mqttBackTopic
)
.
WithTopic
(
mqttBackTopic
)
.
WithPayload
(
mqttData_Back
)
.
WithPayload
(
mqttData_Back
)
.
WithAt
Mo
stOnceQoS
()
.
WithAt
Lea
stOnceQoS
()
.
WithRetainFlag
(
false
)
.
WithRetainFlag
(
false
)
.
Build
();
.
Build
();
await
mqttClient
.
PublishAsync
(
message
);
await
mqttClient
.
PublishAsync
(
message
);
...
@@ -171,7 +171,6 @@ namespace ModbusDemo
...
@@ -171,7 +171,6 @@ namespace ModbusDemo
.
WithRetainFlag
(
false
)
.
WithRetainFlag
(
false
)
.
Build
();
.
Build
();
await
mqttClient
.
PublishAsync
(
message
);
await
mqttClient
.
PublishAsync
(
message
);
totxt
.
Log
(
"我在247,执行了Back"
);
}
}
private
async
Task
Subscribe
()
private
async
Task
Subscribe
()
{
{
...
@@ -471,7 +470,7 @@ namespace ModbusDemo
...
@@ -471,7 +470,7 @@ namespace ModbusDemo
private
void
Sendout
()
private
void
Sendout
()
{
{
Control
.
CheckForIllegalCrossThreadCalls
=
false
;
Control
.
CheckForIllegalCrossThreadCalls
=
false
;
MQTTTimer
.
Interval
=
6
0000
;
//120500
MQTTTimer
.
Interval
=
2
0000
;
//120500
MQTTTimer
.
Enabled
=
true
;
MQTTTimer
.
Enabled
=
true
;
MQTTTimer
.
AutoReset
=
true
;
//设置是执行一次(false)还是一直执行(true);
MQTTTimer
.
AutoReset
=
true
;
//设置是执行一次(false)还是一直执行(true);
MQTTTimer
.
Start
();
MQTTTimer
.
Start
();
...
@@ -1070,6 +1069,45 @@ namespace ModbusDemo
...
@@ -1070,6 +1069,45 @@ namespace ModbusDemo
private
void
button2_Click
(
object
sender
,
EventArgs
e
)
private
void
button2_Click
(
object
sender
,
EventArgs
e
)
{
{
<<<<<<<
HEAD
=======
//AutoControl.Control usEcontrol = new AutoControl.Control();
//AutoControl.Control usWcontrol = new AutoControl.Control();
//if (ModualControl.cPoolLevelConfig.Count!=0)
//{
// for (int i = 0; i < ModualControl.cPoolLevelConfig.Count; i++)
// {
// if (ModualControl.cPoolLevelConfig[i].byModbusID == 6)
// {
// usWcontrol.maxLevel = ModualControl.cPoolLevelConfig[i].dUpLevel;
// usWcontrol.minLevel = ModualControl.cPoolLevelConfig[i].dDownLevel;
// usWcontrol.Name = "西·中转池";
// usWcontrol.Enablation = true;
// AutoControl.CriticalValueMonitoring(true, ModualControl.cPoolLevelConfig[1].dUpLevel,
// ModualControl.cPoolLevelConfig[0].dDownLevel, ModualPoll.cx18x.sX18xDataStruct[1].dNowConvertData[1],
// "西·中转池",
// out usWcontrol
// );
// }
// if (ModualControl.cPoolLevelConfig[i].byModbusID == 3)
// {
// usEcontrol.maxLevel = ModualControl.cPoolLevelConfig[i].dUpLevel;
// usEcontrol.minLevel = ModualControl.cPoolLevelConfig[i].dDownLevel;
// usEcontrol.Name = "东·中转池";
// usEcontrol.Enablation = true;
// AutoControl.CriticalValueMonitoring(true, ModualControl.cPoolLevelConfig[0].dUpLevel,
// ModualControl.cPoolLevelConfig[0].dDownLevel, ModualPoll.cx18x.sX18xDataStruct[0].dNowConvertData[0],
// "东·中转池",
// out usEcontrol
// );
// }
// }
//}
>>>>>>>
83d8d9d1
b2182210455375f355bb9f6860d45dc2
}
}
...
...
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