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
7176757f
Commit
7176757f
authored
Jun 18, 2019
by
leon.huang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
modify level parse
parent
02a4bc27
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
669 additions
and
249 deletions
+669
-249
ModualAlarm.cs
ModbusDemo/Common/ModualAlarm.cs
+133
-0
ModualControl.cs
ModbusDemo/MessageFormat/ModualControl.cs
+246
-177
ModualPoll.cs
ModbusDemo/Modular/ModualPoll.cs
+288
-69
Form1.cs
ModbusDemo/windows/Form1.cs
+2
-3
No files found.
ModbusDemo/Common/ModualAlarm.cs
View file @
7176757f
...
...
@@ -7,6 +7,7 @@ using System.Collections;
using
MQTTnet
;
using
MQTTnet.Client
;
using
Newtonsoft.Json
;
using
ModbusDemo.Modular
;
namespace
ModbusDemo.Common
{
public
static
class
ModualAlarm
...
...
@@ -55,5 +56,137 @@ namespace ModbusDemo.Common
.
Build
();
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 @
7176757f
...
...
@@ -12,7 +12,6 @@ using ModbusDemo;
using
ModbusDemo.Modular
;
using
ModbusDemo.Common
;
using
System.Threading
;
using
System.Threading.Tasks
;
namespace
ModbusDemo.MessageFormat
{
public
class
ModualControl
...
...
@@ -54,6 +53,7 @@ namespace ModbusDemo.MessageFormat
public
byte
d5
{
get
;
set
;
}
public
byte
d6
{
get
;
set
;
}
public
byte
d7
{
get
;
set
;
}
public
string
name
{
get
;
set
;
}
public
string
down
{
get
;
set
;
}
public
string
upper
{
get
;
set
;
}
public
UInt64
ts
{
get
;
set
;
}
...
...
@@ -76,6 +76,7 @@ namespace ModbusDemo.MessageFormat
public
string
srcId
{
get
;
set
;
}
public
string
srcType
{
get
;
set
;
}
public
string
srcCh
{
get
;
set
;
}
public
string
opType
{
get
;
set
;
}
public
string
resId
{
get
;
set
;
}
public
string
resType
{
get
;
set
;
}
public
string
resCh
{
get
;
set
;
}
...
...
@@ -103,7 +104,8 @@ namespace ModbusDemo.MessageFormat
public
UInt64
ulStartTime
;
public
bool
[]
bControlBit
=
new
bool
[
8
];
public
modual
.
eModualType
eModualType
;
public
ModualRespControl
[]
xModualRespControl
=
new
ModualRespControl
[
8
];
public
bool
bOpenMachine
;
public
ModualRespControl
xModualRespControl
;
}
public
class
pcLiquidLevelConfig
...
...
@@ -117,30 +119,25 @@ namespace ModbusDemo.MessageFormat
public
static
List
<
ModualCntrol
>
liModuualControl
=
new
List
<
ModualCntrol
>();
public
const
ushort
usDefineControlTimes
=
1
;
private
static
pcControlMap
cControlMap
=
new
pcControlMap
();
private
static
object
obLock
=
new
object
();
#if DEBUG_TEST
public
const
string
strMapCfg
=
"{chMap:[{ \"srcId\": \"31\", \"srcType\": \"WTDR66C\", \"srcCh\":\"d0\", \"dstCh\":[\"d0\",\"d1\",\"d2\"],\"resId\":\"23\",\"resType\":\"WTDR78C\",\"resCh\":\"d0\"},"
+
"{ \"srcId\": \"31\", \"srcType\": \"WTDR66C\", \"srcCh\":\"d2\", \"dstCh\":[\"d2\",\"d3\"],\"resId\":\"23\",\"resType\":\"WTDR78C\",\"resCh\":\"d0\"},"
+
"{ \"srcId\": \"31\", \"srcType\": \"WTDR66C\", \"srcCh\":\"d4\", \"dstCh\":[\"d4\",\"d5\"],\"resId\":\"23\",\"resType\":\"WTDR78C\",\"resCh\":\"d0\"},"
+
public
const
string
strMapCfg
=
"{chMap:["
+
"{ \"srcId\": \"31\", \"srcType\": \"WTDR66C\", \"srcCh\":\"d1\", \"dstCh\":[\"d1\",\"d2\"],\"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\":\"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\":\"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\":\"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\":\"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\"},"
+
//"{ \"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\":\"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
public
static
void
vGetaWay_Receive_Control
(
string
sDataString
,
out
string
stResponseData
)
...
...
@@ -164,7 +161,7 @@ namespace ModbusDemo.MessageFormat
ModualCntrol
cModualCntrol
=
new
ModualCntrol
{
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
};
cModualCntrol
.
eModualType
=
eModdusId_Find_ModualType
(
cControl
.
ss
[
i
].
addr
);
...
...
@@ -240,6 +237,7 @@ namespace ModbusDemo.MessageFormat
{
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
())
{
cModualCntrol
.
bStartControl
=
true
;
...
...
@@ -259,6 +257,9 @@ namespace ModbusDemo.MessageFormat
}
if
(
ModbusErrorCode
==
ModbusComm
.
eModbusErrorCode
.
MB_EMASTERNOERR
)
{
lock
(
obLock
)
{
vDelete_Same_Control
(
cModualCntrol
);
if
(
cModualCntrol
.
bStartControl
==
true
&&
cModualCntrol
.
ulStartTime
!=
0
&&
cModualCntrol
.
bControlStatus
==
true
)
{
liModuualControl
.
Add
(
cModualCntrol
);
...
...
@@ -268,6 +269,7 @@ namespace ModbusDemo.MessageFormat
liModuualControl
.
Add
(
cModualCntrol
);
}
}
}
for
(
int
k
=
0
;
k
<
8
;
k
++)
{
if
(
cModualCntrol
.
bControlBit
[
k
]
==
true
&&
ModbusErrorCode
==
ModbusComm
.
eModbusErrorCode
.
MB_EMASTERNOERR
)
...
...
@@ -329,6 +331,8 @@ namespace ModbusDemo.MessageFormat
{
cControlMap
=
JsonConvert
.
DeserializeObject
<
pcControlMap
>(
strMapCfg
);
while
(
true
)
{
lock
(
obLock
)
{
for
(
sbyte
i
=
0
;
i
<
liModuualControl
.
Count
;
i
++)
{
...
...
@@ -377,9 +381,9 @@ namespace ModbusDemo.MessageFormat
}
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
]
+=
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
.
ChannelCommunError
;
ModualPoll
.
cx66c
.
sX66cAlarmStruct
[
liModuualControl
[
i
].
sbModualIndex
].
usNowAlarmCode
[
k
+
8
]
+=
usDefineControlTimes
;
ModualPoll
.
cx66c
.
sX66cAlarmStruct
[
liModuualControl
[
i
].
sbModualIndex
].
usNowAlarmCode
[
k
+
8
]
|=
(
ushort
)
ModualAlarm
.
eAlarmCode
.
ChannelControlError
;
}
}
}
...
...
@@ -399,10 +403,10 @@ namespace ModbusDemo.MessageFormat
}
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
]
=
0
;
ModualPoll
.
cx78c
.
sX78cAlarmStruct
[
liModuualControl
[
i
].
sbModualIndex
].
usNowAlarmCode
[
k
+
8
]
&=
(
ushort
)~
ModualAlarm
.
eAlarmCode
.
ChannelCommunError
;
ModualPoll
.
cx78c
.
sX78cAlarmStruct
[
liModuualControl
[
i
].
sbModualIndex
].
usNowAlarmCode
[
k
+
8
]
=
0
;
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
bool
[]
bControlData
=
new
bool
[
6
];
bool
[]
btReadTempData
;
byte
ChannelNumber
=
0
;
byte
byOperatinChannelNUmber
=
0
;
if
(
liModuualControl
[
i
].
eModualType
==
modual
.
eModualType
.
WTDR66C
)
{
ModbusErrorCode
|=
ModbusComm
.
Modbus_ReadCoilsTask
(
out
bControlData
,
liModuualControl
[
i
].
sbModbusID
,
16
,
6
);
ChannelNumber
=
6
;
ChannelNumber
=
6
;
}
else
if
(
liModuualControl
[
i
].
eModualType
==
modual
.
eModualType
.
WTDR78C
)
{
ChannelNumber
=
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
++)
{
if
(
byOperatinChannelNUmber
==
3
)
{
if
(
liModuualControl
[
i
].
bControlBit
[
j
]
==
true
&&
j
!=
2
)
{
bControlData
[
j
]
=
!
liModuualControl
[
i
].
bControlData
[
j
];
}
}
else
{
if
(
liModuualControl
[
i
].
bControlBit
[
j
]
==
true
)
{
bControlData
[
j
]
=
!
liModuualControl
[
i
].
bControlData
[
j
];
}
}
}
ModbusErrorCode
|=
ModbusComm
.
Modbus_WriteMultipleCoils
(
liModuualControl
[
i
].
sbModbusID
,
16
,
bControlData
);
ModbusErrorCode
|=
ModbusComm
.
Modbus_ReadCoilsTask
(
out
btReadTempData
,
liModuualControl
[
i
].
sbModbusID
,
16
,
ChannelNumber
);
if
(
ModbusErrorCode
!=
ModbusComm
.
eModbusErrorCode
.
MB_EMASTERNOERR
)
...
...
@@ -451,9 +473,9 @@ namespace ModbusDemo.MessageFormat
}
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
]
+=
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
.
ChannelCommunError
;
ModualPoll
.
cx78c
.
sX78cAlarmStruct
[
liModuualControl
[
i
].
sbModualIndex
].
usNowAlarmCode
[
k
+
8
]
+=
usDefineControlTimes
;
ModualPoll
.
cx78c
.
sX78cAlarmStruct
[
liModuualControl
[
i
].
sbModualIndex
].
usNowAlarmCode
[
k
+
8
]
|=
(
ushort
)
ModualAlarm
.
eAlarmCode
.
ChannelControlError
;
}
}
}
...
...
@@ -473,10 +495,10 @@ namespace ModbusDemo.MessageFormat
}
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
]
=
0
;
ModualPoll
.
cx78c
.
sX78cAlarmStruct
[
liModuualControl
[
i
].
sbModualIndex
].
usNowAlarmCode
[
k
+
8
]
&=
(
ushort
)~
ModualAlarm
.
eAlarmCode
.
ChannelCommunError
;
ModualPoll
.
cx78c
.
sX78cAlarmStruct
[
liModuualControl
[
i
].
sbModualIndex
].
usNowAlarmCode
[
k
+
8
]
=
0
;
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
}
}
}
}
Thread
.
Sleep
(
100
);
}
}
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
;
}
}
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
;
}
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
++)
{
if
(
cControlMap
.
chMap
[
i
].
srcId
==
stContrID
)
{
bHadRef
=
true
;
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
k
=
0
;
k
<
8
;
k
++)
{
string
str
=
"d"
+
k
.
ToString
();
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
;
}
}
else
if
(
cControlMap
.
chMap
[
i
].
dstCh
.
Count
==
2
)
{
cModualCntrol
.
bControlData
[
k
]
=
bControlValue
;
}
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
{
...
...
@@ -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
)
{
pcCfgRoot
cCfgRoot
=
new
pcCfgRoot
();
...
...
@@ -589,23 +657,24 @@ namespace ModbusDemo.MessageFormat
jsonObj
=
JObject
.
Parse
(
stConfigString
);
for
(
int
i
=
0
;
i
<
cCfgRoot
.
ss
.
Count
;
i
++)
{
string
strChannelString
=
"d"
+
i
.
ToString
();
pcLiquidLevelConfig
cLiquidLevelConfig
=
new
pcLiquidLevelConfig
{
byModbusID
=
byte
.
Parse
(
cCfgRoot
.
ss
[
i
].
addr
),
dUpLevel
=
double
.
Parse
(
cCfgRoot
.
ss
[
i
].
cfg
.
upper
),
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
;
jsonObj
[
"ss"
][
i
][
"cfg"
][
strChannelString
]
=
1
;
break
;
}
else
{
jsonObj
[
"ss"
][
i
][
"cfg"
][
strChannelString
]
=
0
;
continue
;
}
if
(
jsonObj
[
"ss"
][
i
][
"cfg"
][
"ts"
]
!=
null
)
{
jsonObj
[
"ss"
][
i
][
"cfg"
][
"ts"
]
=
Form1
.
GetTimeStamp
();
...
...
ModbusDemo/Modular/ModualPoll.cs
View file @
7176757f
...
...
@@ -17,8 +17,8 @@ namespace ModbusDemo.Modular
{
#if DEBUG_TEST
public
const
byte
byX14pNumber
=
1
;
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
}};
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
}
};
#else
public
const
byte
byX14pNumber
=
2
;
public
static
byte
[]
byX14pIdlist
=
{
1
,
17
};
...
...
@@ -35,8 +35,8 @@ namespace ModbusDemo.Modular
public
static
_414P
c14formulasormual
=
new
_414P
();
#if DEBUG_TEST
public
const
byte
byX18xNumber
=
1
;
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
}};
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
}
};
#else
public
const
byte
byX18xNumber
=
6
;
public
static
byte
[]
byX18xIdlist
=
{
3
,
53
,
6
,
12
,
21
,
25
};
...
...
@@ -59,7 +59,7 @@ namespace ModbusDemo.Modular
#if DEBUG_TEST
public
const
byte
byX78cNumber
=
1
;
public
static
byte
[]
byX78cIdlist
=
{
20
};
public
static
byte
[]
byX78cIdlist
=
{
20
};
#else
public
const
byte
byX78cNumber
=
0
;
public
static
byte
[]
byX78cIdlist
=
{
11
,
20
,
33
,
34
,
55
,
56
};
...
...
@@ -72,7 +72,7 @@ namespace ModbusDemo.Modular
#if DEBUG_TEST
public
const
byte
byX66cNumber
=
5
;
public
static
byte
[]
byX66cIdlist
=
{
16
,
31
,
35
,
39
,
90
};
public
static
byte
[]
byX66cIdlist
=
{
16
,
31
,
35
,
39
,
90
};
#else
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
};
...
...
@@ -126,7 +126,7 @@ namespace ModbusDemo.Modular
{
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
)
{
...
...
@@ -173,7 +173,7 @@ namespace ModbusDemo.Modular
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
)
{
...
...
@@ -205,7 +205,7 @@ namespace ModbusDemo.Modular
{
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
)
{
...
...
@@ -238,7 +238,7 @@ namespace ModbusDemo.Modular
for
(
sbyte
j
=
0
;
j
<
byX78cInputRegNumber
+
byX78cOutputRegNumber
;
j
++)
{
cx78c
.
sX78cAlarmStruct
[
i
].
usNowAlarmCode
[
j
]
|=
(
ushort
)
ModualAlarm
.
eAlarmCode
.
ChannelCommunError
;
cx78c
.
sX78cAlarmStruct
[
i
].
usCommFailTimes
[
j
]
++;
cx78c
.
sX78cAlarmStruct
[
i
].
usCommFailTimes
[
j
]++;
}
}
else
...
...
@@ -260,7 +260,7 @@ namespace ModbusDemo.Modular
for
(
sbyte
j
=
0
;
j
<
byX66cRelayRegNumber
;
j
++)
{
cx66c
.
sX66cAlarmStruct
[
i
].
usNowAlarmCode
[
j
]
|=
(
ushort
)
ModualAlarm
.
eAlarmCode
.
ChannelCommunError
;
cx66c
.
sX66cAlarmStruct
[
i
].
usCommFailTimes
[
j
]
++;
cx66c
.
sX66cAlarmStruct
[
i
].
usCommFailTimes
[
j
]++;
}
}
else
...
...
@@ -293,10 +293,10 @@ namespace ModbusDemo.Modular
{
string
stIdString
=
cx78c
.
byModbusID
[
i
].
ToString
();
_478C
cBoolConvertInt
=
new
_478C
();
int
[]
InputConvert
,
OutPutConver
;
int
[]
InputConvert
,
OutPutConver
;
InputConvert
=
cBoolConvertInt
.
IO
(
cx78c
.
sX78cRegStatusStruct
[
i
].
bInputRegStatus
);
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
)
+
","
;
}
...
...
@@ -307,7 +307,7 @@ namespace ModbusDemo.Modular
int
[]
sRelayConvert
;
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
());
if
(
i
>=
byX66cNumber
-
1
)
if
(
i
>=
byX66cNumber
-
1
)
{
stPollString
+=
JsonConvert
.
SerializeObject
(
OneNodeJsonPackage
)
+
"]"
;
return
stPollString
;
...
...
@@ -363,7 +363,7 @@ namespace ModbusDemo.Modular
{
bX18xError
=
true
;
bOccurErrorChange
=
true
;
usChannelErrorlist
.
Add
(
j
);
usChannelErrorlist
.
Add
(
j
);
usChannelErrorCodeList
.
Add
((
ushort
)
cx18x
.
sX18xAlarmstruct
[
i
].
usNowAlarmCode
[
j
]);
}
cx18x
.
sX18xAlarmstruct
[
i
].
usBeforeAlarmCode
[
j
]
=
cx18x
.
sX18xAlarmstruct
[
i
].
usNowAlarmCode
[
j
];
...
...
@@ -437,5 +437,224 @@ namespace ModbusDemo.Modular
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 @
7176757f
...
...
@@ -152,7 +152,7 @@ namespace ModbusDemo
var
message
=
new
MqttApplicationMessageBuilder
()
.
WithTopic
(
mqttBackTopic
)
.
WithPayload
(
mqttData_Back
)
.
WithAt
Mo
stOnceQoS
()
.
WithAt
Lea
stOnceQoS
()
.
WithRetainFlag
(
false
)
.
Build
();
await
mqttClient
.
PublishAsync
(
message
);
...
...
@@ -168,7 +168,6 @@ namespace ModbusDemo
.
WithRetainFlag
(
false
)
.
Build
();
await
mqttClient
.
PublishAsync
(
message
);
totxt
.
Log
(
"我在247,执行了Back"
);
}
private
async
Task
Subscribe
()
{
...
...
@@ -383,7 +382,7 @@ namespace ModbusDemo
private
void
Sendout
()
{
Control
.
CheckForIllegalCrossThreadCalls
=
false
;
MQTTTimer
.
Interval
=
6
0000
;
//120500
MQTTTimer
.
Interval
=
2
0000
;
//120500
MQTTTimer
.
Enabled
=
true
;
MQTTTimer
.
AutoReset
=
true
;
//设置是执行一次(false)还是一直执行(true);
MQTTTimer
.
Start
();
...
...
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