Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
P
proview
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Esteban Blanc
proview
Commits
4fc9d620
Commit
4fc9d620
authored
Mar 08, 2007
by
claes
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
*** empty log message ***
parent
bf2579a6
Changes
8
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
1297 additions
and
216 deletions
+1297
-216
opc/exe/opc_provider/src/opc_provider.cpp
opc/exe/opc_provider/src/opc_provider.cpp
+83
-35
opc/exe/opc_provider/src/opc_provider.h
opc/exe/opc_provider/src/opc_provider.h
+8
-2
opc/exe/opc_server/src/opc_server.cpp
opc/exe/opc_server/src/opc_server.cpp
+462
-103
opc/lib/opc/src/opc_soap_C.cpp
opc/lib/opc/src/opc_soap_C.cpp
+10
-3
opc/lib/opc/src/opc_soap_Stub.h
opc/lib/opc/src/opc_soap_Stub.h
+2
-0
opc/lib/opc/src/opc_utl.cpp
opc/lib/opc/src/opc_utl.cpp
+119
-33
opc/lib/opc/src/opc_utl.h
opc/lib/opc/src/opc_utl.h
+24
-13
opc/wbl/mcomp/src/opc.wb_load
opc/wbl/mcomp/src/opc.wb_load
+589
-27
No files found.
opc/exe/opc_provider/src/opc_provider.cpp
View file @
4fc9d620
/*
/*
* Proview $Id: opc_provider.cpp,v 1.
2 2007-03-02 08:52:20
claes Exp $
* Proview $Id: opc_provider.cpp,v 1.
3 2007-03-08 07:26:29
claes Exp $
* Copyright (C) 2005 SSAB Oxelsund AB.
* Copyright (C) 2005 SSAB Oxelsund AB.
*
*
* This program is free software; you can redistribute it and/or
* This program is free software; you can redistribute it and/or
...
@@ -34,6 +34,7 @@
...
@@ -34,6 +34,7 @@
#include "co_cdh.h"
#include "co_cdh.h"
#include "co_dcli.h"
#include "co_dcli.h"
#include "pwr_opcclasses.h"
#include "pwr_opcclasses.h"
#include "opc_utl.h"
#include "opc_soap_H.h"
#include "opc_soap_H.h"
#include "Service.nsmap"
#include "Service.nsmap"
...
@@ -57,107 +58,112 @@ void opc_provider::insert_object( pwr_tOix fth, pwr_tOix bws, ns1__BrowseElement
...
@@ -57,107 +58,112 @@ void opc_provider::insert_object( pwr_tOix fth, pwr_tOix bws, ns1__BrowseElement
int
first
,
int
last
,
int
load_children
)
int
first
,
int
last
,
int
load_children
)
{
{
procom_obj
o
;
procom_obj
o
;
char
*
valp
;
strcpy
(
o
.
name
,
element
->
Name
->
c_str
());
strcpy
(
o
.
name
,
element
->
Name
->
c_str
());
o
.
oix
=
next_oix
++
;
o
.
oix
=
next_oix
++
;
o
.
fthoix
=
fth
;
o
.
fthoix
=
fth
;
if
(
!
element
->
IsItem
)
{
if
(
!
element
->
IsItem
)
{
o
.
cid
=
pwr_cClass_Opc_Hier
;
o
.
cid
=
pwr_cClass_Opc_Hier
;
o
.
body_size
=
sizeof
(
pwr_sClass_Opc_Hier
);
o
.
body
=
calloc
(
1
,
o
.
body_size
);
if
(
opc_get_property
(
element
->
Properties
,
opc_mProperty_Description
,
&
valp
))
strncpy
(
((
pwr_sClass_Opc_Hier
*
)
o
.
body
)
->
Description
,
valp
,
sizeof
(((
pwr_sClass_Opc_Hier
*
)
o
.
body
)
->
Description
));
}
}
else
{
else
{
if
(
element
->
Properties
.
size
()
&&
if
(
opc_get_property
(
element
->
Properties
,
opc_mProperty_DataType
,
&
valp
))
{
element
->
Properties
[
0
]
->
Name
==
"dataType"
)
{
if
(
strcmp
(
valp
,
"string"
)
==
0
)
{
if
(
strcmp
(
element
->
Properties
[
0
]
->
Value
,
"string"
)
==
0
)
{
o
.
cid
=
pwr_cClass_Opc_String
;
o
.
cid
=
pwr_cClass_Opc_String
;
o
.
body_size
=
sizeof
(
pwr_sClass_Opc_String
);
o
.
body_size
=
sizeof
(
pwr_sClass_Opc_String
);
o
.
body
=
calloc
(
1
,
o
.
body_size
);
o
.
body
=
calloc
(
1
,
o
.
body_size
);
}
}
else
if
(
strcmp
(
element
->
Properties
[
0
]
->
Value
,
"boolean"
)
==
0
)
{
else
if
(
strcmp
(
valp
,
"boolean"
)
==
0
)
{
o
.
cid
=
pwr_cClass_Opc_Boolean
;
o
.
cid
=
pwr_cClass_Opc_Boolean
;
o
.
body_size
=
sizeof
(
pwr_sClass_Opc_Boolean
);
o
.
body_size
=
sizeof
(
pwr_sClass_Opc_Boolean
);
o
.
body
=
calloc
(
1
,
o
.
body_size
);
o
.
body
=
calloc
(
1
,
o
.
body_size
);
}
}
else
if
(
strcmp
(
element
->
Properties
[
0
]
->
Value
,
"float"
)
==
0
)
{
else
if
(
strcmp
(
valp
,
"float"
)
==
0
)
{
o
.
cid
=
pwr_cClass_Opc_Float
;
o
.
cid
=
pwr_cClass_Opc_Float
;
o
.
body_size
=
sizeof
(
pwr_sClass_Opc_Float
);
o
.
body_size
=
sizeof
(
pwr_sClass_Opc_Float
);
o
.
body
=
calloc
(
1
,
o
.
body_size
);
o
.
body
=
calloc
(
1
,
o
.
body_size
);
}
}
else
if
(
strcmp
(
element
->
Properties
[
0
]
->
Value
,
"double"
)
==
0
)
{
else
if
(
strcmp
(
valp
,
"double"
)
==
0
)
{
o
.
cid
=
pwr_cClass_Opc_Double
;
o
.
cid
=
pwr_cClass_Opc_Double
;
o
.
body_size
=
sizeof
(
pwr_sClass_Opc_Double
);
o
.
body_size
=
sizeof
(
pwr_sClass_Opc_Double
);
o
.
body
=
calloc
(
1
,
o
.
body_size
);
o
.
body
=
calloc
(
1
,
o
.
body_size
);
}
}
else
if
(
strcmp
(
element
->
Properties
[
0
]
->
Value
,
"double"
)
==
0
)
{
else
if
(
strcmp
(
valp
,
"double"
)
==
0
)
{
o
.
cid
=
pwr_cClass_Opc_Double
;
o
.
cid
=
pwr_cClass_Opc_Double
;
o
.
body_size
=
sizeof
(
pwr_sClass_Opc_Double
);
o
.
body_size
=
sizeof
(
pwr_sClass_Opc_Double
);
o
.
body
=
calloc
(
1
,
o
.
body_size
);
o
.
body
=
calloc
(
1
,
o
.
body_size
);
}
}
else
if
(
strcmp
(
element
->
Properties
[
0
]
->
Value
,
"decimal"
)
==
0
)
{
else
if
(
strcmp
(
valp
,
"decimal"
)
==
0
)
{
o
.
cid
=
pwr_cClass_Opc_Decimal
;
o
.
cid
=
pwr_cClass_Opc_Decimal
;
o
.
body_size
=
sizeof
(
pwr_sClass_Opc_Decimal
);
o
.
body_size
=
sizeof
(
pwr_sClass_Opc_Decimal
);
o
.
body
=
calloc
(
1
,
o
.
body_size
);
o
.
body
=
calloc
(
1
,
o
.
body_size
);
}
}
else
if
(
strcmp
(
element
->
Properties
[
0
]
->
Value
,
"int"
)
==
0
)
{
else
if
(
strcmp
(
valp
,
"int"
)
==
0
)
{
o
.
cid
=
pwr_cClass_Opc_Int
;
o
.
cid
=
pwr_cClass_Opc_Int
;
o
.
body_size
=
sizeof
(
pwr_sClass_Opc_Int
);
o
.
body_size
=
sizeof
(
pwr_sClass_Opc_Int
);
o
.
body
=
calloc
(
1
,
o
.
body_size
);
o
.
body
=
calloc
(
1
,
o
.
body_size
);
}
}
else
if
(
strcmp
(
element
->
Properties
[
0
]
->
Value
,
"short"
)
==
0
)
{
else
if
(
strcmp
(
valp
,
"short"
)
==
0
)
{
o
.
cid
=
pwr_cClass_Opc_Short
;
o
.
cid
=
pwr_cClass_Opc_Short
;
o
.
body_size
=
sizeof
(
pwr_sClass_Opc_Short
);
o
.
body_size
=
sizeof
(
pwr_sClass_Opc_Short
);
o
.
body
=
calloc
(
1
,
o
.
body_size
);
o
.
body
=
calloc
(
1
,
o
.
body_size
);
}
}
else
if
(
strcmp
(
element
->
Properties
[
0
]
->
Value
,
"byte"
)
==
0
)
{
else
if
(
strcmp
(
valp
,
"byte"
)
==
0
)
{
o
.
cid
=
pwr_cClass_Opc_Byte
;
o
.
cid
=
pwr_cClass_Opc_Byte
;
o
.
body_size
=
sizeof
(
pwr_sClass_Opc_Byte
);
o
.
body_size
=
sizeof
(
pwr_sClass_Opc_Byte
);
o
.
body
=
calloc
(
1
,
o
.
body_size
);
o
.
body
=
calloc
(
1
,
o
.
body_size
);
}
}
else
if
(
strcmp
(
element
->
Properties
[
0
]
->
Value
,
"unsignedLong"
)
==
0
)
{
else
if
(
strcmp
(
valp
,
"unsignedLong"
)
==
0
)
{
o
.
cid
=
pwr_cClass_Opc_UnsignedLong
;
o
.
cid
=
pwr_cClass_Opc_UnsignedLong
;
o
.
body_size
=
sizeof
(
pwr_sClass_Opc_UnsignedLong
);
o
.
body_size
=
sizeof
(
pwr_sClass_Opc_UnsignedLong
);
o
.
body
=
calloc
(
1
,
o
.
body_size
);
o
.
body
=
calloc
(
1
,
o
.
body_size
);
}
}
else
if
(
strcmp
(
element
->
Properties
[
0
]
->
Value
,
"unsignedInt"
)
==
0
)
{
else
if
(
strcmp
(
valp
,
"unsignedInt"
)
==
0
)
{
o
.
cid
=
pwr_cClass_Opc_UnsignedInt
;
o
.
cid
=
pwr_cClass_Opc_UnsignedInt
;
o
.
body_size
=
sizeof
(
pwr_sClass_Opc_UnsignedInt
);
o
.
body_size
=
sizeof
(
pwr_sClass_Opc_UnsignedInt
);
o
.
body
=
calloc
(
1
,
o
.
body_size
);
o
.
body
=
calloc
(
1
,
o
.
body_size
);
}
}
else
if
(
strcmp
(
element
->
Properties
[
0
]
->
Value
,
"unsignedShort"
)
==
0
)
{
else
if
(
strcmp
(
valp
,
"unsignedShort"
)
==
0
)
{
o
.
cid
=
pwr_cClass_Opc_UnsignedShort
;
o
.
cid
=
pwr_cClass_Opc_UnsignedShort
;
o
.
body_size
=
sizeof
(
pwr_sClass_Opc_UnsignedShort
);
o
.
body_size
=
sizeof
(
pwr_sClass_Opc_UnsignedShort
);
o
.
body
=
calloc
(
1
,
o
.
body_size
);
o
.
body
=
calloc
(
1
,
o
.
body_size
);
}
}
else
if
(
strcmp
(
element
->
Properties
[
0
]
->
Value
,
"unsignedByte"
)
==
0
)
{
else
if
(
strcmp
(
valp
,
"unsignedByte"
)
==
0
)
{
o
.
cid
=
pwr_cClass_Opc_UnsignedByte
;
o
.
cid
=
pwr_cClass_Opc_UnsignedByte
;
o
.
body_size
=
sizeof
(
pwr_sClass_Opc_UnsignedByte
);
o
.
body_size
=
sizeof
(
pwr_sClass_Opc_UnsignedByte
);
o
.
body
=
calloc
(
1
,
o
.
body_size
);
o
.
body
=
calloc
(
1
,
o
.
body_size
);
}
}
else
if
(
strcmp
(
element
->
Properties
[
0
]
->
Value
,
"base64Binary"
)
==
0
)
{
else
if
(
strcmp
(
valp
,
"base64Binary"
)
==
0
)
{
o
.
cid
=
pwr_cClass_Opc_Base64Binary
;
o
.
cid
=
pwr_cClass_Opc_Base64Binary
;
o
.
body_size
=
sizeof
(
pwr_sClass_Opc_Base64Binary
);
o
.
body_size
=
sizeof
(
pwr_sClass_Opc_Base64Binary
);
o
.
body
=
calloc
(
1
,
o
.
body_size
);
o
.
body
=
calloc
(
1
,
o
.
body_size
);
}
}
else
if
(
strcmp
(
element
->
Properties
[
0
]
->
Value
,
"dateTime"
)
==
0
)
{
else
if
(
strcmp
(
valp
,
"dateTime"
)
==
0
)
{
o
.
cid
=
pwr_cClass_Opc_DateTime
;
o
.
cid
=
pwr_cClass_Opc_DateTime
;
o
.
body_size
=
sizeof
(
pwr_sClass_Opc_DateTime
);
o
.
body_size
=
sizeof
(
pwr_sClass_Opc_DateTime
);
o
.
body
=
calloc
(
1
,
o
.
body_size
);
o
.
body
=
calloc
(
1
,
o
.
body_size
);
}
}
else
if
(
strcmp
(
element
->
Properties
[
0
]
->
Value
,
"time"
)
==
0
)
{
else
if
(
strcmp
(
valp
,
"time"
)
==
0
)
{
o
.
cid
=
pwr_cClass_Opc_Time
;
o
.
cid
=
pwr_cClass_Opc_Time
;
o
.
body_size
=
sizeof
(
pwr_sClass_Opc_Time
);
o
.
body_size
=
sizeof
(
pwr_sClass_Opc_Time
);
o
.
body
=
calloc
(
1
,
o
.
body_size
);
o
.
body
=
calloc
(
1
,
o
.
body_size
);
}
}
else
if
(
strcmp
(
element
->
Properties
[
0
]
->
Value
,
"date"
)
==
0
)
{
else
if
(
strcmp
(
valp
,
"date"
)
==
0
)
{
o
.
cid
=
pwr_cClass_Opc_Date
;
o
.
cid
=
pwr_cClass_Opc_Date
;
o
.
body_size
=
sizeof
(
pwr_sClass_Opc_Date
);
o
.
body_size
=
sizeof
(
pwr_sClass_Opc_Date
);
o
.
body
=
calloc
(
1
,
o
.
body_size
);
o
.
body
=
calloc
(
1
,
o
.
body_size
);
}
}
else
if
(
strcmp
(
element
->
Properties
[
0
]
->
Value
,
"duration"
)
==
0
)
{
else
if
(
strcmp
(
valp
,
"duration"
)
==
0
)
{
o
.
cid
=
pwr_cClass_Opc_Duration
;
o
.
cid
=
pwr_cClass_Opc_Duration
;
o
.
body_size
=
sizeof
(
pwr_sClass_Opc_Duration
);
o
.
body_size
=
sizeof
(
pwr_sClass_Opc_Duration
);
o
.
body
=
calloc
(
1
,
o
.
body_size
);
o
.
body
=
calloc
(
1
,
o
.
body_size
);
}
}
else
if
(
strcmp
(
element
->
Properties
[
0
]
->
Value
,
"QName"
)
==
0
)
{
else
if
(
strcmp
(
valp
,
"QName"
)
==
0
)
{
o
.
cid
=
pwr_cClass_Opc_QName
;
o
.
cid
=
pwr_cClass_Opc_QName
;
o
.
body_size
=
sizeof
(
pwr_sClass_Opc_QName
);
o
.
body_size
=
sizeof
(
pwr_sClass_Opc_QName
);
o
.
body
=
calloc
(
1
,
o
.
body_size
);
o
.
body
=
calloc
(
1
,
o
.
body_size
);
...
@@ -165,6 +171,11 @@ void opc_provider::insert_object( pwr_tOix fth, pwr_tOix bws, ns1__BrowseElement
...
@@ -165,6 +171,11 @@ void opc_provider::insert_object( pwr_tOix fth, pwr_tOix bws, ns1__BrowseElement
}
}
else
{
else
{
o
.
cid
=
pwr_cClass_Opc_Hier
;
o
.
cid
=
pwr_cClass_Opc_Hier
;
o
.
body_size
=
sizeof
(
pwr_sClass_Opc_Hier
);
o
.
body
=
calloc
(
1
,
o
.
body_size
);
if
(
opc_get_property
(
element
->
Properties
,
opc_mProperty_Description
,
&
valp
))
strncpy
(
((
pwr_sClass_Opc_Hier
*
)
o
.
body
)
->
Description
,
valp
,
sizeof
(((
pwr_sClass_Opc_Hier
*
)
o
.
body
)
->
Description
));
}
}
}
}
if
(
first
)
if
(
first
)
...
@@ -195,11 +206,9 @@ void opc_provider::insert_object( pwr_tOix fth, pwr_tOix bws, ns1__BrowseElement
...
@@ -195,11 +206,9 @@ void opc_provider::insert_object( pwr_tOix fth, pwr_tOix bws, ns1__BrowseElement
_ns1__Browse
browse
;
_ns1__Browse
browse
;
_ns1__BrowseResponse
browse_response
;
_ns1__BrowseResponse
browse_response
;
if
(
fth
!=
0
)
browse
.
ItemName
=
new
std
::
string
(
longname
(
o
.
oix
));
browse
.
ItemPath
=
new
std
::
string
(
longname
(
fth
));
opc_mask_to_propertynames
(
browse
.
PropertyNames
,
browse
.
ItemName
=
new
std
::
string
(
o
.
name
);
opc_mProperty_DataType
|
opc_mProperty_Description
);
std
::
string
s
(
"dataType"
);
browse
.
PropertyNames
.
push_back
(
s
);
if
(
soap_call___ns1__Browse
(
&
soap
,
opc_endpoint
,
NULL
,
&
browse
,
&
browse_response
)
==
if
(
soap_call___ns1__Browse
(
&
soap
,
opc_endpoint
,
NULL
,
&
browse
,
&
browse_response
)
==
SOAP_OK
)
{
SOAP_OK
)
{
...
@@ -229,20 +238,36 @@ void opc_provider::objectOid( co_procom *pcom, pwr_tOix oix)
...
@@ -229,20 +238,36 @@ void opc_provider::objectOid( co_procom *pcom, pwr_tOix oix)
vo
.
flags
|=
procom_obj_mFlags_Loaded
;
vo
.
flags
|=
procom_obj_mFlags_Loaded
;
m_list
.
push_back
(
vo
);
m_list
.
push_back
(
vo
);
// Insert ServerState object
procom_obj
so
;
so
.
cid
=
pwr_cClass_Opc_ServerState
;
strcpy
(
so
.
name
,
"OpcServerState"
);
so
.
body_size
=
sizeof
(
pwr_sClass_Opc_ServerState
);
so
.
body
=
calloc
(
1
,
so
.
body_size
);
memcpy
(
so
.
body
,
&
server_state
,
so
.
body_size
);
so
.
oix
=
next_oix
++
;
so
.
fthoix
=
0
;
so
.
bwsoix
=
so
.
oix
;
so
.
fwsoix
=
so
.
oix
;
m_list
[
0
].
fchoix
=
so
.
oix
;
m_list
[
0
].
lchoix
=
so
.
oix
;
so
.
flags
|=
procom_obj_mFlags_Loaded
;
m_list
.
push_back
(
so
);
// Load Rootlist
// Load Rootlist
_ns1__Browse
browse
;
_ns1__Browse
browse
;
_ns1__BrowseResponse
browse_response
;
_ns1__BrowseResponse
browse_response
;
std
::
string
s
(
"dataType"
);
opc_mask_to_propertynames
(
browse
.
PropertyNames
,
browse
.
PropertyNames
.
push_back
(
s
);
opc_mProperty_DataType
|
opc_mProperty_Description
);
if
(
soap_call___ns1__Browse
(
&
soap
,
opc_endpoint
,
NULL
,
&
browse
,
&
browse_response
)
==
if
(
soap_call___ns1__Browse
(
&
soap
,
opc_endpoint
,
NULL
,
&
browse
,
&
browse_response
)
==
SOAP_OK
)
{
SOAP_OK
)
{
pwr_tOix
bws
=
0
;
pwr_tOix
bws
=
so
.
oix
;
pwr_tOix
next_bws
;
pwr_tOix
next_bws
;
for
(
int
i
=
0
;
i
<
(
int
)
browse_response
.
Elements
.
size
();
i
++
)
{
for
(
int
i
=
0
;
i
<
(
int
)
browse_response
.
Elements
.
size
();
i
++
)
{
next_bws
=
next_oix
;
next_bws
=
next_oix
;
insert_object
(
oix
,
bws
,
browse_response
.
Elements
[
i
],
insert_object
(
oix
,
bws
,
browse_response
.
Elements
[
i
],
i
==
0
,
i
==
(
int
)
browse_response
.
Elements
.
size
()
-
1
,
1
);
0
,
i
==
(
int
)
browse_response
.
Elements
.
size
()
-
1
,
1
);
bws
=
next_bws
;
bws
=
next_bws
;
}
}
}
}
...
@@ -254,10 +279,9 @@ void opc_provider::objectOid( co_procom *pcom, pwr_tOix oix)
...
@@ -254,10 +279,9 @@ void opc_provider::objectOid( co_procom *pcom, pwr_tOix oix)
_ns1__Browse
browse
;
_ns1__Browse
browse
;
_ns1__BrowseResponse
browse_response
;
_ns1__BrowseResponse
browse_response
;
browse
.
ItemPath
=
new
std
::
string
(
longname
(
m_list
[
oix
].
fthoix
));
browse
.
ItemName
=
new
std
::
string
(
longname
(
oix
));
browse
.
ItemName
=
new
std
::
string
(
m_list
[
oix
].
name
);
opc_mask_to_propertynames
(
browse
.
PropertyNames
,
std
::
string
s
(
"dataType"
);
opc_mProperty_DataType
|
opc_mProperty_Description
);
browse
.
PropertyNames
.
push_back
(
s
);
if
(
soap_call___ns1__Browse
(
&
soap
,
opc_endpoint
,
NULL
,
&
browse
,
&
browse_response
)
==
if
(
soap_call___ns1__Browse
(
&
soap
,
opc_endpoint
,
NULL
,
&
browse
,
&
browse_response
)
==
SOAP_OK
)
{
SOAP_OK
)
{
...
@@ -458,6 +482,27 @@ bool opc_provider::find( pwr_tOix fthoix, char *name, pwr_tOix *oix)
...
@@ -458,6 +482,27 @@ bool opc_provider::find( pwr_tOix fthoix, char *name, pwr_tOix *oix)
return
false
;
return
false
;
}
}
void
opc_provider
::
get_server_state
()
{
_ns1__GetStatus
get_status
;
_ns1__GetStatusResponse
get_status_response
;
get_status
.
ClientRequestHandle
=
new
std
::
string
(
"Opc Client"
);
if
(
soap_call___ns1__GetStatus
(
&
soap
,
opc_endpoint
,
NULL
,
&
get_status
,
&
get_status_response
)
==
SOAP_OK
)
{
if
(
get_status_response
.
Status
->
VendorInfo
)
strcpy
(
server_state
.
VendorInfo
,
get_status_response
.
Status
->
VendorInfo
->
c_str
());
if
(
get_status_response
.
Status
->
ProductVersion
)
strcpy
(
server_state
.
ProductVersion
,
get_status_response
.
Status
->
ProductVersion
->
c_str
());
server_state
.
StartTime
.
tv_sec
=
get_status_response
.
Status
->
StartTime
;
server_state
.
ServerState
=
get_status_response
.
GetStatusResult
->
ServerState
;
}
else
{
server_state
.
ServerState
=
ns1__serverState__commFault
;
soap_print_fault
(
&
soap
,
stderr
);
}
}
void
usage
()
void
usage
()
{
{
...
@@ -515,10 +560,13 @@ int main(int argc, char *argv[])
...
@@ -515,10 +560,13 @@ int main(int argc, char *argv[])
0
);
// Global
0
);
// Global
procom
.
init
();
procom
.
init
();
strcpy
(
provider
.
server_state
.
Server
,
server_url
);
// provider.nodeUp();
// provider.nodeUp();
soap_init
(
&
provider
.
soap
);
soap_init
(
&
provider
.
soap
);
provider
.
get_server_state
();
procom
.
mainLoop
();
procom
.
mainLoop
();
}
}
opc/exe/opc_provider/src/opc_provider.h
View file @
4fc9d620
/*
/*
* Proview $Id: opc_provider.h,v 1.
2 2007-03-02 08:52:20
claes Exp $
* Proview $Id: opc_provider.h,v 1.
3 2007-03-08 07:26:29
claes Exp $
* Copyright (C) 2005 SSAB Oxelsund AB.
* Copyright (C) 2005 SSAB Oxelsund AB.
*
*
* This program is free software; you can redistribute it and/or
* This program is free software; you can redistribute it and/or
...
@@ -22,12 +22,15 @@
...
@@ -22,12 +22,15 @@
#include "co_provider.h"
#include "co_provider.h"
#include "co_procom.h"
#include "co_procom.h"
#include "pwr_opcclasses.h"
#include "opc_soap_H.h"
#include "opc_soap_H.h"
class
opc_provider
:
public
co_provider
{
class
opc_provider
:
public
co_provider
{
public:
public:
opc_provider
(
pvd_eEnv
env
=
pvd_eEnv_Wb
)
:
co_provider
(
env
),
root
(
0
),
next_oix
(
1
)
{}
opc_provider
(
pvd_eEnv
env
=
pvd_eEnv_Wb
)
:
co_provider
(
env
),
root
(
0
),
next_oix
(
1
)
{
memset
(
&
server_state
,
0
,
sizeof
(
server_state
));
}
virtual
void
object
(
co_procom
*
pcom
);
virtual
void
object
(
co_procom
*
pcom
);
virtual
void
objectOid
(
co_procom
*
pcom
,
pwr_tOix
oix
);
virtual
void
objectOid
(
co_procom
*
pcom
,
pwr_tOix
oix
);
virtual
void
objectName
(
co_procom
*
pcom
,
char
*
name
);
virtual
void
objectName
(
co_procom
*
pcom
,
char
*
name
);
...
@@ -61,10 +64,13 @@ public:
...
@@ -61,10 +64,13 @@ public:
void
insert_object
(
pwr_tOix
fth
,
pwr_tOix
bws
,
ns1__BrowseElement
*
element
,
void
insert_object
(
pwr_tOix
fth
,
pwr_tOix
bws
,
ns1__BrowseElement
*
element
,
int
first
,
int
last
,
int
load_children
);
int
first
,
int
last
,
int
load_children
);
void
get_server_state
();
vector
<
procom_obj
>
m_list
;
vector
<
procom_obj
>
m_list
;
pwr_tOix
root
;
pwr_tOix
root
;
pwr_tOix
next_oix
;
pwr_tOix
next_oix
;
struct
soap
soap
;
struct
soap
soap
;
pwr_sClass_Opc_ServerState
server_state
;
};
};
#endif
#endif
opc/exe/opc_server/src/opc_server.cpp
View file @
4fc9d620
/*
/*
* Proview $Id: opc_server.cpp,v 1.
2 2007-03-02 08:52:20
claes Exp $
* Proview $Id: opc_server.cpp,v 1.
3 2007-03-08 07:26:29
claes Exp $
* Copyright (C) 2005 SSAB Oxelsund AB.
* Copyright (C) 2005 SSAB Oxelsund AB.
*
*
* This program is free software; you can redistribute it and/or
* This program is free software; you can redistribute it and/or
...
@@ -17,58 +17,29 @@
...
@@ -17,58 +17,29 @@
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
*/
#include <net/if.h>
#include <net/if_arp.h>
#include "pwr.h"
#include "pwr.h"
#include "pwr_version.h"
#include "pwr_version.h"
#include "pwr_baseclasses.h"
#include "pwr_opcclasses.h"
#include "co_cdh.h"
#include "co_cdh.h"
#include "rt_gdh.h"
#include "rt_gdh.h"
#include "opc_utl.h"
#include "opc_utl.h"
#include "opc_soap_H.h"
#include "opc_soap_H.h"
#include "Service.nsmap"
#include "Service.nsmap"
static
bool
opc_type_to_string
(
int
type
,
char
**
str
)
typedef
struct
{
{
int
address
;
*
str
=
(
char
*
)
malloc
(
20
);
int
access
;
switch
(
type
)
{
}
opc_sClientAccess
;
case
pwr_eType_String
:
strcpy
(
*
str
,
"string"
);
static
pwr_tTime
opc_start_time
;
break
;
static
pwr_sClass_Opc_ServerConfig
*
opc_config
;
case
pwr_eType_Float32
:
static
opc_sClientAccess
opc_client_access
[
20
];
strcpy
(
*
str
,
"float"
);
static
int
opc_client_access_cnt
=
0
;
break
;
static
int
opc_current_access
;
case
pwr_eType_Float64
:
strcpy
(
*
str
,
"double"
);
break
;
case
pwr_eType_Int32
:
strcpy
(
*
str
,
"int"
);
break
;
case
pwr_eType_Int16
:
strcpy
(
*
str
,
"short"
);
break
;
case
pwr_eType_Int8
:
strcpy
(
*
str
,
"char"
);
break
;
case
pwr_eType_UInt32
:
strcpy
(
*
str
,
"unsignedInt"
);
break
;
case
pwr_eType_UInt16
:
strcpy
(
*
str
,
"unsignedShort"
);
break
;
case
pwr_eType_UInt8
:
strcpy
(
*
str
,
"unsignedChar"
);
break
;
case
pwr_eType_Time
:
strcpy
(
*
str
,
"dateTime"
);
break
;
case
pwr_eType_DeltaTime
:
strcpy
(
*
str
,
"duration"
);
break
;
default:
free
(
*
str
);
*
str
=
0
;
return
false
;
}
return
true
;
}
int
main
()
int
main
()
...
@@ -80,7 +51,46 @@ int main()
...
@@ -80,7 +51,46 @@ int main()
sts
=
gdh_Init
(
"opc_server"
);
sts
=
gdh_Init
(
"opc_server"
);
if
(
EVEN
(
sts
))
{
if
(
EVEN
(
sts
))
{
exit
(
sts
);
exit
(
sts
);
}
}
#if 0
pwr_tOid config_oid;
// Get OpcServerConfig object
sts = gdh_GetClassList( pwr_cClass_Opc_ServerConfig, &config_oid);
if ( EVEN(sts)) {
// Not configured
exit(0);
}
sts = gdh_ObjidToPointer( config_oid, &opc_config);
if ( EVEN(sts)) {
exit(0);
}
#endif
// Test
pwr_sClass_Opc_ServerConfig
sc
;
memset
(
&
sc
,
0
,
sizeof
(
sc
));
strcpy
(
sc
.
ClientAccess
[
0
].
Address
,
"192.168.62.186"
);
sc
.
ClientAccess
[
0
].
Access
=
pwr_eOpc_AccessEnum_ReadWrite
;
opc_config
=
&
sc
;
// End Test
for
(
int
i
=
0
;
i
<
(
int
)(
sizeof
(
opc_config
->
ClientAccess
)
/
sizeof
(
opc_config
->
ClientAccess
[
0
]));
i
++
)
{
if
(
strcmp
(
opc_config
->
ClientAccess
[
i
].
Address
,
""
)
!=
0
)
{
opc_client_access
[
opc_client_access_cnt
].
address
=
inet_network
(
opc_config
->
ClientAccess
[
i
].
Address
);
if
(
opc_client_access
[
opc_client_access_cnt
].
address
!=
-
1
)
{
opc_client_access
[
opc_client_access_cnt
].
access
=
opc_config
->
ClientAccess
[
i
].
Access
;
opc_client_access_cnt
++
;
}
}
}
clock_gettime
(
CLOCK_REALTIME
,
&
opc_start_time
);
soap_init
(
&
soap
);
soap_init
(
&
soap
);
m
=
soap_bind
(
&
soap
,
NULL
,
18083
,
100
);
m
=
soap_bind
(
&
soap
,
NULL
,
18083
,
100
);
...
@@ -130,6 +140,10 @@ SOAP_FMAC5 int SOAP_FMAC6 __ns1__GetStatus(struct soap*,
...
@@ -130,6 +140,10 @@ SOAP_FMAC5 int SOAP_FMAC6 __ns1__GetStatus(struct soap*,
ns1__GetStatusResponse
->
Status
=
new
ns1__ServerStatus
();
ns1__GetStatusResponse
->
Status
=
new
ns1__ServerStatus
();
ns1__GetStatusResponse
->
Status
->
VendorInfo
=
new
std
::
string
(
"Proview "
pwrv_cPwrVersionStr
);
ns1__GetStatusResponse
->
Status
->
VendorInfo
=
new
std
::
string
(
"Proview "
pwrv_cPwrVersionStr
);
ns1__GetStatusResponse
->
Status
->
SupportedInterfaceVersions
.
push_back
(
ns1__interfaceVersion__XML_USCOREDA_USCOREVersion_USCORE1_USCORE0
);
ns1__GetStatusResponse
->
Status
->
StartTime
=
opc_start_time
.
tv_sec
;
ns1__GetStatusResponse
->
Status
->
ProductVersion
=
new
std
::
string
(
pwrv_cPwrVersionStr
);
return
0
;
return
0
;
}
}
...
@@ -168,13 +182,342 @@ SOAP_FMAC5 int SOAP_FMAC6 __ns1__SubscriptionCancel(struct soap*,
...
@@ -168,13 +182,342 @@ SOAP_FMAC5 int SOAP_FMAC6 __ns1__SubscriptionCancel(struct soap*,
return
0
;
return
0
;
}
}
SOAP_FMAC5
int
SOAP_FMAC6
__ns1__Browse
(
struct
soap
*
,
_ns1__Browse
*
ns1__Browse
,
bool
opcsrv_get_properties
(
bool
is_item
,
pwr_tCid
pcid
,
pwr_tAttrRef
*
parp
,
pwr_tAttrRef
*
arp
,
unsigned
int
propmask
,
gdh_sAttrDef
*
bd
,
std
::
vector
<
ns1__ItemProperty
*>&
properties
)
{
pwr_tStatus
sts
;
if
(
!
is_item
)
{
if
(
propmask
&
opc_mProperty_Description
)
{
pwr_tAttrRef
aaref
;
pwr_tString80
desc
;
sts
=
gdh_ArefANameToAref
(
arp
,
"Description"
,
&
aaref
);
if
(
ODD
(
sts
))
{
sts
=
gdh_GetObjectInfoAttrref
(
&
aaref
,
desc
,
sizeof
(
desc
));
if
(
ODD
(
sts
))
{
ns1__ItemProperty
*
ip
=
new
ns1__ItemProperty
();
ip
->
Name
=
std
::
string
(
"description"
);
ip
->
Value
=
(
char
*
)
malloc
(
sizeof
(
pwr_tString80
));
strncpy
(
ip
->
Value
,
desc
,
sizeof
(
pwr_tString80
));
strcpy
(
ip
->
ValueType
,
"xsd:string"
);
properties
.
push_back
(
ip
);
}
}
if
(
EVEN
(
sts
))
{
ns1__ItemProperty
*
ip
=
new
ns1__ItemProperty
();
ip
->
Name
=
std
::
string
(
"description"
);
ip
->
Value
=
(
char
*
)
calloc
(
1
,
1
);
strcpy
(
ip
->
ValueType
,
"xsd:string"
);
properties
.
push_back
(
ip
);
}
}
}
else
{
// IsItem
// Description
if
(
propmask
&
opc_mProperty_Description
)
{
ns1__ItemProperty
*
ip
=
new
ns1__ItemProperty
();
ip
->
Name
=
std
::
string
(
"description"
);
ip
->
Value
=
(
char
*
)
calloc
(
1
,
1
);
strcpy
(
ip
->
ValueType
,
"xsd:string"
);
properties
.
push_back
(
ip
);
}
// DataType
if
(
propmask
&
opc_mProperty_DataType
)
{
char
*
type_p
;
ns1__ItemProperty
*
ip
=
new
ns1__ItemProperty
();
if
(
opc_pwrtype_to_string
(
bd
->
attr
->
Param
.
Info
.
Type
,
&
type_p
))
{
ip
->
Name
=
std
::
string
(
"dataType"
);
ip
->
Value
=
type_p
;
strcpy
(
ip
->
ValueType
,
"xsd:QName"
);
properties
.
push_back
(
ip
);
}
else
{
// Untranslatable type TODO
}
}
// Quality
if
(
propmask
&
opc_mProperty_Quality
)
{
char
*
qual_p
;
ns1__ItemProperty
*
ip
=
new
ns1__ItemProperty
();
if
(
opc_quality_to_string
(
ns1__qualityBits__good
,
&
qual_p
))
{
ip
->
Name
=
std
::
string
(
"quality"
);
ip
->
Value
=
qual_p
;
strcpy
(
ip
->
ValueType
,
"xsd:string"
);
properties
.
push_back
(
ip
);
}
}
// Timestamp
if
(
propmask
&
opc_mProperty_Timestamp
)
{
// TODO ...
}
// Access Rights
if
(
propmask
&
opc_mProperty_AccessRights
)
{
ns1__ItemProperty
*
ip
=
new
ns1__ItemProperty
();
ip
->
Name
=
std
::
string
(
"accessRights"
);
ip
->
Value
=
(
char
*
)
malloc
(
20
);
strcpy
(
ip
->
ValueType
,
"xsd:string"
);
switch
(
opc_current_access
)
{
case
pwr_eOpc_AccessEnum_ReadOnly
:
strcpy
(
ip
->
Value
,
"readable"
);
break
;
case
pwr_eOpc_AccessEnum_ReadWrite
:
if
(
bd
->
attr
->
Param
.
Info
.
Flags
&
PWR_MASK_RTVIRTUAL
||
bd
->
attr
->
Param
.
Info
.
Flags
&
PWR_MASK_PRIVATE
)
strcpy
(
ip
->
Value
,
"readable"
);
else
strcpy
(
ip
->
Value
,
"readWriteable"
);
break
;
default:
strcpy
(
ip
->
Value
,
"unknown"
);
break
;
}
properties
.
push_back
(
ip
);
}
// EngineeringUnits
if
(
propmask
&
opc_mProperty_EngineeringUnits
)
{
if
(
parp
)
{
switch
(
pcid
)
{
case
pwr_cClass_Ai
:
case
pwr_cClass_Ao
:
case
pwr_cClass_Av
:
{
if
(
strcmp
(
bd
->
attrName
,
"ActualValue"
)
!=
0
)
break
;
pwr_tAttrRef
aaref
;
pwr_tString16
unit
;
// Get Range from channel
sts
=
gdh_ArefANameToAref
(
parp
,
"Unit"
,
&
aaref
);
if
(
EVEN
(
sts
))
break
;
sts
=
gdh_GetObjectInfoAttrref
(
&
aaref
,
&
unit
,
sizeof
(
unit
));
if
(
EVEN
(
sts
))
break
;
ns1__ItemProperty
*
ip
=
new
ns1__ItemProperty
();
ip
->
Name
=
std
::
string
(
"engineeringUnits"
);
ip
->
Value
=
(
char
*
)
malloc
(
20
);
strcpy
(
ip
->
Value
,
unit
);
strcpy
(
ip
->
ValueType
,
"xsd:string"
);
properties
.
push_back
(
ip
);
break
;
}
default:
;
}
}
}
// EuType
if
(
propmask
&
opc_mProperty_EuType
)
{
switch
(
bd
->
attr
->
Param
.
Info
.
Type
)
{
case
pwr_eType_Float32
:
{
ns1__ItemProperty
*
ip
=
new
ns1__ItemProperty
();
ip
->
Name
=
std
::
string
(
"euType"
);
ip
->
Value
=
(
char
*
)
malloc
(
20
);
strcpy
(
ip
->
Value
,
"analog"
);
strcpy
(
ip
->
ValueType
,
"xsd:string"
);
properties
.
push_back
(
ip
);
break
;
}
default:
{
ns1__ItemProperty
*
ip
=
new
ns1__ItemProperty
();
ip
->
Name
=
std
::
string
(
"euType"
);
ip
->
Value
=
(
char
*
)
malloc
(
20
);
strcpy
(
ip
->
Value
,
"noEnum"
);
strcpy
(
ip
->
ValueType
,
"xsd:string"
);
properties
.
push_back
(
ip
);
break
;
}
}
}
// HighEU
if
(
propmask
&
opc_mProperty_HighEU
)
{
if
(
parp
)
{
pwr_tAttrRef
aaref
;
pwr_tFloat32
fval
;
switch
(
pcid
)
{
case
pwr_cClass_Av
:
case
pwr_cClass_Ai
:
case
pwr_cClass_Ao
:
sts
=
gdh_ArefANameToAref
(
parp
,
"PresMaxLimit"
,
&
aaref
);
if
(
ODD
(
sts
))
{
sts
=
gdh_GetObjectInfoAttrref
(
&
aaref
,
&
fval
,
sizeof
(
fval
));
if
(
ODD
(
sts
))
{
ns1__ItemProperty
*
ip
=
new
ns1__ItemProperty
();
ip
->
Name
=
std
::
string
(
"highEU"
);
ip
->
Value
=
(
char
*
)
malloc
(
20
);
sprintf
(
ip
->
Value
,
"%5.2f"
,
fval
);
strcpy
(
ip
->
ValueType
,
"xsd:double"
);
properties
.
push_back
(
ip
);
}
}
break
;
default:
;
}
}
}
// LowEU
if
(
propmask
&
opc_mProperty_LowEU
)
{
if
(
parp
)
{
pwr_tAttrRef
aaref
;
pwr_tFloat32
fval
;
switch
(
pcid
)
{
case
pwr_cClass_Av
:
case
pwr_cClass_Ai
:
case
pwr_cClass_Ao
:
sts
=
gdh_ArefANameToAref
(
parp
,
"PresMinLimit"
,
&
aaref
);
if
(
ODD
(
sts
))
{
sts
=
gdh_GetObjectInfoAttrref
(
&
aaref
,
&
fval
,
sizeof
(
fval
));
if
(
ODD
(
sts
))
{
ns1__ItemProperty
*
ip
=
new
ns1__ItemProperty
();
ip
->
Name
=
std
::
string
(
"lowEU"
);
ip
->
Value
=
(
char
*
)
malloc
(
20
);
sprintf
(
ip
->
Value
,
"%5.2f"
,
fval
);
strcpy
(
ip
->
ValueType
,
"xsd:double"
);
properties
.
push_back
(
ip
);
}
}
break
;
default:
;
}
}
}
// HighIR
if
(
propmask
&
opc_mProperty_HighIR
)
{
if
(
parp
)
{
switch
(
pcid
)
{
case
pwr_cClass_Ai
:
case
pwr_cClass_Ii
:
case
pwr_cClass_Ao
:
case
pwr_cClass_Io
:
{
if
(
strcmp
(
bd
->
attrName
,
"ActualValue"
)
!=
0
)
break
;
pwr_tAttrRef
aaref
;
pwr_tAttrRef
sigchancon
;
pwr_tFloat32
fval
;
// Get Range from channel
sts
=
gdh_ArefANameToAref
(
parp
,
"SigChanCon"
,
&
aaref
);
if
(
EVEN
(
sts
))
break
;
sts
=
gdh_GetObjectInfoAttrref
(
&
aaref
,
&
sigchancon
,
sizeof
(
sigchancon
));
if
(
EVEN
(
sts
))
break
;
if
(
cdh_ObjidIsNull
(
sigchancon
.
Objid
))
break
;
sts
=
gdh_ArefANameToAref
(
&
sigchancon
,
"ActValRangeHigh"
,
&
aaref
);
if
(
EVEN
(
sts
))
break
;
sts
=
gdh_GetObjectInfoAttrref
(
&
aaref
,
&
fval
,
sizeof
(
fval
));
if
(
EVEN
(
sts
))
break
;
ns1__ItemProperty
*
ip
=
new
ns1__ItemProperty
();
ip
->
Name
=
std
::
string
(
"highIR"
);
ip
->
Value
=
(
char
*
)
malloc
(
20
);
sprintf
(
ip
->
Value
,
"%5.2f"
,
fval
);
strcpy
(
ip
->
ValueType
,
"xsd:double"
);
properties
.
push_back
(
ip
);
break
;
}
default:
;
}
}
}
// LowIR
if
(
propmask
&
opc_mProperty_LowIR
)
{
if
(
parp
)
{
switch
(
pcid
)
{
case
pwr_cClass_Ai
:
case
pwr_cClass_Ii
:
case
pwr_cClass_Ao
:
case
pwr_cClass_Io
:
{
if
(
strcmp
(
bd
->
attrName
,
"ActualValue"
)
!=
0
)
break
;
pwr_tAttrRef
sigchancon
;
pwr_tAttrRef
aaref
;
pwr_tFloat32
fval
;
// Get Range from channel
sts
=
gdh_ArefANameToAref
(
parp
,
"SigChanCon"
,
&
aaref
);
if
(
EVEN
(
sts
))
break
;
sts
=
gdh_GetObjectInfoAttrref
(
&
aaref
,
&
sigchancon
,
sizeof
(
sigchancon
));
if
(
EVEN
(
sts
))
break
;
if
(
cdh_ObjidIsNull
(
sigchancon
.
Objid
))
break
;
sts
=
gdh_ArefANameToAref
(
&
sigchancon
,
"ActValRangeLow"
,
&
aaref
);
if
(
EVEN
(
sts
))
break
;
sts
=
gdh_GetObjectInfoAttrref
(
&
aaref
,
&
fval
,
sizeof
(
fval
));
if
(
EVEN
(
sts
))
break
;
ns1__ItemProperty
*
ip
=
new
ns1__ItemProperty
();
ip
->
Name
=
std
::
string
(
"lowIR"
);
ip
->
Value
=
(
char
*
)
malloc
(
20
);
sprintf
(
ip
->
Value
,
"%5.2f"
,
fval
);
strcpy
(
ip
->
ValueType
,
"xsd:double"
);
properties
.
push_back
(
ip
);
break
;
}
default:
;
}
}
}
}
return
true
;
}
int
opcsrv_get_access
(
struct
soap
*
so
)
{
int
access
=
pwr_eOpc_AccessEnum_None
;
for
(
int
i
=
0
;
i
<
opc_client_access_cnt
;
i
++
)
{
if
(
opc_client_access
[
i
].
address
==
(
int
)
so
->
ip
)
{
access
=
opc_client_access
[
i
].
access
;
break
;
}
}
return
access
;
}
SOAP_FMAC5
int
SOAP_FMAC6
__ns1__Browse
(
struct
soap
*
so
,
_ns1__Browse
*
ns1__Browse
,
_ns1__BrowseResponse
*
ns1__BrowseResponse
)
_ns1__BrowseResponse
*
ns1__BrowseResponse
)
{
{
pwr_tStatus
sts
;
pwr_tStatus
sts
;
pwr_tOid
oid
,
child
,
ch
;
pwr_tOid
oid
,
child
,
ch
;
pwr_tOName
name
;
pwr_tOName
name
;
pwr_tCid
cid
;
pwr_tCid
cid
;
unsigned
int
property_mask
;
opc_current_access
=
opcsrv_get_access
(
so
);
if
(
(
!
ns1__Browse
->
ItemName
||
ns1__Browse
->
ItemName
->
empty
())
&&
if
(
(
!
ns1__Browse
->
ItemName
||
ns1__Browse
->
ItemName
->
empty
())
&&
(
!
ns1__Browse
->
ItemPath
||
ns1__Browse
->
ItemPath
->
empty
()))
{
(
!
ns1__Browse
->
ItemPath
||
ns1__Browse
->
ItemPath
->
empty
()))
{
...
@@ -189,42 +532,52 @@ SOAP_FMAC5 int SOAP_FMAC6 __ns1__Browse(struct soap*, _ns1__Browse *ns1__Browse,
...
@@ -189,42 +532,52 @@ SOAP_FMAC5 int SOAP_FMAC6 __ns1__Browse(struct soap*, _ns1__Browse *ns1__Browse,
ns1__BrowseElement
*
element
=
new
ns1__BrowseElement
();
ns1__BrowseElement
*
element
=
new
ns1__BrowseElement
();
element
->
Name
=
new
std
::
string
(
name
);
element
->
Name
=
new
std
::
string
(
name
);
element
->
ItemName
=
element
->
Name
;
element
->
ItemName
=
element
->
Name
;
element
->
IsItem
=
(
cid
==
pwr_eClass_PlantHier
||
cid
==
pwr_eClass_NodeHier
)
?
true
:
false
;
element
->
IsItem
=
false
;
element
->
HasChildren
=
ODD
(
gdh_GetChild
(
oid
,
&
ch
))
?
true
:
false
;
if
(
cid
==
pwr_eClass_PlantHier
||
cid
==
pwr_eClass_NodeHier
)
ns1__BrowseResponse
->
Elements
.
push_back
(
element
);
element
->
HasChildren
=
ODD
(
gdh_GetChild
(
child
,
&
ch
))
?
true
:
false
;
else
element
->
HasChildren
=
true
;
for
(
int
i
=
0
;
i
<
(
int
)
ns1__Browse
->
PropertyNames
.
size
();
i
++
)
{
opc_propertynames_to_mask
(
ns1__Browse
->
PropertyNames
,
&
property_mask
);
ns1__ItemProperty
*
property
=
new
ns1__ItemProperty
();
property
->
Name
=
ns1__Browse
->
PropertyNames
[
i
];
if
(
property
->
Name
==
"
\"\"
:dataType"
)
{
pwr_tAttrRef
aref
=
cdh_ObjidToAref
(
oid
);
property
->
Value
=
(
char
*
)
malloc
(
6
);
opcsrv_get_properties
(
false
,
cid
,
0
,
&
aref
,
strcpy
(
property
->
Value
,
"float"
);
property_mask
,
0
,
}
element
->
Properties
);
element
->
Properties
.
push_back
(
property
);
}
ns1__BrowseResponse
->
Elements
.
push_back
(
element
);
}
}
}
}
else
{
else
{
// Return attributes and children
// Return attributes and children
pwr_tOName
pname
;
pwr_tOName
itemname
;
pwr_tOName
itemname
;
gdh_sAttrDef
*
bd
;
gdh_sAttrDef
*
bd
;
int
rows
;
int
rows
;
pwr_sAttrRef
paref
;
pwr_sAttrRef
aref
;
if
(
ns1__Browse
->
ItemPath
&&
!
ns1__Browse
->
ItemPath
->
empty
())
{
if
(
ns1__Browse
->
ItemPath
&&
!
ns1__Browse
->
ItemPath
->
empty
())
{
strncpy
(
itemname
,
ns1__Browse
->
ItemPath
->
c_str
(),
sizeof
(
item
name
));
strncpy
(
pname
,
ns1__Browse
->
ItemPath
->
c_str
(),
sizeof
(
p
name
));
if
(
ns1__Browse
->
ItemName
&&
!
ns1__Browse
->
ItemName
->
empty
())
{
if
(
ns1__Browse
->
ItemName
&&
!
ns1__Browse
->
ItemName
->
empty
())
{
strcat
(
itemname
,
"-"
);
strcat
(
pname
,
ns1__Browse
->
ItemName
->
c_str
());
strcat
(
itemname
,
ns1__Browse
->
ItemName
->
c_str
());
}
}
}
}
else
else
strncpy
(
itemname
,
ns1__Browse
->
ItemName
->
c_str
(),
sizeof
(
itemname
));
strncpy
(
pname
,
ns1__Browse
->
ItemName
->
c_str
(),
sizeof
(
pname
));
sts
=
gdh_NameToAttrref
(
pwr_cNOid
,
pname
,
&
paref
);
if
(
EVEN
(
sts
))
{
return
0
;
}
sts
=
gdh_
NameToObjid
(
itemname
,
&
o
id
);
sts
=
gdh_
GetAttrRefTid
(
&
paref
,
&
c
id
);
if
(
EVEN
(
sts
))
{
if
(
EVEN
(
sts
))
{
return
0
;
return
0
;
}
}
if
(
!
cdh_tidIsCid
(
cid
))
{
return
0
;
}
sts
=
gdh_GetObjectBodyDef
(
cid
,
&
bd
,
&
rows
,
oid
);
sts
=
gdh_GetObjectBodyDef
(
cid
,
&
bd
,
&
rows
,
oid
);
if
(
ODD
(
sts
))
{
if
(
ODD
(
sts
))
{
...
@@ -241,15 +594,13 @@ SOAP_FMAC5 int SOAP_FMAC6 __ns1__Browse(struct soap*, _ns1__Browse *ns1__Browse,
...
@@ -241,15 +594,13 @@ SOAP_FMAC5 int SOAP_FMAC6 __ns1__Browse(struct soap*, _ns1__Browse *ns1__Browse,
if
(
bd
[
i
].
attr
->
Param
.
Info
.
Flags
&
PWR_MASK_RTHIDE
)
if
(
bd
[
i
].
attr
->
Param
.
Info
.
Flags
&
PWR_MASK_RTHIDE
)
continue
;
continue
;
sts
=
gdh_ArefANameToAref
(
&
paref
,
bd
[
i
].
attrName
,
&
aref
);
if
(
EVEN
(
sts
))
return
sts
;
if
(
bd
[
i
].
attr
->
Param
.
Info
.
Flags
&
PWR_MASK_DISABLEATTR
)
{
if
(
bd
[
i
].
attr
->
Param
.
Info
.
Flags
&
PWR_MASK_DISABLEATTR
)
{
pwr_sAttrRef
aref
=
cdh_ObjidToAref
(
oid
);
pwr_sAttrRef
aaref
;
pwr_tDisableAttr
disabled
;
pwr_tDisableAttr
disabled
;
sts
=
gdh_ArefANameToAref
(
&
aref
,
bd
[
i
].
attrName
,
&
aaref
);
sts
=
gdh_ArefDisabled
(
&
aref
,
&
disabled
);
if
(
EVEN
(
sts
))
return
sts
;
sts
=
gdh_ArefDisabled
(
&
aaref
,
&
disabled
);
if
(
EVEN
(
sts
))
return
sts
;
if
(
EVEN
(
sts
))
return
sts
;
if
(
disabled
)
if
(
disabled
)
...
@@ -264,51 +615,59 @@ SOAP_FMAC5 int SOAP_FMAC6 __ns1__Browse(struct soap*, _ns1__Browse *ns1__Browse,
...
@@ -264,51 +615,59 @@ SOAP_FMAC5 int SOAP_FMAC6 __ns1__Browse(struct soap*, _ns1__Browse *ns1__Browse,
ns1__BrowseElement
*
element
=
new
ns1__BrowseElement
();
ns1__BrowseElement
*
element
=
new
ns1__BrowseElement
();
element
->
Name
=
new
std
::
string
(
bd
[
i
].
attrName
);
element
->
Name
=
new
std
::
string
(
bd
[
i
].
attrName
);
element
->
ItemName
=
element
->
Name
;
strcpy
(
itemname
,
pname
);
element
->
ItemPath
=
new
std
::
string
(
itemname
);
strcat
(
itemname
,
"."
);
strcat
(
itemname
,
bd
[
i
].
attrName
);
element
->
ItemName
=
new
std
::
string
(
itemname
);
element
->
IsItem
=
true
;
element
->
IsItem
=
true
;
element
->
HasChildren
=
false
;
element
->
HasChildren
=
false
;
for
(
int
i
=
0
;
i
<
(
int
)
ns1__Browse
->
PropertyNames
.
size
();
i
++
)
{
opc_propertynames_to_mask
(
ns1__Browse
->
PropertyNames
,
&
property_mask
);
ns1__ItemProperty
*
property
=
new
ns1__ItemProperty
();
property
->
Name
=
ns1__Browse
->
PropertyNames
[
i
];
if
(
property
->
Name
==
"
\"\"
:dataType"
)
{
char
*
type_p
;
if
(
!
opc_type_to_string
(
bd
[
i
].
attr
->
Param
.
Info
.
Type
,
&
type_p
))
{
// Untranslatable type
element
->
IsItem
=
false
;
element
->
HasChildren
=
false
;
continue
;
}
property
->
Value
=
type_p
;
}
element
->
Properties
.
push_back
(
property
);
}
ns1__BrowseResponse
->
Elements
.
push_back
(
element
);
if
(
property_mask
)
opcsrv_get_properties
(
element
->
IsItem
,
cid
,
&
paref
,
&
aref
,
property_mask
,
&
bd
[
i
],
element
->
Properties
);
ns1__BrowseResponse
->
Elements
.
push_back
(
element
);
}
}
}
}
free
(
(
char
*
)
bd
);
free
(
(
char
*
)
bd
);
}
}
for
(
sts
=
gdh_GetChild
(
oid
,
&
child
);
ODD
(
sts
);
sts
=
gdh_GetNextSibling
(
child
,
&
child
))
{
if
(
paref
.
Flags
.
b
.
Object
)
{
sts
=
gdh_ObjidToName
(
child
,
name
,
sizeof
(
name
),
cdh_mName_object
);
for
(
sts
=
gdh_GetChild
(
paref
.
Objid
,
&
child
);
if
(
EVEN
(
sts
))
continue
;
ODD
(
sts
);
sts
=
gdh_GetNextSibling
(
child
,
&
child
))
{
sts
=
gdh_ObjidToName
(
child
,
name
,
sizeof
(
name
),
cdh_mName_object
);
if
(
EVEN
(
sts
))
continue
;
sts
=
gdh_GetObjectClass
(
child
,
&
cid
);
sts
=
gdh_GetObjectClass
(
child
,
&
cid
);
if
(
EVEN
(
sts
))
continue
;
if
(
EVEN
(
sts
))
continue
;
ns1__BrowseElement
*
element
=
new
ns1__BrowseElement
();
ns1__BrowseElement
*
element
=
new
ns1__BrowseElement
();
element
->
Name
=
new
std
::
string
(
name
);
element
->
Name
=
new
std
::
string
(
name
);
element
->
ItemName
=
element
->
Name
;
strcpy
(
itemname
,
pname
);
element
->
ItemPath
=
new
std
::
string
(
itemname
);
strcat
(
itemname
,
"-"
);
element
->
IsItem
=
(
cid
==
pwr_eClass_PlantHier
||
cid
==
pwr_eClass_NodeHier
)
?
true
:
false
;
strcat
(
itemname
,
name
);
element
->
HasChildren
=
ODD
(
gdh_GetChild
(
child
,
&
ch
))
?
true
:
false
;
element
->
ItemName
=
new
std
::
string
(
itemname
);
ns1__BrowseResponse
->
Elements
.
push_back
(
element
);
element
->
IsItem
=
false
;
if
(
cid
==
pwr_eClass_PlantHier
||
cid
==
pwr_eClass_NodeHier
)
element
->
HasChildren
=
ODD
(
gdh_GetChild
(
child
,
&
ch
))
?
true
:
false
;
else
element
->
HasChildren
=
true
;
opc_propertynames_to_mask
(
ns1__Browse
->
PropertyNames
,
&
property_mask
);
if
(
property_mask
)
{
aref
=
cdh_ObjidToAref
(
child
);
opcsrv_get_properties
(
element
->
IsItem
,
cid
,
&
paref
,
&
aref
,
property_mask
,
0
,
element
->
Properties
);
}
ns1__BrowseResponse
->
Elements
.
push_back
(
element
);
}
}
}
}
}
return
0
;
return
0
;
...
...
opc/lib/opc/src/opc_soap_C.cpp
View file @
4fc9d620
...
@@ -6294,7 +6294,9 @@ SOAP_FMAC3 int SOAP_FMAC4 soap_out_ns1__ItemProperty(struct soap *soap, const ch
...
@@ -6294,7 +6294,9 @@ SOAP_FMAC3 int SOAP_FMAC4 soap_out_ns1__ItemProperty(struct soap *soap, const ch
if (((ns1__ItemProperty *)a)->ResultID)
if (((ns1__ItemProperty *)a)->ResultID)
soap_set_attr(soap, "ResultID", soap_QName2s(soap, ((ns1__ItemProperty *)a)->ResultID->c_str()));
soap_set_attr(soap, "ResultID", soap_QName2s(soap, ((ns1__ItemProperty *)a)->ResultID->c_str()));
soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_ns1__ItemProperty), type);
soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_ns1__ItemProperty), type);
soap_outliteral(soap, "ns1:Value", &(((ns1__ItemProperty*)a)->Value), NULL);
/* !! Value type added !! */
soap_outliteral(soap, "ns1:Value", &(((ns1__ItemProperty*)a)->Value),
((ns1__ItemProperty*)a)->ValueType);
/* transient soap skipped */
/* transient soap skipped */
soap_element_end_out(soap, tag);
soap_element_end_out(soap, tag);
return SOAP_OK;
return SOAP_OK;
...
@@ -6407,7 +6409,9 @@ SOAP_FMAC3 ns1__ItemProperty * SOAP_FMAC4 soap_in_ns1__ItemProperty(struct soap
...
@@ -6407,7 +6409,9 @@ SOAP_FMAC3 ns1__ItemProperty * SOAP_FMAC4 soap_in_ns1__ItemProperty(struct soap
if (soap_flag_Value1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG))
if (soap_flag_Value1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG))
if (soap_inliteral(soap, "ns1:Value", &(((ns1__ItemProperty*)a)->Value)))
if (soap_inliteral(soap, "ns1:Value", &(((ns1__ItemProperty*)a)->Value)))
{ soap_flag_Value1--;
{ soap_flag_Value1--;
continue;
/* !! Extract type !! */
strcpy( ((ns1__ItemValue*)a)->ValueType, soap->type);
continue;
}
}
/* transient soap skipped */
/* transient soap skipped */
if (soap->error == SOAP_TAG_MISMATCH)
if (soap->error == SOAP_TAG_MISMATCH)
...
@@ -10101,7 +10105,8 @@ SOAP_FMAC3 int SOAP_FMAC4 soap_out_ns1__ItemValue(struct soap *soap, const char
...
@@ -10101,7 +10105,8 @@ SOAP_FMAC3 int SOAP_FMAC4 soap_out_ns1__ItemValue(struct soap *soap, const char
soap_set_attr(soap, "ResultID", soap_QName2s(soap, ((ns1__ItemValue *)a)->ResultID->c_str()));
soap_set_attr(soap, "ResultID", soap_QName2s(soap, ((ns1__ItemValue *)a)->ResultID->c_str()));
soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_ns1__ItemValue), type);
soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_ns1__ItemValue), type);
soap_out_PointerTostd__string(soap, "ns1:DiagnosticInfo", -1, &(((ns1__ItemValue*)a)->DiagnosticInfo), "");
soap_out_PointerTostd__string(soap, "ns1:DiagnosticInfo", -1, &(((ns1__ItemValue*)a)->DiagnosticInfo), "");
soap_outliteral(soap, "ns1:Value", &(((ns1__ItemValue*)a)->Value), NULL);
/* !! Value type added !! */
soap_outliteral(soap, "ns1:Value", &(((ns1__ItemValue*)a)->Value), ((ns1__ItemValue*)a)->ValueType);
soap_out_PointerTons1__OPCQuality(soap, "ns1:Quality", -1, &(((ns1__ItemValue*)a)->Quality), "");
soap_out_PointerTons1__OPCQuality(soap, "ns1:Quality", -1, &(((ns1__ItemValue*)a)->Quality), "");
/* transient soap skipped */
/* transient soap skipped */
soap_element_end_out(soap, tag);
soap_element_end_out(soap, tag);
...
@@ -10237,6 +10242,8 @@ SOAP_FMAC3 ns1__ItemValue * SOAP_FMAC4 soap_in_ns1__ItemValue(struct soap *soap,
...
@@ -10237,6 +10242,8 @@ SOAP_FMAC3 ns1__ItemValue * SOAP_FMAC4 soap_in_ns1__ItemValue(struct soap *soap,
if (soap_flag_Value1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG))
if (soap_flag_Value1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG))
if (soap_inliteral(soap, "ns1:Value", &(((ns1__ItemValue*)a)->Value)))
if (soap_inliteral(soap, "ns1:Value", &(((ns1__ItemValue*)a)->Value)))
{ soap_flag_Value1--;
{ soap_flag_Value1--;
/* !! Extract type !! */
strcpy( ((ns1__ItemValue*)a)->ValueType, soap->type);
continue;
continue;
}
}
if (soap_flag_Quality1 && soap->error == SOAP_TAG_MISMATCH)
if (soap_flag_Quality1 && soap->error == SOAP_TAG_MISMATCH)
...
...
opc/lib/opc/src/opc_soap_Stub.h
View file @
4fc9d620
...
@@ -218,6 +218,7 @@ class SOAP_CMAC ns1__ItemValue
...
@@ -218,6 +218,7 @@ class SOAP_CMAC ns1__ItemValue
public:
public:
std
::
string
*
DiagnosticInfo
;
/* optional element of type xsd:string */
std
::
string
*
DiagnosticInfo
;
/* optional element of type xsd:string */
char
*
Value
;
/* optional element of type xsd:anyType */
char
*
Value
;
/* optional element of type xsd:anyType */
char
ValueType
[
80
];
/* !! Value type added !! */
class
ns1__OPCQuality
*
Quality
;
/* optional element of type ns1:OPCQuality */
class
ns1__OPCQuality
*
Quality
;
/* optional element of type ns1:OPCQuality */
std
::
string
*
ValueTypeQualifier
;
/* optional attribute */
std
::
string
*
ValueTypeQualifier
;
/* optional attribute */
std
::
string
*
ItemPath
;
/* optional attribute */
std
::
string
*
ItemPath
;
/* optional attribute */
...
@@ -752,6 +753,7 @@ class SOAP_CMAC ns1__ItemProperty
...
@@ -752,6 +753,7 @@ class SOAP_CMAC ns1__ItemProperty
{
{
public:
public:
char
*
Value
;
/* optional element of type xsd:anyType */
char
*
Value
;
/* optional element of type xsd:anyType */
char
ValueType
[
80
];
/* !! Added to insert value type !! */
std
::
string
Name
;
/* required attribute */
std
::
string
Name
;
/* required attribute */
std
::
string
*
Description
;
/* optional attribute */
std
::
string
*
Description
;
/* optional attribute */
std
::
string
*
ItemPath
;
/* optional attribute */
std
::
string
*
ItemPath
;
/* optional attribute */
...
...
opc/lib/opc/src/opc_utl.cpp
View file @
4fc9d620
/*
/*
* Proview $Id: opc_utl.cpp,v 1.
2 2007-03-05 14:56:51
claes Exp $
* Proview $Id: opc_utl.cpp,v 1.
3 2007-03-08 07:26:29
claes Exp $
* Copyright (C) 2005 SSAB Oxelsund AB.
* Copyright (C) 2005 SSAB Oxelsund AB.
*
*
* This program is free software; you can redistribute it and/or
* This program is free software; you can redistribute it and/or
...
@@ -22,6 +22,24 @@
...
@@ -22,6 +22,24 @@
#include "opc_utl.h"
#include "opc_utl.h"
#include "opc_soap_Stub.h"
#include "opc_soap_Stub.h"
static
char
opc_PropertyNames
[
17
][
20
]
=
{
"dataType"
,
"value"
,
"quality"
,
"timestamp"
,
"accessRights"
,
"scanRate"
,
"euType"
,
"euInfo"
,
"engineeringUnits"
,
"description"
,
"highEU"
,
"lowEU"
,
"highIR"
,
"lowIR"
,
"closeLabel"
,
"openLabel"
,
"timeZone"
};
//
//
// Return the corresponding opc type string for a pwr_eType
// Return the corresponding opc type string for a pwr_eType
//
//
...
@@ -82,38 +100,47 @@ bool opc_pwrtype_to_string( int type, char **str)
...
@@ -82,38 +100,47 @@ bool opc_pwrtype_to_string( int type, char **str)
void
opc_mask_to_propertynames
(
std
::
vector
<
std
::
string
>&
pnames
,
unsigned
int
mask
)
void
opc_mask_to_propertynames
(
std
::
vector
<
std
::
string
>&
pnames
,
unsigned
int
mask
)
{
{
if
(
mask
&
opc_mProperty_DataType
)
unsigned
int
m
;
pnames
.
push_back
(
std
::
string
(
"dataName"
));
if
(
mask
&
opc_mProperty_Value
)
for
(
int
i
=
0
;
i
<
opc_cPropertySize
;
i
++
)
{
pnames
.
push_back
(
std
::
string
(
"value"
));
m
=
1
<<
i
;
if
(
mask
&
opc_mProperty_Quality
)
if
(
mask
&
m
)
pnames
.
push_back
(
std
::
string
(
"quality"
));
pnames
.
push_back
(
std
::
string
(
opc_PropertyNames
[
i
]));
if
(
mask
&
opc_mProperty_Timestamp
)
}
pnames
.
push_back
(
std
::
string
(
"timestamp"
));
}
if
(
mask
&
opc_mProperty_ScanRate
)
pnames
.
push_back
(
std
::
string
(
"scanRate"
));
bool
opc_get_property
(
std
::
vector
<
ns1__ItemProperty
*>
properties
,
unsigned
int
mask
,
if
(
mask
&
opc_mProperty_EuType
)
char
**
valp
)
pnames
.
push_back
(
std
::
string
(
"euType"
));
{
if
(
mask
&
opc_mProperty_EuInfo
)
char
name
[
80
];
pnames
.
push_back
(
std
::
string
(
"euInfo"
));
char
*
s
;
if
(
mask
&
opc_mProperty_EngineeringUnits
)
int
idx
=
-
1
;
pnames
.
push_back
(
std
::
string
(
"engineeringUnits"
));
if
(
mask
&
opc_mProperty_Description
)
for
(
int
i
=
0
;
i
<
opc_cPropertySize
;
i
++
)
{
pnames
.
push_back
(
std
::
string
(
"description"
));
if
(
(
unsigned
int
)(
1
<<
i
)
==
mask
)
{
if
(
mask
&
opc_mProperty_HighEU
)
idx
=
i
;
pnames
.
push_back
(
std
::
string
(
"highEU"
));
break
;
if
(
mask
&
opc_mProperty_LowEU
)
}
pnames
.
push_back
(
std
::
string
(
"lowEU"
));
}
if
(
mask
&
opc_mProperty_HighIR
)
if
(
idx
==
-
1
)
pnames
.
push_back
(
std
::
string
(
"highIR"
));
return
false
;
if
(
mask
&
opc_mProperty_LowIR
)
pnames
.
push_back
(
std
::
string
(
"lowIR"
));
for
(
int
i
=
0
;
i
<
(
int
)
properties
.
size
();
i
++
)
{
if
(
mask
&
opc_mProperty_CloseLabel
)
pnames
.
push_back
(
std
::
string
(
"closeLabel"
));
strcpy
(
name
,
properties
[
i
]
->
Name
.
c_str
());
if
(
mask
&
opc_mProperty_OpenLabel
)
if
(
(
s
=
strrchr
(
name
,
':'
)))
pnames
.
push_back
(
std
::
string
(
"openLabel"
));
s
++
;
if
(
mask
&
opc_mProperty_TimeZone
)
else
pnames
.
push_back
(
std
::
string
(
"timeZone"
));
s
=
name
;
if
(
strcmp
(
s
,
opc_PropertyNames
[
idx
])
==
0
)
{
if
(
!
properties
[
0
]
->
Value
)
return
false
;
*
valp
=
properties
[
i
]
->
Value
;
return
true
;
}
}
return
false
;
}
}
bool
opc_propertynames_to_mask
(
std
::
vector
<
std
::
string
>&
pnames
,
unsigned
int
*
mask
)
bool
opc_propertynames_to_mask
(
std
::
vector
<
std
::
string
>&
pnames
,
unsigned
int
*
mask
)
...
@@ -215,3 +242,62 @@ bool opc_propertynames_to_mask( std::vector<std::string>& pnames, unsigned int *
...
@@ -215,3 +242,62 @@ bool opc_propertynames_to_mask( std::vector<std::string>& pnames, unsigned int *
}
}
return
true
;
return
true
;
}
}
bool
opc_quality_to_string
(
int
quality
,
char
**
str
)
{
*
str
=
(
char
*
)
malloc
(
30
);
switch
(
quality
)
{
case
ns1__qualityBits__bad
:
strcpy
(
*
str
,
"bad"
);
break
;
case
ns1__qualityBits__badConfigurationError
:
strcpy
(
*
str
,
"badConfigurationError"
);
break
;
case
ns1__qualityBits__badNotConnected
:
strcpy
(
*
str
,
"badNotConnected"
);
break
;
case
ns1__qualityBits__badDeviceFailure
:
strcpy
(
*
str
,
"badDeviceFailure"
);
break
;
case
ns1__qualityBits__badSensorFailure
:
strcpy
(
*
str
,
"badSensorFailure"
);
break
;
case
ns1__qualityBits__badLastKnownValue
:
strcpy
(
*
str
,
"badLastKnownValue"
);
break
;
case
ns1__qualityBits__badCommFailure
:
strcpy
(
*
str
,
"badCommFailure"
);
break
;
case
ns1__qualityBits__badOutOfService
:
strcpy
(
*
str
,
"badOutOfService"
);
break
;
case
ns1__qualityBits__badWaitingForInitialData
:
strcpy
(
*
str
,
"badWaitingForInitialData"
);
break
;
case
ns1__qualityBits__uncertain
:
strcpy
(
*
str
,
"uncertain"
);
break
;
case
ns1__qualityBits__uncertainLastUsableValue
:
strcpy
(
*
str
,
"uncertainLastUsableValue"
);
break
;
case
ns1__qualityBits__uncertainSensorNotAccurate
:
strcpy
(
*
str
,
"uncertainSensorNotAccurate"
);
break
;
case
ns1__qualityBits__uncertainEUExceeded
:
strcpy
(
*
str
,
"uncertainEUExceede"
);
break
;
case
ns1__qualityBits__uncertainSubNormal
:
strcpy
(
*
str
,
"uncertainSubNormal"
);
break
;
case
ns1__qualityBits__good
:
strcpy
(
*
str
,
"good"
);
break
;
case
ns1__qualityBits__goodLocalOverride
:
strcpy
(
*
str
,
"goodLocalOverride"
);
break
;
default:
return
false
;
}
return
true
;
}
opc/lib/opc/src/opc_utl.h
View file @
4fc9d620
/*
/*
* Proview $Id: opc_utl.h,v 1.
2 2007-03-05 14:56:51
claes Exp $
* Proview $Id: opc_utl.h,v 1.
3 2007-03-08 07:26:29
claes Exp $
* Copyright (C) 2005 SSAB Oxelsund AB.
* Copyright (C) 2005 SSAB Oxelsund AB.
*
*
* This program is free software; you can redistribute it and/or
* This program is free software; you can redistribute it and/or
...
@@ -20,26 +20,37 @@
...
@@ -20,26 +20,37 @@
#include <vector.h>
#include <vector.h>
#include <string.h>
#include <string.h>
#include "pwr.h"
#include "pwr.h"
#include "opc_soap_Stub.h"
const
int
opc_cPropertySize
=
17
;
typedef
enum
{
typedef
enum
{
opc_mProperty_DataType
=
1
<<
0
,
opc_mProperty_DataType
=
1
<<
0
,
opc_mProperty_Value
=
1
<<
1
,
opc_mProperty_Value
=
1
<<
1
,
opc_mProperty_Quality
=
1
<<
2
,
opc_mProperty_Quality
=
1
<<
2
,
opc_mProperty_Timestamp
=
1
<<
3
,
opc_mProperty_Timestamp
=
1
<<
3
,
opc_mProperty_ScanRate
=
1
<<
4
,
opc_mProperty_AccessRights
=
1
<<
4
,
opc_mProperty_EuType
=
1
<<
5
,
opc_mProperty_ScanRate
=
1
<<
5
,
opc_mProperty_EuInfo
=
1
<<
6
,
opc_mProperty_EuType
=
1
<<
6
,
opc_mProperty_EngineeringUnits
=
1
<<
7
,
opc_mProperty_EuInfo
=
1
<<
7
,
opc_mProperty_Description
=
1
<<
8
,
opc_mProperty_EngineeringUnits
=
1
<<
8
,
opc_mProperty_HighEU
=
1
<<
9
,
opc_mProperty_Description
=
1
<<
9
,
opc_mProperty_LowEU
=
1
<<
10
,
opc_mProperty_HighEU
=
1
<<
10
,
opc_mProperty_HighIR
=
1
<<
11
,
opc_mProperty_LowEU
=
1
<<
11
,
opc_mProperty_LowIR
=
1
<<
12
,
opc_mProperty_HighIR
=
1
<<
12
,
opc_mProperty_CloseLabel
=
1
<<
13
,
opc_mProperty_LowIR
=
1
<<
13
,
opc_mProperty_OpenLabel
=
1
<<
14
,
opc_mProperty_CloseLabel
=
1
<<
14
,
opc_mProperty_TimeZone
=
1
<<
15
opc_mProperty_OpenLabel
=
1
<<
15
,
opc_mProperty_TimeZone
=
1
<<
16
}
opc_mProperty
;
}
opc_mProperty
;
bool
opc_pwrtype_to_string
(
int
type
,
char
**
str
);
bool
opc_pwrtype_to_string
(
int
type
,
char
**
str
);
bool
opc_get_property
(
std
::
vector
<
ns1__ItemProperty
*>
properties
,
unsigned
int
mask
,
char
**
valp
);
void
opc_mask_to_propertynames
(
std
::
vector
<
std
::
string
>&
pnames
,
unsigned
int
mask
);
void
opc_mask_to_propertynames
(
std
::
vector
<
std
::
string
>&
pnames
,
unsigned
int
mask
);
bool
opc_propertynames_to_mask
(
std
::
vector
<
std
::
string
>&
pnames
,
unsigned
int
*
mask
);
bool
opc_propertynames_to_mask
(
std
::
vector
<
std
::
string
>&
pnames
,
unsigned
int
*
mask
);
bool
opc_quality_to_string
(
int
quality
,
char
**
str
);
opc/wbl/mcomp/src/opc.wb_load
View file @
4fc9d620
Volume Opc $ClassVolume 0.0.250.9
Volume Opc $ClassVolume 0.0.250.9
Body SysBody 01-JAN-1970 01:00:00.00
Body SysBody 01-JAN-1970 01:00:00.00
Attr NextOix = "_X1"
Attr NextOix = "_X12"
Attr NextCix = "_X22"
Attr NextCix = "_X24"
Attr NextTix[0] = "_X3"
EndBody
EndBody
Object Class $ClassHier 1 01-MAR-2007 16:47:50.47
Object Type $TypeHier 2 02-MAR-2007 14:45:01.59
Object Opc_ServerStateEnum $TypeDef 1 05-MAR-2007 13:22:13.08
Body SysBody 02-MAR-2007 14:46:14.99
Attr TypeRef = "pwrs:Type-$Enum"
Attr Elements = 1
EndBody
Object Running $Value 3 02-MAR-2007 14:46:58.69
Body SysBody 02-MAR-2007 14:47:02.58
Attr Text = "Running"
Attr PgmName = "Running"
EndBody
EndObject
Object Failed $Value 4 02-MAR-2007 14:47:15.15
Body SysBody 02-MAR-2007 14:47:20.37
Attr Text = "Failed"
Attr PgmName = "Failed"
Attr Value = 1
EndBody
EndObject
Object NoConfig $Value 5 02-MAR-2007 14:48:09.87
Body SysBody 02-MAR-2007 14:48:29.97
Attr Text = "NoConfig"
Attr PgmName = "NoConfig"
Attr Value = 2
EndBody
EndObject
Object Suspended $Value 8 02-MAR-2007 14:48:24.34
Body SysBody 02-MAR-2007 14:48:34.32
Attr Text = "Suspended"
Attr PgmName = "Suspended"
Attr Value = 3
EndBody
EndObject
Object Test $Value 7 02-MAR-2007 14:48:44.36
Body SysBody 02-MAR-2007 14:48:48.73
Attr Text = "Test"
Attr PgmName = "Test"
Attr Value = 4
EndBody
EndObject
Object CommFault $Value 6 02-MAR-2007 14:48:58.72
Body SysBody 02-MAR-2007 14:49:03.64
Attr Text = "CommFault"
Attr PgmName = "CommFault"
Attr Value = 5
EndBody
EndObject
EndObject
Object Opc_AccessEnum $TypeDef 2 05-MAR-2007 13:22:42.62
Body SysBody 05-MAR-2007 13:20:09.54
Attr TypeRef = "pwrs:Type-$Enum"
Attr Elements = 1
EndBody
Object None $Value 9 05-MAR-2007 13:22:58.87
Body SysBody 05-MAR-2007 13:23:03.93
Attr Text = "None"
Attr PgmName = "None"
EndBody
EndObject
Object ReadOnly $Value 10 05-MAR-2007 13:23:11.59
Body SysBody 05-MAR-2007 13:23:18.24
Attr Text = "ReadOnly"
Attr PgmName = "ReadOnly"
Attr Value = 1
EndBody
EndObject
Object ReadWrite $Value 11 05-MAR-2007 13:23:28.18
Body SysBody 05-MAR-2007 13:23:39.62
Attr Text = "ReadWrite"
Attr PgmName = "ReadWrite"
Attr Value = 2
EndBody
EndObject
EndObject
EndObject
Object Class $ClassHier 1 02-MAR-2007 14:45:04.90
Object Opc_ClientAccess $ClassDef 23 05-MAR-2007 13:28:06.11
Body SysBody 05-MAR-2007 13:27:57.56
Attr Editor = 0
Attr Method = 0
Attr Flags = 16
EndBody
Object RtBody $ObjBodyDef 1 05-MAR-2007 13:28:16.74
Body SysBody 05-MAR-2007 13:28:16.74
Attr StructName = "Opc_ClientAccess"
Attr NextAix = "_X3"
EndBody
Object Address $Attribute 1 05-MAR-2007 13:28:48.14
Body SysBody 05-MAR-2007 13:28:52.79
Attr PgmName = "Address"
Attr TypeRef = "pwrs:Type-$String16"
EndBody
EndObject
Object Access $Attribute 2 05-MAR-2007 13:29:22.75
Body SysBody 05-MAR-2007 13:29:47.95
Attr PgmName = "Access"
Attr TypeRef = "Opc:Type-Opc_AccessEnum"
EndBody
EndObject
EndObject
Object Template Opc_ClientAccess 2153742336 01-JAN-1970 01:00:00.00
Body RtBody 05-MAR-2007 13:30:16.97
EndBody
EndObject
EndObject
Object Opc_Hier $ClassDef 1 01-MAR-2007 16:48:24.56
Object Opc_Hier $ClassDef 1 01-MAR-2007 16:48:24.56
Body SysBody 01-MAR-2007 16:47:58.95
Body SysBody 01-MAR-2007 16:47:58.95
Attr Editor = 0
Attr Editor = 0
...
@@ -13,7 +118,14 @@ Volume Opc $ClassVolume 0.0.250.9
...
@@ -13,7 +118,14 @@ Volume Opc $ClassVolume 0.0.250.9
Object RtBody $ObjBodyDef 1 01-MAR-2007 18:05:06.28
Object RtBody $ObjBodyDef 1 01-MAR-2007 18:05:06.28
Body SysBody 01-MAR-2007 18:05:06.28
Body SysBody 01-MAR-2007 18:05:06.28
Attr StructName = "Opc_Hier"
Attr StructName = "Opc_Hier"
Attr NextAix = "_X2"
EndBody
EndBody
Object Description $Attribute 1 05-MAR-2007 13:41:33.76
Body SysBody 05-MAR-2007 13:41:39.19
Attr PgmName = "Description"
Attr TypeRef = "pwrs:Type-$String80"
EndBody
EndObject
EndObject
EndObject
Object Template Opc_Hier 2147975168 01-JAN-1970 01:00:00.00
Object Template Opc_Hier 2147975168 01-JAN-1970 01:00:00.00
Body RtBody 01-JAN-1970 01:00:00.00
Body RtBody 01-JAN-1970 01:00:00.00
...
@@ -34,8 +146,14 @@ Volume Opc $ClassVolume 0.0.250.9
...
@@ -34,8 +146,14 @@ Volume Opc $ClassVolume 0.0.250.9
Object RtBody $ObjBodyDef 1 01-MAR-2007 16:49:33.17
Object RtBody $ObjBodyDef 1 01-MAR-2007 16:49:33.17
Body SysBody 01-MAR-2007 16:49:33.17
Body SysBody 01-MAR-2007 16:49:33.17
Attr StructName = "Opc_String"
Attr StructName = "Opc_String"
Attr NextAix = "_X
2
"
Attr NextAix = "_X
3
"
EndBody
EndBody
Object Description $Attribute 2 05-MAR-2007 13:45:02.33
Body SysBody 05-MAR-2007 13:45:02.33
Attr PgmName = "Description"
Attr TypeRef = "pwrs:Type-$String80"
EndBody
EndObject
Object Value $Attribute 1 01-MAR-2007 16:49:41.73
Object Value $Attribute 1 01-MAR-2007 16:49:41.73
Body SysBody 01-MAR-2007 16:49:54.49
Body SysBody 01-MAR-2007 16:49:54.49
Attr PgmName = "Value"
Attr PgmName = "Value"
...
@@ -57,8 +175,14 @@ Volume Opc $ClassVolume 0.0.250.9
...
@@ -57,8 +175,14 @@ Volume Opc $ClassVolume 0.0.250.9
Object RtBody $ObjBodyDef 1 01-MAR-2007 16:50:28.50
Object RtBody $ObjBodyDef 1 01-MAR-2007 16:50:28.50
Body SysBody 01-MAR-2007 16:50:28.50
Body SysBody 01-MAR-2007 16:50:28.50
Attr StructName = "Opc_Boolean"
Attr StructName = "Opc_Boolean"
Attr NextAix = "_X
3
"
Attr NextAix = "_X
4
"
EndBody
EndBody
Object Description $Attribute 3 05-MAR-2007 13:45:09.01
Body SysBody 05-MAR-2007 13:45:09.01
Attr PgmName = "Description"
Attr TypeRef = "pwrs:Type-$String80"
EndBody
EndObject
Object Value $Attribute 2 01-MAR-2007 16:50:28.50
Object Value $Attribute 2 01-MAR-2007 16:50:28.50
Body SysBody 01-MAR-2007 16:50:51.77
Body SysBody 01-MAR-2007 16:50:51.77
Attr PgmName = "Value"
Attr PgmName = "Value"
...
@@ -80,14 +204,45 @@ Volume Opc $ClassVolume 0.0.250.9
...
@@ -80,14 +204,45 @@ Volume Opc $ClassVolume 0.0.250.9
Object RtBody $ObjBodyDef 1 01-MAR-2007 16:50:28.36
Object RtBody $ObjBodyDef 1 01-MAR-2007 16:50:28.36
Body SysBody 01-MAR-2007 16:50:28.36
Body SysBody 01-MAR-2007 16:50:28.36
Attr StructName = "Opc_Float"
Attr StructName = "Opc_Float"
Attr NextAix = "_X
3
"
Attr NextAix = "_X
9
"
EndBody
EndBody
Object Description $Attribute 3 05-MAR-2007 13:45:13.76
Body SysBody 05-MAR-2007 13:45:13.76
Attr PgmName = "Description"
Attr TypeRef = "pwrs:Type-$String80"
EndBody
EndObject
Object Value $Attribute 2 01-MAR-2007 16:50:28.36
Object Value $Attribute 2 01-MAR-2007 16:50:28.36
Body SysBody 01-MAR-2007 16:51:29.73
Body SysBody 01-MAR-2007 16:51:29.73
Attr PgmName = "Value"
Attr PgmName = "Value"
Attr TypeRef = "pwrs:Type-$Float32"
Attr TypeRef = "pwrs:Type-$Float32"
EndBody
EndBody
EndObject
EndObject
Object HighEU $Attribute 4 05-MAR-2007 13:47:07.23
Body SysBody 05-MAR-2007 13:47:24.75
Attr TypeRef = "pwrs:Type-$Float64"
EndBody
EndObject
Object LowEU $Attribute 5 05-MAR-2007 13:47:49.35
Body SysBody 05-MAR-2007 13:47:45.28
Attr TypeRef = "pwrs:Type-$Float64"
EndBody
EndObject
Object HighIR $Attribute 6 05-MAR-2007 13:48:07.66
Body SysBody 05-MAR-2007 13:48:12.29
Attr TypeRef = "pwrs:Type-$Float64"
EndBody
EndObject
Object LowIR $Attribute 7 05-MAR-2007 13:48:24.95
Body SysBody 05-MAR-2007 13:48:28.48
Attr TypeRef = "pwrs:Type-$Float64"
EndBody
EndObject
Object EngineeringUnits $Attribute 8 05-MAR-2007 13:49:08.68
Body SysBody 05-MAR-2007 13:49:27.27
Attr TypeRef = "pwrs:Type-$String16"
EndBody
EndObject
EndObject
EndObject
Object Template Opc_Float 2152431616 01-JAN-1970 01:00:00.00
Object Template Opc_Float 2152431616 01-JAN-1970 01:00:00.00
Body RtBody 01-JAN-1970 01:00:00.00
Body RtBody 01-JAN-1970 01:00:00.00
...
@@ -103,14 +258,45 @@ Volume Opc $ClassVolume 0.0.250.9
...
@@ -103,14 +258,45 @@ Volume Opc $ClassVolume 0.0.250.9
Object RtBody $ObjBodyDef 1 01-MAR-2007 16:50:28.21
Object RtBody $ObjBodyDef 1 01-MAR-2007 16:50:28.21
Body SysBody 01-MAR-2007 16:50:28.21
Body SysBody 01-MAR-2007 16:50:28.21
Attr StructName = "Opc_Double"
Attr StructName = "Opc_Double"
Attr NextAix = "_X
3
"
Attr NextAix = "_X
9
"
EndBody
EndBody
Object Description $Attribute 3 05-MAR-2007 13:45:19.21
Body SysBody 05-MAR-2007 13:45:19.21
Attr PgmName = "Description"
Attr TypeRef = "pwrs:Type-$String80"
EndBody
EndObject
Object Value $Attribute 2 01-MAR-2007 16:50:28.21
Object Value $Attribute 2 01-MAR-2007 16:50:28.21
Body SysBody 01-MAR-2007 16:52:07.62
Body SysBody 01-MAR-2007 16:52:07.62
Attr PgmName = "Value"
Attr PgmName = "Value"
Attr TypeRef = "pwrs:Type-$Float64"
Attr TypeRef = "pwrs:Type-$Float64"
EndBody
EndBody
EndObject
EndObject
Object HighEU $Attribute 4 05-MAR-2007 13:51:23.71
Body SysBody 05-MAR-2007 13:51:23.71
Attr TypeRef = "pwrs:Type-$Float64"
EndBody
EndObject
Object LowEU $Attribute 5 05-MAR-2007 13:51:23.71
Body SysBody 05-MAR-2007 13:51:23.71
Attr TypeRef = "pwrs:Type-$Float64"
EndBody
EndObject
Object HighIR $Attribute 6 05-MAR-2007 13:51:23.71
Body SysBody 05-MAR-2007 13:51:23.71
Attr TypeRef = "pwrs:Type-$Float64"
EndBody
EndObject
Object LowIR $Attribute 7 05-MAR-2007 13:51:23.71
Body SysBody 05-MAR-2007 13:51:23.71
Attr TypeRef = "pwrs:Type-$Float64"
EndBody
EndObject
Object EngineeringUnits $Attribute 8 05-MAR-2007 13:51:23.71
Body SysBody 05-MAR-2007 13:51:23.71
Attr TypeRef = "pwrs:Type-$String16"
EndBody
EndObject
EndObject
EndObject
Object Template Opc_Double 2152169472 01-JAN-1970 01:00:00.00
Object Template Opc_Double 2152169472 01-JAN-1970 01:00:00.00
Body RtBody 01-JAN-1970 01:00:00.00
Body RtBody 01-JAN-1970 01:00:00.00
...
@@ -126,14 +312,45 @@ Volume Opc $ClassVolume 0.0.250.9
...
@@ -126,14 +312,45 @@ Volume Opc $ClassVolume 0.0.250.9
Object RtBody $ObjBodyDef 1 01-MAR-2007 16:50:28.06
Object RtBody $ObjBodyDef 1 01-MAR-2007 16:50:28.06
Body SysBody 01-MAR-2007 16:50:28.06
Body SysBody 01-MAR-2007 16:50:28.06
Attr StructName = "Opc_Decimal"
Attr StructName = "Opc_Decimal"
Attr NextAix = "_X
3
"
Attr NextAix = "_X
9
"
EndBody
EndBody
Object Description $Attribute 3 05-MAR-2007 13:45:24.10
Body SysBody 05-MAR-2007 13:45:24.10
Attr PgmName = "Description"
Attr TypeRef = "pwrs:Type-$String80"
EndBody
EndObject
Object Value $Attribute 2 01-MAR-2007 16:50:28.06
Object Value $Attribute 2 01-MAR-2007 16:50:28.06
Body SysBody 01-MAR-2007 16:52:37.40
Body SysBody 01-MAR-2007 16:52:37.40
Attr PgmName = "Value"
Attr PgmName = "Value"
Attr TypeRef = "pwrs:Type-$Float32"
Attr TypeRef = "pwrs:Type-$Float32"
EndBody
EndBody
EndObject
EndObject
Object HighEU $Attribute 4 05-MAR-2007 13:51:28.14
Body SysBody 05-MAR-2007 13:51:28.14
Attr TypeRef = "pwrs:Type-$Float64"
EndBody
EndObject
Object LowEU $Attribute 5 05-MAR-2007 13:51:28.14
Body SysBody 05-MAR-2007 13:51:28.14
Attr TypeRef = "pwrs:Type-$Float64"
EndBody
EndObject
Object HighIR $Attribute 6 05-MAR-2007 13:51:28.14
Body SysBody 05-MAR-2007 13:51:28.14
Attr TypeRef = "pwrs:Type-$Float64"
EndBody
EndObject
Object LowIR $Attribute 7 05-MAR-2007 13:51:28.14
Body SysBody 05-MAR-2007 13:51:28.14
Attr TypeRef = "pwrs:Type-$Float64"
EndBody
EndObject
Object EngineeringUnits $Attribute 8 05-MAR-2007 13:51:28.14
Body SysBody 05-MAR-2007 13:51:28.14
Attr TypeRef = "pwrs:Type-$String16"
EndBody
EndObject
EndObject
EndObject
Object Template Opc_Decimal 2151907328 01-JAN-1970 01:00:00.00
Object Template Opc_Decimal 2151907328 01-JAN-1970 01:00:00.00
Body RtBody 01-JAN-1970 01:00:00.00
Body RtBody 01-JAN-1970 01:00:00.00
...
@@ -149,14 +366,45 @@ Volume Opc $ClassVolume 0.0.250.9
...
@@ -149,14 +366,45 @@ Volume Opc $ClassVolume 0.0.250.9
Object RtBody $ObjBodyDef 1 01-MAR-2007 16:50:27.91
Object RtBody $ObjBodyDef 1 01-MAR-2007 16:50:27.91
Body SysBody 01-MAR-2007 16:50:27.91
Body SysBody 01-MAR-2007 16:50:27.91
Attr StructName = "Opc_Long"
Attr StructName = "Opc_Long"
Attr NextAix = "_X
3
"
Attr NextAix = "_X
9
"
EndBody
EndBody
Object Description $Attribute 3 05-MAR-2007 13:45:28.22
Body SysBody 05-MAR-2007 13:45:28.22
Attr PgmName = "Description"
Attr TypeRef = "pwrs:Type-$String80"
EndBody
EndObject
Object Value $Attribute 2 01-MAR-2007 16:50:27.91
Object Value $Attribute 2 01-MAR-2007 16:50:27.91
Body SysBody 01-MAR-2007 16:53:11.79
Body SysBody 01-MAR-2007 16:53:11.79
Attr PgmName = "Value"
Attr PgmName = "Value"
Attr TypeRef = "pwrs:Type-$Int32"
Attr TypeRef = "pwrs:Type-$Int32"
EndBody
EndBody
EndObject
EndObject
Object HighEU $Attribute 4 05-MAR-2007 13:51:31.83
Body SysBody 05-MAR-2007 13:51:31.83
Attr TypeRef = "pwrs:Type-$Float64"
EndBody
EndObject
Object LowEU $Attribute 5 05-MAR-2007 13:51:31.83
Body SysBody 05-MAR-2007 13:51:31.83
Attr TypeRef = "pwrs:Type-$Float64"
EndBody
EndObject
Object HighIR $Attribute 6 05-MAR-2007 13:51:31.83
Body SysBody 05-MAR-2007 13:51:31.83
Attr TypeRef = "pwrs:Type-$Float64"
EndBody
EndObject
Object LowIR $Attribute 7 05-MAR-2007 13:51:31.83
Body SysBody 05-MAR-2007 13:51:31.83
Attr TypeRef = "pwrs:Type-$Float64"
EndBody
EndObject
Object EngineeringUnits $Attribute 8 05-MAR-2007 13:51:31.83
Body SysBody 05-MAR-2007 13:51:31.83
Attr TypeRef = "pwrs:Type-$String16"
EndBody
EndObject
EndObject
EndObject
Object Template Opc_Long 2151645184 01-JAN-1970 01:00:00.00
Object Template Opc_Long 2151645184 01-JAN-1970 01:00:00.00
Body RtBody 01-JAN-1970 01:00:00.00
Body RtBody 01-JAN-1970 01:00:00.00
...
@@ -172,14 +420,45 @@ Volume Opc $ClassVolume 0.0.250.9
...
@@ -172,14 +420,45 @@ Volume Opc $ClassVolume 0.0.250.9
Object RtBody $ObjBodyDef 1 01-MAR-2007 16:50:27.77
Object RtBody $ObjBodyDef 1 01-MAR-2007 16:50:27.77
Body SysBody 01-MAR-2007 16:50:27.77
Body SysBody 01-MAR-2007 16:50:27.77
Attr StructName = "Opc_Int"
Attr StructName = "Opc_Int"
Attr NextAix = "_X
3
"
Attr NextAix = "_X
9
"
EndBody
EndBody
Object Description $Attribute 3 05-MAR-2007 13:45:31.37
Body SysBody 05-MAR-2007 13:45:31.37
Attr PgmName = "Description"
Attr TypeRef = "pwrs:Type-$String80"
EndBody
EndObject
Object Value $Attribute 2 01-MAR-2007 16:50:27.77
Object Value $Attribute 2 01-MAR-2007 16:50:27.77
Body SysBody 01-MAR-2007 16:53:46.18
Body SysBody 01-MAR-2007 16:53:46.18
Attr PgmName = "Value"
Attr PgmName = "Value"
Attr TypeRef = "pwrs:Type-$Int32"
Attr TypeRef = "pwrs:Type-$Int32"
EndBody
EndBody
EndObject
EndObject
Object HighEU $Attribute 4 05-MAR-2007 13:51:36.44
Body SysBody 05-MAR-2007 13:51:36.44
Attr TypeRef = "pwrs:Type-$Float64"
EndBody
EndObject
Object LowEU $Attribute 5 05-MAR-2007 13:51:36.44
Body SysBody 05-MAR-2007 13:51:36.44
Attr TypeRef = "pwrs:Type-$Float64"
EndBody
EndObject
Object HighIR $Attribute 6 05-MAR-2007 13:51:36.44
Body SysBody 05-MAR-2007 13:51:36.44
Attr TypeRef = "pwrs:Type-$Float64"
EndBody
EndObject
Object LowIR $Attribute 7 05-MAR-2007 13:51:36.44
Body SysBody 05-MAR-2007 13:51:36.44
Attr TypeRef = "pwrs:Type-$Float64"
EndBody
EndObject
Object EngineeringUnits $Attribute 8 05-MAR-2007 13:51:36.44
Body SysBody 05-MAR-2007 13:51:36.44
Attr TypeRef = "pwrs:Type-$String16"
EndBody
EndObject
EndObject
EndObject
Object Template Opc_Int 2151383040 01-JAN-1970 01:00:00.00
Object Template Opc_Int 2151383040 01-JAN-1970 01:00:00.00
Body RtBody 01-JAN-1970 01:00:00.00
Body RtBody 01-JAN-1970 01:00:00.00
...
@@ -195,14 +474,45 @@ Volume Opc $ClassVolume 0.0.250.9
...
@@ -195,14 +474,45 @@ Volume Opc $ClassVolume 0.0.250.9
Object RtBody $ObjBodyDef 1 01-MAR-2007 16:50:27.62
Object RtBody $ObjBodyDef 1 01-MAR-2007 16:50:27.62
Body SysBody 01-MAR-2007 16:50:27.62
Body SysBody 01-MAR-2007 16:50:27.62
Attr StructName = "Opc_Short"
Attr StructName = "Opc_Short"
Attr NextAix = "_X
3
"
Attr NextAix = "_X
9
"
EndBody
EndBody
Object Description $Attribute 3 05-MAR-2007 13:45:34.58
Body SysBody 05-MAR-2007 13:45:34.58
Attr PgmName = "Description"
Attr TypeRef = "pwrs:Type-$String80"
EndBody
EndObject
Object Value $Attribute 2 01-MAR-2007 16:50:27.62
Object Value $Attribute 2 01-MAR-2007 16:50:27.62
Body SysBody 01-MAR-2007 16:54:54.38
Body SysBody 01-MAR-2007 16:54:54.38
Attr PgmName = "Value"
Attr PgmName = "Value"
Attr TypeRef = "pwrs:Type-$Int16"
Attr TypeRef = "pwrs:Type-$Int16"
EndBody
EndBody
EndObject
EndObject
Object HighEU $Attribute 4 05-MAR-2007 13:51:40.55
Body SysBody 05-MAR-2007 13:51:40.55
Attr TypeRef = "pwrs:Type-$Float64"
EndBody
EndObject
Object LowEU $Attribute 5 05-MAR-2007 13:51:40.55
Body SysBody 05-MAR-2007 13:51:40.55
Attr TypeRef = "pwrs:Type-$Float64"
EndBody
EndObject
Object HighIR $Attribute 6 05-MAR-2007 13:51:40.55
Body SysBody 05-MAR-2007 13:51:40.55
Attr TypeRef = "pwrs:Type-$Float64"
EndBody
EndObject
Object LowIR $Attribute 7 05-MAR-2007 13:51:40.55
Body SysBody 05-MAR-2007 13:51:40.55
Attr TypeRef = "pwrs:Type-$Float64"
EndBody
EndObject
Object EngineeringUnits $Attribute 8 05-MAR-2007 13:51:40.55
Body SysBody 05-MAR-2007 13:51:40.55
Attr TypeRef = "pwrs:Type-$String16"
EndBody
EndObject
EndObject
EndObject
Object Template Opc_Short 2151120896 01-JAN-1970 01:00:00.00
Object Template Opc_Short 2151120896 01-JAN-1970 01:00:00.00
Body RtBody 01-JAN-1970 01:00:00.00
Body RtBody 01-JAN-1970 01:00:00.00
...
@@ -218,14 +528,45 @@ Volume Opc $ClassVolume 0.0.250.9
...
@@ -218,14 +528,45 @@ Volume Opc $ClassVolume 0.0.250.9
Object RtBody $ObjBodyDef 1 01-MAR-2007 16:50:27.44
Object RtBody $ObjBodyDef 1 01-MAR-2007 16:50:27.44
Body SysBody 01-MAR-2007 16:50:27.44
Body SysBody 01-MAR-2007 16:50:27.44
Attr StructName = "Opc_Byte"
Attr StructName = "Opc_Byte"
Attr NextAix = "_X
3
"
Attr NextAix = "_X
9
"
EndBody
EndBody
Object Description $Attribute 3 05-MAR-2007 13:45:37.39
Body SysBody 05-MAR-2007 13:45:37.39
Attr PgmName = "Description"
Attr TypeRef = "pwrs:Type-$String80"
EndBody
EndObject
Object Value $Attribute 2 01-MAR-2007 16:50:27.44
Object Value $Attribute 2 01-MAR-2007 16:50:27.44
Body SysBody 01-MAR-2007 16:55:12.30
Body SysBody 01-MAR-2007 16:55:12.30
Attr PgmName = "Value"
Attr PgmName = "Value"
Attr TypeRef = "pwrs:Type-$Int8"
Attr TypeRef = "pwrs:Type-$Int8"
EndBody
EndBody
EndObject
EndObject
Object HighEU $Attribute 4 05-MAR-2007 13:51:48.00
Body SysBody 05-MAR-2007 13:51:48.00
Attr TypeRef = "pwrs:Type-$Float64"
EndBody
EndObject
Object LowEU $Attribute 5 05-MAR-2007 13:51:48.00
Body SysBody 05-MAR-2007 13:51:48.00
Attr TypeRef = "pwrs:Type-$Float64"
EndBody
EndObject
Object HighIR $Attribute 6 05-MAR-2007 13:51:48.00
Body SysBody 05-MAR-2007 13:51:48.00
Attr TypeRef = "pwrs:Type-$Float64"
EndBody
EndObject
Object LowIR $Attribute 7 05-MAR-2007 13:51:48.00
Body SysBody 05-MAR-2007 13:51:48.00
Attr TypeRef = "pwrs:Type-$Float64"
EndBody
EndObject
Object EngineeringUnits $Attribute 8 05-MAR-2007 13:51:48.00
Body SysBody 05-MAR-2007 13:51:48.00
Attr TypeRef = "pwrs:Type-$String16"
EndBody
EndObject
EndObject
EndObject
Object Template Opc_Byte 2150858752 01-JAN-1970 01:00:00.00
Object Template Opc_Byte 2150858752 01-JAN-1970 01:00:00.00
Body RtBody 01-JAN-1970 01:00:00.00
Body RtBody 01-JAN-1970 01:00:00.00
...
@@ -241,14 +582,45 @@ Volume Opc $ClassVolume 0.0.250.9
...
@@ -241,14 +582,45 @@ Volume Opc $ClassVolume 0.0.250.9
Object RtBody $ObjBodyDef 1 01-MAR-2007 16:50:27.27
Object RtBody $ObjBodyDef 1 01-MAR-2007 16:50:27.27
Body SysBody 01-MAR-2007 16:50:27.27
Body SysBody 01-MAR-2007 16:50:27.27
Attr StructName = "Opc_UnsignedLong"
Attr StructName = "Opc_UnsignedLong"
Attr NextAix = "_X
3
"
Attr NextAix = "_X
9
"
EndBody
EndBody
Object Description $Attribute 3 05-MAR-2007 13:45:40.10
Body SysBody 05-MAR-2007 13:45:40.10
Attr PgmName = "Description"
Attr TypeRef = "pwrs:Type-$String80"
EndBody
EndObject
Object Value $Attribute 2 01-MAR-2007 16:50:27.27
Object Value $Attribute 2 01-MAR-2007 16:50:27.27
Body SysBody 01-MAR-2007 16:55:57.73
Body SysBody 01-MAR-2007 16:55:57.73
Attr PgmName = "Value"
Attr PgmName = "Value"
Attr TypeRef = "pwrs:Type-$UInt32"
Attr TypeRef = "pwrs:Type-$UInt32"
EndBody
EndBody
EndObject
EndObject
Object HighEU $Attribute 4 05-MAR-2007 13:51:51.24
Body SysBody 05-MAR-2007 13:51:51.24
Attr TypeRef = "pwrs:Type-$Float64"
EndBody
EndObject
Object LowEU $Attribute 5 05-MAR-2007 13:51:51.24
Body SysBody 05-MAR-2007 13:51:51.24
Attr TypeRef = "pwrs:Type-$Float64"
EndBody
EndObject
Object HighIR $Attribute 6 05-MAR-2007 13:51:51.24
Body SysBody 05-MAR-2007 13:51:51.24
Attr TypeRef = "pwrs:Type-$Float64"
EndBody
EndObject
Object LowIR $Attribute 7 05-MAR-2007 13:51:51.24
Body SysBody 05-MAR-2007 13:51:51.24
Attr TypeRef = "pwrs:Type-$Float64"
EndBody
EndObject
Object EngineeringUnits $Attribute 8 05-MAR-2007 13:51:51.24
Body SysBody 05-MAR-2007 13:51:51.24
Attr TypeRef = "pwrs:Type-$String16"
EndBody
EndObject
EndObject
EndObject
Object Template Opc_UnsignedLong 2150596608 01-JAN-1970 01:00:00.00
Object Template Opc_UnsignedLong 2150596608 01-JAN-1970 01:00:00.00
Body RtBody 01-JAN-1970 01:00:00.00
Body RtBody 01-JAN-1970 01:00:00.00
...
@@ -264,14 +636,45 @@ Volume Opc $ClassVolume 0.0.250.9
...
@@ -264,14 +636,45 @@ Volume Opc $ClassVolume 0.0.250.9
Object RtBody $ObjBodyDef 1 01-MAR-2007 16:50:27.07
Object RtBody $ObjBodyDef 1 01-MAR-2007 16:50:27.07
Body SysBody 01-MAR-2007 16:50:27.07
Body SysBody 01-MAR-2007 16:50:27.07
Attr StructName = "Opc_UnsignedInt"
Attr StructName = "Opc_UnsignedInt"
Attr NextAix = "_X
3
"
Attr NextAix = "_X
9
"
EndBody
EndBody
Object Description $Attribute 3 05-MAR-2007 13:45:42.87
Body SysBody 05-MAR-2007 13:45:42.87
Attr PgmName = "Description"
Attr TypeRef = "pwrs:Type-$String80"
EndBody
EndObject
Object Value $Attribute 2 01-MAR-2007 16:50:27.07
Object Value $Attribute 2 01-MAR-2007 16:50:27.07
Body SysBody 01-MAR-2007 16:56:25.07
Body SysBody 01-MAR-2007 16:56:25.07
Attr PgmName = "Value"
Attr PgmName = "Value"
Attr TypeRef = "pwrs:Type-$UInt32"
Attr TypeRef = "pwrs:Type-$UInt32"
EndBody
EndBody
EndObject
EndObject
Object HighEU $Attribute 4 05-MAR-2007 13:51:54.37
Body SysBody 05-MAR-2007 13:51:54.37
Attr TypeRef = "pwrs:Type-$Float64"
EndBody
EndObject
Object LowEU $Attribute 5 05-MAR-2007 13:51:54.37
Body SysBody 05-MAR-2007 13:51:54.37
Attr TypeRef = "pwrs:Type-$Float64"
EndBody
EndObject
Object HighIR $Attribute 6 05-MAR-2007 13:51:54.37
Body SysBody 05-MAR-2007 13:51:54.37
Attr TypeRef = "pwrs:Type-$Float64"
EndBody
EndObject
Object LowIR $Attribute 7 05-MAR-2007 13:51:54.37
Body SysBody 05-MAR-2007 13:51:54.37
Attr TypeRef = "pwrs:Type-$Float64"
EndBody
EndObject
Object EngineeringUnits $Attribute 8 05-MAR-2007 13:51:54.37
Body SysBody 05-MAR-2007 13:51:54.37
Attr TypeRef = "pwrs:Type-$String16"
EndBody
EndObject
EndObject
EndObject
Object Template Opc_UnsignedInt 2150334464 01-JAN-1970 01:00:00.00
Object Template Opc_UnsignedInt 2150334464 01-JAN-1970 01:00:00.00
Body RtBody 01-JAN-1970 01:00:00.00
Body RtBody 01-JAN-1970 01:00:00.00
...
@@ -287,14 +690,45 @@ Volume Opc $ClassVolume 0.0.250.9
...
@@ -287,14 +690,45 @@ Volume Opc $ClassVolume 0.0.250.9
Object RtBody $ObjBodyDef 1 01-MAR-2007 16:50:25.68
Object RtBody $ObjBodyDef 1 01-MAR-2007 16:50:25.68
Body SysBody 01-MAR-2007 16:50:25.68
Body SysBody 01-MAR-2007 16:50:25.68
Attr StructName = "Opc_UnsignedShort"
Attr StructName = "Opc_UnsignedShort"
Attr NextAix = "_X
3
"
Attr NextAix = "_X
9
"
EndBody
EndBody
Object Description $Attribute 3 05-MAR-2007 13:45:51.52
Body SysBody 05-MAR-2007 13:45:51.52
Attr PgmName = "Description"
Attr TypeRef = "pwrs:Type-$String80"
EndBody
EndObject
Object Value $Attribute 2 01-MAR-2007 16:50:25.68
Object Value $Attribute 2 01-MAR-2007 16:50:25.68
Body SysBody 01-MAR-2007 16:56:51.26
Body SysBody 01-MAR-2007 16:56:51.26
Attr PgmName = "Value"
Attr PgmName = "Value"
Attr TypeRef = "pwrs:Type-$UInt16"
Attr TypeRef = "pwrs:Type-$UInt16"
EndBody
EndBody
EndObject
EndObject
Object HighEU $Attribute 4 05-MAR-2007 13:51:59.01
Body SysBody 05-MAR-2007 13:51:59.01
Attr TypeRef = "pwrs:Type-$Float64"
EndBody
EndObject
Object LowEU $Attribute 5 05-MAR-2007 13:51:59.01
Body SysBody 05-MAR-2007 13:51:59.01
Attr TypeRef = "pwrs:Type-$Float64"
EndBody
EndObject
Object HighIR $Attribute 6 05-MAR-2007 13:51:59.01
Body SysBody 05-MAR-2007 13:51:59.01
Attr TypeRef = "pwrs:Type-$Float64"
EndBody
EndObject
Object LowIR $Attribute 7 05-MAR-2007 13:51:59.01
Body SysBody 05-MAR-2007 13:51:59.01
Attr TypeRef = "pwrs:Type-$Float64"
EndBody
EndObject
Object EngineeringUnits $Attribute 8 05-MAR-2007 13:51:59.01
Body SysBody 05-MAR-2007 13:51:59.01
Attr TypeRef = "pwrs:Type-$String16"
EndBody
EndObject
EndObject
EndObject
Object Template Opc_UnsignedShort 2150072320 01-JAN-1970 01:00:00.00
Object Template Opc_UnsignedShort 2150072320 01-JAN-1970 01:00:00.00
Body RtBody 01-JAN-1970 01:00:00.00
Body RtBody 01-JAN-1970 01:00:00.00
...
@@ -310,14 +744,45 @@ Volume Opc $ClassVolume 0.0.250.9
...
@@ -310,14 +744,45 @@ Volume Opc $ClassVolume 0.0.250.9
Object RtBody $ObjBodyDef 1 01-MAR-2007 16:50:25.44
Object RtBody $ObjBodyDef 1 01-MAR-2007 16:50:25.44
Body SysBody 01-MAR-2007 16:50:25.44
Body SysBody 01-MAR-2007 16:50:25.44
Attr StructName = "Opc_UnsignedByte"
Attr StructName = "Opc_UnsignedByte"
Attr NextAix = "_X
3
"
Attr NextAix = "_X
9
"
EndBody
EndBody
Object Description $Attribute 3 05-MAR-2007 13:45:54.72
Body SysBody 05-MAR-2007 13:45:54.72
Attr PgmName = "Description"
Attr TypeRef = "pwrs:Type-$String80"
EndBody
EndObject
Object Value $Attribute 2 01-MAR-2007 16:50:25.44
Object Value $Attribute 2 01-MAR-2007 16:50:25.44
Body SysBody 01-MAR-2007 16:57:15.03
Body SysBody 01-MAR-2007 16:57:15.03
Attr PgmName = "Value"
Attr PgmName = "Value"
Attr TypeRef = "pwrs:Type-$UInt8"
Attr TypeRef = "pwrs:Type-$UInt8"
EndBody
EndBody
EndObject
EndObject
Object HighEU $Attribute 4 05-MAR-2007 13:52:02.66
Body SysBody 05-MAR-2007 13:52:02.66
Attr TypeRef = "pwrs:Type-$Float64"
EndBody
EndObject
Object LowEU $Attribute 5 05-MAR-2007 13:52:02.66
Body SysBody 05-MAR-2007 13:52:02.66
Attr TypeRef = "pwrs:Type-$Float64"
EndBody
EndObject
Object HighIR $Attribute 6 05-MAR-2007 13:52:02.66
Body SysBody 05-MAR-2007 13:52:02.66
Attr TypeRef = "pwrs:Type-$Float64"
EndBody
EndObject
Object LowIR $Attribute 7 05-MAR-2007 13:52:02.66
Body SysBody 05-MAR-2007 13:52:02.66
Attr TypeRef = "pwrs:Type-$Float64"
EndBody
EndObject
Object EngineeringUnits $Attribute 8 05-MAR-2007 13:52:02.66
Body SysBody 05-MAR-2007 13:52:02.66
Attr TypeRef = "pwrs:Type-$String16"
EndBody
EndObject
EndObject
EndObject
Object Template Opc_UnsignedByte 2149810176 01-JAN-1970 01:00:00.00
Object Template Opc_UnsignedByte 2149810176 01-JAN-1970 01:00:00.00
Body RtBody 01-JAN-1970 01:00:00.00
Body RtBody 01-JAN-1970 01:00:00.00
...
@@ -333,8 +798,14 @@ Volume Opc $ClassVolume 0.0.250.9
...
@@ -333,8 +798,14 @@ Volume Opc $ClassVolume 0.0.250.9
Object RtBody $ObjBodyDef 1 01-MAR-2007 17:01:17.11
Object RtBody $ObjBodyDef 1 01-MAR-2007 17:01:17.11
Body SysBody 01-MAR-2007 17:01:17.11
Body SysBody 01-MAR-2007 17:01:17.11
Attr StructName = "Opc_Base64Binary"
Attr StructName = "Opc_Base64Binary"
Attr NextAix = "_X
3
"
Attr NextAix = "_X
4
"
EndBody
EndBody
Object Description $Attribute 3 05-MAR-2007 13:45:57.15
Body SysBody 05-MAR-2007 13:45:57.15
Attr PgmName = "Description"
Attr TypeRef = "pwrs:Type-$String80"
EndBody
EndObject
Object Value $Attribute 2 01-MAR-2007 17:01:17.11
Object Value $Attribute 2 01-MAR-2007 17:01:17.11
Body SysBody 01-MAR-2007 17:01:47.78
Body SysBody 01-MAR-2007 17:01:47.78
Attr PgmName = "Value"
Attr PgmName = "Value"
...
@@ -356,8 +827,14 @@ Volume Opc $ClassVolume 0.0.250.9
...
@@ -356,8 +827,14 @@ Volume Opc $ClassVolume 0.0.250.9
Object RtBody $ObjBodyDef 1 01-MAR-2007 16:50:25.22
Object RtBody $ObjBodyDef 1 01-MAR-2007 16:50:25.22
Body SysBody 01-MAR-2007 16:50:25.22
Body SysBody 01-MAR-2007 16:50:25.22
Attr StructName = "Opc_DateTime"
Attr StructName = "Opc_DateTime"
Attr NextAix = "_X
3
"
Attr NextAix = "_X
4
"
EndBody
EndBody
Object Description $Attribute 3 05-MAR-2007 13:46:00.31
Body SysBody 05-MAR-2007 13:46:00.31
Attr PgmName = "Description"
Attr TypeRef = "pwrs:Type-$String80"
EndBody
EndObject
Object Value $Attribute 2 01-MAR-2007 16:50:25.22
Object Value $Attribute 2 01-MAR-2007 16:50:25.22
Body SysBody 01-MAR-2007 16:58:37.27
Body SysBody 01-MAR-2007 16:58:37.27
Attr PgmName = "Value"
Attr PgmName = "Value"
...
@@ -379,8 +856,14 @@ Volume Opc $ClassVolume 0.0.250.9
...
@@ -379,8 +856,14 @@ Volume Opc $ClassVolume 0.0.250.9
Object RtBody $ObjBodyDef 1 01-MAR-2007 16:50:25.00
Object RtBody $ObjBodyDef 1 01-MAR-2007 16:50:25.00
Body SysBody 01-MAR-2007 16:50:25.00
Body SysBody 01-MAR-2007 16:50:25.00
Attr StructName = "Opc_Time"
Attr StructName = "Opc_Time"
Attr NextAix = "_X
3
"
Attr NextAix = "_X
4
"
EndBody
EndBody
Object Description $Attribute 3 05-MAR-2007 13:46:03.34
Body SysBody 05-MAR-2007 13:46:03.34
Attr PgmName = "Description"
Attr TypeRef = "pwrs:Type-$String80"
EndBody
EndObject
Object Value $Attribute 2 01-MAR-2007 16:50:25.00
Object Value $Attribute 2 01-MAR-2007 16:50:25.00
Body SysBody 01-MAR-2007 16:59:03.22
Body SysBody 01-MAR-2007 16:59:03.22
Attr PgmName = "Value"
Attr PgmName = "Value"
...
@@ -402,8 +885,14 @@ Volume Opc $ClassVolume 0.0.250.9
...
@@ -402,8 +885,14 @@ Volume Opc $ClassVolume 0.0.250.9
Object RtBody $ObjBodyDef 1 01-MAR-2007 16:50:24.78
Object RtBody $ObjBodyDef 1 01-MAR-2007 16:50:24.78
Body SysBody 01-MAR-2007 16:50:24.78
Body SysBody 01-MAR-2007 16:50:24.78
Attr StructName = "Opc_Date"
Attr StructName = "Opc_Date"
Attr NextAix = "_X
3
"
Attr NextAix = "_X
4
"
EndBody
EndBody
Object Description $Attribute 3 05-MAR-2007 13:46:06.10
Body SysBody 05-MAR-2007 13:46:06.10
Attr PgmName = "Description"
Attr TypeRef = "pwrs:Type-$String80"
EndBody
EndObject
Object Value $Attribute 2 01-MAR-2007 16:50:24.78
Object Value $Attribute 2 01-MAR-2007 16:50:24.78
Body SysBody 01-MAR-2007 16:59:19.57
Body SysBody 01-MAR-2007 16:59:19.57
Attr PgmName = "Value"
Attr PgmName = "Value"
...
@@ -425,8 +914,14 @@ Volume Opc $ClassVolume 0.0.250.9
...
@@ -425,8 +914,14 @@ Volume Opc $ClassVolume 0.0.250.9
Object RtBody $ObjBodyDef 1 01-MAR-2007 16:50:24.50
Object RtBody $ObjBodyDef 1 01-MAR-2007 16:50:24.50
Body SysBody 01-MAR-2007 16:50:24.50
Body SysBody 01-MAR-2007 16:50:24.50
Attr StructName = "Opc_Duration"
Attr StructName = "Opc_Duration"
Attr NextAix = "_X
3
"
Attr NextAix = "_X
4
"
EndBody
EndBody
Object Description $Attribute 3 05-MAR-2007 13:46:09.90
Body SysBody 05-MAR-2007 13:46:09.90
Attr PgmName = "Description"
Attr TypeRef = "pwrs:Type-$String80"
EndBody
EndObject
Object Value $Attribute 2 01-MAR-2007 16:50:24.50
Object Value $Attribute 2 01-MAR-2007 16:50:24.50
Body SysBody 01-MAR-2007 16:59:42.13
Body SysBody 01-MAR-2007 16:59:42.13
Attr PgmName = "Value"
Attr PgmName = "Value"
...
@@ -448,8 +943,14 @@ Volume Opc $ClassVolume 0.0.250.9
...
@@ -448,8 +943,14 @@ Volume Opc $ClassVolume 0.0.250.9
Object RtBody $ObjBodyDef 1 01-MAR-2007 16:50:22.30
Object RtBody $ObjBodyDef 1 01-MAR-2007 16:50:22.30
Body SysBody 01-MAR-2007 16:50:22.30
Body SysBody 01-MAR-2007 16:50:22.30
Attr StructName = "Opc_QName"
Attr StructName = "Opc_QName"
Attr NextAix = "_X
3
"
Attr NextAix = "_X
4
"
EndBody
EndBody
Object Description $Attribute 3 05-MAR-2007 13:46:12.59
Body SysBody 05-MAR-2007 13:46:12.59
Attr PgmName = "Description"
Attr TypeRef = "pwrs:Type-$String80"
EndBody
EndObject
Object Value $Attribute 2 01-MAR-2007 16:50:22.30
Object Value $Attribute 2 01-MAR-2007 16:50:22.30
Body SysBody 01-MAR-2007 17:00:54.92
Body SysBody 01-MAR-2007 17:00:54.92
Attr PgmName = "Value"
Attr PgmName = "Value"
...
@@ -471,12 +972,26 @@ Volume Opc $ClassVolume 0.0.250.9
...
@@ -471,12 +972,26 @@ Volume Opc $ClassVolume 0.0.250.9
Object RtBody $ObjBodyDef 1 01-MAR-2007 17:02:58.07
Object RtBody $ObjBodyDef 1 01-MAR-2007 17:02:58.07
Body SysBody 01-MAR-2007 17:02:58.07
Body SysBody 01-MAR-2007 17:02:58.07
Attr StructName = "Opc_ServerConfig"
Attr StructName = "Opc_ServerConfig"
Attr NextAix = "_X
2
"
Attr NextAix = "_X
4
"
EndBody
EndBody
Object Access $Attribute 1 01-MAR-2007 17:03:37.18
Object Description $Attribute 2 05-MAR-2007 13:33:10.56
Body SysBody 01-MAR-2007 17:03:49.47
Body SysBody 05-MAR-2007 13:33:20.61
Attr PgmName = "Access"
Attr PgmName = "Description"
Attr TypeRef = "pwrs:Type-$Mask"
Attr TypeRef = "pwrs:Type-$String80"
EndBody
EndObject
Object Port $Attribute 3 05-MAR-2007 13:34:44.55
Body SysBody 05-MAR-2007 13:34:56.97
Attr PgmName = "Port"
Attr TypeRef = "pwrs:Type-$UInt32"
EndBody
EndObject
Object ClientAccess $Attribute 1 05-MAR-2007 13:33:32.49
Body SysBody 05-MAR-2007 13:33:35.01
Attr PgmName = "ClientAccess"
Attr Flags = 131074
Attr Elements = 20
Attr TypeRef = "Opc:Class-Opc_ClientAccess"
EndBody
EndBody
EndObject
EndObject
EndObject
EndObject
...
@@ -485,5 +1000,52 @@ Volume Opc $ClassVolume 0.0.250.9
...
@@ -485,5 +1000,52 @@ Volume Opc $ClassVolume 0.0.250.9
EndBody
EndBody
EndObject
EndObject
EndObject
EndObject
Object Opc_ServerState $ClassDef 22 02-MAR-2007 14:49:50.99
Body SysBody 02-MAR-2007 14:49:26.55
Attr Editor = 0
Attr Method = 0
Attr Flags = 16
EndBody
Object RtBody $ObjBodyDef 1 02-MAR-2007 14:49:57.91
Body SysBody 02-MAR-2007 14:49:57.91
Attr StructName = "Opc_ServerState"
Attr NextAix = "_X6"
EndBody
Object Server $Attribute 1 02-MAR-2007 14:50:39.12
Body SysBody 02-MAR-2007 14:50:19.42
Attr PgmName = "Server"
Attr TypeRef = "pwrs:Type-$URL"
EndBody
EndObject
Object VendorInfo $Attribute 2 02-MAR-2007 14:51:34.94
Body SysBody 02-MAR-2007 14:51:44.69
Attr PgmName = "VendorInfo"
Attr TypeRef = "pwrs:Type-$String80"
EndBody
EndObject
Object ProductVersion $Attribute 3 02-MAR-2007 14:52:12.84
Body SysBody 02-MAR-2007 14:52:16.47
Attr PgmName = "ProductVersion"
Attr TypeRef = "pwrs:Type-$String80"
EndBody
EndObject
Object StartTime $Attribute 4 02-MAR-2007 14:52:55.61
Body SysBody 02-MAR-2007 14:53:02.41
Attr PgmName = "StartTime"
Attr TypeRef = "pwrs:Type-$Time"
EndBody
EndObject
Object ServerState $Attribute 5 02-MAR-2007 14:54:30.98
Body SysBody 02-MAR-2007 14:54:38.95
Attr PgmName = "ServerState"
Attr TypeRef = "Opc:Type-Opc_ServerStateEnum"
EndBody
EndObject
EndObject
Object Template Opc_ServerState 2153480192 01-JAN-1970 01:00:00.00
Body RtBody 01-JAN-1970 01:00:00.00
EndBody
EndObject
EndObject
EndObject
EndObject
EndVolume
EndVolume
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