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
Show 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.
*
* This program is free software; you can redistribute it and/or
...
...
@@ -34,6 +34,7 @@
#include "co_cdh.h"
#include "co_dcli.h"
#include "pwr_opcclasses.h"
#include "opc_utl.h"
#include "opc_soap_H.h"
#include "Service.nsmap"
...
...
@@ -57,107 +58,112 @@ void opc_provider::insert_object( pwr_tOix fth, pwr_tOix bws, ns1__BrowseElement
int
first
,
int
last
,
int
load_children
)
{
procom_obj
o
;
char
*
valp
;
strcpy
(
o
.
name
,
element
->
Name
->
c_str
());
o
.
oix
=
next_oix
++
;
o
.
fthoix
=
fth
;
if
(
!
element
->
IsItem
)
{
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
{
if
(
element
->
Properties
.
size
()
&&
element
->
Properties
[
0
]
->
Name
==
"dataType"
)
{
if
(
strcmp
(
element
->
Properties
[
0
]
->
Value
,
"string"
)
==
0
)
{
if
(
opc_get_property
(
element
->
Properties
,
opc_mProperty_DataType
,
&
valp
))
{
if
(
strcmp
(
valp
,
"string"
)
==
0
)
{
o
.
cid
=
pwr_cClass_Opc_String
;
o
.
body_size
=
sizeof
(
pwr_sClass_Opc_String
);
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
.
body_size
=
sizeof
(
pwr_sClass_Opc_Boolean
);
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
.
body_size
=
sizeof
(
pwr_sClass_Opc_Float
);
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
.
body_size
=
sizeof
(
pwr_sClass_Opc_Double
);
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
.
body_size
=
sizeof
(
pwr_sClass_Opc_Double
);
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
.
body_size
=
sizeof
(
pwr_sClass_Opc_Decimal
);
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
.
body_size
=
sizeof
(
pwr_sClass_Opc_Int
);
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
.
body_size
=
sizeof
(
pwr_sClass_Opc_Short
);
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
.
body_size
=
sizeof
(
pwr_sClass_Opc_Byte
);
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
.
body_size
=
sizeof
(
pwr_sClass_Opc_UnsignedLong
);
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
.
body_size
=
sizeof
(
pwr_sClass_Opc_UnsignedInt
);
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
.
body_size
=
sizeof
(
pwr_sClass_Opc_UnsignedShort
);
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
.
body_size
=
sizeof
(
pwr_sClass_Opc_UnsignedByte
);
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
.
body_size
=
sizeof
(
pwr_sClass_Opc_Base64Binary
);
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
.
body_size
=
sizeof
(
pwr_sClass_Opc_DateTime
);
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
.
body_size
=
sizeof
(
pwr_sClass_Opc_Time
);
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
.
body_size
=
sizeof
(
pwr_sClass_Opc_Date
);
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
.
body_size
=
sizeof
(
pwr_sClass_Opc_Duration
);
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
.
body_size
=
sizeof
(
pwr_sClass_Opc_QName
);
o
.
body
=
calloc
(
1
,
o
.
body_size
);
...
...
@@ -165,6 +171,11 @@ void opc_provider::insert_object( pwr_tOix fth, pwr_tOix bws, ns1__BrowseElement
}
else
{
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
)
...
...
@@ -195,11 +206,9 @@ void opc_provider::insert_object( pwr_tOix fth, pwr_tOix bws, ns1__BrowseElement
_ns1__Browse
browse
;
_ns1__BrowseResponse
browse_response
;
if
(
fth
!=
0
)
browse
.
ItemPath
=
new
std
::
string
(
longname
(
fth
));
browse
.
ItemName
=
new
std
::
string
(
o
.
name
);
std
::
string
s
(
"dataType"
);
browse
.
PropertyNames
.
push_back
(
s
);
browse
.
ItemName
=
new
std
::
string
(
longname
(
o
.
oix
));
opc_mask_to_propertynames
(
browse
.
PropertyNames
,
opc_mProperty_DataType
|
opc_mProperty_Description
);
if
(
soap_call___ns1__Browse
(
&
soap
,
opc_endpoint
,
NULL
,
&
browse
,
&
browse_response
)
==
SOAP_OK
)
{
...
...
@@ -229,20 +238,36 @@ void opc_provider::objectOid( co_procom *pcom, pwr_tOix oix)
vo
.
flags
|=
procom_obj_mFlags_Loaded
;
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
_ns1__Browse
browse
;
_ns1__BrowseResponse
browse_response
;
std
::
string
s
(
"dataType"
);
browse
.
PropertyNames
.
push_back
(
s
);
opc_mask_to_propertynames
(
browse
.
PropertyNames
,
opc_mProperty_DataType
|
opc_mProperty_Description
);
if
(
soap_call___ns1__Browse
(
&
soap
,
opc_endpoint
,
NULL
,
&
browse
,
&
browse_response
)
==
SOAP_OK
)
{
pwr_tOix
bws
=
0
;
pwr_tOix
bws
=
so
.
oix
;
pwr_tOix
next_bws
;
for
(
int
i
=
0
;
i
<
(
int
)
browse_response
.
Elements
.
size
();
i
++
)
{
next_bws
=
next_oix
;
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
;
}
}
...
...
@@ -254,10 +279,9 @@ void opc_provider::objectOid( co_procom *pcom, pwr_tOix oix)
_ns1__Browse
browse
;
_ns1__BrowseResponse
browse_response
;
browse
.
ItemPath
=
new
std
::
string
(
longname
(
m_list
[
oix
].
fthoix
));
browse
.
ItemName
=
new
std
::
string
(
m_list
[
oix
].
name
);
std
::
string
s
(
"dataType"
);
browse
.
PropertyNames
.
push_back
(
s
);
browse
.
ItemName
=
new
std
::
string
(
longname
(
oix
));
opc_mask_to_propertynames
(
browse
.
PropertyNames
,
opc_mProperty_DataType
|
opc_mProperty_Description
);
if
(
soap_call___ns1__Browse
(
&
soap
,
opc_endpoint
,
NULL
,
&
browse
,
&
browse_response
)
==
SOAP_OK
)
{
...
...
@@ -458,6 +482,27 @@ bool opc_provider::find( pwr_tOix fthoix, char *name, pwr_tOix *oix)
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
()
{
...
...
@@ -515,10 +560,13 @@ int main(int argc, char *argv[])
0
);
// Global
procom
.
init
();
strcpy
(
provider
.
server_state
.
Server
,
server_url
);
// provider.nodeUp();
soap_init
(
&
provider
.
soap
);
provider
.
get_server_state
();
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.
*
* This program is free software; you can redistribute it and/or
...
...
@@ -22,12 +22,15 @@
#include "co_provider.h"
#include "co_procom.h"
#include "pwr_opcclasses.h"
#include "opc_soap_H.h"
class
opc_provider
:
public
co_provider
{
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
objectOid
(
co_procom
*
pcom
,
pwr_tOix
oix
);
virtual
void
objectName
(
co_procom
*
pcom
,
char
*
name
);
...
...
@@ -61,10 +64,13 @@ public:
void
insert_object
(
pwr_tOix
fth
,
pwr_tOix
bws
,
ns1__BrowseElement
*
element
,
int
first
,
int
last
,
int
load_children
);
void
get_server_state
();
vector
<
procom_obj
>
m_list
;
pwr_tOix
root
;
pwr_tOix
next_oix
;
struct
soap
soap
;
pwr_sClass_Opc_ServerState
server_state
;
};
#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.
*
* This program is free software; you can redistribute it and/or
...
...
@@ -17,58 +17,29 @@
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#include <net/if.h>
#include <net/if_arp.h>
#include "pwr.h"
#include "pwr_version.h"
#include "pwr_baseclasses.h"
#include "pwr_opcclasses.h"
#include "co_cdh.h"
#include "rt_gdh.h"
#include "opc_utl.h"
#include "opc_soap_H.h"
#include "Service.nsmap"
static
bool
opc_type_to_string
(
int
type
,
char
**
str
)
{
*
str
=
(
char
*
)
malloc
(
20
);
switch
(
type
)
{
case
pwr_eType_String
:
strcpy
(
*
str
,
"string"
);
break
;
case
pwr_eType_Float32
:
strcpy
(
*
str
,
"float"
);
break
;
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
;
}
typedef
struct
{
int
address
;
int
access
;
}
opc_sClientAccess
;
static
pwr_tTime
opc_start_time
;
static
pwr_sClass_Opc_ServerConfig
*
opc_config
;
static
opc_sClientAccess
opc_client_access
[
20
];
static
int
opc_client_access_cnt
=
0
;
static
int
opc_current_access
;
int
main
()
...
...
@@ -82,6 +53,45 @@ int main()
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
);
m
=
soap_bind
(
&
soap
,
NULL
,
18083
,
100
);
if
(
m
<
0
)
...
...
@@ -130,6 +140,10 @@ SOAP_FMAC5 int SOAP_FMAC6 __ns1__GetStatus(struct soap*,
ns1__GetStatusResponse
->
Status
=
new
ns1__ServerStatus
();
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
;
}
...
...
@@ -168,13 +182,342 @@ SOAP_FMAC5 int SOAP_FMAC6 __ns1__SubscriptionCancel(struct soap*,
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
)
{
pwr_tStatus
sts
;
pwr_tOid
oid
,
child
,
ch
;
pwr_tOName
name
;
pwr_tCid
cid
;
unsigned
int
property_mask
;
opc_current_access
=
opcsrv_get_access
(
so
);
if
(
(
!
ns1__Browse
->
ItemName
||
ns1__Browse
->
ItemName
->
empty
())
&&
(
!
ns1__Browse
->
ItemPath
||
ns1__Browse
->
ItemPath
->
empty
()))
{
...
...
@@ -189,43 +532,53 @@ SOAP_FMAC5 int SOAP_FMAC6 __ns1__Browse(struct soap*, _ns1__Browse *ns1__Browse,
ns1__BrowseElement
*
element
=
new
ns1__BrowseElement
();
element
->
Name
=
new
std
::
string
(
name
);
element
->
ItemName
=
element
->
Name
;
element
->
IsItem
=
(
cid
==
pwr_eClass_PlantHier
||
cid
==
pwr_eClass_NodeHier
)
?
true
:
false
;
element
->
HasChildren
=
ODD
(
gdh_GetChild
(
oid
,
&
ch
))
?
true
:
false
;
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
;
for
(
int
i
=
0
;
i
<
(
int
)
ns1__Browse
->
PropertyNames
.
size
();
i
++
)
{
ns1__ItemProperty
*
property
=
new
ns1__ItemProperty
();
property
->
Name
=
ns1__Browse
->
PropertyNames
[
i
];
opc_propertynames_to_mask
(
ns1__Browse
->
PropertyNames
,
&
property_mask
);
if
(
property
->
Name
==
"
\"\"
:dataType"
)
{
property
->
Value
=
(
char
*
)
malloc
(
6
);
strcpy
(
property
->
Value
,
"float"
);
}
element
->
Properties
.
push_back
(
property
);
}
pwr_tAttrRef
aref
=
cdh_ObjidToAref
(
oid
);
opcsrv_get_properties
(
false
,
cid
,
0
,
&
aref
,
property_mask
,
0
,
element
->
Properties
);
ns1__BrowseResponse
->
Elements
.
push_back
(
element
);
}
}
else
{
// Return attributes and children
pwr_tOName
pname
;
pwr_tOName
itemname
;
gdh_sAttrDef
*
bd
;
int
rows
;
pwr_sAttrRef
paref
;
pwr_sAttrRef
aref
;
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
())
{
strcat
(
itemname
,
"-"
);
strcat
(
itemname
,
ns1__Browse
->
ItemName
->
c_str
());
strcat
(
pname
,
ns1__Browse
->
ItemName
->
c_str
());
}
}
else
strncpy
(
itemname
,
ns1__Browse
->
ItemName
->
c_str
(),
sizeof
(
item
name
));
strncpy
(
pname
,
ns1__Browse
->
ItemName
->
c_str
(),
sizeof
(
p
name
));
sts
=
gdh_NameTo
Objid
(
itemname
,
&
oid
);
sts
=
gdh_NameTo
Attrref
(
pwr_cNOid
,
pname
,
&
paref
);
if
(
EVEN
(
sts
))
{
return
0
;
}
sts
=
gdh_GetAttrRefTid
(
&
paref
,
&
cid
);
if
(
EVEN
(
sts
))
{
return
0
;
}
if
(
!
cdh_tidIsCid
(
cid
))
{
return
0
;
}
sts
=
gdh_GetObjectBodyDef
(
cid
,
&
bd
,
&
rows
,
oid
);
if
(
ODD
(
sts
))
{
...
...
@@ -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
)
continue
;
sts
=
gdh_ArefANameToAref
(
&
paref
,
bd
[
i
].
attrName
,
&
aref
);
if
(
EVEN
(
sts
))
return
sts
;
if
(
bd
[
i
].
attr
->
Param
.
Info
.
Flags
&
PWR_MASK_DISABLEATTR
)
{
pwr_sAttrRef
aref
=
cdh_ObjidToAref
(
oid
);
pwr_sAttrRef
aaref
;
pwr_tDisableAttr
disabled
;
sts
=
gdh_ArefANameToAref
(
&
aref
,
bd
[
i
].
attrName
,
&
aaref
);
if
(
EVEN
(
sts
))
return
sts
;
sts
=
gdh_ArefDisabled
(
&
aaref
,
&
disabled
);
sts
=
gdh_ArefDisabled
(
&
aref
,
&
disabled
);
if
(
EVEN
(
sts
))
return
sts
;
if
(
disabled
)
...
...
@@ -264,37 +615,30 @@ SOAP_FMAC5 int SOAP_FMAC6 __ns1__Browse(struct soap*, _ns1__Browse *ns1__Browse,
ns1__BrowseElement
*
element
=
new
ns1__BrowseElement
();
element
->
Name
=
new
std
::
string
(
bd
[
i
].
attrName
);
element
->
ItemName
=
element
->
Name
;
element
->
ItemPath
=
new
std
::
string
(
itemname
);
strcpy
(
itemname
,
pname
);
strcat
(
itemname
,
"."
);
strcat
(
itemname
,
bd
[
i
].
attrName
);
element
->
ItemName
=
new
std
::
string
(
itemname
);
element
->
IsItem
=
true
;
element
->
HasChildren
=
false
;
for
(
int
i
=
0
;
i
<
(
int
)
ns1__Browse
->
PropertyNames
.
size
();
i
++
)
{
ns1__ItemProperty
*
property
=
new
ns1__ItemProperty
();
property
->
Name
=
ns1__Browse
->
PropertyNames
[
i
];
opc_propertynames_to_mask
(
ns1__Browse
->
PropertyNames
,
&
property_mask
);
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
);
}
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
);
}
for
(
sts
=
gdh_GetChild
(
oid
,
&
child
);
ODD
(
sts
);
sts
=
gdh_GetNextSibling
(
child
,
&
child
))
{
if
(
paref
.
Flags
.
b
.
Object
)
{
for
(
sts
=
gdh_GetChild
(
paref
.
Objid
,
&
child
);
ODD
(
sts
);
sts
=
gdh_GetNextSibling
(
child
,
&
child
))
{
sts
=
gdh_ObjidToName
(
child
,
name
,
sizeof
(
name
),
cdh_mName_object
);
if
(
EVEN
(
sts
))
continue
;
...
...
@@ -304,13 +648,28 @@ SOAP_FMAC5 int SOAP_FMAC6 __ns1__Browse(struct soap*, _ns1__Browse *ns1__Browse,
ns1__BrowseElement
*
element
=
new
ns1__BrowseElement
();
element
->
Name
=
new
std
::
string
(
name
);
element
->
ItemName
=
element
->
Name
;
element
->
ItemPath
=
new
std
::
string
(
itemname
);
element
->
IsItem
=
(
cid
==
pwr_eClass_PlantHier
||
cid
==
pwr_eClass_NodeHier
)
?
true
:
false
;
strcpy
(
itemname
,
pname
);
strcat
(
itemname
,
"-"
);
strcat
(
itemname
,
name
);
element
->
ItemName
=
new
std
::
string
(
itemname
);
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
;
}
...
...
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
if (((ns1__ItemProperty *)a)->ResultID)
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_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 */
soap_element_end_out(soap, tag);
return SOAP_OK;
...
...
@@ -6407,6 +6409,8 @@ 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_inliteral(soap, "ns1:Value", &(((ns1__ItemProperty*)a)->Value)))
{ soap_flag_Value1--;
/* !! Extract type !! */
strcpy( ((ns1__ItemValue*)a)->ValueType, soap->type);
continue;
}
/* transient soap skipped */
...
...
@@ -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_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_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), "");
/* transient soap skipped */
soap_element_end_out(soap, tag);
...
...
@@ -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_inliteral(soap, "ns1:Value", &(((ns1__ItemValue*)a)->Value)))
{ soap_flag_Value1--;
/* !! Extract type !! */
strcpy( ((ns1__ItemValue*)a)->ValueType, soap->type);
continue;
}
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
public:
std
::
string
*
DiagnosticInfo
;
/* optional element of type xsd:string */
char
*
Value
;
/* optional element of type xsd:anyType */
char
ValueType
[
80
];
/* !! Value type added !! */
class
ns1__OPCQuality
*
Quality
;
/* optional element of type ns1:OPCQuality */
std
::
string
*
ValueTypeQualifier
;
/* optional attribute */
std
::
string
*
ItemPath
;
/* optional attribute */
...
...
@@ -752,6 +753,7 @@ class SOAP_CMAC ns1__ItemProperty
{
public:
char
*
Value
;
/* optional element of type xsd:anyType */
char
ValueType
[
80
];
/* !! Added to insert value type !! */
std
::
string
Name
;
/* required attribute */
std
::
string
*
Description
;
/* 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.
*
* This program is free software; you can redistribute it and/or
...
...
@@ -22,6 +22,24 @@
#include "opc_utl.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
//
...
...
@@ -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
)
{
if
(
mask
&
opc_mProperty_DataType
)
pnames
.
push_back
(
std
::
string
(
"dataName"
));
if
(
mask
&
opc_mProperty_Value
)
pnames
.
push_back
(
std
::
string
(
"value"
));
if
(
mask
&
opc_mProperty_Quality
)
pnames
.
push_back
(
std
::
string
(
"quality"
));
if
(
mask
&
opc_mProperty_Timestamp
)
pnames
.
push_back
(
std
::
string
(
"timestamp"
));
if
(
mask
&
opc_mProperty_ScanRate
)
pnames
.
push_back
(
std
::
string
(
"scanRate"
));
if
(
mask
&
opc_mProperty_EuType
)
pnames
.
push_back
(
std
::
string
(
"euType"
));
if
(
mask
&
opc_mProperty_EuInfo
)
pnames
.
push_back
(
std
::
string
(
"euInfo"
));
if
(
mask
&
opc_mProperty_EngineeringUnits
)
pnames
.
push_back
(
std
::
string
(
"engineeringUnits"
));
if
(
mask
&
opc_mProperty_Description
)
pnames
.
push_back
(
std
::
string
(
"description"
));
if
(
mask
&
opc_mProperty_HighEU
)
pnames
.
push_back
(
std
::
string
(
"highEU"
));
if
(
mask
&
opc_mProperty_LowEU
)
pnames
.
push_back
(
std
::
string
(
"lowEU"
));
if
(
mask
&
opc_mProperty_HighIR
)
pnames
.
push_back
(
std
::
string
(
"highIR"
));
if
(
mask
&
opc_mProperty_LowIR
)
pnames
.
push_back
(
std
::
string
(
"lowIR"
));
if
(
mask
&
opc_mProperty_CloseLabel
)
pnames
.
push_back
(
std
::
string
(
"closeLabel"
));
if
(
mask
&
opc_mProperty_OpenLabel
)
pnames
.
push_back
(
std
::
string
(
"openLabel"
));
if
(
mask
&
opc_mProperty_TimeZone
)
pnames
.
push_back
(
std
::
string
(
"timeZone"
));
unsigned
int
m
;
for
(
int
i
=
0
;
i
<
opc_cPropertySize
;
i
++
)
{
m
=
1
<<
i
;
if
(
mask
&
m
)
pnames
.
push_back
(
std
::
string
(
opc_PropertyNames
[
i
]));
}
}
bool
opc_get_property
(
std
::
vector
<
ns1__ItemProperty
*>
properties
,
unsigned
int
mask
,
char
**
valp
)
{
char
name
[
80
];
char
*
s
;
int
idx
=
-
1
;
for
(
int
i
=
0
;
i
<
opc_cPropertySize
;
i
++
)
{
if
(
(
unsigned
int
)(
1
<<
i
)
==
mask
)
{
idx
=
i
;
break
;
}
}
if
(
idx
==
-
1
)
return
false
;
for
(
int
i
=
0
;
i
<
(
int
)
properties
.
size
();
i
++
)
{
strcpy
(
name
,
properties
[
i
]
->
Name
.
c_str
());
if
(
(
s
=
strrchr
(
name
,
':'
)))
s
++
;
else
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
)
...
...
@@ -215,3 +242,62 @@ bool opc_propertynames_to_mask( std::vector<std::string>& pnames, unsigned int *
}
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.
*
* This program is free software; you can redistribute it and/or
...
...
@@ -20,26 +20,37 @@
#include <vector.h>
#include <string.h>
#include "pwr.h"
#include "opc_soap_Stub.h"
const
int
opc_cPropertySize
=
17
;
typedef
enum
{
opc_mProperty_DataType
=
1
<<
0
,
opc_mProperty_Value
=
1
<<
1
,
opc_mProperty_Quality
=
1
<<
2
,
opc_mProperty_Timestamp
=
1
<<
3
,
opc_mProperty_ScanRate
=
1
<<
4
,
opc_mProperty_EuType
=
1
<<
5
,
opc_mProperty_EuInfo
=
1
<<
6
,
opc_mProperty_EngineeringUnits
=
1
<<
7
,
opc_mProperty_Description
=
1
<<
8
,
opc_mProperty_HighEU
=
1
<<
9
,
opc_mProperty_LowEU
=
1
<<
10
,
opc_mProperty_HighIR
=
1
<<
11
,
opc_mProperty_LowIR
=
1
<<
12
,
opc_mProperty_CloseLabel
=
1
<<
13
,
opc_mProperty_OpenLabel
=
1
<<
14
,
opc_mProperty_TimeZone
=
1
<<
15
opc_mProperty_AccessRights
=
1
<<
4
,
opc_mProperty_ScanRate
=
1
<<
5
,
opc_mProperty_EuType
=
1
<<
6
,
opc_mProperty_EuInfo
=
1
<<
7
,
opc_mProperty_EngineeringUnits
=
1
<<
8
,
opc_mProperty_Description
=
1
<<
9
,
opc_mProperty_HighEU
=
1
<<
10
,
opc_mProperty_LowEU
=
1
<<
11
,
opc_mProperty_HighIR
=
1
<<
12
,
opc_mProperty_LowIR
=
1
<<
13
,
opc_mProperty_CloseLabel
=
1
<<
14
,
opc_mProperty_OpenLabel
=
1
<<
15
,
opc_mProperty_TimeZone
=
1
<<
16
}
opc_mProperty
;
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
);
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
Body SysBody 01-JAN-1970 01:00:00.00
Attr NextOix = "_X1"
Attr NextCix = "_X22"
Attr NextOix = "_X12"
Attr NextCix = "_X24"
Attr NextTix[0] = "_X3"
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
Body SysBody 01-MAR-2007 16:47:58.95
Attr Editor = 0
...
...
@@ -13,8 +118,15 @@ Volume Opc $ClassVolume 0.0.250.9
Object RtBody $ObjBodyDef 1 01-MAR-2007 18:05:06.28
Body SysBody 01-MAR-2007 18:05:06.28
Attr StructName = "Opc_Hier"
Attr NextAix = "_X2"
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
Object Template Opc_Hier 2147975168 01-JAN-1970 01:00:00.00
Body RtBody 01-JAN-1970 01:00:00.00
EndBody
...
...
@@ -34,8 +146,14 @@ Volume Opc $ClassVolume 0.0.250.9
Object RtBody $ObjBodyDef 1 01-MAR-2007 16:49:33.17
Body SysBody 01-MAR-2007 16:49:33.17
Attr StructName = "Opc_String"
Attr NextAix = "_X2"
Attr NextAix = "_X3"
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
Body SysBody 01-MAR-2007 16:49:54.49
Attr PgmName = "Value"
...
...
@@ -57,8 +175,14 @@ Volume Opc $ClassVolume 0.0.250.9
Object RtBody $ObjBodyDef 1 01-MAR-2007 16:50:28.50
Body SysBody 01-MAR-2007 16:50:28.50
Attr StructName = "Opc_Boolean"
Attr NextAix = "_X
3
"
Attr NextAix = "_X
4
"
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
Body SysBody 01-MAR-2007 16:50:51.77
Attr PgmName = "Value"
...
...
@@ -80,14 +204,45 @@ Volume Opc $ClassVolume 0.0.250.9
Object RtBody $ObjBodyDef 1 01-MAR-2007 16:50:28.36
Body SysBody 01-MAR-2007 16:50:28.36
Attr StructName = "Opc_Float"
Attr NextAix = "_X
3
"
Attr NextAix = "_X
9
"
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
Body SysBody 01-MAR-2007 16:51:29.73
Attr PgmName = "Value"
Attr TypeRef = "pwrs:Type-$Float32"
EndBody
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
Object Template Opc_Float 2152431616 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
Object RtBody $ObjBodyDef 1 01-MAR-2007 16:50:28.21
Body SysBody 01-MAR-2007 16:50:28.21
Attr StructName = "Opc_Double"
Attr NextAix = "_X3"
Attr NextAix = "_X9"
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
Body SysBody 01-MAR-2007 16:52:07.62
Attr PgmName = "Value"
Attr TypeRef = "pwrs:Type-$Float64"
EndBody
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
Object Template Opc_Double 2152169472 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
Object RtBody $ObjBodyDef 1 01-MAR-2007 16:50:28.06
Body SysBody 01-MAR-2007 16:50:28.06
Attr StructName = "Opc_Decimal"
Attr NextAix = "_X
3
"
Attr NextAix = "_X
9
"
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
Body SysBody 01-MAR-2007 16:52:37.40
Attr PgmName = "Value"
Attr TypeRef = "pwrs:Type-$Float32"
EndBody
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
Object Template Opc_Decimal 2151907328 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
Object RtBody $ObjBodyDef 1 01-MAR-2007 16:50:27.91
Body SysBody 01-MAR-2007 16:50:27.91
Attr StructName = "Opc_Long"
Attr NextAix = "_X3"
Attr NextAix = "_X9"
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
Body SysBody 01-MAR-2007 16:53:11.79
Attr PgmName = "Value"
Attr TypeRef = "pwrs:Type-$Int32"
EndBody
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
Object Template Opc_Long 2151645184 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
Object RtBody $ObjBodyDef 1 01-MAR-2007 16:50:27.77
Body SysBody 01-MAR-2007 16:50:27.77
Attr StructName = "Opc_Int"
Attr NextAix = "_X
3
"
Attr NextAix = "_X
9
"
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
Body SysBody 01-MAR-2007 16:53:46.18
Attr PgmName = "Value"
Attr TypeRef = "pwrs:Type-$Int32"
EndBody
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
Object Template Opc_Int 2151383040 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
Object RtBody $ObjBodyDef 1 01-MAR-2007 16:50:27.62
Body SysBody 01-MAR-2007 16:50:27.62
Attr StructName = "Opc_Short"
Attr NextAix = "_X
3
"
Attr NextAix = "_X
9
"
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
Body SysBody 01-MAR-2007 16:54:54.38
Attr PgmName = "Value"
Attr TypeRef = "pwrs:Type-$Int16"
EndBody
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
Object Template Opc_Short 2151120896 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
Object RtBody $ObjBodyDef 1 01-MAR-2007 16:50:27.44
Body SysBody 01-MAR-2007 16:50:27.44
Attr StructName = "Opc_Byte"
Attr NextAix = "_X3"
Attr NextAix = "_X9"
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
Body SysBody 01-MAR-2007 16:55:12.30
Attr PgmName = "Value"
Attr TypeRef = "pwrs:Type-$Int8"
EndBody
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
Object Template Opc_Byte 2150858752 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
Object RtBody $ObjBodyDef 1 01-MAR-2007 16:50:27.27
Body SysBody 01-MAR-2007 16:50:27.27
Attr StructName = "Opc_UnsignedLong"
Attr NextAix = "_X
3
"
Attr NextAix = "_X
9
"
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
Body SysBody 01-MAR-2007 16:55:57.73
Attr PgmName = "Value"
Attr TypeRef = "pwrs:Type-$UInt32"
EndBody
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
Object Template Opc_UnsignedLong 2150596608 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
Object RtBody $ObjBodyDef 1 01-MAR-2007 16:50:27.07
Body SysBody 01-MAR-2007 16:50:27.07
Attr StructName = "Opc_UnsignedInt"
Attr NextAix = "_X3"
Attr NextAix = "_X9"
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
Body SysBody 01-MAR-2007 16:56:25.07
Attr PgmName = "Value"
Attr TypeRef = "pwrs:Type-$UInt32"
EndBody
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
Object Template Opc_UnsignedInt 2150334464 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
Object RtBody $ObjBodyDef 1 01-MAR-2007 16:50:25.68
Body SysBody 01-MAR-2007 16:50:25.68
Attr StructName = "Opc_UnsignedShort"
Attr NextAix = "_X
3
"
Attr NextAix = "_X
9
"
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
Body SysBody 01-MAR-2007 16:56:51.26
Attr PgmName = "Value"
Attr TypeRef = "pwrs:Type-$UInt16"
EndBody
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
Object Template Opc_UnsignedShort 2150072320 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
Object RtBody $ObjBodyDef 1 01-MAR-2007 16:50:25.44
Body SysBody 01-MAR-2007 16:50:25.44
Attr StructName = "Opc_UnsignedByte"
Attr NextAix = "_X3"
Attr NextAix = "_X9"
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
Body SysBody 01-MAR-2007 16:57:15.03
Attr PgmName = "Value"
Attr TypeRef = "pwrs:Type-$UInt8"
EndBody
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
Object Template Opc_UnsignedByte 2149810176 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
Object RtBody $ObjBodyDef 1 01-MAR-2007 17:01:17.11
Body SysBody 01-MAR-2007 17:01:17.11
Attr StructName = "Opc_Base64Binary"
Attr NextAix = "_X3"
Attr NextAix = "_X4"
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
Body SysBody 01-MAR-2007 17:01:47.78
Attr PgmName = "Value"
...
...
@@ -356,8 +827,14 @@ Volume Opc $ClassVolume 0.0.250.9
Object RtBody $ObjBodyDef 1 01-MAR-2007 16:50:25.22
Body SysBody 01-MAR-2007 16:50:25.22
Attr StructName = "Opc_DateTime"
Attr NextAix = "_X
3
"
Attr NextAix = "_X
4
"
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
Body SysBody 01-MAR-2007 16:58:37.27
Attr PgmName = "Value"
...
...
@@ -379,8 +856,14 @@ Volume Opc $ClassVolume 0.0.250.9
Object RtBody $ObjBodyDef 1 01-MAR-2007 16:50:25.00
Body SysBody 01-MAR-2007 16:50:25.00
Attr StructName = "Opc_Time"
Attr NextAix = "_X3"
Attr NextAix = "_X4"
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
Body SysBody 01-MAR-2007 16:59:03.22
Attr PgmName = "Value"
...
...
@@ -402,8 +885,14 @@ Volume Opc $ClassVolume 0.0.250.9
Object RtBody $ObjBodyDef 1 01-MAR-2007 16:50:24.78
Body SysBody 01-MAR-2007 16:50:24.78
Attr StructName = "Opc_Date"
Attr NextAix = "_X
3
"
Attr NextAix = "_X
4
"
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
Body SysBody 01-MAR-2007 16:59:19.57
Attr PgmName = "Value"
...
...
@@ -425,8 +914,14 @@ Volume Opc $ClassVolume 0.0.250.9
Object RtBody $ObjBodyDef 1 01-MAR-2007 16:50:24.50
Body SysBody 01-MAR-2007 16:50:24.50
Attr StructName = "Opc_Duration"
Attr NextAix = "_X
3
"
Attr NextAix = "_X
4
"
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
Body SysBody 01-MAR-2007 16:59:42.13
Attr PgmName = "Value"
...
...
@@ -448,8 +943,14 @@ Volume Opc $ClassVolume 0.0.250.9
Object RtBody $ObjBodyDef 1 01-MAR-2007 16:50:22.30
Body SysBody 01-MAR-2007 16:50:22.30
Attr StructName = "Opc_QName"
Attr NextAix = "_X3"
Attr NextAix = "_X4"
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
Body SysBody 01-MAR-2007 17:00:54.92
Attr PgmName = "Value"
...
...
@@ -471,12 +972,26 @@ Volume Opc $ClassVolume 0.0.250.9
Object RtBody $ObjBodyDef 1 01-MAR-2007 17:02:58.07
Body SysBody 01-MAR-2007 17:02:58.07
Attr StructName = "Opc_ServerConfig"
Attr NextAix = "_X
2
"
Attr NextAix = "_X
4
"
EndBody
Object Access $Attribute 1 01-MAR-2007 17:03:37.18
Body SysBody 01-MAR-2007 17:03:49.47
Attr PgmName = "Access"
Attr TypeRef = "pwrs:Type-$Mask"
Object Description $Attribute 2 05-MAR-2007 13:33:10.56
Body SysBody 05-MAR-2007 13:33:20.61
Attr PgmName = "Description"
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
EndObject
EndObject
...
...
@@ -485,5 +1000,52 @@ Volume Opc $ClassVolume 0.0.250.9
EndBody
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
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