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
b9dd1c9a
You need to sign in or sign up before continuing.
Commit
b9dd1c9a
authored
Jun 04, 2009
by
pv
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
debugging
parent
b14d1b5c
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
97 additions
and
42 deletions
+97
-42
TODO
TODO
+8
-2
uniset.spec
conf/uniset.spec
+3
-0
RTUExchange.cc
extentions/RTUExchange/RTUExchange.cc
+75
-35
RTUExchange.h
extentions/RTUExchange/RTUExchange.h
+3
-2
create_links.sh
extentions/RTUExchange/create_links.sh
+3
-1
start_fg.sh
extentions/RTUExchange/start_fg.sh
+5
-2
No files found.
TODO
View file @
b9dd1c9a
...
@@ -21,4 +21,11 @@
...
@@ -21,4 +21,11 @@
IOController_i::SensorInfo UniSetTypes
IOController_i::SensorInfo UniSetTypes
( ConsumerInfo ..). uniset-codegen,
( ConsumerInfo ..). uniset-codegen,
SensorInfo ObjectId.
SensorInfo ObjectId.
\ No newline at end of file
RTUExchange
==============
...
udev
conf/uniset.spec
View file @
b9dd1c9a
...
@@ -181,6 +181,9 @@ Libraries needed to develop for uniset extentions
...
@@ -181,6 +181,9 @@ Libraries needed to develop for uniset extentions
%_bindir/%name-smviewer
%_bindir/%name-smviewer
%changelog
%changelog
* Thu Jun 04 2009 Pavel Vainerman <pv@aeu> 0.96-eter23
- new build
* Thu Jun 04 2009 Pavel Vainerman <pv@etersoft.ru> 0.96-eter22
* Thu Jun 04 2009 Pavel Vainerman <pv@etersoft.ru> 0.96-eter22
- new build
- new build
...
...
extentions/RTUExchange/RTUExchange.cc
View file @
b9dd1c9a
...
@@ -69,6 +69,7 @@ activated(false)
...
@@ -69,6 +69,7 @@ activated(false)
{
{
readConfiguration
();
readConfiguration
();
rtuQueryOptimization
(
rmap
);
rtuQueryOptimization
(
rmap
);
initRespondList
();
}
}
else
else
ic
->
addReadItem
(
sigc
::
mem_fun
(
this
,
&
RTUExchange
::
readItem
)
);
ic
->
addReadItem
(
sigc
::
mem_fun
(
this
,
&
RTUExchange
::
readItem
)
);
...
@@ -117,20 +118,6 @@ activated(false)
...
@@ -117,20 +118,6 @@ activated(false)
initMB
();
initMB
();
xmlNode
*
respNode
=
conf
->
findNode
(
cnode
,
"RespondList"
);
if
(
respNode
)
{
UniXML_iterator
it1
(
respNode
);
if
(
it1
.
goChildren
()
)
{
for
(;
it1
.
getCurrent
();
it1
.
goNext
()
)
{
ModbusRTU
::
ModbusAddr
a
=
ModbusRTU
::
str2mbAddr
(
it1
.
getProp
(
"addr"
));
initRespondInfo
(
rmap
,
a
,
it1
);
}
}
}
printMap
(
rmap
);
printMap
(
rmap
);
// abort();
// abort();
}
}
...
@@ -168,17 +155,26 @@ void RTUExchange::initMB()
...
@@ -168,17 +155,26 @@ void RTUExchange::initMB()
return
;
return
;
}
}
mb
=
new
ModbusRTUMaster
(
devname
);
try
{
mb
=
new
ModbusRTUMaster
(
devname
);
if
(
!
speed
.
empty
()
)
if
(
!
speed
.
empty
()
)
mb
->
setSpeed
(
speed
);
mb
->
setSpeed
(
speed
);
// mb->setLog(dlog);
//
mb->setLog(dlog);
if
(
recv_timeout
>
0
)
if
(
recv_timeout
>
0
)
mb
->
setTimeout
(
recv_timeout
);
mb
->
setTimeout
(
recv_timeout
);
dlog
[
Debug
::
INFO
]
<<
myname
<<
"(init): dev="
<<
devname
<<
" speed="
<<
speed
<<
endl
;
dlog
[
Debug
::
INFO
]
<<
myname
<<
"(init): dev="
<<
devname
<<
" speed="
<<
speed
<<
endl
;
}
catch
(...)
{
if
(
mb
)
delete
mb
;
mb
=
0
;
}
}
}
// -----------------------------------------------------------------------------
// -----------------------------------------------------------------------------
void
RTUExchange
::
waitSMReady
()
void
RTUExchange
::
waitSMReady
()
...
@@ -236,6 +232,12 @@ void RTUExchange::poll()
...
@@ -236,6 +232,12 @@ void RTUExchange::poll()
if
(
!
mb
)
if
(
!
mb
)
{
{
initMB
();
initMB
();
if
(
!
mb
)
{
for
(
RTUExchange
::
RTUDeviceMap
::
iterator
it
=
rmap
.
begin
();
it
!=
rmap
.
end
();
++
it
)
it
->
second
->
resp_real
=
false
;
}
updateSM
();
return
;
return
;
}
}
...
@@ -260,10 +262,10 @@ void RTUExchange::poll()
...
@@ -260,10 +262,10 @@ void RTUExchange::poll()
try
try
{
{
#warning For Debug
//#warning For Debug
// mb->cleanupChannel();
mb
->
cleanupChannel
();
d
->
resp_real
=
true
;
d
->
rtu
->
poll
(
mb
);
d
->
rtu
->
poll
(
mb
);
d
->
resp_real
=
true
;
}
}
catch
(
ModbusRTU
::
mbException
&
ex
)
catch
(
ModbusRTU
::
mbException
&
ex
)
{
{
...
@@ -279,11 +281,14 @@ void RTUExchange::poll()
...
@@ -279,11 +281,14 @@ void RTUExchange::poll()
{
{
for
(
RTUExchange
::
RegMap
::
iterator
it
=
d
->
regmap
.
begin
();
it
!=
d
->
regmap
.
end
();
++
it
)
for
(
RTUExchange
::
RegMap
::
iterator
it
=
d
->
regmap
.
begin
();
it
!=
d
->
regmap
.
end
();
++
it
)
{
{
d
->
resp_real
=
true
;
try
try
{
{
if
(
d
->
dtype
==
RTUExchange
::
dtRTU
||
d
->
dtype
==
RTUExchange
::
dtMTR
)
if
(
d
->
dtype
==
RTUExchange
::
dtRTU
||
d
->
dtype
==
RTUExchange
::
dtMTR
)
pollRTU
(
d
,
it
);
{
mb
->
cleanupChannel
();
if
(
pollRTU
(
d
,
it
)
)
d
->
resp_real
=
true
;
}
}
}
catch
(
ModbusRTU
::
mbException
&
ex
)
catch
(
ModbusRTU
::
mbException
&
ex
)
{
{
...
@@ -307,7 +312,7 @@ void RTUExchange::poll()
...
@@ -307,7 +312,7 @@ void RTUExchange::poll()
// printMap(rmap);
// printMap(rmap);
}
}
// -----------------------------------------------------------------------------
// -----------------------------------------------------------------------------
void
RTUExchange
::
pollRTU
(
RTUDevice
*
dev
,
RegMap
::
iterator
&
it
)
bool
RTUExchange
::
pollRTU
(
RTUDevice
*
dev
,
RegMap
::
iterator
&
it
)
{
{
RegInfo
*
p
(
it
->
second
);
RegInfo
*
p
(
it
->
second
);
...
@@ -326,7 +331,7 @@ void RTUExchange::pollRTU( RTUDevice* dev, RegMap::iterator& it )
...
@@ -326,7 +331,7 @@ void RTUExchange::pollRTU( RTUDevice* dev, RegMap::iterator& it )
if
(
dlog
.
debugging
(
Debug
::
INFO
)
)
if
(
dlog
.
debugging
(
Debug
::
INFO
)
)
dlog
[
Debug
::
INFO
]
<<
myname
<<
"(pollRTU): q_count=0 for mbreg="
<<
ModbusRTU
::
dat2str
(
p
->
mbreg
)
dlog
[
Debug
::
INFO
]
<<
myname
<<
"(pollRTU): q_count=0 for mbreg="
<<
ModbusRTU
::
dat2str
(
p
->
mbreg
)
<<
" IGNORE register..."
<<
endl
;
<<
" IGNORE register..."
<<
endl
;
return
;
return
false
;
}
}
switch
(
p
->
mbfunc
)
switch
(
p
->
mbfunc
)
...
@@ -374,10 +379,10 @@ void RTUExchange::pollRTU( RTUDevice* dev, RegMap::iterator& it )
...
@@ -374,10 +379,10 @@ void RTUExchange::pollRTU( RTUDevice* dev, RegMap::iterator& it )
{
{
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 q_count="
<<
p
->
q_count
<<
" ..."
<<
endl
;
return
false
;
}
}
else
ModbusRTU
::
WriteSingleOutputRetMessage
ret
=
mb
->
write06
(
dev
->
mbaddr
,
p
->
mbreg
,
p
->
mbval
);
ModbusRTU
::
WriteSingleOutputRetMessage
ret
=
mb
->
write06
(
dev
->
mbaddr
,
p
->
mbreg
,
p
->
mbval
);
}
}
break
;
break
;
...
@@ -396,9 +401,12 @@ void RTUExchange::pollRTU( RTUDevice* dev, RegMap::iterator& it )
...
@@ -396,9 +401,12 @@ void RTUExchange::pollRTU( RTUDevice* dev, RegMap::iterator& it )
if
(
dlog
.
debugging
(
Debug
::
INFO
)
)
if
(
dlog
.
debugging
(
Debug
::
INFO
)
)
dlog
[
Debug
::
INFO
]
<<
myname
<<
"(pollRTU): mbreg="
<<
ModbusRTU
::
dat2str
(
p
->
mbreg
)
dlog
[
Debug
::
INFO
]
<<
myname
<<
"(pollRTU): mbreg="
<<
ModbusRTU
::
dat2str
(
p
->
mbreg
)
<<
" IGNORE mfunc="
<<
(
int
)
p
->
mbfunc
<<
" ..."
<<
endl
;
<<
" IGNORE mfunc="
<<
(
int
)
p
->
mbfunc
<<
" ..."
<<
endl
;
return
false
;
}
}
break
;
break
;
}
}
return
true
;
}
}
// -----------------------------------------------------------------------------
// -----------------------------------------------------------------------------
bool
RTUExchange
::
RTUDevice
::
checkRespond
()
bool
RTUExchange
::
RTUDevice
::
checkRespond
()
...
@@ -408,7 +416,7 @@ bool RTUExchange::RTUDevice::checkRespond()
...
@@ -408,7 +416,7 @@ bool RTUExchange::RTUDevice::checkRespond()
{
{
if
(
resp_real
)
if
(
resp_real
)
resp_state
=
true
;
resp_state
=
true
;
resp_ptTimeout
.
reset
();
resp_ptTimeout
.
reset
();
}
}
...
@@ -423,7 +431,13 @@ void RTUExchange::updateSM()
...
@@ -423,7 +431,13 @@ void RTUExchange::updateSM()
for
(
RTUExchange
::
RTUDeviceMap
::
iterator
it1
=
rmap
.
begin
();
it1
!=
rmap
.
end
();
++
it1
)
for
(
RTUExchange
::
RTUDeviceMap
::
iterator
it1
=
rmap
.
begin
();
it1
!=
rmap
.
end
();
++
it1
)
{
{
RTUDevice
*
d
(
it1
->
second
);
RTUDevice
*
d
(
it1
->
second
);
/*
cout << "check respond addr=" << ModbusRTU::addr2str(d->mbaddr)
<< " respond=" << d->resp_id
<< " real=" << d->resp_real
<< " state=" << d->resp_state
<< endl;
*/
// update respond sensors......
// update respond sensors......
if
(
d
->
checkRespond
()
&&
d
->
resp_id
!=
DefaultObjectId
)
if
(
d
->
checkRespond
()
&&
d
->
resp_id
!=
DefaultObjectId
)
{
{
...
@@ -562,7 +576,8 @@ void RTUExchange::sysCommand( UniSetTypes::SystemMessage *sm )
...
@@ -562,7 +576,8 @@ void RTUExchange::sysCommand( UniSetTypes::SystemMessage *sm )
if
(
dlog
.
debugging
(
Debug
::
INFO
)
)
if
(
dlog
.
debugging
(
Debug
::
INFO
)
)
dlog
[
Debug
::
INFO
]
<<
myname
<<
"(sysCommand): rmap size= "
<<
rmap
.
size
()
<<
endl
;
dlog
[
Debug
::
INFO
]
<<
myname
<<
"(sysCommand): rmap size= "
<<
rmap
.
size
()
<<
endl
;
if
(
shm
->
isLocalwork
()
)
initRespondList
();
waitSMReady
();
waitSMReady
();
...
@@ -1373,6 +1388,27 @@ std::ostream& operator<<( std::ostream& os, const RTUExchange::RSProperty& p )
...
@@ -1373,6 +1388,27 @@ std::ostream& operator<<( std::ostream& os, const RTUExchange::RSProperty& p )
return
os
;
return
os
;
}
}
// -----------------------------------------------------------------------------
// -----------------------------------------------------------------------------
void
RTUExchange
::
initRespondList
()
{
xmlNode
*
respNode
=
conf
->
findNode
(
cnode
,
"RespondList"
);
if
(
respNode
)
{
UniXML_iterator
it1
(
respNode
);
if
(
it1
.
goChildren
()
)
{
for
(;
it1
.
getCurrent
();
it1
.
goNext
()
)
{
ModbusRTU
::
ModbusAddr
a
=
ModbusRTU
::
str2mbAddr
(
it1
.
getProp
(
"addr"
));
initRespondInfo
(
rmap
,
a
,
it1
);
}
}
else
dlog
[
Debug
::
WARN
]
<<
myname
<<
"(init): <RespondList> empty section..."
<<
endl
;
}
else
dlog
[
Debug
::
WARN
]
<<
myname
<<
"(init): NO <RespondList> found..."
<<
endl
;
}
// -----------------------------------------------------------------------------
bool
RTUExchange
::
initRespondInfo
(
RTUDeviceMap
&
m
,
ModbusRTU
::
ModbusAddr
a
,
UniXML_iterator
&
it
)
bool
RTUExchange
::
initRespondInfo
(
RTUDeviceMap
&
m
,
ModbusRTU
::
ModbusAddr
a
,
UniXML_iterator
&
it
)
{
{
RTUDeviceMap
::
iterator
d
=
m
.
find
(
a
);
RTUDeviceMap
::
iterator
d
=
m
.
find
(
a
);
...
@@ -1388,7 +1424,8 @@ bool RTUExchange::initRespondInfo( RTUDeviceMap& m, ModbusRTU::ModbusAddr a, Uni
...
@@ -1388,7 +1424,8 @@ bool RTUExchange::initRespondInfo( RTUDeviceMap& m, ModbusRTU::ModbusAddr a, Uni
dlog
[
Debug
::
CRIT
]
<<
myname
<<
": not found ID for noRespondSensor="
<<
it
.
getProp
(
"respondSensor"
)
<<
endl
;
dlog
[
Debug
::
CRIT
]
<<
myname
<<
": not found ID for noRespondSensor="
<<
it
.
getProp
(
"respondSensor"
)
<<
endl
;
return
false
;
return
false
;
}
}
dlog
[
Debug
::
INFO
]
<<
myname
<<
"(initRespondList): add addr="
<<
ModbusRTU
::
addr2str
(
a
)
<<
endl
;
int
tout
=
atoi
(
it
.
getProp
(
"timeout"
).
c_str
());
int
tout
=
atoi
(
it
.
getProp
(
"timeout"
).
c_str
());
if
(
tout
>
0
)
if
(
tout
>
0
)
d
->
second
->
resp_ptTimeout
.
setTiming
(
tout
);
d
->
second
->
resp_ptTimeout
.
setTiming
(
tout
);
...
@@ -1396,6 +1433,9 @@ bool RTUExchange::initRespondInfo( RTUDeviceMap& m, ModbusRTU::ModbusAddr a, Uni
...
@@ -1396,6 +1433,9 @@ bool RTUExchange::initRespondInfo( RTUDeviceMap& m, ModbusRTU::ModbusAddr a, Uni
d
->
second
->
resp_ptTimeout
.
setTiming
(
UniSetTimer
::
WaitUpTime
);
d
->
second
->
resp_ptTimeout
.
setTiming
(
UniSetTimer
::
WaitUpTime
);
d
->
second
->
resp_invert
=
atoi
(
it
.
getProp
(
"invert"
).
c_str
());
d
->
second
->
resp_invert
=
atoi
(
it
.
getProp
(
"invert"
).
c_str
());
d
->
second
->
resp_state
=
UniSetTypes
::
uni_atoi
(
it
.
getProp
(
"default"
).
c_str
());
d
->
second
->
resp_real
=
UniSetTypes
::
uni_atoi
(
it
.
getProp
(
"default"
).
c_str
());
d
->
second
->
resp_trTimeout
.
change
(
d
->
second
->
resp_real
);
return
true
;
return
true
;
}
}
// -----------------------------------------------------------------------------
// -----------------------------------------------------------------------------
...
...
extentions/RTUExchange/RTUExchange.h
View file @
b9dd1c9a
...
@@ -117,7 +117,7 @@ class RTUExchange:
...
@@ -117,7 +117,7 @@ class RTUExchange:
mbaddr
(
0
),
mbaddr
(
0
),
dtype
(
dtUnknown
),
dtype
(
dtUnknown
),
resp_id
(
UniSetTypes
::
DefaultObjectId
),
resp_id
(
UniSetTypes
::
DefaultObjectId
),
resp_state
(
fals
e
),
resp_state
(
tru
e
),
resp_invert
(
false
),
resp_invert
(
false
),
resp_real
(
false
),
resp_real
(
false
),
rtu
(
0
)
rtu
(
0
)
...
@@ -169,7 +169,7 @@ class RTUExchange:
...
@@ -169,7 +169,7 @@ class RTUExchange:
void
step
();
void
step
();
void
poll
();
void
poll
();
void
pollRTU
(
RTUDevice
*
dev
,
RegMap
::
iterator
&
it
);
bool
pollRTU
(
RTUDevice
*
dev
,
RegMap
::
iterator
&
it
);
void
updateSM
();
void
updateSM
();
void
updateRTU
(
RegMap
::
iterator
&
it
);
void
updateRTU
(
RegMap
::
iterator
&
it
);
...
@@ -193,6 +193,7 @@ class RTUExchange:
...
@@ -193,6 +193,7 @@ class RTUExchange:
void
initIterators
();
void
initIterators
();
bool
initItem
(
UniXML_iterator
&
it
);
bool
initItem
(
UniXML_iterator
&
it
);
bool
readItem
(
UniXML
&
xml
,
UniXML_iterator
&
it
,
xmlNode
*
sec
);
bool
readItem
(
UniXML
&
xml
,
UniXML_iterator
&
it
,
xmlNode
*
sec
);
void
initRespondList
();
RTUDevice
*
addDev
(
RTUDeviceMap
&
dmap
,
ModbusRTU
::
ModbusAddr
a
,
UniXML_iterator
&
it
);
RTUDevice
*
addDev
(
RTUDeviceMap
&
dmap
,
ModbusRTU
::
ModbusAddr
a
,
UniXML_iterator
&
it
);
...
...
extentions/RTUExchange/create_links.sh
View file @
b9dd1c9a
#!/bin/sh
#!/bin/sh
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
ln
-s
-f
./configure.xml test.xml
extentions/RTUExchange/start_fg.sh
View file @
b9dd1c9a
#!/bin/sh
#!/bin/sh
uniset-start.sh
-f
./uniset-rtuexchange
--rs-name
RTUExchange
--confile
test.xml
\
uniset-start.sh
-f
./uniset-rtuexchange
--confile
test.xml
\
--rs-filter-field
rs
--rs-filter-value
wago
\
--rs-dev
/dev/ttyUSB0
\
--rs-dev
/dev/ttyUSB0
\
--rs-name
RSExchange
\
--rs-speed
38400
\
--rs-filter-field
rs
\
--rs-filter-value
1
\
--dlog-add-levels
info,crit,warn
--dlog-add-levels
info,crit,warn
#,level3
#,level3
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