Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
U
uniset2
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
1
Issues
1
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
UniSet project repositories
uniset2
Commits
f47ec246
Commit
f47ec246
authored
Jun 11, 2009
by
Pavel Vaynerman
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
01,02,05,0F
parent
5598a5d2
Show whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
147 additions
and
90 deletions
+147
-90
create_links.sh
Utilities/Admin/create_links.sh
+28
-1
MBSlave.cc
Utilities/MBTester/MBSlave.cc
+9
-39
test.xml
conf/test.xml
+23
-28
RTUExchange.cc
extentions/RTUExchange/RTUExchange.cc
+69
-17
start_fg.sh
extentions/RTUExchange/start_fg.sh
+2
-2
start_fg.sh
extentions/SharedMemory/start_fg.sh
+1
-1
ModbusTypes.h
include/modbus/ModbusTypes.h
+4
-2
ModbusTypes.cc
src/Communications/Modbus/ModbusTypes.cc
+11
-0
No files found.
Utilities/Admin/create_links.sh
View file @
f47ec246
#!/bin/sh
#!/bin/sh
#
ln
-s
-f
admin.sh start
ln
-s
-f
admin.sh exist
ln
-s
-f
admin.sh finish
ln
-s
-f
admin.sh foldUp
ln
-s
-f
admin.sh info
ln
-s
-f
admin.sh alarm
ln
-s
-f
admin.sh create
#ln -s -f admin.sh setState
#ln -s -f admin.sh dbcreate
#ln -s -f admin.sh statistic
#ln -s -f admin.sh database
ln
-s
-f
admin.sh logrotate
ln
-s
-f
admin.sh omap
ln
-s
-f
admin.sh msgmap
ln
-s
-f
admin.sh anotify
ln
-s
-f
admin.sh dnotify
ln
-s
-f
admin.sh saveValue
ln
-s
-f
admin.sh saveState
ln
-s
-f
admin.sh setValue
ln
-s
-f
admin.sh setState
ln
-s
-f
admin.sh getValue
ln
-s
-f
admin.sh getState
ln
-s
-f
admin.sh getRawValue
ln
-s
-f
admin.sh getCalibrate
ln
-s
-f
admin.sh
help
ln
-s
-f
admin.sh oinfo
ln
-s
-f
/usr/bin/uniset-stop.sh stop.sh
ln
-s
-f
/usr/bin/uniset-stop.sh stop.sh
ln
-s
-f
../../conf/test.xml test.xml
ln
-s
-f
../../conf/test.xml test.xml
Utilities/MBTester/MBSlave.cc
View file @
f47ec246
...
@@ -108,32 +108,18 @@ ModbusRTU::mbErrCode MBSlave::readCoilStatus( ReadCoilMessage& query,
...
@@ -108,32 +108,18 @@ ModbusRTU::mbErrCode MBSlave::readCoilStatus( ReadCoilMessage& query,
d
.
b
[
4
]
=
1
;
d
.
b
[
4
]
=
1
;
d
.
b
[
6
]
=
1
;
d
.
b
[
6
]
=
1
;
if
(
query
.
count
<=
1
)
{
if
(
replyVal
)
reply
.
addData
(
replyVal
);
else
reply
.
addData
(
d
);
return
ModbusRTU
::
erNoError
;
}
// :
// :
int
num
=
0
;
//
int
bcnt
=
query
.
count
/
ModbusRTU
::
BitsPerByte
;
ModbusData
reg
=
query
.
start
;
if
(
(
query
.
count
%
ModbusRTU
::
BitsPerByte
)
>
0
)
for
(
;
num
<
query
.
count
;
num
++
,
reg
++
)
bcnt
++
;
for
(
int
i
=
0
;
i
<
bcnt
;
i
++
)
{
{
if
(
replyVal
)
if
(
replyVal
)
reply
.
addData
(
replyVal
);
reply
.
addData
(
replyVal
);
else
else
reply
.
addData
(
d
);
reply
.
addData
(
d
);
}
}
// , ۣ
// ...
if
(
reply
.
bcnt
<
query
.
count
)
{
cerr
<<
"(readCoilStatus): . "
<<
" "
<<
query
.
count
<<
" "
<<
reply
.
bcnt
<<
endl
;
}
return
ModbusRTU
::
erNoError
;
return
ModbusRTU
::
erNoError
;
}
}
...
@@ -149,32 +135,16 @@ ModbusRTU::mbErrCode MBSlave::readInputStatus( ReadInputStatusMessage& query,
...
@@ -149,32 +135,16 @@ ModbusRTU::mbErrCode MBSlave::readInputStatus( ReadInputStatusMessage& query,
d
.
b
[
3
]
=
1
;
d
.
b
[
3
]
=
1
;
d
.
b
[
7
]
=
1
;
d
.
b
[
7
]
=
1
;
int
bcnt
=
query
.
count
/
ModbusRTU
::
BitsPerByte
;
if
(
(
query
.
count
%
ModbusRTU
::
BitsPerByte
)
>
0
)
bcnt
++
;
if
(
query
.
count
<=
1
)
for
(
int
i
=
0
;
i
<
bcnt
;
i
++
)
{
{
if
(
replyVal
)
if
(
replyVal
)
reply
.
addData
(
replyVal
);
reply
.
addData
(
replyVal
);
else
else
reply
.
addData
(
d
);
reply
.
addData
(
d
);
return
ModbusRTU
::
erNoError
;
}
// :
int
num
=
0
;
//
ModbusData
reg
=
query
.
start
;
for
(
;
num
<
query
.
count
;
num
++
,
reg
++
)
{
if
(
replyVal
)
reply
.
addData
(
replyVal
);
else
reply
.
addData
(
d
);
}
// , ۣ
// ...
if
(
reply
.
bcnt
<
query
.
count
)
{
cerr
<<
"(readInputStatus): . "
<<
" "
<<
query
.
count
<<
" "
<<
reply
.
bcnt
<<
endl
;
}
}
return
ModbusRTU
::
erNoError
;
return
ModbusRTU
::
erNoError
;
...
...
conf/test.xml
View file @
f47ec246
...
@@ -78,66 +78,61 @@
...
@@ -78,66 +78,61 @@
</consumers>
</consumers>
</item>
</item>
<item
id=
"
46500
1"
name=
"HC_in"
textname=
"HC_in"
<item
id=
"1"
name=
"HC_in"
textname=
"HC_in"
iotype=
"DI"
character=
"Info"
iotype=
"DI"
character=
"Info"
rs=
"
1"
mbtype=
"rtu"
mbaddr=
"0x02"
mbreg=
"0x3050"
mbfunc=
"0x03
"
>
rs=
"
2"
mbtype=
"rtu"
mbaddr=
"0x02"
mbreg=
"0x3000"
mbfunc=
"0x02
"
>
<consumers>
<consumers>
</consumers>
</consumers>
</item>
</item>
<item
id=
"
46500
2"
name=
"HC_out"
textname=
"HC_out"
<item
id=
"2"
name=
"HC_out"
textname=
"HC_out"
iotype=
"D
O
"
character=
"Info"
iotype=
"D
I
"
character=
"Info"
rs=
"
1"
mbtype=
"rtu"
mbaddr=
"0x02"
mbreg=
"0x3000"
mbfunc=
"0x06
"
>
rs=
"
2"
mbtype=
"rtu"
mbaddr=
"0x02"
mbreg=
"0x3001"
mbfunc=
"0x02
"
>
<consumers>
<consumers>
</consumers>
</consumers>
</item>
</item>
<item
id=
"465003"
name=
"connect"
textname=
"connect"
<item
id=
"3"
name=
"HC_in"
textname=
"HC_in"
iotype=
"DI"
character=
"Info"
default=
"1"
>
iotype=
"DI"
character=
"Info"
<consumers>
rs=
"2"
mbtype=
"rtu"
mbaddr=
"0x02"
mbreg=
"0x3000"
mbfunc=
"0x02"
>
</consumers>
</item>
<item
id=
"465004"
name=
"connect_signal"
textname=
"connect_signal"
iotype=
"AI"
character=
"Info"
>
<consumers>
<consumers>
</consumers>
</consumers>
</item>
</item>
<item
id=
"000001"
name=
"test1"
textname=
"test1"
<item
id=
"4"
name=
"HC_out"
textname=
"HC_out"
iotype=
"AI"
character=
"Info"
default=
"1"
>
iotype=
"DO"
character=
"Info"
<consumers>
rs=
"2"
mbtype=
"rtu"
mbaddr=
"0x02"
mbreg=
"0x301"
mbfunc=
"0x05"
>
</consumers>
</item>
<item
id=
"000002"
name=
"test2"
textname=
"test2"
iotype=
"AI"
character=
"Info"
>
<consumers>
<consumers>
</consumers>
</consumers>
</item>
</item>
<item
id=
"000003"
name=
"test3"
textname=
"test3"
iotype=
"AI"
character=
"Info"
>
<item
id=
"5"
name=
"HC_in"
textname=
"HC_in"
iotype=
"DI"
character=
"Info"
rs=
"2"
mbtype=
"rtu"
mbaddr=
"0x02"
mbreg=
"0x302"
mbfunc=
"0x05"
>
<consumers>
<consumers>
</consumers>
</consumers>
</item>
</item>
<item
id=
"000004"
name=
"test4"
textname=
"test4"
<item
id=
"6"
name=
"HC_out"
textname=
"HC_out"
iotype=
"DI"
character=
"Info"
>
iotype=
"DI"
character=
"Info"
rs=
"2"
mbtype=
"rtu"
mbaddr=
"0x02"
mbreg=
"0x304"
mbfunc=
"0x05"
>
<consumers>
<consumers>
</consumers>
</consumers>
</item>
</item>
<item
id=
"
000005"
name=
"EU_Mode_AS"
textname=
"
"
<item
id=
"
465003"
name=
"connect"
textname=
"connect
"
iotype=
"AI"
character=
"Info"
default=
"10
"
>
iotype=
"DI"
character=
"Info"
default=
"1
"
>
<consumers>
<consumers>
</consumers>
</consumers>
</item>
</item>
<item
id=
"465004"
name=
"connect_signal"
textname=
"connect_signal"
<item
id=
"000006"
name=
"No_Signal_S"
textname=
" "
iotype=
"AI"
character=
"Info"
>
iotype=
"DI"
character=
"Info"
>
<consumers>
<consumers>
</consumers>
</consumers>
</item>
</item>
<!-- //************ ****************************- -->
<!-- //************ ****************************- -->
<item
id=
"101"
name=
"valve_K1-1_in"
textname=
"valve_K1-1_in"
<item
id=
"101"
name=
"valve_K1-1_in"
textname=
"valve_K1-1_in"
...
...
extentions/RTUExchange/RTUExchange.cc
View file @
f47ec246
...
@@ -378,8 +378,17 @@ bool RTUExchange::pollRTU( RTUDevice* dev, RegMap::iterator& it )
...
@@ -378,8 +378,17 @@ bool RTUExchange::pollRTU( RTUDevice* dev, RegMap::iterator& it )
case
ModbusRTU
:
:
fnReadInputStatus
:
case
ModbusRTU
:
:
fnReadInputStatus
:
{
{
ModbusRTU
::
ReadInputStatusRetMessage
ret
=
mb
->
read02
(
dev
->
mbaddr
,
p
->
mbreg
+
p
->
offset
,
p
->
q_count
);
ModbusRTU
::
ReadInputStatusRetMessage
ret
=
mb
->
read02
(
dev
->
mbaddr
,
p
->
mbreg
+
p
->
offset
,
p
->
q_count
);
for
(
int
i
=
0
;
i
<
p
->
q_count
;
i
++
,
it
++
)
int
m
=
0
;
it
->
second
->
mbval
=
ret
.
data
[
i
];
for
(
int
i
=
0
;
i
<
ret
.
bcnt
;
i
++
)
{
ModbusRTU
::
DataBits
b
(
ret
.
data
[
i
]);
for
(
int
k
=
0
;
k
<
ModbusRTU
::
BitsPerByte
&&
m
<
p
->
q_count
;
k
++
,
it
++
,
m
++
)
{
// cerr << "(read02): save mbreg=" << ModbusRTU::dat2str(it->second->mbreg)
// << " val=" << (int)(b[k]) << endl;
it
->
second
->
mbval
=
b
[
k
];
}
}
it
--
;
it
--
;
}
}
break
;
break
;
...
@@ -387,8 +396,17 @@ bool RTUExchange::pollRTU( RTUDevice* dev, RegMap::iterator& it )
...
@@ -387,8 +396,17 @@ bool RTUExchange::pollRTU( RTUDevice* dev, RegMap::iterator& it )
case
ModbusRTU
:
:
fnReadCoilStatus
:
case
ModbusRTU
:
:
fnReadCoilStatus
:
{
{
ModbusRTU
::
ReadCoilRetMessage
ret
=
mb
->
read01
(
dev
->
mbaddr
,
p
->
mbreg
+
p
->
offset
,
p
->
q_count
);
ModbusRTU
::
ReadCoilRetMessage
ret
=
mb
->
read01
(
dev
->
mbaddr
,
p
->
mbreg
+
p
->
offset
,
p
->
q_count
);
for
(
int
i
=
0
;
i
<
p
->
q_count
;
i
++
,
it
++
)
int
m
=
0
;
it
->
second
->
mbval
=
ret
.
data
[
i
];
for
(
int
i
=
0
;
i
<
ret
.
bcnt
;
i
++
)
{
ModbusRTU
::
DataBits
b
(
ret
.
data
[
i
]);
for
(
int
k
=
0
;
k
<
ModbusRTU
::
BitsPerByte
&&
m
<
p
->
q_count
;
k
++
,
it
++
,
m
++
)
{
// cerr << "(read01): save mbreg=" << ModbusRTU::dat2str(it->second->mbreg)
// << " val=" << (int)(b[k]) << endl;
it
->
second
->
mbval
=
b
[
k
]
?
1
:
0
;
}
}
it
--
;
it
--
;
}
}
break
;
break
;
...
@@ -398,7 +416,7 @@ bool RTUExchange::pollRTU( RTUDevice* dev, RegMap::iterator& it )
...
@@ -398,7 +416,7 @@ bool RTUExchange::pollRTU( RTUDevice* dev, RegMap::iterator& it )
if
(
p
->
q_count
!=
1
)
if
(
p
->
q_count
!=
1
)
{
{
dlog
[
Debug
::
CRIT
]
<<
myname
<<
"(pollRTU): mbreg="
<<
ModbusRTU
::
dat2str
(
p
->
mbreg
)
dlog
[
Debug
::
CRIT
]
<<
myname
<<
"(pollRTU): mbreg="
<<
ModbusRTU
::
dat2str
(
p
->
mbreg
)
<<
" IGNORE WRITE SINGLE REGISTER q_count="
<<
p
->
q_count
<<
" ..."
<<
endl
;
<<
" IGNORE WRITE SINGLE REGISTER
(0x06)
q_count="
<<
p
->
q_count
<<
" ..."
<<
endl
;
return
false
;
return
false
;
}
}
ModbusRTU
::
WriteSingleOutputRetMessage
ret
=
mb
->
write06
(
dev
->
mbaddr
,
p
->
mbreg
+
p
->
offset
,
p
->
mbval
);
ModbusRTU
::
WriteSingleOutputRetMessage
ret
=
mb
->
write06
(
dev
->
mbaddr
,
p
->
mbreg
+
p
->
offset
,
p
->
mbval
);
...
@@ -415,6 +433,36 @@ bool RTUExchange::pollRTU( RTUDevice* dev, RegMap::iterator& it )
...
@@ -415,6 +433,36 @@ bool RTUExchange::pollRTU( RTUDevice* dev, RegMap::iterator& it )
}
}
break
;
break
;
case
ModbusRTU
:
:
fnForceSingleCoil
:
{
if
(
p
->
q_count
!=
1
)
{
dlog
[
Debug
::
CRIT
]
<<
myname
<<
"(pollRTU): mbreg="
<<
ModbusRTU
::
dat2str
(
p
->
mbreg
)
<<
" IGNORE FORCE SINGLE COIL (0x05) q_count="
<<
p
->
q_count
<<
" ..."
<<
endl
;
return
false
;
}
ModbusRTU
::
ForceSingleCoilRetMessage
ret
=
mb
->
write05
(
dev
->
mbaddr
,
p
->
mbreg
+
p
->
offset
,
p
->
mbval
);
}
break
;
case
ModbusRTU
:
:
fnForceMultipleCoils
:
{
ModbusRTU
::
ForceCoilsMessage
msg
(
dev
->
mbaddr
,
p
->
mbreg
+
p
->
offset
);
for
(
int
i
=
0
;
i
<
p
->
q_count
;
i
++
)
{
ModbusRTU
::
DataBits16
d
;
for
(
int
k
=
0
;
k
<
ModbusRTU
::
BitsPerData
&&
i
<
p
->
q_count
;
k
++
,
i
++
,
it
++
)
d
.
set
(
k
,
(
it
->
second
->
mbval
?
true
:
false
)
);
msg
.
addData
(
d
);
}
it
--
;
ModbusRTU
::
ForceCoilsRetMessage
ret
=
mb
->
write0F
(
msg
);
}
break
;
default
:
default
:
{
{
if
(
dlog
.
debugging
(
Debug
::
INFO
)
)
if
(
dlog
.
debugging
(
Debug
::
INFO
)
)
...
@@ -1543,6 +1591,16 @@ void RTUExchange::rtuQueryOptimization( RTUDeviceMap& m )
...
@@ -1543,6 +1591,16 @@ void RTUExchange::rtuQueryOptimization( RTUDeviceMap& m )
beg
->
second
->
mbfunc
=
ModbusRTU
::
fnWriteOutputRegisters
;
beg
->
second
->
mbfunc
=
ModbusRTU
::
fnWriteOutputRegisters
;
}
}
else
if
(
beg
->
second
->
q_count
>
1
&&
beg
->
second
->
mbfunc
==
ModbusRTU
::
fnForceSingleCoil
)
{
dlog
[
Debug
::
WARN
]
<<
myname
<<
"(rtuQueryOptimization): "
<<
" optimization change func="
<<
ModbusRTU
::
fnForceSingleCoil
<<
" <--> func="
<<
ModbusRTU
::
fnForceMultipleCoils
<<
" for mbaddr="
<<
ModbusRTU
::
addr2str
(
d
->
mbaddr
)
<<
" mbreg="
<<
ModbusRTU
::
dat2str
(
beg
->
second
->
mbreg
);
beg
->
second
->
mbfunc
=
ModbusRTU
::
fnForceMultipleCoils
;
}
if
(
it
==
d
->
regmap
.
end
()
)
if
(
it
==
d
->
regmap
.
end
()
)
break
;
break
;
...
@@ -1557,9 +1615,7 @@ void RTUExchange::updateRTU( RegMap::iterator& rit )
...
@@ -1557,9 +1615,7 @@ void RTUExchange::updateRTU( RegMap::iterator& rit )
RegInfo
*
r
(
rit
->
second
);
RegInfo
*
r
(
rit
->
second
);
using
namespace
ModbusRTU
;
using
namespace
ModbusRTU
;
bool
save
=
false
;
bool
save
=
isWriteFunction
(
r
->
mbfunc
);
if
(
r
->
mbfunc
==
fnWriteOutputRegisters
||
r
->
mbfunc
==
fnWriteOutputSingleRegister
)
save
=
true
;
// if( !force_out_up && save )
// if( !force_out_up && save )
// return;
// return;
...
@@ -1574,10 +1630,9 @@ void RTUExchange::updateRSProperty( RSProperty* p, bool write_only )
...
@@ -1574,10 +1630,9 @@ void RTUExchange::updateRSProperty( RSProperty* p, bool write_only )
using
namespace
ModbusRTU
;
using
namespace
ModbusRTU
;
RegInfo
*
r
(
p
->
reg
->
rit
->
second
);
RegInfo
*
r
(
p
->
reg
->
rit
->
second
);
bool
save
=
false
;
bool
save
=
isWriteFunction
(
r
->
mbfunc
);
if
(
r
->
mbfunc
==
fnWriteOutputRegisters
||
r
->
mbfunc
==
fnWriteOutputSingleRegister
)
save
=
true
;
if
(
!
save
&&
write_only
)
else
if
(
write_only
)
return
;
return
;
try
try
...
@@ -1613,7 +1668,6 @@ void RTUExchange::updateRSProperty( RSProperty* p, bool write_only )
...
@@ -1613,7 +1668,6 @@ void RTUExchange::updateRSProperty( RSProperty* p, bool write_only )
dlog
[
Debug
::
CRIT
]
<<
myname
<<
"(updateRSProperty): IGNORE item: rnum="
<<
p
->
rnum
dlog
[
Debug
::
CRIT
]
<<
myname
<<
"(updateRSProperty): IGNORE item: rnum="
<<
p
->
rnum
<<
" > 1 ?!! for id="
<<
p
->
si
.
id
<<
endl
;
<<
" > 1 ?!! for id="
<<
p
->
si
.
id
<<
endl
;
return
;
return
;
}
}
else
if
(
p
->
vType
==
VTypes
::
vtByte
)
else
if
(
p
->
vType
==
VTypes
::
vtByte
)
...
@@ -1717,9 +1771,7 @@ void RTUExchange::updateMTR( RegMap::iterator& rit )
...
@@ -1717,9 +1771,7 @@ void RTUExchange::updateMTR( RegMap::iterator& rit )
{
{
RegInfo
*
r
(
rit
->
second
);
RegInfo
*
r
(
rit
->
second
);
using
namespace
ModbusRTU
;
using
namespace
ModbusRTU
;
bool
save
=
false
;
bool
save
=
isWriteFunction
(
r
->
mbfunc
);
if
(
r
->
mbfunc
==
fnWriteOutputRegisters
||
r
->
mbfunc
==
fnWriteOutputSingleRegister
)
save
=
true
;
{
{
for
(
PList
::
iterator
it
=
r
->
slst
.
begin
();
it
!=
r
->
slst
.
end
();
++
it
)
for
(
PList
::
iterator
it
=
r
->
slst
.
begin
();
it
!=
r
->
slst
.
end
();
++
it
)
...
@@ -1918,7 +1970,7 @@ void RTUExchange::updateRTU188( RegMap::iterator& it )
...
@@ -1918,7 +1970,7 @@ void RTUExchange::updateRTU188( RegMap::iterator& it )
using
namespace
ModbusRTU
;
using
namespace
ModbusRTU
;
// bool save = false;
// bool save = false;
if
(
r
->
mbfunc
==
fnWriteOutputRegisters
||
r
->
mbfunc
==
fnWriteOutputSingleRegister
)
if
(
isWriteFunction
(
r
->
mbfunc
)
)
{
{
// save = true;
// save = true;
cerr
<<
myname
<<
"(updateRTU188): write reg("
<<
dat2str
(
r
->
mbreg
)
<<
") to RTU188 NOT YET!!!"
<<
endl
;
cerr
<<
myname
<<
"(updateRTU188): write reg("
<<
dat2str
(
r
->
mbreg
)
<<
") to RTU188 NOT YET!!!"
<<
endl
;
...
...
extentions/RTUExchange/start_fg.sh
View file @
f47ec246
#!/bin/sh
#!/bin/sh
uniset-start.sh
-f
./uniset-rtuexchange
--confile
test.xml
\
uniset-start.sh
-f
./uniset-rtuexchange
--confile
test.xml
\
--rs-dev
/dev/
ttyS
0
\
--rs-dev
/dev/
cbsideA
0
\
--rs-name
RSExchange
\
--rs-name
RSExchange
\
--rs-speed
38400
\
--rs-speed
38400
\
--rs-filter-field
rs
\
--rs-filter-field
rs
\
--rs-filter-value
3
\
--rs-filter-value
2
\
--dlog-add-levels
info,crit,warn
\
--dlog-add-levels
info,crit,warn
\
--rs-force
0
\
--rs-force
0
\
--rs-force-out
0
\
--rs-force-out
0
\
...
...
extentions/SharedMemory/start_fg.sh
View file @
f47ec246
...
@@ -3,6 +3,6 @@
...
@@ -3,6 +3,6 @@
ulimit
-Sc
1000000000000
ulimit
-Sc
1000000000000
uniset-start.sh
-f
./uniset-smemory
--smemory-id
SharedMemory1
\
uniset-start.sh
-f
./uniset-smemory
--smemory-id
SharedMemory1
\
--confile
test.xml
--datfile
/etc/AEU/configure
.xml
\
--confile
test.xml
--datfile
test
.xml
\
--unideb-add-levels
info,crit,warn,level9,system
--unideb-add-levels
info,crit,warn,level9,system
include/modbus/ModbusTypes.h
View file @
f47ec246
...
@@ -74,6 +74,8 @@ namespace ModbusRTU
...
@@ -74,6 +74,8 @@ namespace ModbusRTU
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
float
dat2f
(
const
ModbusData
dat1
,
const
ModbusData
dat2
);
float
dat2f
(
const
ModbusData
dat1
,
const
ModbusData
dat2
);
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
bool
isWriteFunction
(
SlaveFunctionCode
c
);
// -------------------------------------------------------------------------
/*! */
/*! */
struct
ModbusHeader
struct
ModbusHeader
{
{
...
@@ -240,12 +242,12 @@ namespace ModbusRTU
...
@@ -240,12 +242,12 @@ namespace ModbusRTU
bool
setBit
(
unsigned
char
dnum
,
unsigned
char
bnum
,
bool
state
);
bool
setBit
(
unsigned
char
dnum
,
unsigned
char
bnum
,
bool
state
);
/*! .
/*! .
* \param
d
num -
* \param
b
num -
* \param d -
* \param d -
* \return TRUE -
* \return TRUE -
* \return FALSE -
* \return FALSE -
*/
*/
bool
getData
(
unsigned
char
d
num
,
DataBits
&
d
);
bool
getData
(
unsigned
char
b
num
,
DataBits
&
d
);
/*! */
/*! */
void
clear
();
void
clear
();
...
...
src/Communications/Modbus/ModbusTypes.cc
View file @
f47ec246
...
@@ -155,6 +155,17 @@ ModbusCRC ModbusRTU::checkCRC( ModbusByte* buf, int len )
...
@@ -155,6 +155,17 @@ ModbusCRC ModbusRTU::checkCRC( ModbusByte* buf, int len )
return
crc
;
return
crc
;
}
}
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
bool
ModbusRTU
::
isWriteFunction
(
SlaveFunctionCode
c
)
{
if
(
c
==
fnWriteOutputRegisters
||
c
==
fnWriteOutputSingleRegister
||
c
==
fnForceSingleCoil
||
c
==
fnForceMultipleCoils
)
return
true
;
return
false
;
}
// -------------------------------------------------------------------------
std
::
ostream
&
ModbusRTU
::
mbPrintMessage
(
std
::
ostream
&
os
,
ModbusByte
*
m
,
int
len
)
std
::
ostream
&
ModbusRTU
::
mbPrintMessage
(
std
::
ostream
&
os
,
ModbusByte
*
m
,
int
len
)
{
{
// 'os'
// 'os'
...
...
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