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
b3c63919
Commit
b3c63919
authored
Mar 27, 2007
by
claes
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
*** empty log message ***
parent
61abe767
Changes
6
Show whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
1379 additions
and
338 deletions
+1379
-338
opc/exe/opc_provider/src/opc_provider.cpp
opc/exe/opc_provider/src/opc_provider.cpp
+350
-259
opc/exe/opc_provider/src/opc_provider.h
opc/exe/opc_provider/src/opc_provider.h
+11
-4
opc/exe/opc_server/src/opc_server.cpp
opc/exe/opc_server/src/opc_server.cpp
+162
-69
opc/lib/opc/src/opc_msg.h
opc/lib/opc/src/opc_msg.h
+6
-0
opc/lib/opc/src/opc_utl.h
opc/lib/opc/src/opc_utl.h
+2
-1
opc/wbl/mcomp/src/opc.wb_load
opc/wbl/mcomp/src/opc.wb_load
+848
-5
No files found.
opc/exe/opc_provider/src/opc_provider.cpp
View file @
b3c63919
/*
* Proview $Id: opc_provider.cpp,v 1.
8 2007-03-23 08:19:45
claes Exp $
* Proview $Id: opc_provider.cpp,v 1.
9 2007-03-27 08:37:50
claes Exp $
* Copyright (C) 2005 SSAB Oxelsund AB.
*
* This program is free software; you can redistribute it and/or
...
...
@@ -50,40 +50,59 @@ static char opc_endpoint[256];
// Wb only
void
opc_provider
::
object
(
co_procom
*
pcom
)
{
if
(
m_list
.
size
()
<=
1
||
m_list
[
0
]
.
po
.
fchoix
==
0
)
{
if
(
m_list
.
size
()
<=
1
||
m_list
[
0
]
->
po
.
fchoix
==
0
)
{
pcom
->
provideObject
(
LDH__NOSUCHOBJ
,
0
,
0
,
0
,
0
,
0
,
0
,
0
,
""
,
""
);
return
;
}
objectOid
(
pcom
,
m_list
[
0
].
po
.
fchoix
);
objectOid
(
pcom
,
m_list
[
0
]
->
po
.
fchoix
);
}
void
opc_provider
::
fault
()
{
int
code
;
const
char
*
c
,
**
d
;
d
=
soap_faultcode
(
&
soap
);
if
(
!*
d
)
soap_set_fault
(
&
soap
);
c
=
*
d
;
if
(
!
opc_string_to_resultcode
(
(
char
*
)
c
,
&
code
))
code
=
pwr_eOpc_ResultCodeEnum_Unknown
;
server_state
->
LastError
=
code
;
server_state
->
ErrorRequestCnt
=
server_state
->
RequestCnt
;
if
(
1
)
soap_print_fault
(
&
soap
,
stderr
);
}
void
opc_provider
::
insert_object
(
pwr_tOix
fth
,
pwr_tOix
bws
,
s0__BrowseElement
*
element
,
int
first
,
int
last
,
int
load_children
,
std
::
string
*
path
)
{
opcprv_obj
o
;
opcprv_obj
*
o
=
new
opcprv_obj
()
;
xsd__anyType
*
valp
;
int
opctype
;
strcpy
(
o
.
po
.
name
,
name_to_objectname
(
(
char
*
)
element
->
Name
->
c_str
()));
strcpy
(
o
->
po
.
name
,
name_to_objectname
(
(
char
*
)
element
->
Name
->
c_str
()));
if
(
element
->
ItemPath
)
path
=
element
->
ItemPath
;
if
(
path
)
{
strcpy
(
o
.
item_name
,
path
->
c_str
());
strcat
(
o
.
item_name
,
element
->
ItemName
->
c_str
());
strcpy
(
o
->
item_name
,
path
->
c_str
());
strcat
(
o
->
item_name
,
element
->
ItemName
->
c_str
());
}
else
strcpy
(
o
.
item_name
,
element
->
ItemName
->
c_str
());
strcpy
(
o
->
item_name
,
element
->
ItemName
->
c_str
());
o
.
po
.
oix
=
next_oix
++
;
o
.
po
.
fthoix
=
fth
;
o
->
po
.
oix
=
next_oix
++
;
o
->
po
.
fthoix
=
fth
;
if
(
!
element
->
IsItem
)
{
o
.
po
.
cid
=
pwr_cClass_Opc_Hier
;
o
.
po
.
body_size
=
sizeof
(
pwr_sClass_Opc_Hier
);
o
.
po
.
body
=
calloc
(
1
,
o
.
po
.
body_size
);
o
->
po
.
cid
=
pwr_cClass_Opc_Hier
;
o
->
po
.
body_size
=
sizeof
(
pwr_sClass_Opc_Hier
);
o
->
po
.
body
=
calloc
(
1
,
o
->
po
.
body_size
);
if
(
opc_get_property
(
element
->
Properties
,
opc_mProperty_Description
,
&
valp
))
strncpy
(
((
pwr_sClass_Opc_Hier
*
)
o
.
po
.
body
)
->
Description
,
strncpy
(
((
pwr_sClass_Opc_Hier
*
)
o
->
po
.
body
)
->
Description
,
((
xsd__string
*
)
valp
)
->
__item
.
c_str
(),
sizeof
(((
pwr_sClass_Opc_Hier
*
)
o
.
po
.
body
)
->
Description
));
sizeof
(((
pwr_sClass_Opc_Hier
*
)
o
->
po
.
body
)
->
Description
));
}
else
{
if
(
opc_get_property
(
element
->
Properties
,
opc_mProperty_DataType
,
&
valp
))
{
...
...
@@ -92,235 +111,235 @@ void opc_provider::insert_object( pwr_tOix fth, pwr_tOix bws, s0__BrowseElement
switch
(
opctype
)
{
case
opc_eDataType_string
:
o
.
po
.
cid
=
pwr_cClass_Opc_String
;
o
.
po
.
body_size
=
sizeof
(
pwr_sClass_Opc_String
);
o
.
po
.
body
=
calloc
(
1
,
o
.
po
.
body_size
);
o
.
type
=
pwr_eType_String
;
o
.
size
=
sizeof
(
pwr_tString80
);
o
->
po
.
cid
=
pwr_cClass_Opc_String
;
o
->
po
.
body_size
=
sizeof
(
pwr_sClass_Opc_String
);
o
->
po
.
body
=
calloc
(
1
,
o
->
po
.
body_size
);
o
->
type
=
pwr_eType_String
;
o
->
size
=
sizeof
(
pwr_tString80
);
break
;
case
opc_eDataType_boolean
:
o
.
po
.
cid
=
pwr_cClass_Opc_Boolean
;
o
.
po
.
body_size
=
sizeof
(
pwr_sClass_Opc_Boolean
);
o
.
po
.
body
=
calloc
(
1
,
o
.
po
.
body_size
);
o
.
type
=
pwr_eType_Boolean
;
o
.
size
=
sizeof
(
pwr_tBoolean
);
o
->
po
.
cid
=
pwr_cClass_Opc_Boolean
;
o
->
po
.
body_size
=
sizeof
(
pwr_sClass_Opc_Boolean
);
o
->
po
.
body
=
calloc
(
1
,
o
->
po
.
body_size
);
o
->
type
=
pwr_eType_Boolean
;
o
->
size
=
sizeof
(
pwr_tBoolean
);
break
;
case
opc_eDataType_float
:
o
.
po
.
cid
=
pwr_cClass_Opc_Float
;
o
.
po
.
body_size
=
sizeof
(
pwr_sClass_Opc_Float
);
o
.
po
.
body
=
calloc
(
1
,
o
.
po
.
body_size
);
o
.
type
=
pwr_eType_Float32
;
o
.
size
=
sizeof
(
pwr_tFloat32
);
((
pwr_sClass_Opc_Float
*
)
o
.
po
.
body
)
->
HighEU
=
100
;
o
->
po
.
cid
=
pwr_cClass_Opc_Float
;
o
->
po
.
body_size
=
sizeof
(
pwr_sClass_Opc_Float
);
o
->
po
.
body
=
calloc
(
1
,
o
->
po
.
body_size
);
o
->
type
=
pwr_eType_Float32
;
o
->
size
=
sizeof
(
pwr_tFloat32
);
((
pwr_sClass_Opc_Float
*
)
o
->
po
.
body
)
->
HighEU
=
100
;
break
;
case
opc_eDataType_double
:
o
.
po
.
cid
=
pwr_cClass_Opc_Double
;
o
.
po
.
body_size
=
sizeof
(
pwr_sClass_Opc_Double
);
o
.
po
.
body
=
calloc
(
1
,
o
.
po
.
body_size
);
o
.
type
=
pwr_eType_Float64
;
o
.
size
=
sizeof
(
pwr_tFloat64
);
((
pwr_sClass_Opc_Double
*
)
o
.
po
.
body
)
->
HighEU
=
100
;
o
->
po
.
cid
=
pwr_cClass_Opc_Double
;
o
->
po
.
body_size
=
sizeof
(
pwr_sClass_Opc_Double
);
o
->
po
.
body
=
calloc
(
1
,
o
->
po
.
body_size
);
o
->
type
=
pwr_eType_Float64
;
o
->
size
=
sizeof
(
pwr_tFloat64
);
((
pwr_sClass_Opc_Double
*
)
o
->
po
.
body
)
->
HighEU
=
100
;
break
;
case
opc_eDataType_decimal
:
o
.
po
.
cid
=
pwr_cClass_Opc_Decimal
;
o
.
po
.
body_size
=
sizeof
(
pwr_sClass_Opc_Decimal
);
o
.
po
.
body
=
calloc
(
1
,
o
.
po
.
body_size
);
o
.
type
=
pwr_eType_Float32
;
o
.
size
=
sizeof
(
pwr_tFloat32
);
((
pwr_sClass_Opc_Decimal
*
)
o
.
po
.
body
)
->
HighEU
=
100
;
o
->
po
.
cid
=
pwr_cClass_Opc_Decimal
;
o
->
po
.
body_size
=
sizeof
(
pwr_sClass_Opc_Decimal
);
o
->
po
.
body
=
calloc
(
1
,
o
->
po
.
body_size
);
o
->
type
=
pwr_eType_Float32
;
o
->
size
=
sizeof
(
pwr_tFloat32
);
((
pwr_sClass_Opc_Decimal
*
)
o
->
po
.
body
)
->
HighEU
=
100
;
break
;
case
opc_eDataType_long
:
o
.
po
.
cid
=
pwr_cClass_Opc_Long
;
o
.
po
.
body_size
=
sizeof
(
pwr_sClass_Opc_Long
);
o
.
po
.
body
=
calloc
(
1
,
o
.
po
.
body_size
);
o
.
type
=
pwr_eType_Int32
;
o
.
size
=
sizeof
(
pwr_tInt32
);
((
pwr_sClass_Opc_Long
*
)
o
.
po
.
body
)
->
HighEU
=
100
;
o
->
po
.
cid
=
pwr_cClass_Opc_Long
;
o
->
po
.
body_size
=
sizeof
(
pwr_sClass_Opc_Long
);
o
->
po
.
body
=
calloc
(
1
,
o
->
po
.
body_size
);
o
->
type
=
pwr_eType_Int32
;
o
->
size
=
sizeof
(
pwr_tInt32
);
((
pwr_sClass_Opc_Long
*
)
o
->
po
.
body
)
->
HighEU
=
100
;
break
;
case
opc_eDataType_int
:
o
.
po
.
cid
=
pwr_cClass_Opc_Int
;
o
.
po
.
body_size
=
sizeof
(
pwr_sClass_Opc_Int
);
o
.
po
.
body
=
calloc
(
1
,
o
.
po
.
body_size
);
o
.
type
=
pwr_eType_Int32
;
o
.
size
=
sizeof
(
pwr_tInt32
);
((
pwr_sClass_Opc_Int
*
)
o
.
po
.
body
)
->
HighEU
=
100
;
o
->
po
.
cid
=
pwr_cClass_Opc_Int
;
o
->
po
.
body_size
=
sizeof
(
pwr_sClass_Opc_Int
);
o
->
po
.
body
=
calloc
(
1
,
o
->
po
.
body_size
);
o
->
type
=
pwr_eType_Int32
;
o
->
size
=
sizeof
(
pwr_tInt32
);
((
pwr_sClass_Opc_Int
*
)
o
->
po
.
body
)
->
HighEU
=
100
;
break
;
case
opc_eDataType_short
:
o
.
po
.
cid
=
pwr_cClass_Opc_Short
;
o
.
po
.
body_size
=
sizeof
(
pwr_sClass_Opc_Short
);
o
.
po
.
body
=
calloc
(
1
,
o
.
po
.
body_size
);
o
.
type
=
pwr_eType_Int16
;
o
.
size
=
sizeof
(
pwr_tInt16
);
((
pwr_sClass_Opc_Short
*
)
o
.
po
.
body
)
->
HighEU
=
100
;
o
->
po
.
cid
=
pwr_cClass_Opc_Short
;
o
->
po
.
body_size
=
sizeof
(
pwr_sClass_Opc_Short
);
o
->
po
.
body
=
calloc
(
1
,
o
->
po
.
body_size
);
o
->
type
=
pwr_eType_Int16
;
o
->
size
=
sizeof
(
pwr_tInt16
);
((
pwr_sClass_Opc_Short
*
)
o
->
po
.
body
)
->
HighEU
=
100
;
break
;
case
opc_eDataType_byte
:
o
.
po
.
cid
=
pwr_cClass_Opc_Byte
;
o
.
po
.
body_size
=
sizeof
(
pwr_sClass_Opc_Byte
);
o
.
po
.
body
=
calloc
(
1
,
o
.
po
.
body_size
);
o
.
type
=
pwr_eType_Int8
;
o
.
size
=
sizeof
(
pwr_tInt8
);
((
pwr_sClass_Opc_Byte
*
)
o
.
po
.
body
)
->
HighEU
=
100
;
o
->
po
.
cid
=
pwr_cClass_Opc_Byte
;
o
->
po
.
body_size
=
sizeof
(
pwr_sClass_Opc_Byte
);
o
->
po
.
body
=
calloc
(
1
,
o
->
po
.
body_size
);
o
->
type
=
pwr_eType_Int8
;
o
->
size
=
sizeof
(
pwr_tInt8
);
((
pwr_sClass_Opc_Byte
*
)
o
->
po
.
body
)
->
HighEU
=
100
;
break
;
case
opc_eDataType_unsignedLong
:
o
.
po
.
cid
=
pwr_cClass_Opc_UnsignedLong
;
o
.
po
.
body_size
=
sizeof
(
pwr_sClass_Opc_UnsignedLong
);
o
.
po
.
body
=
calloc
(
1
,
o
.
po
.
body_size
);
o
.
type
=
pwr_eType_UInt32
;
o
.
size
=
sizeof
(
pwr_tUInt32
);
((
pwr_sClass_Opc_UnsignedLong
*
)
o
.
po
.
body
)
->
HighEU
=
100
;
o
->
po
.
cid
=
pwr_cClass_Opc_UnsignedLong
;
o
->
po
.
body_size
=
sizeof
(
pwr_sClass_Opc_UnsignedLong
);
o
->
po
.
body
=
calloc
(
1
,
o
->
po
.
body_size
);
o
->
type
=
pwr_eType_UInt32
;
o
->
size
=
sizeof
(
pwr_tUInt32
);
((
pwr_sClass_Opc_UnsignedLong
*
)
o
->
po
.
body
)
->
HighEU
=
100
;
break
;
case
opc_eDataType_unsignedInt
:
o
.
po
.
cid
=
pwr_cClass_Opc_UnsignedInt
;
o
.
po
.
body_size
=
sizeof
(
pwr_sClass_Opc_UnsignedInt
);
o
.
po
.
body
=
calloc
(
1
,
o
.
po
.
body_size
);
o
.
type
=
pwr_eType_UInt32
;
o
.
size
=
sizeof
(
pwr_tUInt32
);
((
pwr_sClass_Opc_UnsignedInt
*
)
o
.
po
.
body
)
->
HighEU
=
100
;
o
->
po
.
cid
=
pwr_cClass_Opc_UnsignedInt
;
o
->
po
.
body_size
=
sizeof
(
pwr_sClass_Opc_UnsignedInt
);
o
->
po
.
body
=
calloc
(
1
,
o
->
po
.
body_size
);
o
->
type
=
pwr_eType_UInt32
;
o
->
size
=
sizeof
(
pwr_tUInt32
);
((
pwr_sClass_Opc_UnsignedInt
*
)
o
->
po
.
body
)
->
HighEU
=
100
;
break
;
case
opc_eDataType_unsignedShort
:
o
.
po
.
cid
=
pwr_cClass_Opc_UnsignedShort
;
o
.
po
.
body_size
=
sizeof
(
pwr_sClass_Opc_UnsignedShort
);
o
.
po
.
body
=
calloc
(
1
,
o
.
po
.
body_size
);
o
.
type
=
pwr_eType_UInt16
;
o
.
size
=
sizeof
(
pwr_tUInt16
);
((
pwr_sClass_Opc_UnsignedShort
*
)
o
.
po
.
body
)
->
HighEU
=
100
;
o
->
po
.
cid
=
pwr_cClass_Opc_UnsignedShort
;
o
->
po
.
body_size
=
sizeof
(
pwr_sClass_Opc_UnsignedShort
);
o
->
po
.
body
=
calloc
(
1
,
o
->
po
.
body_size
);
o
->
type
=
pwr_eType_UInt16
;
o
->
size
=
sizeof
(
pwr_tUInt16
);
((
pwr_sClass_Opc_UnsignedShort
*
)
o
->
po
.
body
)
->
HighEU
=
100
;
break
;
case
opc_eDataType_unsignedByte
:
o
.
po
.
cid
=
pwr_cClass_Opc_UnsignedByte
;
o
.
po
.
body_size
=
sizeof
(
pwr_sClass_Opc_UnsignedByte
);
o
.
po
.
body
=
calloc
(
1
,
o
.
po
.
body_size
);
o
.
type
=
pwr_eType_UInt8
;
o
.
size
=
sizeof
(
pwr_tUInt8
);
((
pwr_sClass_Opc_UnsignedByte
*
)
o
.
po
.
body
)
->
HighEU
=
100
;
o
->
po
.
cid
=
pwr_cClass_Opc_UnsignedByte
;
o
->
po
.
body_size
=
sizeof
(
pwr_sClass_Opc_UnsignedByte
);
o
->
po
.
body
=
calloc
(
1
,
o
->
po
.
body_size
);
o
->
type
=
pwr_eType_UInt8
;
o
->
size
=
sizeof
(
pwr_tUInt8
);
((
pwr_sClass_Opc_UnsignedByte
*
)
o
->
po
.
body
)
->
HighEU
=
100
;
break
;
case
opc_eDataType_base64Binary
:
o
.
po
.
cid
=
pwr_cClass_Opc_Base64Binary
;
o
.
po
.
body_size
=
sizeof
(
pwr_sClass_Opc_Base64Binary
);
o
.
po
.
body
=
calloc
(
1
,
o
.
po
.
body_size
);
o
.
type
=
pwr_eType_UInt32
;
o
.
size
=
2
*
sizeof
(
pwr_tUInt32
);
o
->
po
.
cid
=
pwr_cClass_Opc_Base64Binary
;
o
->
po
.
body_size
=
sizeof
(
pwr_sClass_Opc_Base64Binary
);
o
->
po
.
body
=
calloc
(
1
,
o
->
po
.
body_size
);
o
->
type
=
pwr_eType_UInt32
;
o
->
size
=
2
*
sizeof
(
pwr_tUInt32
);
break
;
case
opc_eDataType_dateTime
:
o
.
po
.
cid
=
pwr_cClass_Opc_DateTime
;
o
.
po
.
body_size
=
sizeof
(
pwr_sClass_Opc_DateTime
);
o
.
po
.
body
=
calloc
(
1
,
o
.
po
.
body_size
);
o
.
type
=
pwr_eType_Time
;
o
.
size
=
sizeof
(
pwr_tTime
);
o
->
po
.
cid
=
pwr_cClass_Opc_DateTime
;
o
->
po
.
body_size
=
sizeof
(
pwr_sClass_Opc_DateTime
);
o
->
po
.
body
=
calloc
(
1
,
o
->
po
.
body_size
);
o
->
type
=
pwr_eType_Time
;
o
->
size
=
sizeof
(
pwr_tTime
);
break
;
case
opc_eDataType_time
:
o
.
po
.
cid
=
pwr_cClass_Opc_Time
;
o
.
po
.
body_size
=
sizeof
(
pwr_sClass_Opc_Time
);
o
.
po
.
body
=
calloc
(
1
,
o
.
po
.
body_size
);
o
.
type
=
pwr_eType_Time
;
o
.
size
=
sizeof
(
pwr_tTime
);
o
->
po
.
cid
=
pwr_cClass_Opc_Time
;
o
->
po
.
body_size
=
sizeof
(
pwr_sClass_Opc_Time
);
o
->
po
.
body
=
calloc
(
1
,
o
->
po
.
body_size
);
o
->
type
=
pwr_eType_Time
;
o
->
size
=
sizeof
(
pwr_tTime
);
break
;
case
opc_eDataType_date
:
o
.
po
.
cid
=
pwr_cClass_Opc_Date
;
o
.
po
.
body_size
=
sizeof
(
pwr_sClass_Opc_Date
);
o
.
po
.
body
=
calloc
(
1
,
o
.
po
.
body_size
);
o
.
type
=
pwr_eType_Time
;
o
.
size
=
sizeof
(
pwr_tTime
);
o
->
po
.
cid
=
pwr_cClass_Opc_Date
;
o
->
po
.
body_size
=
sizeof
(
pwr_sClass_Opc_Date
);
o
->
po
.
body
=
calloc
(
1
,
o
->
po
.
body_size
);
o
->
type
=
pwr_eType_Time
;
o
->
size
=
sizeof
(
pwr_tTime
);
break
;
case
opc_eDataType_duration
:
o
.
po
.
cid
=
pwr_cClass_Opc_Duration
;
o
.
po
.
body_size
=
sizeof
(
pwr_sClass_Opc_Duration
);
o
.
po
.
body
=
calloc
(
1
,
o
.
po
.
body_size
);
o
.
type
=
pwr_eType_DeltaTime
;
o
.
size
=
sizeof
(
pwr_tDeltaTime
);
o
->
po
.
cid
=
pwr_cClass_Opc_Duration
;
o
->
po
.
body_size
=
sizeof
(
pwr_sClass_Opc_Duration
);
o
->
po
.
body
=
calloc
(
1
,
o
->
po
.
body_size
);
o
->
type
=
pwr_eType_DeltaTime
;
o
->
size
=
sizeof
(
pwr_tDeltaTime
);
break
;
case
opc_eDataType_QName
:
o
.
po
.
cid
=
pwr_cClass_Opc_QName
;
o
.
po
.
body_size
=
sizeof
(
pwr_sClass_Opc_QName
);
o
.
po
.
body
=
calloc
(
1
,
o
.
po
.
body_size
);
o
.
type
=
pwr_eType_String
;
o
.
size
=
sizeof
(
pwr_tString80
);
o
->
po
.
cid
=
pwr_cClass_Opc_QName
;
o
->
po
.
body_size
=
sizeof
(
pwr_sClass_Opc_QName
);
o
->
po
.
body
=
calloc
(
1
,
o
->
po
.
body_size
);
o
->
type
=
pwr_eType_String
;
o
->
size
=
sizeof
(
pwr_tString80
);
default:
o
.
po
.
cid
=
pwr_cClass_Opc_Hier
;
o
.
po
.
body_size
=
sizeof
(
pwr_sClass_Opc_Hier
);
o
.
po
.
body
=
calloc
(
1
,
o
.
po
.
body_size
);
o
->
po
.
cid
=
pwr_cClass_Opc_Hier
;
o
->
po
.
body_size
=
sizeof
(
pwr_sClass_Opc_Hier
);
o
->
po
.
body
=
calloc
(
1
,
o
->
po
.
body_size
);
}
if
(
opc_get_property
(
element
->
Properties
,
opc_mProperty_Description
,
&
valp
))
{
pwr_tString80
desc
;
strncpy
(
desc
,
((
xsd__string
*
)
valp
)
->
__item
.
c_str
(),
sizeof
(
desc
));
switch
(
o
.
po
.
cid
)
{
switch
(
o
->
po
.
cid
)
{
case
pwr_cClass_Opc_Float
:
strncpy
(
((
pwr_sClass_Opc_Float
*
)
o
.
po
.
body
)
->
Description
,
desc
,
sizeof
(((
pwr_sClass_Opc_Float
*
)
o
.
po
.
body
)
->
Description
));
strncpy
(
((
pwr_sClass_Opc_Float
*
)
o
->
po
.
body
)
->
Description
,
desc
,
sizeof
(((
pwr_sClass_Opc_Float
*
)
o
->
po
.
body
)
->
Description
));
break
;
case
pwr_cClass_Opc_Double
:
strncpy
(
((
pwr_sClass_Opc_Float
*
)
o
.
po
.
body
)
->
Description
,
desc
,
sizeof
(((
pwr_sClass_Opc_Double
*
)
o
.
po
.
body
)
->
Description
));
strncpy
(
((
pwr_sClass_Opc_Float
*
)
o
->
po
.
body
)
->
Description
,
desc
,
sizeof
(((
pwr_sClass_Opc_Double
*
)
o
->
po
.
body
)
->
Description
));
break
;
case
pwr_cClass_Opc_Int
:
strncpy
(
((
pwr_sClass_Opc_Int
*
)
o
.
po
.
body
)
->
Description
,
desc
,
sizeof
(((
pwr_sClass_Opc_Int
*
)
o
.
po
.
body
)
->
Description
));
strncpy
(
((
pwr_sClass_Opc_Int
*
)
o
->
po
.
body
)
->
Description
,
desc
,
sizeof
(((
pwr_sClass_Opc_Int
*
)
o
->
po
.
body
)
->
Description
));
break
;
case
pwr_cClass_Opc_Short
:
strncpy
(
((
pwr_sClass_Opc_Short
*
)
o
.
po
.
body
)
->
Description
,
desc
,
sizeof
(((
pwr_sClass_Opc_Short
*
)
o
.
po
.
body
)
->
Description
));
strncpy
(
((
pwr_sClass_Opc_Short
*
)
o
->
po
.
body
)
->
Description
,
desc
,
sizeof
(((
pwr_sClass_Opc_Short
*
)
o
->
po
.
body
)
->
Description
));
break
;
case
pwr_cClass_Opc_Byte
:
strncpy
(
((
pwr_sClass_Opc_Byte
*
)
o
.
po
.
body
)
->
Description
,
desc
,
sizeof
(((
pwr_sClass_Opc_Byte
*
)
o
.
po
.
body
)
->
Description
));
strncpy
(
((
pwr_sClass_Opc_Byte
*
)
o
->
po
.
body
)
->
Description
,
desc
,
sizeof
(((
pwr_sClass_Opc_Byte
*
)
o
->
po
.
body
)
->
Description
));
break
;
case
pwr_cClass_Opc_UnsignedInt
:
strncpy
(
((
pwr_sClass_Opc_UnsignedInt
*
)
o
.
po
.
body
)
->
Description
,
desc
,
sizeof
(((
pwr_sClass_Opc_UnsignedInt
*
)
o
.
po
.
body
)
->
Description
));
strncpy
(
((
pwr_sClass_Opc_UnsignedInt
*
)
o
->
po
.
body
)
->
Description
,
desc
,
sizeof
(((
pwr_sClass_Opc_UnsignedInt
*
)
o
->
po
.
body
)
->
Description
));
break
;
case
pwr_cClass_Opc_UnsignedShort
:
strncpy
(
((
pwr_sClass_Opc_UnsignedShort
*
)
o
.
po
.
body
)
->
Description
,
desc
,
sizeof
(((
pwr_sClass_Opc_UnsignedShort
*
)
o
.
po
.
body
)
->
Description
));
strncpy
(
((
pwr_sClass_Opc_UnsignedShort
*
)
o
->
po
.
body
)
->
Description
,
desc
,
sizeof
(((
pwr_sClass_Opc_UnsignedShort
*
)
o
->
po
.
body
)
->
Description
));
break
;
case
pwr_cClass_Opc_UnsignedByte
:
strncpy
(
((
pwr_sClass_Opc_UnsignedByte
*
)
o
.
po
.
body
)
->
Description
,
desc
,
sizeof
(((
pwr_sClass_Opc_UnsignedByte
*
)
o
.
po
.
body
)
->
Description
));
strncpy
(
((
pwr_sClass_Opc_UnsignedByte
*
)
o
->
po
.
body
)
->
Description
,
desc
,
sizeof
(((
pwr_sClass_Opc_UnsignedByte
*
)
o
->
po
.
body
)
->
Description
));
break
;
}
}
}
else
{
o
.
po
.
cid
=
pwr_cClass_Opc_Hier
;
o
.
po
.
body_size
=
sizeof
(
pwr_sClass_Opc_Hier
);
o
.
po
.
body
=
calloc
(
1
,
o
.
po
.
body_size
);
o
->
po
.
cid
=
pwr_cClass_Opc_Hier
;
o
->
po
.
body_size
=
sizeof
(
pwr_sClass_Opc_Hier
);
o
->
po
.
body
=
calloc
(
1
,
o
->
po
.
body_size
);
if
(
opc_get_property
(
element
->
Properties
,
opc_mProperty_Description
,
&
valp
))
{
strncpy
(
((
pwr_sClass_Opc_Hier
*
)
o
.
po
.
body
)
->
Description
,
strncpy
(
((
pwr_sClass_Opc_Hier
*
)
o
->
po
.
body
)
->
Description
,
((
xsd__string
*
)
valp
)
->
__item
.
c_str
(),
sizeof
(((
pwr_sClass_Opc_Hier
*
)
o
.
po
.
body
)
->
Description
));
sizeof
(((
pwr_sClass_Opc_Hier
*
)
o
->
po
.
body
)
->
Description
));
}
}
}
if
(
first
)
m_list
[
fth
]
.
po
.
fchoix
=
o
.
po
.
oix
;
m_list
[
fth
]
->
po
.
fchoix
=
o
->
po
.
oix
;
else
{
o
.
po
.
bwsoix
=
bws
;
m_list
[
bws
]
.
po
.
fwsoix
=
o
.
po
.
oix
;
o
->
po
.
bwsoix
=
bws
;
m_list
[
bws
]
->
po
.
fwsoix
=
o
->
po
.
oix
;
}
if
(
last
)
{
m_list
[
fth
]
.
po
.
lchoix
=
o
.
po
.
oix
;
m_list
[
fth
]
->
po
.
lchoix
=
o
->
po
.
oix
;
if
(
!
first
)
{
o
.
po
.
fwsoix
=
m_list
[
fth
].
po
.
fchoix
;
m_list
[
o
.
po
.
fwsoix
].
po
.
bwsoix
=
o
.
po
.
oix
;
o
->
po
.
fwsoix
=
m_list
[
fth
]
->
po
.
fchoix
;
m_list
[
o
->
po
.
fwsoix
]
->
po
.
bwsoix
=
o
->
po
.
oix
;
}
else
{
// Single child
o
.
po
.
fwsoix
=
o
.
po
.
oix
;
o
.
po
.
bwsoix
=
o
.
po
.
oix
;
o
->
po
.
fwsoix
=
o
->
po
.
oix
;
o
->
po
.
bwsoix
=
o
->
po
.
oix
;
}
}
if
(
element
->
HasChildren
&&
load_children
)
o
.
po
.
flags
|=
procom_obj_mFlags_Loaded
;
o
->
po
.
flags
|=
procom_obj_mFlags_Loaded
;
else
if
(
!
element
->
HasChildren
)
o
.
po
.
flags
|=
procom_obj_mFlags_Loaded
;
o
->
po
.
flags
|=
procom_obj_mFlags_Loaded
;
m_list
.
push_back
(
o
);
if
(
opc_get_property
(
element
->
Properties
,
opc_mProperty_EuType
,
&
valp
))
{
if
(
((
xsd__string
*
)
valp
)
->
__item
==
"analog"
)
m_list
[
o
.
po
.
oix
].
po
.
flags
|=
procom_obj_mFlags_Analog
;
m_list
[
o
->
po
.
oix
]
->
po
.
flags
|=
procom_obj_mFlags_Analog
;
}
if
(
m_list
[
o
.
po
.
oix
].
po
.
flags
&
procom_obj_mFlags_Analog
)
{
if
(
m_list
[
o
->
po
.
oix
]
->
po
.
flags
&
procom_obj_mFlags_Analog
)
{
// Get analog properties
_s0__GetProperties
get_properties
;
_s0__GetPropertiesResponse
properties_response
;
...
...
@@ -329,7 +348,9 @@ void opc_provider::insert_object( pwr_tOix fth, pwr_tOix bws, s0__BrowseElement
pwr_tFloat32
low_eu
=
0
;
pwr_tString16
engineering_units
=
""
;
id
.
ItemName
=
new
std
::
string
(
o
.
item_name
);
get_properties
.
ReturnPropertyValues
=
(
bool
*
)
malloc
(
sizeof
(
bool
));
*
get_properties
.
ReturnPropertyValues
=
true
;
id
.
ItemName
=
new
std
::
string
(
o
->
item_name
);
get_properties
.
ItemIDs
.
push_back
(
&
id
);
...
...
@@ -339,6 +360,7 @@ void opc_provider::insert_object( pwr_tOix fth, pwr_tOix bws, s0__BrowseElement
if
(
soap_call___s0__GetProperties
(
&
soap
,
opc_endpoint
,
NULL
,
&
get_properties
,
&
properties_response
)
==
SOAP_OK
)
{
server_state
->
RequestCnt
++
;
if
(
properties_response
.
PropertyLists
.
size
()
>
0
&&
properties_response
.
PropertyLists
[
0
]
->
Properties
.
size
()
>
0
)
{
...
...
@@ -356,17 +378,62 @@ void opc_provider::insert_object( pwr_tOix fth, pwr_tOix bws, s0__BrowseElement
sizeof
(
engineering_units
));
}
void
*
body
=
m_list
[
o
.
po
.
oix
].
po
.
body
;
switch
(
o
.
po
.
cid
)
{
void
*
body
=
m_list
[
o
->
po
.
oix
]
->
po
.
body
;
switch
(
o
->
po
.
cid
)
{
case
pwr_cClass_Opc_Float
:
((
pwr_sClass_Opc_Float
*
)
body
)
->
HighEU
=
high_eu
;
((
pwr_sClass_Opc_Float
*
)
body
)
->
LowEU
=
low_eu
;
strcpy
(
((
pwr_sClass_Opc_Float
*
)
body
)
->
EngineeringUnits
,
engineering_units
);
break
;
case
pwr_cClass_Opc_Double
:
((
pwr_sClass_Opc_Float
*
)
body
)
->
HighEU
=
high_eu
;
((
pwr_sClass_Opc_Float
*
)
body
)
->
LowEU
=
low_eu
;
strcpy
(
((
pwr_sClass_Opc_Float
*
)
body
)
->
EngineeringUnits
,
engineering_units
);
((
pwr_sClass_Opc_Double
*
)
body
)
->
HighEU
=
high_eu
;
((
pwr_sClass_Opc_Double
*
)
body
)
->
LowEU
=
low_eu
;
strcpy
(
((
pwr_sClass_Opc_Double
*
)
body
)
->
EngineeringUnits
,
engineering_units
);
break
;
case
pwr_cClass_Opc_Decimal
:
((
pwr_sClass_Opc_Decimal
*
)
body
)
->
HighEU
=
high_eu
;
((
pwr_sClass_Opc_Decimal
*
)
body
)
->
LowEU
=
low_eu
;
strcpy
(
((
pwr_sClass_Opc_Decimal
*
)
body
)
->
EngineeringUnits
,
engineering_units
);
break
;
case
pwr_cClass_Opc_Long
:
((
pwr_sClass_Opc_Long
*
)
body
)
->
HighEU
=
high_eu
;
((
pwr_sClass_Opc_Long
*
)
body
)
->
LowEU
=
low_eu
;
strcpy
(
((
pwr_sClass_Opc_Long
*
)
body
)
->
EngineeringUnits
,
engineering_units
);
break
;
case
pwr_cClass_Opc_Int
:
((
pwr_sClass_Opc_Int
*
)
body
)
->
HighEU
=
high_eu
;
((
pwr_sClass_Opc_Int
*
)
body
)
->
LowEU
=
low_eu
;
strcpy
(
((
pwr_sClass_Opc_Int
*
)
body
)
->
EngineeringUnits
,
engineering_units
);
break
;
case
pwr_cClass_Opc_Short
:
((
pwr_sClass_Opc_Short
*
)
body
)
->
HighEU
=
high_eu
;
((
pwr_sClass_Opc_Short
*
)
body
)
->
LowEU
=
low_eu
;
strcpy
(
((
pwr_sClass_Opc_Short
*
)
body
)
->
EngineeringUnits
,
engineering_units
);
break
;
case
pwr_cClass_Opc_Byte
:
((
pwr_sClass_Opc_Byte
*
)
body
)
->
HighEU
=
high_eu
;
((
pwr_sClass_Opc_Byte
*
)
body
)
->
LowEU
=
low_eu
;
strcpy
(
((
pwr_sClass_Opc_Byte
*
)
body
)
->
EngineeringUnits
,
engineering_units
);
break
;
case
pwr_cClass_Opc_UnsignedLong
:
((
pwr_sClass_Opc_UnsignedLong
*
)
body
)
->
HighEU
=
high_eu
;
((
pwr_sClass_Opc_UnsignedLong
*
)
body
)
->
LowEU
=
low_eu
;
strcpy
(
((
pwr_sClass_Opc_UnsignedLong
*
)
body
)
->
EngineeringUnits
,
engineering_units
);
break
;
case
pwr_cClass_Opc_UnsignedInt
:
((
pwr_sClass_Opc_UnsignedInt
*
)
body
)
->
HighEU
=
high_eu
;
((
pwr_sClass_Opc_UnsignedInt
*
)
body
)
->
LowEU
=
low_eu
;
strcpy
(
((
pwr_sClass_Opc_UnsignedInt
*
)
body
)
->
EngineeringUnits
,
engineering_units
);
break
;
case
pwr_cClass_Opc_UnsignedShort
:
((
pwr_sClass_Opc_UnsignedShort
*
)
body
)
->
HighEU
=
high_eu
;
((
pwr_sClass_Opc_UnsignedShort
*
)
body
)
->
LowEU
=
low_eu
;
strcpy
(
((
pwr_sClass_Opc_UnsignedShort
*
)
body
)
->
EngineeringUnits
,
engineering_units
);
break
;
case
pwr_cClass_Opc_UnsignedByte
:
((
pwr_sClass_Opc_UnsignedByte
*
)
body
)
->
HighEU
=
high_eu
;
((
pwr_sClass_Opc_UnsignedByte
*
)
body
)
->
LowEU
=
low_eu
;
strcpy
(
((
pwr_sClass_Opc_UnsignedByte
*
)
body
)
->
EngineeringUnits
,
engineering_units
);
break
;
default:
;
}
...
...
@@ -374,7 +441,8 @@ void opc_provider::insert_object( pwr_tOix fth, pwr_tOix bws, s0__BrowseElement
}
else
{
// Error returned from soap
soap_print_fault
(
&
soap
,
stderr
);
server_state
->
RequestCnt
++
;
fault
();
}
}
...
...
@@ -383,7 +451,7 @@ void opc_provider::insert_object( pwr_tOix fth, pwr_tOix bws, s0__BrowseElement
_s0__Browse
browse
;
_s0__BrowseResponse
browse_response
;
browse
.
ItemName
=
new
std
::
string
(
o
.
item_name
);
browse
.
ItemName
=
new
std
::
string
(
o
->
item_name
);
opc_mask_to_propertynames
(
browse
.
PropertyNames
,
opc_mProperty_DataType
|
opc_mProperty_Description
|
opc_mProperty_EuType
);
...
...
@@ -393,50 +461,55 @@ void opc_provider::insert_object( pwr_tOix fth, pwr_tOix bws, s0__BrowseElement
pwr_tOix
next_bws
;
pwr_tOix
bws
=
0
;
server_state
->
RequestCnt
++
;
for
(
int
i
=
0
;
i
<
(
int
)
browse_response
.
Elements
.
size
();
i
++
)
{
next_bws
=
next_oix
;
insert_object
(
o
.
po
.
oix
,
bws
,
browse_response
.
Elements
[
i
],
insert_object
(
o
->
po
.
oix
,
bws
,
browse_response
.
Elements
[
i
],
i
==
0
,
i
==
(
int
)
browse_response
.
Elements
.
size
()
-
1
,
0
,
0
);
bws
=
next_bws
;
}
}
else
{
// Error returned from soap
soap_print_fault
(
&
soap
,
stderr
);
server_state
->
RequestCnt
++
;
fault
();
}
}
}
void
opc_provider
::
objectOid
(
co_procom
*
pcom
,
pwr_tOix
oix
)
void
opc_provider
::
init
(
)
{
if
(
m_list
.
size
()
==
0
)
{
// Insert volume object
opcprv_obj
vo
;
vo
.
po
.
cid
=
pwr_eClass_ExternVolume
;
strcpy
(
vo
.
po
.
name
,
opc_vname
);
vo
.
po
.
body_size
=
sizeof
(
pwr_sExternVolume
);
vo
.
po
.
body
=
calloc
(
1
,
vo
.
po
.
body_size
);
vo
.
po
.
oix
=
0
;
vo
.
po
.
flags
|=
procom_obj_mFlags_Loaded
;
opcprv_obj
*
vo
=
new
opcprv_obj
()
;
vo
->
po
.
cid
=
pwr_eClass_ExternVolume
;
strcpy
(
vo
->
po
.
name
,
opc_vname
);
vo
->
po
.
body_size
=
sizeof
(
pwr_sExternVolume
);
vo
->
po
.
body
=
calloc
(
1
,
vo
->
po
.
body_size
);
vo
->
po
.
oix
=
0
;
vo
->
po
.
flags
|=
procom_obj_mFlags_Loaded
;
m_list
.
push_back
(
vo
);
// Insert ServerState object
opcprv_obj
so
;
so
.
po
.
cid
=
pwr_cClass_Opc_ServerState
;
strcpy
(
so
.
po
.
name
,
"OpcServerState"
);
so
.
po
.
body_size
=
sizeof
(
pwr_sClass_Opc_ServerState
);
so
.
po
.
body
=
calloc
(
1
,
so
.
po
.
body_size
);
memcpy
(
so
.
po
.
body
,
&
server_state
,
so
.
po
.
body_size
);
so
.
po
.
oix
=
next_oix
++
;
so
.
po
.
fthoix
=
0
;
so
.
po
.
bwsoix
=
so
.
po
.
oix
;
so
.
po
.
fwsoix
=
so
.
po
.
oix
;
m_list
[
0
].
po
.
fchoix
=
so
.
po
.
oix
;
m_list
[
0
].
po
.
lchoix
=
so
.
po
.
oix
;
so
.
po
.
flags
|=
procom_obj_mFlags_Loaded
;
opcprv_obj
*
so
=
new
opcprv_obj
();
so
->
po
.
cid
=
pwr_cClass_Opc_ServerState
;
strcpy
(
so
->
po
.
name
,
"OpcServerState"
);
so
->
po
.
body_size
=
sizeof
(
pwr_sClass_Opc_ServerState
);
so
->
po
.
body
=
calloc
(
1
,
so
->
po
.
body_size
);
so
->
po
.
oix
=
next_oix
++
;
so
->
po
.
fthoix
=
0
;
so
->
po
.
bwsoix
=
so
->
po
.
oix
;
so
->
po
.
fwsoix
=
so
->
po
.
oix
;
m_list
[
0
]
->
po
.
fchoix
=
so
->
po
.
oix
;
m_list
[
0
]
->
po
.
lchoix
=
so
->
po
.
oix
;
so
->
po
.
flags
|=
procom_obj_mFlags_Loaded
;
m_list
.
push_back
(
so
);
server_state
=
(
pwr_sClass_Opc_ServerState
*
)
m_list
[
1
]
->
po
.
body
;
}
void
opc_provider
::
objectOid
(
co_procom
*
pcom
,
pwr_tOix
oix
)
{
if
(
m_list
.
size
()
==
2
)
{
// Load Rootlist
_s0__Browse
browse
;
_s0__BrowseResponse
browse_response
;
...
...
@@ -446,7 +519,8 @@ void opc_provider::objectOid( co_procom *pcom, pwr_tOix oix)
opc_mProperty_EuType
);
if
(
soap_call___s0__Browse
(
&
soap
,
opc_endpoint
,
NULL
,
&
browse
,
&
browse_response
)
==
SOAP_OK
)
{
pwr_tOix
bws
=
so
.
po
.
oix
;
server_state
->
RequestCnt
++
;
pwr_tOix
bws
=
m_list
[
1
]
->
po
.
oix
;
pwr_tOix
next_bws
;
for
(
int
i
=
0
;
i
<
(
int
)
browse_response
.
Elements
.
size
();
i
++
)
{
next_bws
=
next_oix
;
...
...
@@ -457,15 +531,16 @@ void opc_provider::objectOid( co_procom *pcom, pwr_tOix oix)
}
else
{
// Error returned from soap
soap_print_fault
(
&
soap
,
stderr
);
server_state
->
RequestCnt
++
;
fault
();
}
}
else
if
(
oix
<
m_list
.
size
())
{
if
(
!
(
m_list
[
oix
]
.
po
.
flags
&
procom_obj_mFlags_Loaded
))
{
if
(
!
(
m_list
[
oix
]
->
po
.
flags
&
procom_obj_mFlags_Loaded
))
{
_s0__Browse
browse
;
_s0__BrowseResponse
browse_response
;
browse
.
ItemName
=
new
std
::
string
(
m_list
[
oix
]
.
item_name
);
browse
.
ItemName
=
new
std
::
string
(
m_list
[
oix
]
->
item_name
);
opc_mask_to_propertynames
(
browse
.
PropertyNames
,
opc_mProperty_DataType
|
opc_mProperty_Description
|
opc_mProperty_EuType
);
...
...
@@ -475,6 +550,7 @@ void opc_provider::objectOid( co_procom *pcom, pwr_tOix oix)
pwr_tOix
next_bws
;
pwr_tOix
bws
=
0
;
server_state
->
RequestCnt
++
;
if
(
browse_response
.
Errors
.
size
()
>
0
)
{
errlog
(
browse
.
ItemName
,
browse_response
.
Errors
);
}
...
...
@@ -484,11 +560,12 @@ void opc_provider::objectOid( co_procom *pcom, pwr_tOix oix)
i
==
0
,
i
==
(
int
)
browse_response
.
Elements
.
size
()
-
1
,
0
,
0
);
bws
=
next_bws
;
}
m_list
[
oix
]
.
po
.
flags
|=
procom_obj_mFlags_Loaded
;
m_list
[
oix
]
->
po
.
flags
|=
procom_obj_mFlags_Loaded
;
}
else
{
// Error returned from soap
soap_print_fault
(
&
soap
,
stderr
);
server_state
->
RequestCnt
++
;
fault
();
}
}
}
...
...
@@ -501,14 +578,14 @@ void opc_provider::objectOid( co_procom *pcom, pwr_tOix oix)
#if 0
for ( int i = 0; i < (int)m_list.size(); i++) {
printf( "oix %2d bws %2d fws %2d fth %2d fch %2d lch %2d flags %lu %s\n",
m_list[i]
.po.oix, m_list[i].po.bwsoix, m_list[i].po.fwsoix, m_list[i].
po.fthoix,
m_list[i]
.po.fchoix, m_list[i].po.lchoix, m_list[i].po.flags, m_list[i].
po.name);
m_list[i]
->po.oix, m_list[i]->po.bwsoix, m_list[i]->po.fwsoix, m_list[i]->
po.fthoix,
m_list[i]
->po.fchoix, m_list[i]->po.lchoix, m_list[i]->po.flags, m_list[i]->
po.name);
}
#endif
vector
<
procom_obj
>
olist
;
for
(
int
i
=
0
;
i
<
(
int
)
m_list
.
size
();
i
++
)
{
if
(
m_list
[
i
]
.
po
.
flags
&
procom_obj_mFlags_Loaded
)
olist
.
push_back
(
m_list
[
i
]
.
po
);
if
(
m_list
[
i
]
->
po
.
flags
&
procom_obj_mFlags_Loaded
)
olist
.
push_back
(
m_list
[
i
]
->
po
);
}
printf
(
"*********************************************
\n
"
);
for
(
int
i
=
0
;
i
<
(
int
)
olist
.
size
();
i
++
)
{
...
...
@@ -536,8 +613,8 @@ void opc_provider::objectName( co_procom *pcom, char *name, pwr_tOix poix)
strcpy
(
oname
,
name
);
for
(
int
i
=
0
;
i
<
(
int
)
m_list
.
size
();
i
++
)
{
if
(
!
m_list
[
i
]
.
po
.
flags
&
procom_obj_mFlags_Deleted
)
{
if
(
cdh_NoCaseStrcmp
(
oname
,
longname
(
m_list
[
i
]
.
po
.
oix
))
==
0
)
{
if
(
!
m_list
[
i
]
->
po
.
flags
&
procom_obj_mFlags_Deleted
)
{
if
(
cdh_NoCaseStrcmp
(
oname
,
longname
(
m_list
[
i
]
->
po
.
oix
))
==
0
)
{
objectOid
(
pcom
,
i
);
return
;
}
...
...
@@ -596,14 +673,14 @@ void opc_provider::writeAttribute( co_procom *pcom, pwr_tOix oix, unsigned int o
return
;
}
if
(
offset
+
size
>
m_list
[
oix
]
.
po
.
body_size
)
{
if
(
offset
+
size
>
m_list
[
oix
]
->
po
.
body_size
)
{
pcom
->
provideStatus
(
LDH__NOSUCHATTR
);
return
;
}
memcpy
(
(
void
*
)((
unsigned
long
)
m_list
[
oix
]
.
po
.
body
+
(
unsigned
long
)
offset
),
buffer
,
size
);
memcpy
(
(
void
*
)((
unsigned
long
)
m_list
[
oix
]
->
po
.
body
+
(
unsigned
long
)
offset
),
buffer
,
size
);
switch
(
m_list
[
oix
]
.
po
.
cid
)
{
switch
(
m_list
[
oix
]
->
po
.
cid
)
{
case
pwr_cClass_Opc_String
:
case
pwr_cClass_Opc_Boolean
:
case
pwr_cClass_Opc_Float
:
...
...
@@ -625,18 +702,18 @@ void opc_provider::writeAttribute( co_procom *pcom, pwr_tOix oix, unsigned int o
case
pwr_cClass_Opc_QName
:
{
// Value has the same offset for all opctype classes
if
(
offset
==
(
unsigned
int
)
((
char
*
)
&
((
pwr_sClass_Opc_String
*
)
m_list
[
oix
]
.
po
.
body
)
->
Value
-
(
char
*
)
m_list
[
oix
]
.
po
.
body
))
{
if
(
offset
==
(
unsigned
int
)
((
char
*
)
&
((
pwr_sClass_Opc_String
*
)
m_list
[
oix
]
->
po
.
body
)
->
Value
-
(
char
*
)
m_list
[
oix
]
->
po
.
body
))
{
_s0__Write
write
;
_s0__WriteResponse
write_response
;
char
opc_buffer
[
2000
];
int
opc_type
;
s0__ItemValue
*
item
=
new
s0__ItemValue
();
item
->
ItemName
=
new
std
::
string
(
m_list
[
oix
]
.
item_name
);
opc_pwrtype_to_opctype
(
m_list
[
oix
]
.
type
,
&
opc_type
);
item
->
ItemName
=
new
std
::
string
(
m_list
[
oix
]
->
item_name
);
opc_pwrtype_to_opctype
(
m_list
[
oix
]
->
type
,
&
opc_type
);
opc_convert_pwrtype_to_opctype
(
buffer
,
opc_buffer
,
sizeof
(
opc_buffer
),
opc_type
,
m_list
[
oix
]
.
type
);
m_list
[
oix
]
->
type
);
item
->
Value
=
opc_opctype_to_value
(
opc_buffer
,
sizeof
(
opc_buffer
),
opc_type
);
write
.
ItemList
=
new
s0__WriteRequestItemList
;
write
.
ItemList
->
Items
.
push_back
(
item
);
...
...
@@ -644,10 +721,12 @@ void opc_provider::writeAttribute( co_procom *pcom, pwr_tOix oix, unsigned int o
if
(
soap_call___s0__Write
(
&
soap
,
opc_endpoint
,
NULL
,
&
write
,
&
write_response
)
==
SOAP_OK
)
{
// Check item errors
server_state
->
RequestCnt
++
;
}
else
{
// Error returned from soap
soap_print_fault
(
&
soap
,
stderr
);
server_state
->
RequestCnt
++
;
fault
();
}
}
break
;
...
...
@@ -667,12 +746,12 @@ void opc_provider::readAttribute( co_procom *pcom, pwr_tOix oix, unsigned int of
return
;
}
if
(
offset
+
size
>
m_list
[
oix
]
.
po
.
body_size
)
{
if
(
offset
+
size
>
m_list
[
oix
]
->
po
.
body_size
)
{
pcom
->
provideStatus
(
GDH__NOSUCHOBJ
);
return
;
}
switch
(
m_list
[
oix
]
.
po
.
cid
)
{
switch
(
m_list
[
oix
]
->
po
.
cid
)
{
case
pwr_cClass_Opc_String
:
case
pwr_cClass_Opc_Boolean
:
case
pwr_cClass_Opc_Float
:
...
...
@@ -691,33 +770,35 @@ void opc_provider::readAttribute( co_procom *pcom, pwr_tOix oix, unsigned int of
case
pwr_cClass_Opc_Duration
:
case
pwr_cClass_Opc_QName
:
// Value has the same offset for all opctype classes
if
(
offset
==
(
unsigned
int
)
((
char
*
)
&
((
pwr_sClass_Opc_String
*
)
m_list
[
oix
]
.
po
.
body
)
->
Value
-
(
char
*
)
m_list
[
oix
]
.
po
.
body
))
{
if
(
offset
==
(
unsigned
int
)
((
char
*
)
&
((
pwr_sClass_Opc_String
*
)
m_list
[
oix
]
->
po
.
body
)
->
Value
-
(
char
*
)
m_list
[
oix
]
->
po
.
body
))
{
_s0__Read
read
;
_s0__ReadResponse
read_response
;
s0__ReadRequestItem
*
item
=
new
s0__ReadRequestItem
();
item
->
ItemName
=
new
std
::
string
(
m_list
[
oix
]
.
item_name
);
item
->
ItemName
=
new
std
::
string
(
m_list
[
oix
]
->
item_name
);
read
.
ItemList
=
new
s0__ReadRequestItemList
;
read
.
ItemList
->
Items
.
push_back
(
item
);
if
(
soap_call___s0__Read
(
&
soap
,
opc_endpoint
,
NULL
,
&
read
,
&
read_response
)
==
SOAP_OK
)
{
server_state
->
RequestCnt
++
;
if
(
read_response
.
RItemList
&&
read_response
.
RItemList
->
Items
.
size
()
>
0
)
{
opc_convert_opctype_to_pwrtype
(
&
((
pwr_sClass_Opc_String
*
)
m_list
[
oix
]
.
po
.
body
)
->
Value
,
m_list
[
oix
]
.
size
,
read_response
.
RItemList
->
Items
[
0
]
->
Value
,
(
pwr_eType
)
m_list
[
oix
]
.
type
);
opc_convert_opctype_to_pwrtype
(
&
((
pwr_sClass_Opc_String
*
)
m_list
[
oix
]
->
po
.
body
)
->
Value
,
m_list
[
oix
]
->
size
,
read_response
.
RItemList
->
Items
[
0
]
->
Value
,
(
pwr_eType
)
m_list
[
oix
]
->
type
);
}
}
else
{
// Error returned from soap
soap_print_fault
(
&
soap
,
stderr
);
server_state
->
RequestCnt
++
;
fault
();
}
}
break
;
}
void
*
p
=
(
void
*
)((
unsigned
long
)
m_list
[
oix
]
.
po
.
body
+
(
unsigned
long
)
offset
);
void
*
p
=
(
void
*
)((
unsigned
long
)
m_list
[
oix
]
->
po
.
body
+
(
unsigned
long
)
offset
);
pcom
->
provideAttr
(
GDH__SUCCESS
,
oix
,
size
,
p
);
}
...
...
@@ -730,9 +811,9 @@ void opc_provider::subAssociateBuffer( co_procom *pcom, void **buff, int oix, in
return
;
}
*
buff
=
(
char
*
)
m_list
[
oix
]
.
po
.
body
+
offset
;
*
buff
=
(
char
*
)
m_list
[
oix
]
->
po
.
body
+
offset
;
switch
(
m_list
[
oix
]
.
po
.
cid
)
{
switch
(
m_list
[
oix
]
->
po
.
cid
)
{
case
pwr_cClass_Opc_String
:
case
pwr_cClass_Opc_Boolean
:
case
pwr_cClass_Opc_Float
:
...
...
@@ -752,7 +833,7 @@ void opc_provider::subAssociateBuffer( co_procom *pcom, void **buff, int oix, in
case
pwr_cClass_Opc_Date
:
case
pwr_cClass_Opc_Duration
:
case
pwr_cClass_Opc_QName
:
if
(
*
buff
==
((
pwr_sClass_Opc_String
*
)
m_list
[
oix
]
.
po
.
body
)
->
Value
)
{
if
(
*
buff
==
((
pwr_sClass_Opc_String
*
)
m_list
[
oix
]
->
po
.
body
)
->
Value
)
{
// Add opc subscription
_s0__Subscribe
subscribe
;
_s0__SubscribeResponse
subscribe_response
;
...
...
@@ -764,7 +845,7 @@ void opc_provider::subAssociateBuffer( co_procom *pcom, void **buff, int oix, in
subscribe
.
ItemList
=
new
s0__SubscribeRequestItemList
();
s0__SubscribeRequestItem
*
ritem
=
new
s0__SubscribeRequestItem
();
ritem
->
ItemName
=
new
std
::
string
(
m_list
[
oix
]
.
item_name
);
ritem
->
ItemName
=
new
std
::
string
(
m_list
[
oix
]
->
item_name
);
sprintf
(
handle
,
"%d"
,
oix
);
ritem
->
ClientItemHandle
=
new
std
::
string
(
handle
);
ritem
->
RequestedSamplingRate
=
(
int
*
)
malloc
(
sizeof
(
int
));
...
...
@@ -776,6 +857,7 @@ void opc_provider::subAssociateBuffer( co_procom *pcom, void **buff, int oix, in
SOAP_OK
)
{
opcprv_sub
sub
;
server_state
->
RequestCnt
++
;
sub
.
handle
=
*
subscribe_response
.
ServerSubHandle
;
sub
.
oix
=
oix
;
m_sublist
[
sid
.
rix
]
=
sub
;
...
...
@@ -788,7 +870,8 @@ void opc_provider::subAssociateBuffer( co_procom *pcom, void **buff, int oix, in
}
else
{
// Error returned from soap
soap_print_fault
(
&
soap
,
stderr
);
server_state
->
RequestCnt
++
;
fault
();
}
}
break
;
...
...
@@ -809,10 +892,12 @@ void opc_provider::subDisassociateBuffer( co_procom *pcom, pwr_tSubid sid)
if
(
soap_call___s0__SubscriptionCancel
(
&
soap
,
opc_endpoint
,
NULL
,
&
subcancel
,
&
subcancel_response
)
==
SOAP_OK
)
{
server_state
->
RequestCnt
++
;
}
else
{
// Error returned from soap
soap_print_fault
(
&
soap
,
stderr
);
server_state
->
RequestCnt
++
;
fault
();
}
m_sublist
.
erase
(
it
);
...
...
@@ -835,6 +920,7 @@ void opc_provider::cyclic( co_procom *pcom)
if
(
size
)
{
if
(
soap_call___s0__SubscriptionPolledRefresh
(
&
soap
,
opc_endpoint
,
NULL
,
&
subpoll
,
&
subpoll_response
)
==
SOAP_OK
)
{
server_state
->
RequestCnt
++
;
if
(
(
int
)
subpoll_response
.
RItemList
.
size
()
!=
size
)
{
return
;
}
...
...
@@ -842,14 +928,14 @@ void opc_provider::cyclic( co_procom *pcom)
int
idx
=
0
;
for
(
sublist_iterator
it
=
m_sublist
.
begin
();
it
!=
m_sublist
.
end
();
it
++
)
{
if
(
subpoll_response
.
RItemList
[
idx
]
->
Items
.
size
())
{
opc_convert_opctype_to_pwrtype
(
(
void
*
)
((
pwr_sClass_Opc_String
*
)
m_list
[
it
->
second
.
oix
]
.
po
.
body
)
->
Value
,
m_list
[
it
->
second
.
oix
]
.
size
,
opc_convert_opctype_to_pwrtype
(
(
void
*
)
((
pwr_sClass_Opc_String
*
)
m_list
[
it
->
second
.
oix
]
->
po
.
body
)
->
Value
,
m_list
[
it
->
second
.
oix
]
->
size
,
subpoll_response
.
RItemList
[
idx
]
->
Items
[
0
]
->
Value
,
(
pwr_eType
)
m_list
[
it
->
second
.
oix
]
.
type
);
(
pwr_eType
)
m_list
[
it
->
second
.
oix
]
->
type
);
#if 0
switch ( m_list[it->second.oix]
.
po.cid) {
switch ( m_list[it->second.oix]
->
po.cid) {
case pwr_cClass_Opc_String:
strcpy( ((pwr_sClass_Opc_String *)m_list[it->second.oix]
.
po.body)->Value,
strcpy( ((pwr_sClass_Opc_String *)m_list[it->second.oix]
->
po.body)->Value,
((xsd__string *)subpoll_response.RItemList[idx]->Items[0]->Value)->__item.c_str());
break;
default: ;
...
...
@@ -862,7 +948,8 @@ void opc_provider::cyclic( co_procom *pcom)
}
else
{
// Error returned from soap
soap_print_fault
(
&
soap
,
stderr
);
server_state
->
RequestCnt
++
;
fault
();
}
}
}
...
...
@@ -890,34 +977,34 @@ void opc_provider::abort( co_procom *pcom)
void
opc_provider
::
delete_tree
(
pwr_tOix
oix
)
{
m_list
[
oix
]
.
po
.
flags
=
procom_obj_mFlags_Deleted
;
m_list
[
oix
]
->
po
.
flags
=
procom_obj_mFlags_Deleted
;
for
(
pwr_tOix
ix
=
m_list
[
oix
]
.
po
.
fchoix
;
for
(
pwr_tOix
ix
=
m_list
[
oix
]
->
po
.
fchoix
;
ix
;
ix
=
m_list
[
ix
]
.
po
.
fwsoix
)
ix
=
m_list
[
ix
]
->
po
.
fwsoix
)
delete_tree
(
ix
);
}
char
*
opc_provider
::
longname
(
pwr_tOix
oix
)
{
if
(
m_list
[
oix
]
.
po
.
fthoix
==
0
)
strcpy
(
m_list
[
oix
]
.
po
.
lname
,
m_list
[
oix
].
po
.
name
);
if
(
m_list
[
oix
]
->
po
.
fthoix
==
0
)
strcpy
(
m_list
[
oix
]
->
po
.
lname
,
m_list
[
oix
]
->
po
.
name
);
else
{
strcpy
(
m_list
[
oix
]
.
po
.
lname
,
longname
(
m_list
[
oix
].
po
.
fthoix
));
strcat
(
m_list
[
oix
]
.
po
.
lname
,
"-"
);
strcat
(
m_list
[
oix
]
.
po
.
lname
,
m_list
[
oix
].
po
.
name
);
strcpy
(
m_list
[
oix
]
->
po
.
lname
,
longname
(
m_list
[
oix
]
->
po
.
fthoix
));
strcat
(
m_list
[
oix
]
->
po
.
lname
,
"-"
);
strcat
(
m_list
[
oix
]
->
po
.
lname
,
m_list
[
oix
]
->
po
.
name
);
}
return
m_list
[
oix
]
.
po
.
lname
;
return
m_list
[
oix
]
->
po
.
lname
;
}
bool
opc_provider
::
find
(
pwr_tOix
fthoix
,
char
*
name
,
pwr_tOix
*
oix
)
{
for
(
int
i
=
0
;
i
<
(
int
)
m_list
.
size
();
i
++
)
{
if
(
!
m_list
[
i
]
.
po
.
flags
&
procom_obj_mFlags_Deleted
)
{
if
(
m_list
[
i
]
.
po
.
fthoix
==
fthoix
&&
cdh_NoCaseStrcmp
(
name
,
m_list
[
i
]
.
po
.
name
)
==
0
)
{
*
oix
=
m_list
[
i
]
.
po
.
oix
;
if
(
!
m_list
[
i
]
->
po
.
flags
&
procom_obj_mFlags_Deleted
)
{
if
(
m_list
[
i
]
->
po
.
fthoix
==
fthoix
&&
cdh_NoCaseStrcmp
(
name
,
m_list
[
i
]
->
po
.
name
)
==
0
)
{
*
oix
=
m_list
[
i
]
->
po
.
oix
;
return
true
;
}
}
...
...
@@ -933,16 +1020,19 @@ void opc_provider::get_server_state()
if
(
soap_call___s0__GetStatus
(
&
soap
,
opc_endpoint
,
NULL
,
&
get_status
,
&
get_status_response
)
==
SOAP_OK
)
{
server_state
->
RequestCnt
++
;
if
(
get_status_response
.
Status
->
VendorInfo
)
strcpy
(
server_state
.
VendorInfo
,
get_status_response
.
Status
->
VendorInfo
->
c_str
());
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
());
// TODO server_state.StartTime.tv_sec = get_status_response.Status->StartTime;
server_state
.
ServerState
=
get_status_response
.
GetStatusResult
->
ServerState
;
strcpy
(
server_state
->
ProductVersion
,
get_status_response
.
Status
->
ProductVersion
->
c_str
());
opc_convert_opctype_to_pwrtype
(
&
server_state
->
StartTime
,
sizeof
(
server_state
->
StartTime
),
&
get_status_response
.
Status
->
StartTime
,
pwr_eType_Time
);
server_state
->
ServerState
=
get_status_response
.
GetStatusResult
->
ServerState
;
}
else
{
server_state
.
ServerState
=
s0__serverState__commFault
;
soap_print_fault
(
&
soap
,
stderr
);
server_state
->
RequestCnt
++
;
server_state
->
ServerState
=
s0__serverState__commFault
;
fault
();
}
}
...
...
@@ -1031,11 +1121,12 @@ int main(int argc, char *argv[])
0
);
// Global
procom
.
init
();
strcpy
(
provider
.
server_state
.
Server
,
server_url
);
// provider.nodeUp();
soap_init
(
&
provider
.
soap
);
provider
.
init
();
strcpy
(
provider
.
server_state
->
Server
,
server_url
);
provider
.
get_server_state
();
procom
.
mainLoop
();
...
...
opc/exe/opc_provider/src/opc_provider.h
View file @
b3c63919
/*
* Proview $Id: opc_provider.h,v 1.
8 2007-03-23 08:19:45
claes Exp $
* Proview $Id: opc_provider.h,v 1.
9 2007-03-27 08:37:50
claes Exp $
* Copyright (C) 2005 SSAB Oxelsund AB.
*
* This program is free software; you can redistribute it and/or
...
...
@@ -56,9 +56,14 @@ class opcprv_sub {
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
),
server_state
(
0
)
{
memset
(
&
server_state
,
0
,
sizeof
(
server_state
));
}
~
opc_provider
()
{
for
(
int
i
=
0
;
i
<
(
int
)
m_list
.
size
();
i
++
)
delete
m_list
[
i
];
}
virtual
void
object
(
co_procom
*
pcom
);
virtual
void
objectOid
(
co_procom
*
pcom
,
pwr_tOix
oix
);
virtual
void
objectName
(
co_procom
*
pcom
,
char
*
name
,
pwr_tOix
poix
);
...
...
@@ -97,13 +102,15 @@ public:
void
get_server_state
();
char
*
opc_provider
::
name_to_objectname
(
char
*
name
);
void
errlog
(
std
::
string
*
item
,
std
::
vector
<
s0__OPCError
*>&
errvect
);
void
init
();
void
fault
();
vector
<
opcprv_obj
>
m_list
;
vector
<
opcprv_obj
*
>
m_list
;
map
<
pwr_tUInt32
,
opcprv_sub
>
m_sublist
;
pwr_tOix
root
;
pwr_tOix
next_oix
;
struct
soap
soap
;
pwr_sClass_Opc_ServerState
server_state
;
pwr_sClass_Opc_ServerState
*
server_state
;
};
#endif
opc/exe/opc_server/src/opc_server.cpp
View file @
b3c63919
/*
* Proview $Id: opc_server.cpp,v 1.1
2 2007-03-23 08:19:45
claes Exp $
* Proview $Id: opc_server.cpp,v 1.1
3 2007-03-27 08:37:50
claes Exp $
* Copyright (C) 2005 SSAB Oxelsund AB.
*
* This program is free software; you can redistribute it and/or
...
...
@@ -56,20 +56,24 @@ typedef map< int, opcsrv_client>::iterator client_iterator;
class
opc_server
{
public:
opc_server
()
:
m_client_access_cnt
(
0
),
m_grant_all
(
true
)
{}
map
<
int
,
opcsrv_client
>
m_client
;
pwr_tTime
m_start_time
;
pwr_sClass_Opc_ServerConfig
*
m_config
;
opc_sClientAccess
m_client_access
[
20
];
int
m_client_access_cnt
;
int
m_current_access
;
bool
m_grant_all
;
opcsrv_client
*
find_client
(
int
sid
);
opcsrv_client
*
new_client
(
int
sid
);
int
fault
(
struct
soap
*
soap
,
int
code
);
int
get_access
(
struct
soap
*
so
);
};
static
opc_server
*
opcsrv
;
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
;
static
int
opcsrv_set_error
(
struct
soap
*
soap
,
const
char
*
faultcode
,
const
char
*
faultsubcode
,
const
char
*
faultstring
,
const
char
*
faultdetail
,
int
soaperror
)
...
...
@@ -126,6 +130,7 @@ int main()
struct
soap
soap
;
int
m
,
s
;
// Master and slave sockets
pwr_tStatus
sts
;
pwr_tOid
config_oid
;
sts
=
gdh_Init
(
"opc_server"
);
if
(
EVEN
(
sts
))
{
...
...
@@ -134,45 +139,33 @@ int main()
opcsrv
=
new
opc_server
();
#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
);
exit
(
sts
);
}
sts = gdh_ObjidToPointer( config_oid,
&opc
_config);
sts
=
gdh_ObjidToPointer
(
config_oid
,
(
void
**
)
&
opcsrv
->
m
_config
);
if
(
EVEN
(
sts
))
{
exit(
0
);
exit
(
sts
);
}
#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
<
(
int
)(
sizeof
(
opc
srv
->
m_config
->
ClientAccess
)
/
sizeof
(
opcsrv
->
m
_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
++
;
if
(
strcmp
(
opc
srv
->
m
_config
->
ClientAccess
[
i
].
Address
,
""
)
!=
0
)
{
opc
srv
->
m_client_access
[
opcsrv
->
m
_client_access_cnt
].
address
=
inet_network
(
opc
srv
->
m
_config
->
ClientAccess
[
i
].
Address
);
if
(
opc
srv
->
m_client_access
[
opcsrv
->
m
_client_access_cnt
].
address
!=
-
1
)
{
opc
srv
->
m_client_access
[
opcsrv
->
m_client_access_cnt
].
access
=
opcsrv
->
m
_config
->
ClientAccess
[
i
].
Access
;
opc
srv
->
m
_client_access_cnt
++
;
}
}
}
clock_gettime
(
CLOCK_REALTIME
,
&
opc_start_time
);
clock_gettime
(
CLOCK_REALTIME
,
&
opc
srv
->
m
_start_time
);
soap_init
(
&
soap
);
m
=
soap_bind
(
&
soap
,
NULL
,
18083
,
100
);
...
...
@@ -200,17 +193,26 @@ int main()
}
soap_done
(
&
soap
);
// Close master socket and detach environment
return
0
;
return
SOAP_OK
;
}
SOAP_FMAC5
int
SOAP_FMAC6
__s0__GetStatus
(
struct
soap
*
,
SOAP_FMAC5
int
SOAP_FMAC6
__s0__GetStatus
(
struct
soap
*
soap
,
_s0__GetStatus
*
s0__GetStatus
,
_s0__GetStatusResponse
*
s0__GetStatusResponse
)
{
pwr_tTime
current_time
;
// Check access for connection
opcsrv
->
m_current_access
=
opcsrv
->
get_access
(
soap
);
switch
(
opcsrv
->
m_current_access
)
{
case
pwr_eOpc_AccessEnum_None
:
return
opcsrv
->
fault
(
soap
,
opc_eResultCode_E_ACCESS_DENIED
);
default:
;
}
clock_gettime
(
CLOCK_REALTIME
,
&
current_time
);
s0__GetStatusResponse
->
GetStatusResult
=
new
s0__ReplyBase
();
...
...
@@ -223,13 +225,13 @@ SOAP_FMAC5 int SOAP_FMAC6 __s0__GetStatus(struct soap*,
s0__GetStatusResponse
->
Status
=
new
s0__ServerStatus
();
s0__GetStatusResponse
->
Status
->
VendorInfo
=
new
std
::
string
(
"Proview Open Source Process Control"
);
s0__GetStatusResponse
->
Status
->
SupportedInterfaceVersions
.
push_back
(
s0__interfaceVersion__XML_USCOREDA_USCOREVersion_USCORE1_USCORE0
);
s0__GetStatusResponse
->
Status
->
StartTime
.
__item
=
opc_datetime
(
&
opc_start_time
);
s0__GetStatusResponse
->
Status
->
StartTime
.
__item
=
opc_datetime
(
&
opc
srv
->
m
_start_time
);
s0__GetStatusResponse
->
Status
->
ProductVersion
=
new
std
::
string
(
pwrv_cPwrVersionStr
);
return
0
;
return
SOAP_OK
;
}
SOAP_FMAC5
int
SOAP_FMAC6
__s0__Read
(
struct
soap
*
,
SOAP_FMAC5
int
SOAP_FMAC6
__s0__Read
(
struct
soap
*
soap
,
_s0__Read
*
s0__Read
,
_s0__ReadResponse
*
s0__ReadResponse
)
{
...
...
@@ -246,6 +248,17 @@ SOAP_FMAC5 int SOAP_FMAC6 __s0__Read(struct soap*,
char
buf
[
1024
];
unsigned
int
options
=
0
;
// Check access for connection
opcsrv
->
m_current_access
=
opcsrv
->
get_access
(
soap
);
switch
(
opcsrv
->
m_current_access
)
{
case
pwr_eOpc_AccessEnum_ReadOnly
:
case
pwr_eOpc_AccessEnum_ReadWrite
:
break
;
default:
return
opcsrv
->
fault
(
soap
,
opc_eResultCode_E_ACCESS_DENIED
);
}
s0__ReadResponse
->
ReadResult
=
new
s0__ReplyBase
();
s0__ReadResponse
->
ReadResult
->
RcvTime
.
__item
=
opc_datetime
(
0
);
s0__ReadResponse
->
ReadResult
->
ReplyTime
.
__item
=
opc_datetime
(
0
);
...
...
@@ -254,10 +267,10 @@ SOAP_FMAC5 int SOAP_FMAC6 __s0__Read(struct soap*,
s0__ReadResponse
->
ReadResult
->
ServerState
=
s0__serverState__running
;
if
(
!
s0__Read
->
ItemList
)
return
0
;
return
SOAP_OK
;
if
(
s0__Read
->
ItemList
->
Items
.
empty
())
return
0
;
return
SOAP_OK
;
memset
(
path
,
0
,
sizeof
(
path
));
...
...
@@ -342,7 +355,7 @@ SOAP_FMAC5 int SOAP_FMAC6 __s0__Read(struct soap*,
continue
;
}
}
return
0
;
return
SOAP_OK
;
}
SOAP_FMAC5
int
SOAP_FMAC6
__s0__Write
(
struct
soap
*
soap
,
...
...
@@ -361,6 +374,16 @@ SOAP_FMAC5 int SOAP_FMAC6 __s0__Write(struct soap* soap,
char
buf
[
1024
];
unsigned
int
options
=
0
;
// Check access for connection
opcsrv
->
m_current_access
=
opcsrv
->
get_access
(
soap
);
switch
(
opcsrv
->
m_current_access
)
{
case
pwr_eOpc_AccessEnum_ReadWrite
:
break
;
default:
return
opcsrv
->
fault
(
soap
,
opc_eResultCode_E_ACCESS_DENIED
);
}
s0__WriteResponse
->
WriteResult
=
new
s0__ReplyBase
();
s0__WriteResponse
->
WriteResult
->
RcvTime
.
__item
=
opc_datetime
(
0
);
s0__WriteResponse
->
WriteResult
->
ReplyTime
.
__item
=
opc_datetime
(
0
);
...
...
@@ -369,10 +392,10 @@ SOAP_FMAC5 int SOAP_FMAC6 __s0__Write(struct soap* soap,
s0__WriteResponse
->
WriteResult
->
ServerState
=
s0__serverState__running
;
if
(
!
s0__Write
->
ItemList
)
return
0
;
return
SOAP_OK
;
if
(
s0__Write
->
ItemList
->
Items
.
empty
())
return
0
;
return
SOAP_OK
;
strcpy
(
path
,
""
);
...
...
@@ -434,7 +457,7 @@ SOAP_FMAC5 int SOAP_FMAC6 __s0__Write(struct soap* soap,
s0__WriteResponse
->
RItemList
->
Items
.
push_back
(
iv
);
}
}
return
0
;
return
SOAP_OK
;
}
SOAP_FMAC5
int
SOAP_FMAC6
__s0__Subscribe
(
struct
soap
*
soap
,
...
...
@@ -446,6 +469,17 @@ SOAP_FMAC5 int SOAP_FMAC6 __s0__Subscribe(struct soap* soap,
pwr_tUInt32
a_size
,
a_offs
,
a_elem
;
pwr_tAName
aname
;
// Check access for connection
opcsrv
->
m_current_access
=
opcsrv
->
get_access
(
soap
);
switch
(
opcsrv
->
m_current_access
)
{
case
pwr_eOpc_AccessEnum_ReadOnly
:
case
pwr_eOpc_AccessEnum_ReadWrite
:
break
;
default:
return
opcsrv
->
fault
(
soap
,
opc_eResultCode_E_ACCESS_DENIED
);
}
opcsrv_client
*
client
=
opcsrv
->
find_client
(
soap
->
ip
);
if
(
!
client
)
client
=
opcsrv
->
new_client
(
soap
->
ip
);
...
...
@@ -485,13 +519,22 @@ SOAP_FMAC5 int SOAP_FMAC6 __s0__Subscribe(struct soap* soap,
client
->
m_sublist
[
*
s0__SubscribeResponse
->
ServerSubHandle
].
push_back
(
sub
);
}
}
return
0
;
return
SOAP_OK
;
}
SOAP_FMAC5
int
SOAP_FMAC6
__s0__SubscriptionPolledRefresh
(
struct
soap
*
soap
,
_s0__SubscriptionPolledRefresh
*
s0__SubscriptionPolledRefresh
,
_s0__SubscriptionPolledRefreshResponse
*
s0__SubscriptionPolledRefreshResponse
)
{
// Check access for the connection
switch
(
opcsrv
->
m_current_access
)
{
case
pwr_eOpc_AccessEnum_ReadOnly
:
case
pwr_eOpc_AccessEnum_ReadWrite
:
break
;
default:
return
opcsrv
->
fault
(
soap
,
opc_eResultCode_E_ACCESS_DENIED
);
}
pwr_tTime
current_time
;
opcsrv_client
*
client
=
opcsrv
->
find_client
(
soap
->
ip
);
if
(
!
client
)
{
...
...
@@ -538,13 +581,22 @@ SOAP_FMAC5 int SOAP_FMAC6 __s0__SubscriptionPolledRefresh(struct soap* soap,
}
}
return
0
;
return
SOAP_OK
;
}
SOAP_FMAC5
int
SOAP_FMAC6
__s0__SubscriptionCancel
(
struct
soap
*
soap
,
_s0__SubscriptionCancel
*
s0__SubscriptionCancel
,
_s0__SubscriptionCancelResponse
*
s0__SubscriptionCancelResponse
)
{
// Check access for the connection
switch
(
opcsrv
->
m_current_access
)
{
case
pwr_eOpc_AccessEnum_ReadOnly
:
case
pwr_eOpc_AccessEnum_ReadWrite
:
break
;
default:
return
opcsrv
->
fault
(
soap
,
opc_eResultCode_E_ACCESS_DENIED
);
}
opcsrv_client
*
client
=
opcsrv
->
find_client
(
soap
->
ip
);
if
(
!
client
)
{
// TODO
...
...
@@ -564,7 +616,7 @@ SOAP_FMAC5 int SOAP_FMAC6 __s0__SubscriptionCancel(struct soap* soap,
}
s0__SubscriptionCancelResponse
->
ClientRequestHandle
=
s0__SubscriptionCancel
->
ClientRequestHandle
;
return
0
;
return
SOAP_OK
;
}
bool
opcsrv_get_properties
(
bool
is_item
,
pwr_tCid
pcid
,
pwr_tAttrRef
*
parp
,
...
...
@@ -684,7 +736,7 @@ bool opcsrv_get_properties( bool is_item, pwr_tCid pcid, pwr_tAttrRef *parp,
ip
->
Name
=
std
::
string
(
"accessRights"
);
ip
->
Value
=
new
xsd__string
();
switch
(
opc_current_access
)
{
switch
(
opc
srv
->
m
_current_access
)
{
case
pwr_eOpc_AccessEnum_ReadOnly
:
((
xsd__string
*
)
ip
->
Value
)
->
__item
=
std
::
string
(
"readable"
);
break
;
...
...
@@ -904,16 +956,19 @@ bool opcsrv_get_properties( bool is_item, pwr_tCid pcid, pwr_tAttrRef *parp,
return
true
;
}
int
opc
srv_
get_access
(
struct
soap
*
so
)
int
opc
_server
::
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
;
if
(
m_grant_all
)
access
=
pwr_eOpc_AccessEnum_ReadWrite
;
else
{
for
(
int
i
=
0
;
i
<
m_client_access_cnt
;
i
++
)
{
if
(
m_client_access
[
i
].
address
==
(
int
)
so
->
ip
)
{
access
=
m_client_access
[
i
].
access
;
break
;
}
}
}
return
access
;
}
...
...
@@ -927,7 +982,17 @@ SOAP_FMAC5 int SOAP_FMAC6 __s0__Browse(struct soap *soap, _s0__Browse *s0__Brows
unsigned
int
property_mask
;
pwr_tTime
current_time
;
opc_current_access
=
opcsrv_get_access
(
soap
);
// Check access for connection
opcsrv
->
m_current_access
=
opcsrv
->
get_access
(
soap
);
switch
(
opcsrv
->
m_current_access
)
{
case
pwr_eOpc_AccessEnum_ReadOnly
:
case
pwr_eOpc_AccessEnum_ReadWrite
:
break
;
default:
return
opcsrv
->
fault
(
soap
,
opc_eResultCode_E_ACCESS_DENIED
);
}
clock_gettime
(
CLOCK_REALTIME
,
&
current_time
);
s0__BrowseResponse
->
BrowseResult
=
new
s0__ReplyBase
();
...
...
@@ -1207,7 +1272,7 @@ SOAP_FMAC5 int SOAP_FMAC6 __s0__Browse(struct soap *soap, _s0__Browse *s0__Brows
return
SOAP_OK
;
}
SOAP_FMAC5
int
SOAP_FMAC6
__s0__GetProperties
(
struct
soap
*
,
SOAP_FMAC5
int
SOAP_FMAC6
__s0__GetProperties
(
struct
soap
*
soap
,
_s0__GetProperties
*
s0__GetProperties
,
_s0__GetPropertiesResponse
*
s0__GetPropertiesResponse
)
{
...
...
@@ -1221,7 +1286,18 @@ SOAP_FMAC5 int SOAP_FMAC6 __s0__GetProperties(struct soap*,
gdh_sAttrDef
*
bd
;
int
rows
;
if
(
s0__GetProperties
->
ReturnAllProperties
)
// Check access for connection
opcsrv
->
m_current_access
=
opcsrv
->
get_access
(
soap
);
switch
(
opcsrv
->
m_current_access
)
{
case
pwr_eOpc_AccessEnum_ReadOnly
:
case
pwr_eOpc_AccessEnum_ReadWrite
:
break
;
default:
return
opcsrv
->
fault
(
soap
,
opc_eResultCode_E_ACCESS_DENIED
);
}
if
(
s0__GetProperties
->
ReturnAllProperties
&&
*
s0__GetProperties
->
ReturnAllProperties
)
property_mask
=
~
0
;
else
opc_propertynames_to_mask
(
s0__GetProperties
->
PropertyNames
,
&
property_mask
);
...
...
@@ -1247,20 +1323,26 @@ SOAP_FMAC5 int SOAP_FMAC6 __s0__GetProperties(struct soap*,
sts
=
gdh_NameToAttrref
(
pwr_cNOid
,
iname
,
&
aref
);
if
(
EVEN
(
sts
))
{
// E_INVALIDITEMNAME
return
0
;
opcsrv_returnerror
(
s0__GetPropertiesResponse
->
Errors
,
&
plist
->
ResultID
,
opc_eResultCode_E_UNKNOWNITEMNAME
,
0
);
s0__GetPropertiesResponse
->
PropertyLists
.
push_back
(
plist
);
continue
;
}
if
(
aref
.
Flags
.
b
.
Object
||
aref
.
Flags
.
b
.
ObjectAttr
)
{
// This is an object
sts
=
gdh_GetAttrRefTid
(
&
aref
,
&
cid
);
if
(
EVEN
(
sts
))
{
// E_INVALIDITEMNAME
return
0
;
opcsrv_returnerror
(
s0__GetPropertiesResponse
->
Errors
,
&
plist
->
ResultID
,
opc_eResultCode_E_FAIL
,
0
);
s0__GetPropertiesResponse
->
PropertyLists
.
push_back
(
plist
);
continue
;
}
if
(
!
cdh_tidIsCid
(
cid
))
{
// E_INVALIDITEMNAME
return
0
;
opcsrv_returnerror
(
s0__GetPropertiesResponse
->
Errors
,
&
plist
->
ResultID
,
opc_eResultCode_E_FAIL
,
0
);
s0__GetPropertiesResponse
->
PropertyLists
.
push_back
(
plist
);
continue
;
}
opcsrv_get_properties
(
false
,
cid
,
0
,
&
aref
,
...
...
@@ -1270,27 +1352,36 @@ SOAP_FMAC5 int SOAP_FMAC6 __s0__GetProperties(struct soap*,
else
{
// Get the object attrref and class for this attribute
if
(
!
(
aname
=
strrchr
(
iname
,
'.'
)))
{
// E_INVALIDITEMNAME
return
0
;
opcsrv_returnerror
(
s0__GetPropertiesResponse
->
Errors
,
&
plist
->
ResultID
,
opc_eResultCode_E_INVALIDITEMNAME
,
0
);
s0__GetPropertiesResponse
->
PropertyLists
.
push_back
(
plist
);
continue
;
}
aname
++
;
sts
=
gdh_AttrArefToObjectAref
(
&
aref
,
&
paref
);
if
(
EVEN
(
sts
))
{
return
0
;
opcsrv_returnerror
(
s0__GetPropertiesResponse
->
Errors
,
&
plist
->
ResultID
,
opc_eResultCode_E_FAIL
,
0
);
s0__GetPropertiesResponse
->
PropertyLists
.
push_back
(
plist
);
continue
;
}
sts
=
gdh_GetAttrRefTid
(
&
paref
,
&
cid
);
if
(
EVEN
(
sts
))
{
// E_INVALIDITEMNAME
return
0
;
opcsrv_returnerror
(
s0__GetPropertiesResponse
->
Errors
,
&
plist
->
ResultID
,
opc_eResultCode_E_FAIL
,
0
);
s0__GetPropertiesResponse
->
PropertyLists
.
push_back
(
plist
);
continue
;
}
// Get body definition
sts
=
gdh_GetObjectBodyDef
(
cid
,
&
bd
,
&
rows
,
pwr_cNOid
);
if
(
EVEN
(
sts
))
{
// E_INVALIDITEMNAME
return
0
;
opcsrv_returnerror
(
s0__GetPropertiesResponse
->
Errors
,
&
plist
->
ResultID
,
opc_eResultCode_E_FAIL
,
0
);
s0__GetPropertiesResponse
->
PropertyLists
.
push_back
(
plist
);
continue
;
}
int
bd_idx
=
-
1
;
for
(
int
i
=
0
;
i
<
rows
;
i
++
)
{
...
...
@@ -1300,9 +1391,11 @@ SOAP_FMAC5 int SOAP_FMAC6 __s0__GetProperties(struct soap*,
}
}
if
(
bd_idx
==
-
1
)
{
// E_INVALIDITEMNAME
free
(
(
char
*
)
bd
);
return
0
;
opcsrv_returnerror
(
s0__GetPropertiesResponse
->
Errors
,
&
plist
->
ResultID
,
opc_eResultCode_E_FAIL
,
0
);
s0__GetPropertiesResponse
->
PropertyLists
.
push_back
(
plist
);
continue
;
}
opcsrv_get_properties
(
true
,
cid
,
&
paref
,
&
aref
,
...
...
@@ -1314,6 +1407,6 @@ SOAP_FMAC5 int SOAP_FMAC6 __s0__GetProperties(struct soap*,
s0__GetPropertiesResponse
->
PropertyLists
.
push_back
(
plist
);
}
return
0
;
return
SOAP_OK
;
}
opc/lib/opc/src/opc_msg.h
View file @
b3c63919
...
...
@@ -98,6 +98,12 @@ class xsd__dateTime : public xsd__anyType
std
::
string
__item
;
};
/// Class wrapper for built-in type "xs:duration" derived from xsd__anyType
class
xsd__duration
:
public
xsd__anyType
{
public
:
std
::
string
__item
;
};
/// Primitive built-in type "xs:decimal"
typedef
std
::
string
xsd__decimal
;
...
...
opc/lib/opc/src/opc_utl.h
View file @
b3c63919
/*
* Proview $Id: opc_utl.h,v 1.1
3 2007-03-23 08:19:45
claes Exp $
* Proview $Id: opc_utl.h,v 1.1
4 2007-03-27 08:37:50
claes Exp $
* Copyright (C) 2005 SSAB Oxelsund AB.
*
* This program is free software; you can redistribute it and/or
...
...
@@ -79,6 +79,7 @@ typedef enum {
}
opc_eDataType
;
typedef
enum
{
opc_eResultCode_S_
,
opc_eResultCode_S_CLAMP
,
opc_eResultCode_S_DATAQUEUEOVERFLOW
,
opc_eResultCode_S_UNSUPPORTEDRATE
,
...
...
opc/wbl/mcomp/src/opc.wb_load
View file @
b3c63919
Volume Opc $ClassVolume 0.0.250.9
Body SysBody 01-JAN-1970 01:00:00.00
Attr NextOix = "_X
12
"
Attr NextOix = "_X
37
"
Attr NextCix = "_X24"
Attr NextTix[0] = "_X
3
"
Attr NextTix[0] = "_X
4
"
EndBody
Object Type $TypeHier 2 02-MAR-2007 14:45:01.59
Object Opc_ServerStateEnum $TypeDef 1 05-MAR-2007 13:22:13.08
...
...
@@ -53,7 +53,7 @@ Volume Opc $ClassVolume 0.0.250.9
EndObject
EndObject
Object Opc_AccessEnum $TypeDef 2 05-MAR-2007 13:22:42.62
Body SysBody
05-MAR-2007 13:20:09.54
Body SysBody
26-MAR-2007 08:57:21.02
Attr TypeRef = "pwrs:Type-$Enum"
Attr Elements = 1
EndBody
...
...
@@ -78,8 +78,196 @@ Volume Opc $ClassVolume 0.0.250.9
EndBody
EndObject
EndObject
Object Opc_ResultCodeEnum $TypeDef 3 26-MAR-2007 08:57:08.63
Body SysBody 26-MAR-2007 08:57:24.17
Attr TypeRef = "pwrs:Type-$Enum"
Attr Elements = 1
EndBody
Object None $Value 36 26-MAR-2007 09:17:34.19
Body SysBody 26-MAR-2007 09:17:36.98
Attr Text = "None"
Attr PgmName = "None"
EndBody
EndObject
Object Clamp $Value 13 26-MAR-2007 08:58:04.21
Body SysBody 26-MAR-2007 09:15:37.54
Attr Text = "Clamp"
Attr PgmName = "Clamp"
Attr Value = 1
EndBody
EndObject
Object DataQueueOverflow $Value 14 26-MAR-2007 09:01:33.58
Body SysBody 26-MAR-2007 09:15:39.88
Attr Text = "DataQueueOverflow"
Attr PgmName = "DataQueueOverflow"
Attr Value = 2
EndBody
EndObject
Object UnsupportedRate $Value 15 26-MAR-2007 09:01:52.23
Body SysBody 26-MAR-2007 09:15:42.03
Attr Text = "UnsupportedRate"
Attr PgmName = "UnsupportedRate"
Attr Value = 3
EndBody
EndObject
Object Access_Denied $Value 16 26-MAR-2007 09:02:08.42
Body SysBody 26-MAR-2007 09:15:44.17
Attr Text = "Access_Denied"
Attr PgmName = "Access_Denied"
Attr Value = 4
EndBody
EndObject
Object Busy $Value 17 26-MAR-2007 09:02:17.37
Body SysBody 26-MAR-2007 09:15:46.48
Attr Text = "Busy"
Attr PgmName = "Busy"
Attr Value = 5
EndBody
EndObject
Object Fail $Value 18 26-MAR-2007 09:02:23.96
Body SysBody 26-MAR-2007 09:15:48.65
Attr Text = "Fail"
Attr PgmName = "Fail"
Attr Value = 6
EndBody
EndObject
Object InvalidContinuationPoint $Value 19 26-MAR-2007 09:02:40.66
Body SysBody 26-MAR-2007 09:15:50.84
Attr Text = "InvalidContinuationPoint"
Attr PgmName = "InvalidContinuationPoint"
Attr Value = 7
EndBody
EndObject
Object InvalidFilter $Value 20 26-MAR-2007 09:02:54.73
Body SysBody 26-MAR-2007 09:15:52.95
Attr Text = "InvalidFilter"
Attr PgmName = "InvalidFilter"
Attr Value = 8
EndBody
EndObject
Object InvalidHoldTime $Value 21 26-MAR-2007 09:03:04.96
Body SysBody 26-MAR-2007 09:15:55.03
Attr Text = "InvalidHoldTime"
Attr PgmName = "InvalidHoldTime"
Attr Value = 9
EndBody
EndObject
Object InvalidItemName $Value 22 26-MAR-2007 09:03:21.32
Body SysBody 26-MAR-2007 09:16:01.04
Attr Text = "InvalidItemName"
Attr PgmName = "InvalidItemName"
Attr Value = 10
EndBody
EndObject
Object InvalidItemPath $Value 23 26-MAR-2007 09:03:34.59
Body SysBody 26-MAR-2007 09:16:06.28
Attr Text = "InvalidItemPath"
Attr PgmName = "InvalidItemPath"
Attr Value = 11
EndBody
EndObject
Object InvalidPid $Value 24 26-MAR-2007 09:03:50.66
Body SysBody 26-MAR-2007 09:16:08.92
Attr Text = "InvalidPid"
Attr PgmName = "InvalidPid"
Attr Value = 12
EndBody
EndObject
Object NoSubscription $Value 25 26-MAR-2007 09:04:05.90
Body SysBody 26-MAR-2007 09:16:11.44
Attr Text = "NoSubscription"
Attr PgmName = "NoSubscription"
Attr Value = 13
EndBody
EndObject
Object NotSupported $Value 26 26-MAR-2007 09:04:17.85
Body SysBody 26-MAR-2007 09:16:13.87
Attr Text = "NotSupported"
Attr PgmName = "NotSupported"
Attr Value = 14
EndBody
EndObject
Object OutOfMemory $Value 27 26-MAR-2007 09:04:28.71
Body SysBody 26-MAR-2007 09:16:31.91
Attr Text = "OutOfMemory"
Attr PgmName = "OutOfMemory"
Attr Value = 15
EndBody
EndObject
Object Range $Value 28 26-MAR-2007 09:04:40.01
Body SysBody 26-MAR-2007 09:16:34.24
Attr Text = "Range"
Attr PgmName = "Range"
Attr Value = 16
EndBody
EndObject
Object ReadOnly $Value 29 26-MAR-2007 09:04:47.72
Body SysBody 26-MAR-2007 09:16:36.47
Attr Text = "ReadOnly"
Attr PgmName = "ReadOnly"
Attr Value = 17
EndBody
EndObject
Object ServerState $Value 30 26-MAR-2007 09:04:56.81
Body SysBody 26-MAR-2007 09:16:40.76
Attr Text = "ServerState"
Attr PgmName = "ServerState"
Attr Value = 18
EndBody
EndObject
Object TimedOut $Value 31 26-MAR-2007 09:05:04.79
Body SysBody 26-MAR-2007 09:16:44.64
Attr Text = "TimedOut"
Attr PgmName = "TimedOut"
Attr Value = 19
EndBody
EndObject
Object UnknownItemName $Value 32 26-MAR-2007 09:05:38.19
Body SysBody 26-MAR-2007 09:16:48.03
Attr Text = "UnknownItemName"
Attr PgmName = "UnknownItemName"
Attr Value = 20
EndBody
EndObject
Object UnknownItemPath $Value 33 26-MAR-2007 09:05:43.74
Body SysBody 26-MAR-2007 09:16:51.16
Attr Text = "UnknownItemPath"
Attr PgmName = "UnknownItemPath"
Attr Value = 21
EndBody
EndObject
Object WriteOnly $Value 34 26-MAR-2007 09:05:52.22
Body SysBody 26-MAR-2007 09:16:54.15
Attr Text = "WriteOnly"
Attr PgmName = "WriteOnly"
Attr Value = 22
EndBody
EndObject
Object BadType $Value 35 26-MAR-2007 09:06:04.01
Body SysBody 26-MAR-2007 09:16:57.36
Attr Text = "BadType"
Attr PgmName = "BadType"
Attr Value = 23
EndBody
EndObject
Object Unknown $Value 37 26-MAR-2007 12:52:30.99
Body SysBody 26-MAR-2007 12:52:38.68
Attr Text = "Unknown"
Attr PgmName = "Unknown"
Attr Value = 10000
EndBody
EndObject
EndObject
EndObject
Object Class $ClassHier 1 02-MAR-2007 14:45:04.90
!/**
! @Version 1.0
! @Summary Opc client access.
! Part of the Opc_ServerConfig object that defines the authorization for an
! OPC client to access a Proview OPC Server.
! The client is identified by the ip-address, and can have the access None,
! ReadOnly or ReadWrite.
!*/
Object Opc_ClientAccess $ClassDef 23 05-MAR-2007 13:28:06.11
Body SysBody 05-MAR-2007 13:27:57.56
Attr Editor = 0
...
...
@@ -91,12 +279,18 @@ Volume Opc $ClassVolume 0.0.250.9
Attr StructName = "Opc_ClientAccess"
Attr NextAix = "_X3"
EndBody
!/**
! Ip-address of OPC client
!*/
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
!/**
! Access for OPC client, None, ReadOnly or ReadWrite.
!*/
Object Access $Attribute 2 05-MAR-2007 13:29:22.75
Body SysBody 05-MAR-2007 13:29:47.95
Attr PgmName = "Access"
...
...
@@ -109,6 +303,12 @@ Volume Opc $ClassVolume 0.0.250.9
EndBody
EndObject
EndObject
!/**
! @Version 1.0
! @Summary OPC Hierarchy object.
! Object to browse an element element in the opc hierarchy that is not an
! item, i.e. doesn't contain a value.
!*/
Object Opc_Hier $ClassDef 1 01-MAR-2007 16:48:24.56
Body SysBody 01-MAR-2007 16:47:58.95
Attr Editor = 0
...
...
@@ -120,6 +320,9 @@ Volume Opc $ClassVolume 0.0.250.9
Attr StructName = "Opc_Hier"
Attr NextAix = "_X2"
EndBody
!/**
! Descripion property.
!*/
Object Description $Attribute 1 05-MAR-2007 13:41:33.76
Body SysBody 05-MAR-2007 13:41:39.19
Attr PgmName = "Description"
...
...
@@ -148,12 +351,18 @@ Volume Opc $ClassVolume 0.0.250.9
Attr StructName = "Opc_String"
Attr NextAix = "_X3"
EndBody
!/**
! Description property.
!*/
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
!/**
! Item value, presented as a pwr_tString80.
!*/
Object Value $Attribute 1 01-MAR-2007 16:49:41.73
Body SysBody 01-MAR-2007 16:49:54.49
Attr PgmName = "Value"
...
...
@@ -166,6 +375,11 @@ Volume Opc $ClassVolume 0.0.250.9
EndBody
EndObject
EndObject
!/**
! @Version 1.0
! @Group IO_Opc
! Object to browse an OPC item of OPC type 'boolean'.
!*/
Object Opc_Boolean $ClassDef 19 01-MAR-2007 16:50:41.94
Body SysBody 01-MAR-2007 16:50:28.50
Attr Editor = 0
...
...
@@ -177,12 +391,18 @@ Volume Opc $ClassVolume 0.0.250.9
Attr StructName = "Opc_Boolean"
Attr NextAix = "_X4"
EndBody
!/**
! Description property.
!*/
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
!/**
! Item value, presented as a pwr_tBoolean.
!*/
Object Value $Attribute 2 01-MAR-2007 16:50:28.50
Body SysBody 01-MAR-2007 16:50:51.77
Attr PgmName = "Value"
...
...
@@ -195,6 +415,17 @@ Volume Opc $ClassVolume 0.0.250.9
EndBody
EndObject
EndObject
!/**
! @Version 1.0
! @Group IO_Opc
! Object to browse an OPC item of OPC type 'float'.
!
! The object reside in an ExternalVolume browsing an OPC server and is
! created dynamically by the OPC client process.
!
! @b Object Graph
! @image orm_opc_float_og.gif
!*/
Object Opc_Float $ClassDef 18 01-MAR-2007 16:51:15.25
Body SysBody 01-MAR-2007 16:50:28.36
Attr Editor = 0
...
...
@@ -206,48 +437,82 @@ Volume Opc $ClassVolume 0.0.250.9
Attr StructName = "Opc_Float"
Attr NextAix = "_X10"
EndBody
!/**
! Description property.
!*/
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
!/**
! Item value, presented as a pwr_tFloat32.
!*/
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
!/**
! Property highEU.
! Represents the highest value likely to be obtained in normal
! operation and is intended for such use as automatically scaling
! a bargraph display.
!*/
Object HighEU $Attribute 4 05-MAR-2007 13:47:07.23
Body SysBody 08-MAR-2007 18:17:40.34
Attr PgmName = "HighEU"
Attr TypeRef = "pwrs:Type-$Float32"
EndBody
EndObject
!/**
! Property lowEU.
! Represents the lowest value likely to be obtained in normal
! operation and is intended for such use as automatically scaling
! a bargraph display.
!*/
Object LowEU $Attribute 5 05-MAR-2007 13:47:49.35
Body SysBody 08-MAR-2007 18:17:45.95
Attr PgmName = "LowEU"
Attr TypeRef = "pwrs:Type-$Float32"
EndBody
EndObject
!/**
! Property highIR.
! Represents the highest value that can be returned by the
! instrument.
!*/
Object HighIR $Attribute 6 05-MAR-2007 13:48:07.66
Body SysBody 08-MAR-2007 18:20:14.24
Attr PgmName = "HighIR"
Attr TypeRef = "pwrs:Type-$Float32"
EndBody
EndObject
!/**
! Property lowIR.
! Represents the lowest value that can be returned by the
! instrument.
!*/
Object LowIR $Attribute 7 05-MAR-2007 13:48:24.95
Body SysBody 08-MAR-2007 18:20:17.51
Attr PgmName = "LowIR"
Attr TypeRef = "pwrs:Type-$Float32"
EndBody
EndObject
!/**
! Property engineeringUnits.
!*/
Object EngineeringUnits $Attribute 8 05-MAR-2007 13:49:08.68
Body SysBody 05-MAR-2007 13:49:27.27
Attr PgmName = "EngineeringUnits"
Attr TypeRef = "pwrs:Type-$String16"
EndBody
EndObject
!/**
! Enable slider in object graph.
!*/
Object EnableSlider $Attribute 9 22-MAR-2007 10:43:36.02
Body SysBody 22-MAR-2007 10:43:57.46
Attr PgmName = "EnableSlider"
...
...
@@ -260,6 +525,14 @@ Volume Opc $ClassVolume 0.0.250.9
EndBody
EndObject
EndObject
!/**
! @Version 1.0
! @Group IO_Opc
! Object to browse an OPC item of OPC type 'double'.
!
! The object reside in an ExternalVolume browsing an OPC server and is
! created dynamically by the OPC client process.
!*/
Object Opc_Double $ClassDef 17 01-MAR-2007 16:51:56.40
Body SysBody 01-MAR-2007 16:50:28.21
Attr Editor = 0
...
...
@@ -271,48 +544,82 @@ Volume Opc $ClassVolume 0.0.250.9
Attr StructName = "Opc_Double"
Attr NextAix = "_X10"
EndBody
!/**
! Description property.
!*/
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
!/**
! Item value, presented as a pwr_tFloat64.
!*/
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
!/**
! Property highEU.
! Represents the highest value likely to be obtained in normal
! operation and is intended for such use as automatically scaling
! a bargraph display.
!*/
Object HighEU $Attribute 4 05-MAR-2007 13:51:23.71
Body SysBody 08-MAR-2007 18:20:25.69
Attr PgmName = "HighEU"
Attr TypeRef = "pwrs:Type-$Float32"
EndBody
EndObject
!/**
! Property lowEU.
! Represents the lowest value likely to be obtained in normal
! operation and is intended for such use as automatically scaling
! a bargraph display.
!*/
Object LowEU $Attribute 5 05-MAR-2007 13:51:23.71
Body SysBody 08-MAR-2007 18:20:29.79
Attr PgmName = "LowEU"
Attr TypeRef = "pwrs:Type-$Float32"
EndBody
EndObject
!/**
! Property highIR.
! Represents the highest value that can be returned by the
! instrument.
!*/
Object HighIR $Attribute 6 05-MAR-2007 13:51:23.71
Body SysBody 08-MAR-2007 18:20:33.17
Attr PgmName = "HighIR"
Attr TypeRef = "pwrs:Type-$Float32"
EndBody
EndObject
!/**
! Property lowIR.
! Represents the lowest value that can be returned by the
! instrument.
!*/
Object LowIR $Attribute 7 05-MAR-2007 13:51:23.71
Body SysBody 08-MAR-2007 18:20:36.44
Attr PgmName = "LowIR"
Attr TypeRef = "pwrs:Type-$Float32"
EndBody
EndObject
!/**
! Property engineeringUnits.
!*/
Object EngineeringUnits $Attribute 8 05-MAR-2007 13:51:23.71
Body SysBody 05-MAR-2007 13:51:23.71
Attr PgmName = "EngineeringUnits"
Attr TypeRef = "pwrs:Type-$String16"
EndBody
EndObject
!/**
! Enable slider in object graph.
!*/
Object EnableSlider $Attribute 9 22-MAR-2007 15:50:58.89
Body SysBody 22-MAR-2007 15:50:58.89
Attr PgmName = "EnableSlider"
...
...
@@ -325,6 +632,14 @@ Volume Opc $ClassVolume 0.0.250.9
EndBody
EndObject
EndObject
!/**
! @Version 1.0
! @Group IO_Opc
! Object to browse an OPC item of OPC type 'decimal'.
!
! The object reside in an ExternalVolume browsing an OPC server and is
! created dynamically by the OPC client process.
!*/
Object Opc_Decimal $ClassDef 16 01-MAR-2007 16:52:29.00
Body SysBody 01-MAR-2007 16:50:28.06
Attr Editor = 0
...
...
@@ -336,48 +651,82 @@ Volume Opc $ClassVolume 0.0.250.9
Attr StructName = "Opc_Decimal"
Attr NextAix = "_X10"
EndBody
!/**
! Description property.
!*/
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
!/**
! Item value, presented as a pwr_tFloat32.
!*/
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
!/**
! Property highEU.
! Represents the highest value likely to be obtained in normal
! operation and is intended for such use as automatically scaling
! a bargraph display.
!*/
Object HighEU $Attribute 4 05-MAR-2007 13:51:28.14
Body SysBody 08-MAR-2007 18:19:54.87
Attr PgmName = "HighEU"
Attr TypeRef = "pwrs:Type-$Float32"
EndBody
EndObject
!/**
! Property lowEU.
! Represents the lowest value likely to be obtained in normal
! operation and is intended for such use as automatically scaling
! a bargraph display.
!*/
Object LowEU $Attribute 5 05-MAR-2007 13:51:28.14
Body SysBody 08-MAR-2007 18:19:58.75
Attr PgmName = "LowEU"
Attr TypeRef = "pwrs:Type-$Float32"
EndBody
EndObject
!/**
! Property highIR.
! Represents the highest value that can be returned by the
! instrument.
!*/
Object HighIR $Attribute 6 05-MAR-2007 13:51:28.14
Body SysBody 08-MAR-2007 18:20:46.39
Attr PgmName = "HighIR"
Attr TypeRef = "pwrs:Type-$Float32"
EndBody
EndObject
!/**
! Property lowIR.
! Represents the lowest value that can be returned by the
! instrument.
!*/
Object LowIR $Attribute 7 05-MAR-2007 13:51:28.14
Body SysBody 08-MAR-2007 18:20:49.66
Attr PgmName = "LowIR"
Attr TypeRef = "pwrs:Type-$Float32"
EndBody
EndObject
!/**
! Property engineeringUnits.
!*/
Object EngineeringUnits $Attribute 8 05-MAR-2007 13:51:28.14
Body SysBody 05-MAR-2007 13:51:28.14
Attr PgmName = "EngineeringUnits"
Attr TypeRef = "pwrs:Type-$String16"
EndBody
EndObject
!/**
! Enable slider in object graph.
!*/
Object EnableSlider $Attribute 9 22-MAR-2007 15:51:05.91
Body SysBody 22-MAR-2007 15:51:05.91
Attr PgmName = "EnableSlider"
...
...
@@ -390,6 +739,14 @@ Volume Opc $ClassVolume 0.0.250.9
EndBody
EndObject
EndObject
!/**
! @Version 1.0
! @Group IO_Opc
! Object to browse an OPC item of OPC type 'long'.
!
! The object reside in an ExternalVolume browsing an OPC server and is
! created dynamically by the OPC client process.
!*/
Object Opc_Long $ClassDef 15 01-MAR-2007 16:52:57.57
Body SysBody 01-MAR-2007 16:50:27.91
Attr Editor = 0
...
...
@@ -401,48 +758,82 @@ Volume Opc $ClassVolume 0.0.250.9
Attr StructName = "Opc_Long"
Attr NextAix = "_X10"
EndBody
!/**
! Description property.
!*/
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
!/**
! Item value, presented as a pwr_tInt32.
!*/
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
!/**
! Property highEU.
! Represents the highest value likely to be obtained in normal
! operation and is intended for such use as automatically scaling
! a bargraph display.
!*/
Object HighEU $Attribute 4 05-MAR-2007 13:51:31.83
Body SysBody 08-MAR-2007 18:19:42.10
Attr PgmName = "HighEU"
Attr TypeRef = "pwrs:Type-$Float32"
EndBody
EndObject
!/**
! Property lowEU.
! Represents the lowest value likely to be obtained in normal
! operation and is intended for such use as automatically scaling
! a bargraph display.
!*/
Object LowEU $Attribute 5 05-MAR-2007 13:51:31.83
Body SysBody 08-MAR-2007 18:19:46.62
Attr PgmName = "LowEU"
Attr TypeRef = "pwrs:Type-$Float32"
EndBody
EndObject
!/**
! Property highIR.
! Represents the highest value that can be returned by the
! instrument.
!*/
Object HighIR $Attribute 6 05-MAR-2007 13:51:31.83
Body SysBody 08-MAR-2007 18:20:57.93
Attr PgmName = "HighIR"
Attr TypeRef = "pwrs:Type-$Float32"
EndBody
EndObject
!/**
! Property lowIR.
! Represents the lowest value that can be returned by the
! instrument.
!*/
Object LowIR $Attribute 7 05-MAR-2007 13:51:31.83
Body SysBody 08-MAR-2007 18:21:01.44
Attr PgmName = "LowIR"
Attr TypeRef = "pwrs:Type-$Float32"
EndBody
EndObject
!/**
! Property engineeringUnits.
!*/
Object EngineeringUnits $Attribute 8 05-MAR-2007 13:51:31.83
Body SysBody 05-MAR-2007 13:51:31.83
Attr PgmName = "EngineeringUnits"
Attr TypeRef = "pwrs:Type-$String16"
EndBody
EndObject
!/**
! Enable slider in object graph.
!*/
Object EnableSlider $Attribute 9 22-MAR-2007 15:51:11.98
Body SysBody 22-MAR-2007 15:51:11.98
Attr PgmName = "EnableSlider"
...
...
@@ -455,6 +846,17 @@ Volume Opc $ClassVolume 0.0.250.9
EndBody
EndObject
EndObject
!/**
! @Version 1.0
! @Group IO_Opc
! Object to browse an OPC item of OPC type 'int'.
!
! The object reside in an ExternalVolume browsing an OPC server and is
! created dynamically by the OPC client process.
!
! @b Object Graph
! @image orm_opc_int_og.gif
!*/
Object Opc_Int $ClassDef 14 01-MAR-2007 16:53:30.28
Body SysBody 01-MAR-2007 16:50:27.77
Attr Editor = 0
...
...
@@ -466,48 +868,82 @@ Volume Opc $ClassVolume 0.0.250.9
Attr StructName = "Opc_Int"
Attr NextAix = "_X10"
EndBody
!/**
! Description property.
!*/
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
!/**
! Item value, presented as a pwr_tInt32.
!*/
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
!/**
! Property highEU.
! Represents the highest value likely to be obtained in normal
! operation and is intended for such use as automatically scaling
! a bargraph display.
!*/
Object HighEU $Attribute 4 05-MAR-2007 13:51:36.44
Body SysBody 08-MAR-2007 18:19:26.59
Attr PgmName = "HighEU"
Attr TypeRef = "pwrs:Type-$Float32"
EndBody
EndObject
!/**
! Property lowEU.
! Represents the lowest value likely to be obtained in normal
! operation and is intended for such use as automatically scaling
! a bargraph display.
!*/
Object LowEU $Attribute 5 05-MAR-2007 13:51:36.44
Body SysBody 08-MAR-2007 18:19:33.16
Attr PgmName = "LowEU"
Attr TypeRef = "pwrs:Type-$Float32"
EndBody
EndObject
!/**
! Property highIR.
! Represents the highest value that can be returned by the
! instrument.
!*/
Object HighIR $Attribute 6 05-MAR-2007 13:51:36.44
Body SysBody 08-MAR-2007 18:21:09.76
Attr PgmName = "HighIR"
Attr TypeRef = "pwrs:Type-$Float32"
EndBody
EndObject
!/**
! Property lowIR.
! Represents the lowest value that can be returned by the
! instrument.
!*/
Object LowIR $Attribute 7 05-MAR-2007 13:51:36.44
Body SysBody 08-MAR-2007 18:21:12.90
Attr PgmName = "LowIR"
Attr TypeRef = "pwrs:Type-$Float32"
EndBody
EndObject
!/**
! Property engineeringUnits.
!*/
Object EngineeringUnits $Attribute 8 05-MAR-2007 13:51:36.44
Body SysBody 05-MAR-2007 13:51:36.44
Attr PgmName = "EngineeringUnits"
Attr TypeRef = "pwrs:Type-$String16"
EndBody
EndObject
!/**
! Enable slider in object graph.
!*/
Object EnableSlider $Attribute 9 22-MAR-2007 10:44:19.69
Body SysBody 22-MAR-2007 10:44:19.69
Attr PgmName = "EnableSlider"
...
...
@@ -520,6 +956,17 @@ Volume Opc $ClassVolume 0.0.250.9
EndBody
EndObject
EndObject
!/**
! @Version 1.0
! @Group IO_Opc
! Object to browse an OPC item of OPC type 'short'.
!
! The object reside in an ExternalVolume browsing an OPC server and is
! created dynamically by the OPC client process.
! @b Object Graph
!
! @image orm_opc_short_og.gif
!*/
Object Opc_Short $ClassDef 13 01-MAR-2007 16:54:41.65
Body SysBody 01-MAR-2007 16:50:27.62
Attr Editor = 0
...
...
@@ -531,48 +978,82 @@ Volume Opc $ClassVolume 0.0.250.9
Attr StructName = "Opc_Short"
Attr NextAix = "_X10"
EndBody
!/**
! Description property.
!*/
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
!/**
! Item value, presented as a pwr_tInt16.
!*/
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
!/**
! Property highEU.
! Represents the highest value likely to be obtained in normal
! operation and is intended for such use as automatically scaling
! a bargraph display.
!*/
Object HighEU $Attribute 4 05-MAR-2007 13:51:40.55
Body SysBody 08-MAR-2007 18:18:55.71
Attr PgmName = "HighEU"
Attr TypeRef = "pwrs:Type-$Float32"
EndBody
EndObject
!/**
! Property lowEU.
! Represents the lowest value likely to be obtained in normal
! operation and is intended for such use as automatically scaling
! a bargraph display.
!*/
Object LowEU $Attribute 5 05-MAR-2007 13:51:40.55
Body SysBody 08-MAR-2007 18:19:04.24
Attr PgmName = "LowEU"
Attr TypeRef = "pwrs:Type-$Float32"
EndBody
EndObject
!/**
! Property highIR.
! Represents the highest value that can be returned by the
! instrument.
!*/
Object HighIR $Attribute 6 05-MAR-2007 13:51:40.55
Body SysBody 08-MAR-2007 18:21:21.73
Attr PgmName = "HighIR"
Attr TypeRef = "pwrs:Type-$Float32"
EndBody
EndObject
!/**
! Property lowIR.
! Represents the lowest value that can be returned by the
! instrument.
!*/
Object LowIR $Attribute 7 05-MAR-2007 13:51:40.55
Body SysBody 08-MAR-2007 18:21:24.70
Attr PgmName = "LowIR"
Attr TypeRef = "pwrs:Type-$Float32"
EndBody
EndObject
!/**
! Property engineeringUnits.
!*/
Object EngineeringUnits $Attribute 8 05-MAR-2007 13:51:40.55
Body SysBody 05-MAR-2007 13:51:40.55
Attr PgmName = "EngineeringUnits"
Attr TypeRef = "pwrs:Type-$String16"
EndBody
EndObject
!/**
! Enable slider in object graph.
!*/
Object EnableSlider $Attribute 9 22-MAR-2007 15:51:21.30
Body SysBody 22-MAR-2007 15:51:21.30
Attr PgmName = "EnableSlider"
...
...
@@ -585,6 +1066,17 @@ Volume Opc $ClassVolume 0.0.250.9
EndBody
EndObject
EndObject
!/**
! @Version 1.0
! @Group IO_Opc
! Object to browse an OPC item of OPC type 'byte'.
!
! The object reside in an ExternalVolume browsing an OPC server and is
! created dynamically by the OPC client process.
!
! @b Object Graph
! @image orm_opc_byte_og.gif
!*/
Object Opc_Byte $ClassDef 12 01-MAR-2007 16:55:02.92
Body SysBody 01-MAR-2007 16:50:27.44
Attr Editor = 0
...
...
@@ -596,48 +1088,82 @@ Volume Opc $ClassVolume 0.0.250.9
Attr StructName = "Opc_Byte"
Attr NextAix = "_X10"
EndBody
!/**
! Description property.
!*/
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
!/**
! Item value, presented as a pwr_tInt8.
!*/
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
!/**
! Property highEU.
! Represents the highest value likely to be obtained in normal
! operation and is intended for such use as automatically scaling
! a bargraph display.
!*/
Object HighEU $Attribute 4 05-MAR-2007 13:51:48.00
Body SysBody 08-MAR-2007 18:19:12.51
Attr PgmName = "HighEU"
Attr TypeRef = "pwrs:Type-$Float32"
EndBody
EndObject
!/**
! Property lowEU.
! Represents the lowest value likely to be obtained in normal
! operation and is intended for such use as automatically scaling
! a bargraph display.
!*/
Object LowEU $Attribute 5 05-MAR-2007 13:51:48.00
Body SysBody 08-MAR-2007 18:19:16.80
Attr PgmName = "LowEU"
Attr TypeRef = "pwrs:Type-$Float32"
EndBody
EndObject
!/**
! Property highIR.
! Represents the highest value that can be returned by the
! instrument.
!*/
Object HighIR $Attribute 6 05-MAR-2007 13:51:48.00
Body SysBody 08-MAR-2007 18:21:32.38
Attr PgmName = "HighIR"
Attr TypeRef = "pwrs:Type-$Float32"
EndBody
EndObject
!/**
! Property lowIR.
! Represents the lowest value that can be returned by the
! instrument.
!*/
Object LowIR $Attribute 7 05-MAR-2007 13:51:48.00
Body SysBody 08-MAR-2007 18:21:35.55
Attr PgmName = "LowIR"
Attr TypeRef = "pwrs:Type-$Float32"
EndBody
EndObject
!/**
! Property engineeringUnits.
!*/
Object EngineeringUnits $Attribute 8 05-MAR-2007 13:51:48.00
Body SysBody 05-MAR-2007 13:51:48.00
Attr PgmName = "EngineeringUnits"
Attr TypeRef = "pwrs:Type-$String16"
EndBody
EndObject
!/**
! Enable slider in object graph.
!*/
Object EnableSlider $Attribute 9 22-MAR-2007 15:51:27.70
Body SysBody 22-MAR-2007 15:51:27.70
Attr PgmName = "EnableSlider"
...
...
@@ -650,6 +1176,17 @@ Volume Opc $ClassVolume 0.0.250.9
EndBody
EndObject
EndObject
!/**
! @Version 1.0
! @Group IO_Opc
! Object to browse an OPC item of OPC type 'unsignedLong'.
!
! The object reside in an ExternalVolume browsing an OPC server and is
! created dynamically by the OPC client process.
!
! @b Object Graph
! @image orm_opc_unsignedlong_og.gif
!*/
Object Opc_UnsignedLong $ClassDef 11 01-MAR-2007 16:55:43.95
Body SysBody 01-MAR-2007 16:50:27.27
Attr Editor = 0
...
...
@@ -661,48 +1198,82 @@ Volume Opc $ClassVolume 0.0.250.9
Attr StructName = "Opc_UnsignedLong"
Attr NextAix = "_X10"
EndBody
!/**
! Description property.
!*/
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
!/**
! Item value, presented as a pwr_tUInt32.
!*/
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
!/**
! Property highEU.
! Represents the highest value likely to be obtained in normal
! operation and is intended for such use as automatically scaling
! a bargraph display.
!*/
Object HighEU $Attribute 4 05-MAR-2007 13:51:51.24
Body SysBody 08-MAR-2007 18:21:43.83
Attr PgmName = "HighEU"
Attr TypeRef = "pwrs:Type-$Float32"
EndBody
EndObject
!/**
! Property lowEU.
! Represents the lowest value likely to be obtained in normal
! operation and is intended for such use as automatically scaling
! a bargraph display.
!*/
Object LowEU $Attribute 5 05-MAR-2007 13:51:51.24
Body SysBody 08-MAR-2007 18:21:47.05
Attr PgmName = "LowEU"
Attr TypeRef = "pwrs:Type-$Float32"
EndBody
EndObject
!/**
! Property highIR.
! Represents the highest value that can be returned by the
! instrument.
!*/
Object HighIR $Attribute 6 05-MAR-2007 13:51:51.24
Body SysBody 08-MAR-2007 18:21:50.25
Attr PgmName = "HighIR"
Attr TypeRef = "pwrs:Type-$Float32"
EndBody
EndObject
!/**
! Property lowIR.
! Represents the lowest value that can be returned by the
! instrument.
!*/
Object LowIR $Attribute 7 05-MAR-2007 13:51:51.24
Body SysBody 08-MAR-2007 18:21:53.28
Attr PgmName = "LowIR"
Attr TypeRef = "pwrs:Type-$Float32"
EndBody
EndObject
!/**
! Property engineeringUnits.
!*/
Object EngineeringUnits $Attribute 8 05-MAR-2007 13:51:51.24
Body SysBody 05-MAR-2007 13:51:51.24
Attr PgmName = "EngineeringUnits"
Attr TypeRef = "pwrs:Type-$String16"
EndBody
EndObject
!/**
! Enable slider in object graph.
!*/
Object EnableSlider $Attribute 9 22-MAR-2007 15:51:33.78
Body SysBody 22-MAR-2007 15:51:33.78
Attr PgmName = "EnableSlider"
...
...
@@ -715,6 +1286,17 @@ Volume Opc $ClassVolume 0.0.250.9
EndBody
EndObject
EndObject
!/**
! @Version 1.0
! @Group IO_Opc
! Object to browse an OPC item of OPC type 'unsignedInt'.
!
! The object reside in an ExternalVolume browsing an OPC server and is
! created dynamically by the OPC client process.
!
! @b Object Graph
! @image orm_opc_float_og.gif
!*/
Object Opc_UnsignedInt $ClassDef 10 01-MAR-2007 16:56:14.97
Body SysBody 01-MAR-2007 16:50:27.07
Attr Editor = 0
...
...
@@ -726,48 +1308,82 @@ Volume Opc $ClassVolume 0.0.250.9
Attr StructName = "Opc_UnsignedInt"
Attr NextAix = "_X10"
EndBody
!/**
! Description property.
!*/
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
!/**
! Item value, presented as a pwr_tUInt32.
!*/
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
!/**
! Property highEU.
! Represents the highest value likely to be obtained in normal
! operation and is intended for such use as automatically scaling
! a bargraph display.
!*/
Object HighEU $Attribute 4 05-MAR-2007 13:51:54.37
Body SysBody 08-MAR-2007 18:22:00.44
Attr PgmName = "HighEU"
Attr TypeRef = "pwrs:Type-$Float32"
EndBody
EndObject
!/**
! Property lowEU.
! Represents the lowest value likely to be obtained in normal
! operation and is intended for such use as automatically scaling
! a bargraph display.
!*/
Object LowEU $Attribute 5 05-MAR-2007 13:51:54.37
Body SysBody 08-MAR-2007 18:22:03.35
Attr PgmName = "LowEU"
Attr TypeRef = "pwrs:Type-$Float32"
EndBody
EndObject
!/**
! Property highIR.
! Represents the highest value that can be returned by the
! instrument.
!*/
Object HighIR $Attribute 6 05-MAR-2007 13:51:54.37
Body SysBody 08-MAR-2007 18:22:06.30
Attr PgmName = "HighIR"
Attr TypeRef = "pwrs:Type-$Float32"
EndBody
EndObject
!/**
! Property lowIR.
! Represents the lowest value that can be returned by the
! instrument.
!*/
Object LowIR $Attribute 7 05-MAR-2007 13:51:54.37
Body SysBody 08-MAR-2007 18:22:09.05
Attr PgmName = "LowIR"
Attr TypeRef = "pwrs:Type-$Float32"
EndBody
EndObject
!/**
! Property engineeringUnits.
!*/
Object EngineeringUnits $Attribute 8 05-MAR-2007 13:51:54.37
Body SysBody 05-MAR-2007 13:51:54.37
Attr PgmName = "EngineeringUnits"
Attr TypeRef = "pwrs:Type-$String16"
EndBody
EndObject
!/**
! Enable slider in object graph.
!*/
Object EnableSlider $Attribute 9 22-MAR-2007 15:51:40.47
Body SysBody 22-MAR-2007 15:51:40.47
Attr PgmName = "EnableSlider"
...
...
@@ -780,6 +1396,17 @@ Volume Opc $ClassVolume 0.0.250.9
EndBody
EndObject
EndObject
!/**
! @Version 1.0
! @Group IO_Opc
! Object to browse an OPC item of OPC type 'unsignedShort'.
!
! The object reside in an ExternalVolume browsing an OPC server and is
! created dynamically by the OPC client process.
!
! @b Object Graph
! @image orm_opc_unsignedshort_og.gif
!*/
Object Opc_UnsignedShort $ClassDef 9 01-MAR-2007 16:56:40.00
Body SysBody 01-MAR-2007 16:50:25.68
Attr Editor = 0
...
...
@@ -791,48 +1418,82 @@ Volume Opc $ClassVolume 0.0.250.9
Attr StructName = "Opc_UnsignedShort"
Attr NextAix = "_X10"
EndBody
!/**
! Description property.
!*/
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
!/**
! Item value, presented as a pwr_tUInt16.
!*/
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
!/**
! Property highEU.
! Represents the highest value likely to be obtained in normal
! operation and is intended for such use as automatically scaling
! a bargraph display.
!*/
Object HighEU $Attribute 4 05-MAR-2007 13:51:59.01
Body SysBody 08-MAR-2007 18:22:16.81
Attr PgmName = "HighEU"
Attr TypeRef = "pwrs:Type-$Float32"
EndBody
EndObject
!/**
! Property lowEU.
! Represents the lowest value likely to be obtained in normal
! operation and is intended for such use as automatically scaling
! a bargraph display.
!*/
Object LowEU $Attribute 5 05-MAR-2007 13:51:59.01
Body SysBody 08-MAR-2007 18:22:19.92
Attr PgmName = "LowEU"
Attr TypeRef = "pwrs:Type-$Float32"
EndBody
EndObject
!/**
! Property highIR.
! Represents the highest value that can be returned by the
! instrument.
!*/
Object HighIR $Attribute 6 05-MAR-2007 13:51:59.01
Body SysBody 08-MAR-2007 18:22:23.09
Attr PgmName = "HighIR"
Attr TypeRef = "pwrs:Type-$Float32"
EndBody
EndObject
!/**
! Property lowIR.
! Represents the lowest value that can be returned by the
! instrument.
!*/
Object LowIR $Attribute 7 05-MAR-2007 13:51:59.01
Body SysBody 08-MAR-2007 18:22:25.89
Attr PgmName = "LowIR"
Attr TypeRef = "pwrs:Type-$Float32"
EndBody
EndObject
!/**
! Property engineeringUnits.
!*/
Object EngineeringUnits $Attribute 8 05-MAR-2007 13:51:59.01
Body SysBody 05-MAR-2007 13:51:59.01
Attr PgmName = "EngineeringUnits"
Attr TypeRef = "pwrs:Type-$String16"
EndBody
EndObject
!/**
! Enable slider in object graph.
!*/
Object EnableSlider $Attribute 9 22-MAR-2007 15:51:47.00
Body SysBody 22-MAR-2007 15:51:47.00
Attr PgmName = "EnableSlider"
...
...
@@ -845,6 +1506,17 @@ Volume Opc $ClassVolume 0.0.250.9
EndBody
EndObject
EndObject
!/**
! @Version 1.0
! @Group IO_Opc
! Object to browse an OPC item of OPC type 'unsignedByte'.
!
! The object reside in an ExternalVolume browsing an OPC server and is
! created dynamically by the OPC client process.
!
! @b Object Graph
! @image orm_opc_unsignedbyte_og.gif
!*/
Object Opc_UnsignedByte $ClassDef 8 01-MAR-2007 16:57:06.57
Body SysBody 01-MAR-2007 16:50:25.44
Attr Editor = 0
...
...
@@ -856,48 +1528,82 @@ Volume Opc $ClassVolume 0.0.250.9
Attr StructName = "Opc_UnsignedByte"
Attr NextAix = "_X10"
EndBody
!/**
! Description property.
!*/
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
!/**
! Item value, presented as a pwr_tUInt8.
!*/
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
!/**
! Property highEU.
! Represents the highest value likely to be obtained in normal
! operation and is intended for such use as automatically scaling
! a bargraph display.
!*/
Object HighEU $Attribute 4 05-MAR-2007 13:52:02.66
Body SysBody 08-MAR-2007 18:22:35.13
Attr PgmName = "HighEU"
Attr TypeRef = "pwrs:Type-$Float32"
EndBody
EndObject
!/**
! Property lowEU.
! Represents the lowest value likely to be obtained in normal
! operation and is intended for such use as automatically scaling
! a bargraph display.
!*/
Object LowEU $Attribute 5 05-MAR-2007 13:52:02.66
Body SysBody 08-MAR-2007 18:22:38.33
Attr PgmName = "LowEU"
Attr TypeRef = "pwrs:Type-$Float32"
EndBody
EndObject
!/**
! Property highIR.
! Represents the highest value that can be returned by the
! instrument.
!*/
Object HighIR $Attribute 6 05-MAR-2007 13:52:02.66
Body SysBody 08-MAR-2007 18:22:41.38
Attr PgmName = "HighIR"
Attr TypeRef = "pwrs:Type-$Float32"
EndBody
EndObject
!/**
! Property lowIR.
! Represents the lowest value that can be returned by the
! instrument.
!*/
Object LowIR $Attribute 7 05-MAR-2007 13:52:02.66
Body SysBody 08-MAR-2007 18:22:44.29
Attr PgmName = "LowIR"
Attr TypeRef = "pwrs:Type-$Float32"
EndBody
EndObject
!/**
! Property engineeringUnits.
!*/
Object EngineeringUnits $Attribute 8 05-MAR-2007 13:52:02.66
Body SysBody 05-MAR-2007 13:52:02.66
Attr PgmName = "EngineeringUnits"
Attr TypeRef = "pwrs:Type-$String16"
EndBody
EndObject
!/**
! Enable slider in object graph.
!*/
Object EnableSlider $Attribute 9 22-MAR-2007 15:51:52.93
Body SysBody 22-MAR-2007 15:51:52.93
Attr PgmName = "EnableSlider"
...
...
@@ -910,6 +1616,14 @@ Volume Opc $ClassVolume 0.0.250.9
EndBody
EndObject
EndObject
!/**
! @Version 1.0
! @Group IO_Opc
! Object to browse an OPC item of OPC type 'base64Binary'.
!
! The object reside in an ExternalVolume browsing an OPC server and is
! created dynamically by the OPC client process.
!*/
Object Opc_Base64Binary $ClassDef 20 01-MAR-2007 17:01:30.50
Body SysBody 01-MAR-2007 17:01:17.11
Attr Editor = 0
...
...
@@ -921,16 +1635,24 @@ Volume Opc $ClassVolume 0.0.250.9
Attr StructName = "Opc_Base64Binary"
Attr NextAix = "_X4"
EndBody
!/**
! Description property.
!*/
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
!/**
! Item value, presented as an array of pwr_tInt16.
!*/
Object Value $Attribute 2 01-MAR-2007 17:01:17.11
Body SysBody 01-MAR-2007 17:01:47.78
Attr PgmName = "Value"
Attr TypeRef = "pwrs:Type-$UInt32"
Attr Flags = 2
Attr Elements = 4
Attr TypeRef = "pwrs:Type-$UInt16"
EndBody
EndObject
EndObject
...
...
@@ -939,6 +1661,14 @@ Volume Opc $ClassVolume 0.0.250.9
EndBody
EndObject
EndObject
!/**
! @Version 1.0
! @Group IO_Opc
! Object to browse an OPC item of OPC type 'dateTime'.
!
! The object reside in an ExternalVolume browsing an OPC server and is
! created dynamically by the OPC client process.
!*/
Object Opc_DateTime $ClassDef 7 01-MAR-2007 16:58:17.76
Body SysBody 01-MAR-2007 16:50:25.22
Attr Editor = 0
...
...
@@ -950,12 +1680,18 @@ Volume Opc $ClassVolume 0.0.250.9
Attr StructName = "Opc_DateTime"
Attr NextAix = "_X4"
EndBody
!/**
! Description property.
!*/
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
!/**
! Item value, presented as a pwr_tTime.
!*/
Object Value $Attribute 2 01-MAR-2007 16:50:25.22
Body SysBody 01-MAR-2007 16:58:37.27
Attr PgmName = "Value"
...
...
@@ -968,6 +1704,15 @@ Volume Opc $ClassVolume 0.0.250.9
EndBody
EndObject
EndObject
!/**
! @Version 1.0
! @Group IO_Opc
! Object to browse an OPC item of OPC type 'time'.
! Not yet implemented.
!
! The object reside in an ExternalVolume browsing an OPC server and is
! created dynamically by the OPC client process.
!*/
Object Opc_Time $ClassDef 6 01-MAR-2007 16:58:53.13
Body SysBody 01-MAR-2007 16:50:25.00
Attr Editor = 0
...
...
@@ -997,6 +1742,15 @@ Volume Opc $ClassVolume 0.0.250.9
EndBody
EndObject
EndObject
!/**
! @Version 1.0
! @Group IO_Opc
! Object to browse an OPC item of OPC type 'date'.
! Not yet implemented.
!
! The object reside in an ExternalVolume browsing an OPC server and is
! created dynamically by the OPC client process.
!*/
Object Opc_Date $ClassDef 5 01-MAR-2007 16:59:12.70
Body SysBody 01-MAR-2007 16:50:24.78
Attr Editor = 0
...
...
@@ -1026,6 +1780,15 @@ Volume Opc $ClassVolume 0.0.250.9
EndBody
EndObject
EndObject
!/**
! @Version 1.0
! @Group IO_Opc
! Object to browse an OPC item of OPC type 'duration'.
! Not yet implemented.
!
! The object reside in an ExternalVolume browsing an OPC server and is
! created dynamically by the OPC client process.
!*/
Object Opc_Duration $ClassDef 4 01-MAR-2007 16:59:30.41
Body SysBody 01-MAR-2007 16:50:24.50
Attr Editor = 0
...
...
@@ -1055,6 +1818,14 @@ Volume Opc $ClassVolume 0.0.250.9
EndBody
EndObject
EndObject
!/**
! @Version 1.0
! @Group IO_Opc
! Object to browse an OPC item of OPC type 'QName'.
!
! The object reside in an ExternalVolume browsing an OPC server and is
! created dynamically by the OPC client process.
!*/
Object Opc_QName $ClassDef 3 01-MAR-2007 17:00:42.44
Body SysBody 01-MAR-2007 16:50:22.30
Attr Editor = 0
...
...
@@ -1066,12 +1837,18 @@ Volume Opc $ClassVolume 0.0.250.9
Attr StructName = "Opc_QName"
Attr NextAix = "_X4"
EndBody
!/**
! Description property.
!*/
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
!/**
! Item value, presented as a pwr_tString256.
!*/
Object Value $Attribute 2 01-MAR-2007 16:50:22.30
Body SysBody 01-MAR-2007 17:00:54.92
Attr PgmName = "Value"
...
...
@@ -1084,6 +1861,21 @@ Volume Opc $ClassVolume 0.0.250.9
EndBody
EndObject
EndObject
!/**
! @Version 1.0
! @Summary OPC Server Configuration Object.
! OPC Server Configuration object.
! The object should be placed under the $Node object to configure
! process station as an OPC XML-DA server.
!
! A Web Service will appear with the URI "http://'nodename':'port'"
! where 'nodname' is the name of the process station, and 'port' the
! portnumber specified in the Port attribute.
! An OPC XML-DA client can request information from this URI, but has
! to be granted access first. Clients that have access to the server are
! specified in the ClientAccess list, with ip-address and accesscode
! for each client.
!*/
Object Opc_ServerConfig $ClassDef 21 01-MAR-2007 17:02:45.29
Body SysBody 01-MAR-2007 17:02:25.32
Attr Editor = 0
...
...
@@ -1095,18 +1887,29 @@ Volume Opc $ClassVolume 0.0.250.9
Attr StructName = "Opc_ServerConfig"
Attr NextAix = "_X4"
EndBody
!/**
! Optional description.
!*/
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
!/**
! Port for Web Service.
!*/
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
!/**
! List with authorized clients.
! Clients are identified by ip-address and given the
! specified access (None, ReadOnly or ReadWrite).
!*/
Object ClientAccess $Attribute 1 05-MAR-2007 13:33:32.49
Body SysBody 05-MAR-2007 13:33:35.01
Attr PgmName = "ClientAccess"
...
...
@@ -1121,6 +1924,13 @@ Volume Opc $ClassVolume 0.0.250.9
EndBody
EndObject
EndObject
!/**
! @Version 1.0
! @Summary OPC Server State object.
! The OPC Server State object displays information of a OPC
! connection in an OP client. The object as first object in the
! Extern volume for the OPC connection.
!*/
Object Opc_ServerState $ClassDef 22 02-MAR-2007 14:49:50.99
Body SysBody 02-MAR-2007 14:49:26.55
Attr Editor = 0
...
...
@@ -1130,38 +1940,71 @@ Volume Opc $ClassVolume 0.0.250.9
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 = "_X
6
"
Attr NextAix = "_X
9
"
EndBody
!/**
! OPC server Web Service URI.
!*/
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
!/**
! OPC server vendor info.
!*/
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
!/**
! OPC server product version.
!*/
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
!/**
! Start time for OPC server.
!*/
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
!/**
! OPC server state.
!*/
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
Object RequestCnt $Attribute 6 26-MAR-2007 09:10:55.79
Body SysBody 26-MAR-2007 09:11:10.62
Attr PgmName = "RequestCnt"
Attr TypeRef = "pwrs:Type-$UInt32"
EndBody
EndObject
Object ErrorRequestCnt $Attribute 7 26-MAR-2007 09:11:57.44
Body SysBody 26-MAR-2007 09:12:01.61
Attr PgmName = "ErrorRequestCnt"
Attr TypeRef = "pwrs:Type-$UInt32"
EndBody
EndObject
Object LastError $Attribute 8 26-MAR-2007 09:12:35.90
Body SysBody 26-MAR-2007 09:13:07.43
Attr PgmName = "LastError"
Attr TypeRef = "Opc:Type-Opc_ResultCodeEnum"
EndBody
EndObject
EndObject
Object Template Opc_ServerState 2153480192 01-JAN-1970 01:00:00.00
Body RtBody 01-JAN-1970 01:00:00.00
...
...
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