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
a7a1b440
Commit
a7a1b440
authored
Jun 05, 2015
by
Pavel Vainerman
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
(Modbus): добавил ещё тестов
parent
5190121a
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
122 additions
and
6 deletions
+122
-6
MBTCPTestServer.cc
extensions/ModbusMaster/tests/MBTCPTestServer.cc
+8
-0
MBTCPTestServer.h
extensions/ModbusMaster/tests/MBTCPTestServer.h
+4
-0
mbmaster-test-configure.xml
extensions/ModbusMaster/tests/mbmaster-test-configure.xml
+3
-0
run_test_mbtcpmaster.cc
extensions/ModbusMaster/tests/run_test_mbtcpmaster.cc
+4
-1
test_mbtcpmaster.cc
extensions/ModbusMaster/tests/test_mbtcpmaster.cc
+58
-4
mbslave-test-configure.xml
extensions/ModbusSlave/tests/mbslave-test-configure.xml
+1
-0
test_mbslave.cc
extensions/ModbusSlave/tests/test_mbslave.cc
+22
-1
test_iobase_with_sm.cc
extensions/tests/test_iobase_with_sm.cc
+17
-0
tests_with_sm.xml
extensions/tests/tests_with_sm.xml
+5
-0
No files found.
extensions/ModbusMaster/tests/MBTCPTestServer.cc
View file @
a7a1b440
...
@@ -2,6 +2,7 @@
...
@@ -2,6 +2,7 @@
#include <sstream>
#include <sstream>
#include <UniSetTypes.h>
#include <UniSetTypes.h>
#include "MBTCPTestServer.h"
#include "MBTCPTestServer.h"
#include "VTypes.h"
#include "uniset-config.h"
#include "uniset-config.h"
// -------------------------------------------------------------------------
// -------------------------------------------------------------------------
#ifndef PACKAGE_URL
#ifndef PACKAGE_URL
...
@@ -352,6 +353,13 @@ ModbusRTU::mbErrCode MBTCPTestServer::writeOutputRegisters( ModbusRTU::WriteOutp
...
@@ -352,6 +353,13 @@ ModbusRTU::mbErrCode MBTCPTestServer::writeOutputRegisters( ModbusRTU::WriteOutp
ModbusRTU
::
mbErrCode
ret
=
ModbusRTU
::
erNoError
;
ModbusRTU
::
mbErrCode
ret
=
ModbusRTU
::
erNoError
;
reply
.
set
(
query
.
start
,
query
.
quant
);
reply
.
set
(
query
.
start
,
query
.
quant
);
lastWriteOutputQ
=
query
;
lastWriteOutputQ
=
query
;
if
(
query
.
start
==
41
)
{
VTypes
::
F2
f2
(
query
.
data
,
VTypes
::
F2
::
wsize
());
f2_test_value
=
(
float
)
f2
;
}
return
ret
;
return
ret
;
}
}
...
...
extensions/ModbusMaster/tests/MBTCPTestServer.h
View file @
a7a1b440
...
@@ -64,6 +64,8 @@ class MBTCPTestServer
...
@@ -64,6 +64,8 @@ class MBTCPTestServer
friend
std
::
ostream
&
operator
<<
(
std
::
ostream
&
os
,
const
MBTCPTestServer
*
m
);
friend
std
::
ostream
&
operator
<<
(
std
::
ostream
&
os
,
const
MBTCPTestServer
*
m
);
inline
float
getF2TestValue
(){
return
f2_test_value
;
}
protected
:
protected
:
// действия при завершении работы
// действия при завершении работы
void
sigterm
(
int
signo
);
void
sigterm
(
int
signo
);
...
@@ -133,6 +135,8 @@ class MBTCPTestServer
...
@@ -133,6 +135,8 @@ class MBTCPTestServer
int
lastWriteOutputSingleRegister
;
int
lastWriteOutputSingleRegister
;
ModbusRTU
::
ForceCoilsMessage
lastForceCoilsQ
;
ModbusRTU
::
ForceCoilsMessage
lastForceCoilsQ
;
ModbusRTU
::
WriteOutputMessage
lastWriteOutputQ
;
ModbusRTU
::
WriteOutputMessage
lastWriteOutputQ
;
float
f2_test_value
=
{
0
.
0
};
#if 0
#if 0
typedef std::map<ModbusRTU::mbErrCode, unsigned int> ExchangeErrorMap;
typedef std::map<ModbusRTU::mbErrCode, unsigned int> ExchangeErrorMap;
ExchangeErrorMap errmap; /*!< статистика обмена */
ExchangeErrorMap errmap; /*!< статистика обмена */
...
...
extensions/ModbusMaster/tests/mbmaster-test-configure.xml
View file @
a7a1b440
...
@@ -112,6 +112,9 @@
...
@@ -112,6 +112,9 @@
<item
id=
"1027"
mb=
"1"
mbtype=
"rtu"
mbaddr=
"0x01"
mbreg=
"41"
mbfunc=
"0x10"
vtype=
"F2"
iotype=
"AO"
name=
"TestWrite1027_F2"
precision=
"1"
textname=
"F2: Тестовый регистр для 0x10"
/>
<item
id=
"10000"
iotype=
"DI"
name=
"TestMode_S"
textname=
"Тестовый датчик"
/>
<item
id=
"10000"
iotype=
"DI"
name=
"TestMode_S"
textname=
"Тестовый датчик"
/>
</sensors>
</sensors>
...
...
extensions/ModbusMaster/tests/run_test_mbtcpmaster.cc
View file @
a7a1b440
...
@@ -8,11 +8,14 @@
...
@@ -8,11 +8,14 @@
#include "SharedMemory.h"
#include "SharedMemory.h"
#include "Extensions.h"
#include "Extensions.h"
#include "MBTCPMaster.h"
#include "MBTCPMaster.h"
#include "SMInterface.h"
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
using
namespace
std
;
using
namespace
std
;
using
namespace
UniSetTypes
;
using
namespace
UniSetTypes
;
using
namespace
UniSetExtensions
;
using
namespace
UniSetExtensions
;
// --------------------------------------------------------------------------
// --------------------------------------------------------------------------
std
::
shared_ptr
<
SharedMemory
>
shm
;
// --------------------------------------------------------------------------
int
main
(
int
argc
,
char
*
argv
[]
)
int
main
(
int
argc
,
char
*
argv
[]
)
{
{
Catch
::
Session
session
;
Catch
::
Session
session
;
...
@@ -38,7 +41,7 @@ int main(int argc, char* argv[] )
...
@@ -38,7 +41,7 @@ int main(int argc, char* argv[] )
bool
apart
=
findArgParam
(
"--apart"
,
argc
,
argv
)
!=
-
1
;
bool
apart
=
findArgParam
(
"--apart"
,
argc
,
argv
)
!=
-
1
;
auto
shm
=
SharedMemory
::
init_smemory
(
argc
,
argv
);
shm
=
SharedMemory
::
init_smemory
(
argc
,
argv
);
if
(
!
shm
)
if
(
!
shm
)
return
1
;
return
1
;
...
...
extensions/ModbusMaster/tests/test_mbtcpmaster.cc
View file @
a7a1b440
...
@@ -16,11 +16,14 @@ static string addr("127.0.0.1"); // conf->getArgParam("--mbs-inet-addr");
...
@@ -16,11 +16,14 @@ static string addr("127.0.0.1"); // conf->getArgParam("--mbs-inet-addr");
static
ModbusRTU
::
ModbusAddr
slaveADDR
=
0x01
;
static
ModbusRTU
::
ModbusAddr
slaveADDR
=
0x01
;
static
shared_ptr
<
MBTCPTestServer
>
mbs
;
static
shared_ptr
<
MBTCPTestServer
>
mbs
;
static
shared_ptr
<
UInterface
>
ui
;
static
shared_ptr
<
UInterface
>
ui
;
static
std
::
shared_ptr
<
SMInterface
>
smi
;
static
ObjectId
mbID
=
6004
;
// MBTCPMaster1
static
ObjectId
mbID
=
6004
;
// MBTCPMaster1
static
int
polltime
=
100
;
// conf->getArgInt("--mbtcp-polltime");
static
int
polltime
=
100
;
// conf->getArgInt("--mbtcp-polltime");
static
ObjectId
slaveNotRespond
=
10
;
// Slave_Not_Respond_S
static
ObjectId
slaveNotRespond
=
10
;
// Slave_Not_Respond_S
static
const
ObjectId
exchangeMode
=
11
;
// MBTCPMaster_Mode_AS
static
const
ObjectId
exchangeMode
=
11
;
// MBTCPMaster_Mode_AS
// -----------------------------------------------------------------------------
// -----------------------------------------------------------------------------
extern
std
::
shared_ptr
<
SharedMemory
>
shm
;
// -----------------------------------------------------------------------------
static
void
InitTest
()
static
void
InitTest
()
{
{
auto
conf
=
uniset_conf
();
auto
conf
=
uniset_conf
();
...
@@ -35,6 +38,17 @@ static void InitTest()
...
@@ -35,6 +38,17 @@ static void InitTest()
CHECK
(
ui
->
waitReady
(
slaveNotRespond
,
8000
)
);
CHECK
(
ui
->
waitReady
(
slaveNotRespond
,
8000
)
);
}
}
if
(
!
smi
)
{
if
(
shm
==
nullptr
)
throw
SystemError
(
"SharedMemory don`t initialize.."
);
if
(
ui
==
nullptr
)
throw
SystemError
(
"UInterface don`t initialize.."
);
smi
=
make_shared
<
SMInterface
>
(
shm
->
getId
(),
ui
,
mbID
,
shm
);
}
if
(
!
mbs
)
if
(
!
mbs
)
{
{
try
try
...
@@ -67,6 +81,20 @@ static void InitTest()
...
@@ -67,6 +81,20 @@ static void InitTest()
}
}
}
}
// -----------------------------------------------------------------------------
// -----------------------------------------------------------------------------
static
bool
init_iobase
(
IOBase
*
ib
,
const
std
::
string
&
sensor
)
{
InitTest
();
auto
conf
=
uniset_conf
();
xmlNode
*
snode
=
conf
->
getXMLObjectNode
(
conf
->
getSensorID
(
sensor
)
);
CHECK
(
snode
!=
0
);
UniXML
::
iterator
it
(
snode
);
smi
->
initIterator
(
ib
->
d_it
);
smi
->
initIterator
(
ib
->
ioit
);
smi
->
initIterator
(
ib
->
t_ait
);
return
IOBase
::
initItem
(
ib
,
it
,
smi
,
""
,
false
);
}
// -----------------------------------------------------------------------------
TEST_CASE
(
"MBTCPMaster: 0x01 (read coil status)"
,
"[modbus][0x01][mbmaster][mbtcpmaster]"
)
TEST_CASE
(
"MBTCPMaster: 0x01 (read coil status)"
,
"[modbus][0x01][mbmaster][mbtcpmaster]"
)
{
{
InitTest
();
InitTest
();
...
@@ -571,13 +599,13 @@ TEST_CASE("MBTCPMaster: 0x66 (file transfer)", "[modbus][0x66][mbmaster][mbtcpma
...
@@ -571,13 +599,13 @@ TEST_CASE("MBTCPMaster: 0x66 (file transfer)", "[modbus][0x66][mbmaster][mbtcpma
WARN
(
"Test of '0x66'..not yet.. "
);
WARN
(
"Test of '0x66'..not yet.. "
);
}
}
// -----------------------------------------------------------------------------
// -----------------------------------------------------------------------------
#if 0
//#if 1
TEST_CASE
(
"MBTCPMaster: 0x10 (F2)"
,
"[modbus][0x10][F2][mbmaster][mbtcpmaster]"
)
TEST_CASE
(
"MBTCPMaster: 0x10 (F2)"
,
"[modbus][0x10][F2][mbmaster][mbtcpmaster]"
)
{
{
InitTest
();
InitTest
();
ui->setValue(1027, 1
00
);
ui
->
setValue
(
1027
,
1
12
);
REQUIRE( ui->getValue(1027) == 1
00
);
REQUIRE
(
ui
->
getValue
(
1027
)
==
1
12
);
msleep
(
polltime
+
200
);
msleep
(
polltime
+
200
);
ModbusRTU
::
WriteOutputMessage
q
=
mbs
->
getLastWriteOutput
();
ModbusRTU
::
WriteOutputMessage
q
=
mbs
->
getLastWriteOutput
();
REQUIRE
(
q
.
addr
==
slaveADDR
);
REQUIRE
(
q
.
addr
==
slaveADDR
);
...
@@ -586,9 +614,10 @@ TEST_CASE("MBTCPMaster: 0x10 (F2)", "[modbus][0x10][F2][mbmaster][mbtcpmaster]")
...
@@ -586,9 +614,10 @@ TEST_CASE("MBTCPMaster: 0x10 (F2)", "[modbus][0x10][F2][mbmaster][mbtcpmaster]")
VTypes
::
F2
f2
(
q
.
data
,
VTypes
::
F2
::
wsize
());
VTypes
::
F2
f2
(
q
.
data
,
VTypes
::
F2
::
wsize
());
float
f
=
f2
;
float
f
=
f2
;
REQUIRE( f == 1
00
);
REQUIRE
(
f
==
1
1.2
f
);
}
}
// -----------------------------------------------------------------------------
// -----------------------------------------------------------------------------
#if 0
TEST_CASE("MBTCPMaster: 0x10 (F4)", "[modbus][0x10][F4][mbmaster][mbtcpmaster]")
TEST_CASE("MBTCPMaster: 0x10 (F4)", "[modbus][0x10][F4][mbmaster][mbtcpmaster]")
{
{
InitTest();
InitTest();
...
@@ -609,3 +638,28 @@ TEST_CASE("MBTCPMaster: 0x10 (F4)", "[modbus][0x10][F4][mbmaster][mbtcpmaster]")
...
@@ -609,3 +638,28 @@ TEST_CASE("MBTCPMaster: 0x10 (F4)", "[modbus][0x10][F4][mbmaster][mbtcpmaster]")
}
}
#endif
#endif
// -----------------------------------------------------------------------------
// -----------------------------------------------------------------------------
TEST_CASE
(
"MBTCPMaster: FasAO -> FasAI"
,
"[modbus][float]"
)
{
InitTest
();
IOBase
ib
;
CHECK
(
init_iobase
(
&
ib
,
"TestWrite1027_F2"
)
);
ui
->
setValue
(
1027
,
116
);
REQUIRE
(
ui
->
getValue
(
1027
)
==
116
);
msleep
(
polltime
+
200
);
ModbusRTU
::
WriteOutputMessage
q
=
mbs
->
getLastWriteOutput
();
REQUIRE
(
q
.
addr
==
slaveADDR
);
REQUIRE
(
q
.
start
==
41
);
REQUIRE
(
q
.
quant
==
2
);
float
f2
=
mbs
->
getF2TestValue
();
ui
->
setValue
(
1027
,
0
);
IOBase
::
processingFasAI
(
&
ib
,
f2
,
smi
,
true
);
REQUIRE
(
ui
->
getValue
(
1027
)
==
116
);
float
f3
=
IOBase
::
processingFasAO
(
&
ib
,
smi
,
true
);
REQUIRE
(
f3
==
11.6
f
);
}
// -----------------------------------------------------------------------------
extensions/ModbusSlave/tests/mbslave-test-configure.xml
View file @
a7a1b440
...
@@ -197,6 +197,7 @@
...
@@ -197,6 +197,7 @@
<item
id=
"2048"
mbs=
"1"
mbreg=
"258"
iotype=
"AO"
name=
"Test_CountWrite10_11"
textname=
"Тестовый регистр для 0x10"
/>
<item
id=
"2048"
mbs=
"1"
mbreg=
"258"
iotype=
"AO"
name=
"Test_CountWrite10_11"
textname=
"Тестовый регистр для 0x10"
/>
<item
id=
"2049"
mbs=
"1"
mbreg=
"257"
iotype=
"AO"
name=
"Test_CountWrite10_12"
textname=
"Тестовый регистр для 0x10"
/>
<item
id=
"2049"
mbs=
"1"
mbreg=
"257"
iotype=
"AO"
name=
"Test_CountWrite10_12"
textname=
"Тестовый регистр для 0x10"
/>
<item
id=
"2050"
mbs=
"1"
mbreg=
"259"
iotype=
"AO"
vtype=
"F2"
name=
"Test_CountWrite10_F2"
textname=
"Тестовый регистр для 0x10(F2)"
/>
<item
id=
"2050"
mbs=
"1"
mbreg=
"259"
iotype=
"AO"
vtype=
"F2"
name=
"Test_CountWrite10_F2"
textname=
"Тестовый регистр для 0x10(F2)"
/>
<item
id=
"2051"
mbs=
"1"
mbreg=
"261"
iotype=
"AO"
vtype=
"F2"
precision=
"1"
name=
"Test_CountWrite10_F2prec"
textname=
"Тестовый регистр для 0x10(F2)(prec)"
/>
<item
id=
"10000"
iotype=
"DI"
name=
"TestMode_S"
textname=
"Тестовый датчик"
/>
<item
id=
"10000"
iotype=
"DI"
name=
"TestMode_S"
textname=
"Тестовый датчик"
/>
...
...
extensions/ModbusSlave/tests/test_mbslave.cc
View file @
a7a1b440
...
@@ -1135,7 +1135,7 @@ TEST_CASE("(0x10): write register outputs or memories [F2]", "[modbus][mbslave][
...
@@ -1135,7 +1135,7 @@ TEST_CASE("(0x10): write register outputs or memories [F2]", "[modbus][mbslave][
using
namespace
VTypes
;
using
namespace
VTypes
;
float
f
=
200.
0
;
float
f
=
200.
4
;
F2
f2
(
f
);
F2
f2
(
f
);
ModbusRTU
::
WriteOutputMessage
msg
(
slaveaddr
,
tREG
);
ModbusRTU
::
WriteOutputMessage
msg
(
slaveaddr
,
tREG
);
...
@@ -1148,4 +1148,25 @@ TEST_CASE("(0x10): write register outputs or memories [F2]", "[modbus][mbslave][
...
@@ -1148,4 +1148,25 @@ TEST_CASE("(0x10): write register outputs or memories [F2]", "[modbus][mbslave][
REQUIRE
(
ui
->
getValue
(
tID
)
==
200
);
REQUIRE
(
ui
->
getValue
(
tID
)
==
200
);
}
}
// -------------------------------------------------------------
// -------------------------------------------------------------
TEST_CASE
(
"(0x10): write register outputs or memories [F2](precision)"
,
"[modbus][mbslave][F2prec][mbtcpslave]"
)
{
InitTest
();
ObjectId
tID
=
2051
;
ModbusRTU
::
ModbusData
tREG
=
261
;
using
namespace
VTypes
;
float
f
=
200.4
;
F2
f2
(
f
);
ModbusRTU
::
WriteOutputMessage
msg
(
slaveaddr
,
tREG
);
msg
.
addData
(
f2
.
raw
.
v
[
0
]);
msg
.
addData
(
f2
.
raw
.
v
[
1
]);
ModbusRTU
::
WriteOutputRetMessage
ret
=
mb
->
write10
(
msg
);
REQUIRE
(
ret
.
start
==
tREG
);
REQUIRE
(
ret
.
quant
==
2
);
REQUIRE
(
ui
->
getValue
(
tID
)
==
2004
);
}
// -------------------------------------------------------------
/*! \todo Доделать тесты на считывание с разными prop_prefix.. */
/*! \todo Доделать тесты на считывание с разными prop_prefix.. */
extensions/tests/test_iobase_with_sm.cc
View file @
a7a1b440
...
@@ -494,3 +494,20 @@ TEST_CASE("IOBase with SM", "[iobase][extensions]")
...
@@ -494,3 +494,20 @@ TEST_CASE("IOBase with SM", "[iobase][extensions]")
// processingThreshold
// processingThreshold
}
}
// -----------------------------------------------------------------------------
// -----------------------------------------------------------------------------
TEST_CASE
(
"[IOBase]: FasAO --> FasAI"
,
"[iobase][float]"
)
{
CHECK
(
uniset_conf
()
!=
nullptr
);
IOBase
ib
;
CHECK
(
init_iobase
(
&
ib
,
"FasAI_S"
)
);
shm
->
setValue
(
119
,
232
);
float
f
=
IOBase
::
processingFasAO
(
&
ib
,
shm
,
true
);
CHECK
(
f
==
23.2
f
);
IOBase
::
processingFasAI
(
&
ib
,
f
,
shm
,
true
);
CHECK
(
shm
->
getValue
(
119
)
==
232
);
}
// -----------------------------------------------------------------------------
extensions/tests/tests_with_sm.xml
View file @
a7a1b440
...
@@ -267,6 +267,11 @@
...
@@ -267,6 +267,11 @@
<item
id=
"117"
iotype=
"DI"
name=
"AsDI2_S"
textname=
"AsDI2"
/>
<item
id=
"117"
iotype=
"DI"
name=
"AsDI2_S"
textname=
"AsDI2"
/>
<item
id=
"118"
iotype=
"DO"
name=
"AsDO_S"
textname=
"AsDO"
/>
<item
id=
"118"
iotype=
"DO"
name=
"AsDO_S"
textname=
"AsDO"
/>
<!-- FasAO -> FasAI -->
<item
id=
"119"
iotype=
"AI"
name=
"FasAI_S"
textname=
"FasAI"
precision=
"1"
/>
<item
id=
"120"
iotype=
"AI"
name=
"FasAO_S"
textname=
"FasAO"
precsision=
"1"
/>
</sensors>
</sensors>
<thresholds
name=
"thresholds"
>
<thresholds
name=
"thresholds"
>
<sensor
iotype=
"AI"
name=
"AI_AS"
>
<sensor
iotype=
"AI"
name=
"AI_AS"
>
...
...
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