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
f543f297
Commit
f543f297
authored
Apr 22, 2009
by
Robert Karlsson
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Added support for ssab_pidup-card
parent
64e1d385
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
1263 additions
and
497 deletions
+1263
-497
ssabox/lib/rt/src/os_linux/rt_io_m_ssab_pidup.c
ssabox/lib/rt/src/os_linux/rt_io_m_ssab_pidup.c
+616
-0
ssabox/lib/rt/src/rt_io_ssabox.meth
ssabox/lib/rt/src/rt_io_ssabox.meth
+1
-0
ssabox/wbl/mcomp/src/ssabox.wb_load
ssabox/wbl/mcomp/src/ssabox.wb_load
+646
-497
No files found.
ssabox/lib/rt/src/os_linux/rt_io_m_ssab_pidup.c
0 → 100644
View file @
f543f297
/*
* Proview $Id: rt_io_m_ssab_aiup.c,v 1.4 2007-04-30 12:08:08 claes Exp $
* Copyright (C) 2005 SSAB Oxelsund AB.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation, either version 2 of
* the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with the program, if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
/* rt_io_m_ssab_pid.c -- io methods for ssab cards. */
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <errno.h>
#include <unistd.h>
#include <fcntl.h>
#include "pwr.h"
#include "co_cdh.h"
#include "rt_gdh.h"
#include "rt_errh.h"
#include "pwr_baseclasses.h"
#include "pwr_basecomponentclasses.h"
#include "pwr_ssaboxclasses.h"
#include "rt_io_base.h"
#include "rt_io_msg.h"
#include "rt_io_ssab.h"
#include "rt_io_card_init.h"
#include "rt_io_card_close.h"
#include "rt_io_card_read.h"
#include "qbus_io.h"
#include "rt_io_m_ssab_locals.h"
#include "rt_io_bfbeth.h"
/*----------------------------------------------------------------------------*\
\*----------------------------------------------------------------------------*/
#define init_mask 0x0001
#define inc3p_mask 0x0002
#define pos3p_mask 0x0004
#define ao_mask 0x0008
#define dyn_bias_mask 0x0010
#define stall_freeze_mask 0x0020
#define stall_cont_mask 0x0040
#define setup_req_mask 0x1000 // bit 12
#define act_dat_mask 0x2000 // bit 13
#define setup_mask 0x4000 // bit 14
#define dyn_mask 0x8000 // bit 15
#define typ_mask 0xf001 // bit 12, 13, 14, 15 + bit 1
typedef
struct
{
unsigned
short
csr1
;
unsigned
short
csr2
;
}
register_def
;
typedef
struct
{
float
SetVal
;
float
BiasD
;
float
ForcVal
;
short
int
Force
;
short
int
IntOff
;
}
card_dyn
;
typedef
struct
{
float
inc3pGain
;
float
MinTim
;
float
MaxTim
;
float
MaxInteg
;
float
AVcoeff
[
2
];
float
BVcoeff
[
2
];
float
OVcoeff
[
2
];
short
int
PidAlg
;
short
int
Inverse
;
float
PidGain
;
float
IntTime
;
float
DerTime
;
float
DerGain
;
float
BiasGain
;
float
MinOut
;
float
MaxOut
;
float
EndHys
;
float
PVcoeff
[
2
];
float
ErrSta
;
float
ErrSto
;
float
pos3pGain
;
float
ProcFiltTime
;
float
BiasFiltTime
;
float
PosFiltTime
;
}
card_par
;
typedef
struct
{
float
PosVal
;
float
Acc
;
float
ProcVal
;
float
OutVal
;
float
ControlDiff
;
short
int
EndMax
;
short
int
EndMin
;
float
Bias
;
float
ScanTime
;
}
card_stat
;
typedef
struct
{
float
Max
;
/* Max ingenjrsvrde */
float
Min
;
/* Min ingenjrsvrde */
float
RawMax
;
/* Rvrde vid Max (+- 30000) */
float
RawMin
;
/* Rvrde vid Min (+- 30000) */
}
card_range
;
typedef
struct
{
unsigned
short
int
Istat
[
2
];
card_dyn
Dyn
;
card_par
Par
;
card_stat
Stat
;
card_range
AoRange
;
card_range
ProcRange
;
card_range
BiasRange
;
card_range
PosRange
;
pwr_sClass_PidX
*
objP
;
unsigned
int
Address
;
int
Qbus_fp
;
unsigned
short
dyn_ind
;
unsigned
short
par_ind
;
unsigned
short
stat_ind
;
unsigned
short
ran_ind
;
unsigned
short
init
;
pwr_tTime
ErrTime
;
unsigned
short
Valid
;
}
io_sLocal
;
void
swap_word
(
unsigned
int
*
out
,
unsigned
int
*
in
)
{
unsigned
int
result
=
0
;;
result
=
(
*
in
<<
16
)
&
0xFFFF0000
;
result
|=
(
*
in
>>
16
)
&
0x0000FFFF
;
*
out
=
result
;
}
static
int
ssabpid_read
(
unsigned
short
index
,
unsigned
short
*
data
,
io_sLocal
*
local
)
{
qbus_io_read
rb
;
qbus_io_write
wb
;
int
sts
;
wb
.
Address
=
local
->
Address
;
wb
.
Data
=
index
;
sts
=
write
(
local
->
Qbus_fp
,
&
wb
,
sizeof
(
wb
));
if
(
sts
!=
-
1
)
{
rb
.
Address
=
local
->
Address
+
2
;
sts
=
read
(
local
->
Qbus_fp
,
&
rb
,
sizeof
(
rb
));
*
data
=
(
unsigned
short
)
rb
.
Data
;
}
return
sts
;
}
static
int
ssabpid_write
(
unsigned
short
index
,
unsigned
short
*
data
,
io_sLocal
*
local
)
{
qbus_io_write
wb
;
int
sts
;
wb
.
Address
=
local
->
Address
;
wb
.
Data
=
index
;
sts
=
write
(
local
->
Qbus_fp
,
&
wb
,
sizeof
(
wb
));
if
(
sts
!=
-
1
)
{
wb
.
Address
=
local
->
Address
+
2
;
wb
.
Data
=
*
data
;
sts
=
write
(
local
->
Qbus_fp
,
&
wb
,
sizeof
(
wb
));
}
return
sts
;
}
static
pwr_tStatus
IoCardInit
(
io_tCtx
ctx
,
io_sAgent
*
ap
,
io_sRack
*
rp
,
io_sCard
*
cp
)
{
pwr_sClass_Ssab_PIDuP
*
op
;
io_sLocal
*
local
;
pwr_tStatus
sts
;
op
=
(
pwr_sClass_Ssab_PIDuP
*
)
cp
->
op
;
local
=
calloc
(
1
,
sizeof
(
*
local
));
cp
->
Local
=
local
;
local
->
Address
=
op
->
RegAddress
;
local
->
Qbus_fp
=
((
io_sRackLocal
*
)(
rp
->
Local
))
->
Qbus_fp
;
errh_Info
(
"Init of pid card '%s'"
,
cp
->
Name
);
sts
=
gdh_ObjidToPointer
(
op
->
PidXCon
,
(
void
*
)
&
local
->
objP
);
if
(
EVEN
(
sts
))
{
errh_Error
(
"PID-card not properly connected, %s"
,
cp
->
Name
);
return
IO__ERRDEVICE
;
}
/* Calculate indexes in I/O-area */
local
->
dyn_ind
=
((
char
*
)
&
local
->
Dyn
-
(
char
*
)
local
)
/
2
;
local
->
par_ind
=
((
char
*
)
&
local
->
Par
-
(
char
*
)
local
)
/
2
;
local
->
stat_ind
=
((
char
*
)
&
local
->
Stat
-
(
char
*
)
local
)
/
2
;
local
->
ran_ind
=
((
char
*
)
&
local
->
AoRange
-
(
char
*
)
local
)
/
2
;
return
1
;
}
/*----------------------------------------------------------------------------*\
\*----------------------------------------------------------------------------*/
static
pwr_tStatus
IoCardClose
(
io_tCtx
ctx
,
io_sAgent
*
ap
,
io_sRack
*
rp
,
io_sCard
*
cp
)
{
io_sLocal
*
local
;
errh_Info
(
"IO closing pid card '%s'"
,
cp
->
Name
);
local
=
(
io_sLocal
*
)
cp
->
Local
;
free
(
(
char
*
)
local
);
return
1
;
}
/*----------------------------------------------------------------------------*\
\*----------------------------------------------------------------------------*/
static
pwr_tStatus
IoCardRead
(
io_tCtx
ctx
,
io_sAgent
*
ap
,
io_sRack
*
rp
,
io_sCard
*
cp
)
{
io_sLocal
*
local
;
pwr_sClass_Ssab_PIDuP
*
op
;
int
sts
,
ii
;
card_stat
c_stat
;
unsigned
short
*
datap
;
unsigned
short
diff
;
pwr_tTime
now
;
local
=
(
io_sLocal
*
)
cp
->
Local
;
op
=
(
pwr_sClass_Ssab_PIDuP
*
)
cp
->
op
;
sts
=
ssabpid_read
(
0
,
&
local
->
Istat
[
0
],
local
);
if
(
sts
!=
-
1
)
{
sts
=
ssabpid_read
(
1
,
&
local
->
Istat
[
1
],
local
);
}
if
(
sts
==
-
1
)
{
op
->
ErrorCount
++
;
local
->
Valid
=
0
;
}
else
local
->
Valid
=
1
;
diff
=
local
->
Istat
[
0
]
^
local
->
Istat
[
1
];
memset
(
&
c_stat
,
0
,
sizeof
(
c_stat
));
if
(
local
->
Valid
&&
(
diff
&
act_dat_mask
))
{
for
(
ii
=
local
->
stat_ind
,
datap
=
(
unsigned
short
*
)
&
c_stat
;
ii
<
local
->
ran_ind
;
ii
++
,
datap
++
)
{
sts
=
ssabpid_read
(
ii
,
datap
,
local
);
if
(
sts
==
-
1
)
{
/* Increase error count and check error limits */
clock_gettime
(
CLOCK_REALTIME
,
&
now
);
if
(
op
->
ErrorCount
>
op
->
ErrorSoftLimit
)
{
/* Ignore if some time has expired */
if
(
now
.
tv_sec
-
local
->
ErrTime
.
tv_sec
<
600
)
op
->
ErrorCount
++
;
}
else
op
->
ErrorCount
++
;
local
->
ErrTime
=
now
;
if
(
op
->
ErrorCount
==
op
->
ErrorSoftLimit
)
errh_Error
(
"IO Error soft limit reached on card '%s'"
,
cp
->
Name
);
continue
;
}
}
/* Move data to PidX-object */
swap_word
((
unsigned
int
*
)
&
local
->
objP
->
ProcVal
,
(
unsigned
int
*
)
&
c_stat
.
ProcVal
);
swap_word
((
unsigned
int
*
)
&
local
->
objP
->
PosVal
,
(
unsigned
int
*
)
&
c_stat
.
PosVal
);
swap_word
((
unsigned
int
*
)
&
local
->
objP
->
OutVal
,
(
unsigned
int
*
)
&
c_stat
.
OutVal
);
swap_word
((
unsigned
int
*
)
&
local
->
objP
->
ControlDiff
,
(
unsigned
int
*
)
&
c_stat
.
ControlDiff
);
if
(
local
->
objP
->
BiasGain
!=
0
)
swap_word
((
unsigned
int
*
)
&
local
->
objP
->
Bias
,
(
unsigned
int
*
)
&
c_stat
.
Bias
);
local
->
objP
->
EndMin
=
c_stat
.
EndMin
;
local
->
objP
->
EndMax
=
c_stat
.
EndMax
;
// local->objP->ScanTime = c_stat.ScanTime;
local
->
Istat
[
0
]
^=
act_dat_mask
;
}
if
(
op
->
ErrorCount
>=
op
->
ErrorHardLimit
)
{
errh_Error
(
"IO Error hard limit reached on card '%s', IO stopped"
,
cp
->
Name
);
ctx
->
Node
->
EmergBreakTrue
=
1
;
return
IO__ERRDEVICE
;
}
return
1
;
}
/*----------------------------------------------------------------------------*\
\*----------------------------------------------------------------------------*/
static
pwr_tStatus
IoCardWrite
(
io_tCtx
ctx
,
io_sAgent
*
ap
,
io_sRack
*
rp
,
io_sCard
*
cp
)
{
io_sLocal
*
local
;
pwr_sClass_Ssab_PIDuP
*
op
;
int
ii
;
int
sts
;
pwr_tTime
now
;
unsigned
short
diff
;
card_dyn
c_dyn
;
card_par
c_par
;
int
paramc
=
0
;
int
dynparc
=
0
;
unsigned
short
*
datap
;
local
=
(
io_sLocal
*
)
cp
->
Local
;
op
=
(
pwr_sClass_Ssab_PIDuP
*
)
cp
->
op
;
if
(
!
local
->
Valid
)
return
1
;
diff
=
local
->
Istat
[
0
]
^
local
->
Istat
[
1
];
if
(
diff
&
setup_req_mask
)
paramc
=
1
,
dynparc
=
1
;
/* Check if static parameters has changed */
if
((
local
->
objP
->
PidAlg
!=
local
->
Par
.
PidAlg
)
||
(
local
->
objP
->
Inverse
!=
local
->
Par
.
Inverse
)
||
(
local
->
objP
->
PidGain
!=
local
->
Par
.
PidGain
)
||
(
local
->
objP
->
IntTime
!=
local
->
Par
.
IntTime
)
||
(
local
->
objP
->
DerTime
!=
local
->
Par
.
DerTime
)
||
(
local
->
objP
->
DerGain
!=
local
->
Par
.
DerGain
)
||
(
local
->
objP
->
BiasGain
!=
local
->
Par
.
BiasGain
)
||
(
local
->
objP
->
MinOut
!=
local
->
Par
.
MinOut
)
||
(
local
->
objP
->
MaxOut
!=
local
->
Par
.
MaxOut
)
||
(
local
->
objP
->
EndHys
!=
local
->
Par
.
EndHys
)
||
(
local
->
objP
->
ProcFiltTime
!=
local
->
Par
.
ProcFiltTime
)
||
(
local
->
objP
->
ProcMax
!=
local
->
ProcRange
.
Max
)
||
(
local
->
objP
->
ProcMin
!=
local
->
ProcRange
.
Min
)
||
(
local
->
objP
->
AoMax
!=
local
->
AoRange
.
Max
)
||
(
local
->
objP
->
AoMin
!=
local
->
AoRange
.
Min
)
||
(
local
->
Par
.
inc3pGain
!=
local
->
objP
->
Inc3pGain
)
||
(
local
->
Par
.
MinTim
!=
local
->
objP
->
MinTim
)
||
(
local
->
Par
.
MaxTim
!=
local
->
objP
->
MaxTim
)
||
(
local
->
Par
.
MaxInteg
!=
local
->
objP
->
MaxInteg
))
paramc
=
1
;
/* Check if dynamic parameters has changed */
if
((
local
->
objP
->
SetVal
!=
local
->
Dyn
.
SetVal
)
||
(
local
->
objP
->
Bias
!=
local
->
Dyn
.
BiasD
)
||
(
local
->
objP
->
ForcVal
!=
local
->
Dyn
.
ForcVal
)
||
(
local
->
objP
->
IntOff
!=
local
->
Dyn
.
IntOff
)
||
(
local
->
objP
->
Force
!=
local
->
Dyn
.
Force
))
dynparc
=
1
;
/* Move parameters to local */
if
(
paramc
&&
((
diff
&
setup_mask
)
==
0
))
{
local
->
Par
.
inc3pGain
=
local
->
objP
->
Inc3pGain
;
local
->
Par
.
MinTim
=
local
->
objP
->
MinTim
;
local
->
Par
.
MaxTim
=
local
->
objP
->
MaxTim
;
local
->
Par
.
MaxInteg
=
local
->
objP
->
MaxInteg
;
local
->
ProcRange
.
Max
=
local
->
objP
->
ProcMax
;
local
->
ProcRange
.
Min
=
local
->
objP
->
ProcMin
;
local
->
ProcRange
.
RawMax
=
local
->
objP
->
ProcRawMax
;
local
->
ProcRange
.
RawMin
=
local
->
objP
->
ProcRawMin
;
if
(
local
->
ProcRange
.
RawMax
!=
local
->
ProcRange
.
RawMin
)
{
local
->
Par
.
AVcoeff
[
0
]
=
(
local
->
ProcRange
.
Max
-
local
->
ProcRange
.
Min
)
/
(
local
->
ProcRange
.
RawMax
-
local
->
ProcRange
.
RawMin
);
local
->
Par
.
AVcoeff
[
1
]
=
local
->
ProcRange
.
Min
-
local
->
ProcRange
.
RawMin
*
local
->
Par
.
AVcoeff
[
0
];
}
local
->
BiasRange
.
Max
=
local
->
objP
->
BiasMax
;
local
->
BiasRange
.
Min
=
local
->
objP
->
BiasMin
;
local
->
BiasRange
.
RawMax
=
local
->
objP
->
BiasRawMax
;
local
->
BiasRange
.
RawMin
=
local
->
objP
->
BiasRawMin
;
if
(
local
->
BiasRange
.
RawMax
!=
local
->
BiasRange
.
RawMin
)
{
local
->
Par
.
BVcoeff
[
0
]
=
(
local
->
BiasRange
.
Max
-
local
->
BiasRange
.
Min
)
/
(
local
->
BiasRange
.
RawMax
-
local
->
BiasRange
.
RawMin
);
local
->
Par
.
BVcoeff
[
1
]
=
local
->
BiasRange
.
Min
-
local
->
BiasRange
.
RawMin
*
local
->
Par
.
BVcoeff
[
0
];
}
local
->
AoRange
.
Max
=
local
->
objP
->
AoMax
;
local
->
AoRange
.
Min
=
local
->
objP
->
AoMin
;
local
->
AoRange
.
RawMax
=
local
->
objP
->
AoRawMax
;
local
->
AoRange
.
RawMin
=
local
->
objP
->
AoRawMin
;
if
(
local
->
AoRange
.
Max
!=
local
->
AoRange
.
Min
)
{
local
->
Par
.
OVcoeff
[
0
]
=
(
local
->
AoRange
.
RawMax
-
local
->
AoRange
.
RawMin
)
/
(
local
->
AoRange
.
Max
-
local
->
AoRange
.
Min
);
local
->
Par
.
OVcoeff
[
1
]
=
local
->
AoRange
.
RawMin
-
local
->
AoRange
.
Min
*
local
->
Par
.
OVcoeff
[
0
];
}
local
->
PosRange
.
Max
=
local
->
objP
->
PosMax
;
local
->
PosRange
.
Min
=
local
->
objP
->
PosMin
;
local
->
PosRange
.
RawMax
=
local
->
objP
->
PosRawMax
;
local
->
PosRange
.
RawMin
=
local
->
objP
->
PosRawMin
;
if
(
local
->
PosRange
.
RawMax
!=
local
->
PosRange
.
RawMin
)
{
local
->
Par
.
PVcoeff
[
0
]
=
(
local
->
PosRange
.
Max
-
local
->
PosRange
.
Min
)
/
(
local
->
PosRange
.
RawMax
-
local
->
PosRange
.
RawMin
);
local
->
Par
.
PVcoeff
[
1
]
=
local
->
PosRange
.
Min
-
local
->
PosRange
.
RawMin
*
local
->
Par
.
PVcoeff
[
0
];
}
local
->
Par
.
PidAlg
=
local
->
objP
->
PidAlg
;
local
->
Par
.
Inverse
=
local
->
objP
->
Inverse
;
local
->
Par
.
PidGain
=
local
->
objP
->
PidGain
;
local
->
Par
.
IntTime
=
local
->
objP
->
IntTime
;
local
->
Par
.
DerTime
=
local
->
objP
->
DerTime
;
local
->
Par
.
DerGain
=
local
->
objP
->
DerGain
;
local
->
Par
.
BiasGain
=
local
->
objP
->
BiasGain
;
local
->
Par
.
MinOut
=
local
->
objP
->
MinOut
;
local
->
Par
.
MaxOut
=
local
->
objP
->
MaxOut
;
local
->
Par
.
EndHys
=
local
->
objP
->
EndHys
;
local
->
Par
.
ErrSta
=
local
->
objP
->
ErrSta
;
local
->
Par
.
ErrSto
=
local
->
objP
->
ErrSto
;
local
->
Par
.
pos3pGain
=
local
->
objP
->
Pos3pGain
;
local
->
Par
.
ProcFiltTime
=
local
->
objP
->
ProcFiltTime
;
local
->
Par
.
BiasFiltTime
=
local
->
objP
->
BiasFiltTime
;
local
->
Par
.
PosFiltTime
=
local
->
objP
->
PosFiltTime
;
/* Write parameters to card */
c_par
.
PidAlg
=
local
->
Par
.
PidAlg
;
c_par
.
Inverse
=
local
->
Par
.
Inverse
;
swap_word
((
unsigned
int
*
)
&
c_par
.
inc3pGain
,
(
unsigned
int
*
)
&
local
->
Par
.
inc3pGain
);
swap_word
((
unsigned
int
*
)
&
c_par
.
MinTim
,
(
unsigned
int
*
)
&
local
->
Par
.
MinTim
);
swap_word
((
unsigned
int
*
)
&
c_par
.
MaxTim
,
(
unsigned
int
*
)
&
local
->
Par
.
MaxTim
);
swap_word
((
unsigned
int
*
)
&
c_par
.
MaxInteg
,
(
unsigned
int
*
)
&
local
->
Par
.
MaxInteg
);
swap_word
((
unsigned
int
*
)
&
c_par
.
AVcoeff
[
0
],
(
unsigned
int
*
)
&
local
->
Par
.
AVcoeff
[
0
]);
swap_word
((
unsigned
int
*
)
&
c_par
.
AVcoeff
[
1
],
(
unsigned
int
*
)
&
local
->
Par
.
AVcoeff
[
1
]);
swap_word
((
unsigned
int
*
)
&
c_par
.
BVcoeff
[
0
],
(
unsigned
int
*
)
&
local
->
Par
.
BVcoeff
[
0
]);
swap_word
((
unsigned
int
*
)
&
c_par
.
BVcoeff
[
1
],
(
unsigned
int
*
)
&
local
->
Par
.
BVcoeff
[
1
]);
swap_word
((
unsigned
int
*
)
&
c_par
.
OVcoeff
[
0
],
(
unsigned
int
*
)
&
local
->
Par
.
OVcoeff
[
0
]);
swap_word
((
unsigned
int
*
)
&
c_par
.
OVcoeff
[
1
],
(
unsigned
int
*
)
&
local
->
Par
.
OVcoeff
[
1
]);
swap_word
((
unsigned
int
*
)
&
c_par
.
PidGain
,
(
unsigned
int
*
)
&
local
->
Par
.
PidGain
);
swap_word
((
unsigned
int
*
)
&
c_par
.
IntTime
,
(
unsigned
int
*
)
&
local
->
Par
.
IntTime
);
swap_word
((
unsigned
int
*
)
&
c_par
.
DerTime
,
(
unsigned
int
*
)
&
local
->
Par
.
DerTime
);
swap_word
((
unsigned
int
*
)
&
c_par
.
DerGain
,
(
unsigned
int
*
)
&
local
->
Par
.
DerGain
);
swap_word
((
unsigned
int
*
)
&
c_par
.
BiasGain
,
(
unsigned
int
*
)
&
local
->
Par
.
BiasGain
);
swap_word
((
unsigned
int
*
)
&
c_par
.
MinOut
,
(
unsigned
int
*
)
&
local
->
Par
.
MinOut
);
swap_word
((
unsigned
int
*
)
&
c_par
.
MaxOut
,
(
unsigned
int
*
)
&
local
->
Par
.
MaxOut
);
swap_word
((
unsigned
int
*
)
&
c_par
.
EndHys
,
(
unsigned
int
*
)
&
local
->
Par
.
EndHys
);
swap_word
((
unsigned
int
*
)
&
c_par
.
PVcoeff
[
0
],
(
unsigned
int
*
)
&
local
->
Par
.
PVcoeff
[
0
]);
swap_word
((
unsigned
int
*
)
&
c_par
.
PVcoeff
[
1
],
(
unsigned
int
*
)
&
local
->
Par
.
PVcoeff
[
1
]);
swap_word
((
unsigned
int
*
)
&
c_par
.
ErrSta
,
(
unsigned
int
*
)
&
local
->
Par
.
ErrSta
);
swap_word
((
unsigned
int
*
)
&
c_par
.
ErrSto
,
(
unsigned
int
*
)
&
local
->
Par
.
ErrSto
);
swap_word
((
unsigned
int
*
)
&
c_par
.
pos3pGain
,
(
unsigned
int
*
)
&
local
->
Par
.
pos3pGain
);
swap_word
((
unsigned
int
*
)
&
c_par
.
ProcFiltTime
,
(
unsigned
int
*
)
&
local
->
Par
.
ProcFiltTime
);
swap_word
((
unsigned
int
*
)
&
c_par
.
BiasFiltTime
,
(
unsigned
int
*
)
&
local
->
Par
.
BiasFiltTime
);
swap_word
((
unsigned
int
*
)
&
c_par
.
PosFiltTime
,
(
unsigned
int
*
)
&
local
->
Par
.
PosFiltTime
);
for
(
ii
=
local
->
par_ind
,
datap
=
(
unsigned
short
*
)
&
c_par
;
ii
<
local
->
stat_ind
;
ii
++
,
datap
++
)
{
sts
=
ssabpid_write
(
ii
,
datap
,
local
);
if
(
sts
==
-
1
)
{
/* Increase error count and check error limits */
clock_gettime
(
CLOCK_REALTIME
,
&
now
);
if
(
op
->
ErrorCount
>
op
->
ErrorSoftLimit
)
{
/* Ignore if some time has expired */
if
(
now
.
tv_sec
-
local
->
ErrTime
.
tv_sec
<
600
)
op
->
ErrorCount
++
;
}
else
op
->
ErrorCount
++
;
local
->
ErrTime
=
now
;
if
(
op
->
ErrorCount
==
op
->
ErrorSoftLimit
)
errh_Error
(
"IO Error soft limit reached on card '%s'"
,
cp
->
Name
);
continue
;
}
}
/* Update status word */
if
((
diff
&
setup_req_mask
)
!=
0
)
local
->
Istat
[
0
]
^=
setup_req_mask
;
local
->
Istat
[
0
]
^=
setup_mask
;
}
/* End - if new parameters */
/* Send dynamic parameters ? */
if
(
dynparc
&&
((
diff
&
dyn_mask
)
==
0
))
{
/* Move parameters to local */
local
->
Dyn
.
SetVal
=
local
->
objP
->
SetVal
;
local
->
Dyn
.
BiasD
=
local
->
objP
->
Bias
;
local
->
Dyn
.
ForcVal
=
local
->
objP
->
ForcVal
;
local
->
Dyn
.
IntOff
=
local
->
objP
->
IntOff
;
local
->
Dyn
.
Force
=
local
->
objP
->
Force
;
/* Write parameters to card */
swap_word
((
unsigned
int
*
)
&
c_dyn
.
SetVal
,
(
unsigned
int
*
)
&
local
->
Dyn
.
SetVal
);
swap_word
((
unsigned
int
*
)
&
c_dyn
.
BiasD
,
(
unsigned
int
*
)
&
local
->
Dyn
.
BiasD
);
swap_word
((
unsigned
int
*
)
&
c_dyn
.
ForcVal
,
(
unsigned
int
*
)
&
local
->
Dyn
.
ForcVal
);
c_dyn
.
Force
=
local
->
Dyn
.
Force
;
c_dyn
.
IntOff
=
local
->
Dyn
.
IntOff
;
for
(
ii
=
local
->
dyn_ind
,
datap
=
(
unsigned
short
*
)
&
c_dyn
;
ii
<
local
->
par_ind
;
ii
++
,
datap
++
)
{
sts
=
ssabpid_write
(
ii
,
datap
,
local
);
if
(
sts
==
-
1
)
{
/* Increase error count and check error limits */
clock_gettime
(
CLOCK_REALTIME
,
&
now
);
if
(
op
->
ErrorCount
>
op
->
ErrorSoftLimit
)
{
/* Ignore if some time has expired */
if
(
now
.
tv_sec
-
local
->
ErrTime
.
tv_sec
<
600
)
op
->
ErrorCount
++
;
}
else
op
->
ErrorCount
++
;
local
->
ErrTime
=
now
;
if
(
op
->
ErrorCount
==
op
->
ErrorSoftLimit
)
errh_Error
(
"IO Error soft limit reached on card '%s'"
,
cp
->
Name
);
continue
;
}
}
/* Update status word */
local
->
Istat
[
0
]
^=
dyn_mask
;
}
/* End if nya dyn par */
/* Update status-word */
local
->
Istat
[
0
]
&=
typ_mask
;
local
->
Istat
[
0
]
|=
ao_mask
;
if
(
local
->
objP
->
UseInc3p
)
local
->
Istat
[
0
]
|=
inc3p_mask
;
if
(
local
->
objP
->
UsePos3p
)
local
->
Istat
[
0
]
|=
pos3p_mask
;
if
(
local
->
objP
->
UseDynBias
)
local
->
Istat
[
0
]
|=
dyn_bias_mask
;
if
(
local
->
objP
->
UseAo
)
local
->
Istat
[
0
]
|=
stall_freeze_mask
;
else
local
->
Istat
[
0
]
|=
stall_cont_mask
;
datap
=
&
local
->
Istat
[
0
];
sts
=
ssabpid_write
(
0
,
datap
,
local
);
if
(
sts
==
-
1
)
op
->
ErrorCount
++
;
if
(
op
->
ErrorCount
>=
op
->
ErrorHardLimit
)
{
errh_Error
(
"IO Error hard limit reached on card '%s', IO stopped"
,
cp
->
Name
);
ctx
->
Node
->
EmergBreakTrue
=
1
;
return
IO__ERRDEVICE
;
}
return
1
;
}
/*----------------------------------------------------------------------------*\
Every method to be exported to the workbench should be registred here.
\*----------------------------------------------------------------------------*/
pwr_dExport
pwr_BindIoMethods
(
Ssab_PIDuP
)
=
{
pwr_BindIoMethod
(
IoCardInit
),
pwr_BindIoMethod
(
IoCardClose
),
pwr_BindIoMethod
(
IoCardRead
),
pwr_BindIoMethod
(
IoCardWrite
),
pwr_NullMethod
};
ssabox/lib/rt/src/rt_io_ssabox.meth
View file @
f543f297
...
@@ -5,6 +5,7 @@ Ssab_Di
...
@@ -5,6 +5,7 @@ Ssab_Di
Ssab_Do
Ssab_Do
Ssab_Co
Ssab_Co
Ssab_RemoteRack
Ssab_RemoteRack
Ssab_PIDuP
Di_DIX2
Di_DIX2
Do_HVDO32
Do_HVDO32
Ao_HVAO4
Ao_HVAO4
...
...
ssabox/wbl/mcomp/src/ssabox.wb_load
View file @
f543f297
Volume SsabOx $ClassVolume 0.0.250.5
Volume SsabOx $ClassVolume 0.0.250.5
Body SysBody 01-JAN-1970 01:00:00.00
Body SysBody 01-JAN-1970 01:00:00.00
Attr NextOix = "_X16
2
"
Attr NextOix = "_X16
7
"
Attr NextCix = "_X3
0
"
Attr NextCix = "_X3
1
"
Attr NextTix[0] = "_X5"
Attr NextTix[0] = "_X5"
EndBody
EndBody
Object Type $TypeHier 138 30-DEC-2005 14:28:03.99
Object Type $TypeHier 138 30-DEC-2005 14:28:03.99
...
@@ -4254,6 +4254,188 @@ Volume SsabOx $ClassVolume 0.0.250.5
...
@@ -4254,6 +4254,188 @@ Volume SsabOx $ClassVolume 0.0.250.5
EndObject
EndObject
EndObject
EndObject
EndObject
EndObject
!/**
! @Version 1.0
! @Group IO,IO_PSS9000
! @Summary Configuration of a PID card PIDuP.
! Configuration of a PSS9000 PID card PIDuP.
!
! The PIDuP object is positioned below a SSAB_Rack object in the node configuration.
!
! @h2 Function
!
! The PIDuP-card is an autonomous PID-controller where the PID-algorithm runs
! in the micro-processor of the card. Proview only send setpoint-values to the
! card and the card itself calulates the control-value.
!
! @h2 Console
! The card has a terminal port that can be used to view the signal values of the card and to
! trace trouble. To use the terminal port you
! - connect the serial port of the computer to the terminal port of the card.
! - open a consol window on the screen of the computer from the popup menu of the background,
! menu item 'PSS Kort'.
! - view information and help with (Shift) '?'.
! - view the signal values of the card with 'R'.
! For more information about the console program, follow the link below.
!
! @b See hardware specification
! @link Datasheet ../dsh/ssab_pidup.pdf
! @Link Console program http://intern.oxelosund.ssab.se/pss/Hrdvara/PSS-kort-data.htm#AI32uP
!*/
Object Ssab_PIDuP $ClassDef 30 27-MAR-2009 13:34:16.63
Body SysBody 25-MAR-2009 10:38:54.30
Attr Editor = 0
Attr Method = 0
Attr Flags = 16464
EndBody
Object RtBody $ObjBodyDef 1 25-MAR-2009 10:39:31.96
Body SysBody 27-MAR-2009 13:34:30.21
Attr StructName = "Ssab_PIDuP"
Attr NextAix = "_X14"
EndBody
!/**
! Optional description.
!*/
Object Description $Attribute 11 25-MAR-2009 10:41:05.61
Body SysBody 25-MAR-2009 10:40:51.04
Attr PgmName = "Description"
Attr TypeRef = "pwrs:Type-$String80"
EndBody
EndObject
!/**
! Optional device name.
!*/
Object DevName $Attribute 10 25-MAR-2009 10:41:15.44
Body SysBody 25-MAR-2009 10:40:51.04
Attr PgmName = "DevName"
Attr TypeRef = "pwrs:Type-$String40"
EndBody
EndObject
!/**
! Error counter, incremented for every failed read or write operation of the card.
! When the error counter reaches ErrorSoftLimit, a message is sent to the console log.
! When it reaches ErrorHardLimit, all IO handling is aborted.
!*/
Object ErrorCount $Attribute 9 25-MAR-2009 10:41:21.76
Body SysBody 25-MAR-2009 10:40:51.04
Attr PgmName = "ErrorCount"
Attr Flags = 16
Attr TypeRef = "pwrs:Type-$UInt32"
EndBody
EndObject
!/**
! Value of the error counter, when a message is sent to the console log.
!*/
Object ErrorSoftLimit $Attribute 8 25-MAR-2009 10:41:28.70
Body SysBody 25-MAR-2009 10:40:51.04
Attr PgmName = "ErrorSoftLimit"
Attr TypeRef = "pwrs:Type-$UInt32"
EndBody
EndObject
!/**
! Value of the error counter, when all IO handling is aborted.
!*/
Object ErrorHardLimit $Attribute 7 25-MAR-2009 10:41:35.61
Body SysBody 25-MAR-2009 10:40:51.04
Attr PgmName = "ErrorHardLimit"
Attr TypeRef = "pwrs:Type-$UInt32"
EndBody
EndObject
!/**
! @Summary QBUS address of the card.
! QBUS address of the card.
! The value is set with address switches on the card.
! Typically addresses are:
!
! Card number Decimal address
! 1 4193024
! 2 4193028
! 3 4193032
! 4 4193036
!*/
Object RegAddress $Attribute 5 25-MAR-2009 10:41:55.11
Body SysBody 25-MAR-2009 10:40:51.04
Attr PgmName = "RegAddress"
Attr TypeRef = "pwrs:Type-$UInt32"
EndBody
EndObject
!/**
! Object identity of PidX-block that should be connected
! to this card.
!*/
Object PidXCon $Attribute 12 25-MAR-2009 10:47:49.69
Body SysBody 25-MAR-2009 10:48:12.80
Attr PgmName = "PidXCon"
Attr TypeRef = "pwrs:Type-$Objid"
EndBody
EndObject
!/**
! @Summary Process that handles the card. Plc(1), rt_io_comm(2) or application process(4).
! Process that handles the card.
!
! 1: The card is read by the plc process, and is handled by a specific
! thread in the plc, which is specified in the ThreadObject attribute.
! 2: The card is read by the rt_io_comm process.
! 4: The card is handled by an application program.
!*/
Object Process $Attribute 3 25-MAR-2009 10:42:14.10
Body SysBody 25-MAR-2009 10:40:51.04
Attr PgmName = "Process"
Attr TypeRef = "pwrb:Type-IoProcessMask"
EndBody
EndObject
!/**
! @Summary Plc thread that handles the card.
! The PlcThread object of the plc thread that handles the card.
! The card read to with the scantime of the thread.
!*/
Object ThreadObject $Attribute 13 25-MAR-2009 10:48:37.17
Body SysBody 25-MAR-2009 10:48:38.85
Attr PgmName = "ThreadObject"
Attr TypeRef = "pwrs:Type-$Objid"
EndBody
EndObject
!/**
! @Summary A URL to the data sheet for the equipment in this object.
! A URL to the data sheet for the equipment of this object.
! The data sheet can be displayed from the popup menu for this object.
!*/
Object DataSheet $Attribute 1 25-MAR-2009 10:44:41.26
Body SysBody 25-MAR-2009 10:40:51.04
Attr PgmName = "DataSheet"
Attr TypeRef = "pwrs:Type-$URL"
EndBody
EndObject
EndObject
Object IoMethods $RtMethod 163 25-MAR-2009 10:50:23.12
Object IoCardInit $Method 164 25-MAR-2009 10:52:00.36
Body SysBody 30-MAR-2009 13:49:05.19
Attr MethodName = "Ssab_PIDuP-IoCardInit"
EndBody
EndObject
Object IoCardRead $Method 165 25-MAR-2009 10:53:21.52
Body SysBody 30-MAR-2009 13:49:12.65
Attr MethodName = "Ssab_PIDuP-IoCardRead"
EndBody
EndObject
Object IoCardWrite $Method 166 25-MAR-2009 10:54:43.00
Body SysBody 30-MAR-2009 13:49:21.22
Attr MethodName = "Ssab_PIDuP-IoCardWrite"
EndBody
EndObject
Object IoCardClose $Method 167 25-MAR-2009 10:54:55.04
Body SysBody 30-MAR-2009 13:49:28.53
Attr MethodName = "Ssab_PIDuP-IoCardClose"
EndBody
EndObject
EndObject
Object Template Ssab_PIDuP 2155577344 01-JAN-1970 01:00:00.00
Body RtBody 02-APR-2009 08:35:02.91
Attr ErrorSoftLimit = 100
Attr ErrorHardLimit = 500
EndBody
EndObject
EndObject
Object Ai_AI32uP $ClassDef 16 30-DEC-2005 11:26:36.69
Object Ai_AI32uP $ClassDef 16 30-DEC-2005 11:26:36.69
Body SysBody 30-DEC-2005 11:26:36.69
Body SysBody 30-DEC-2005 11:26:36.69
Attr Editor = 0
Attr Editor = 0
...
@@ -5802,529 +5984,144 @@ Volume SsabOx $ClassVolume 0.0.250.5
...
@@ -5802,529 +5984,144 @@ Volume SsabOx $ClassVolume 0.0.250.5
EndBody
EndBody
EndObject
EndObject
EndObject
EndObject
Object PID_1uP $ClassDef 25 12-JAN-2006 07:29:56.01
!/**
Body SysBody 12-JAN-2006 07:29:56.01
! @Version 1.0
! @Code ssabox_plc_pidx.c
! @Group Plc,PlcControl
! @Summary Implements the robust PID control algorithm
! Implements the robust PID control algorithm.
! @image orm_en1-141.gif
!
! Different PID strategies are implemented for
! incremental as well as positional form, see PidAlg
! below.
! The proportional respectively derivative term can be
! based either on process value or control deviation.
!
! The derivative term can be filtered by a first order
! lag filter.
! A feed forward signal, Bias, may be included in the
! algorithm.
!
! It is possible to switch the integration on/off.
! The control signal OutVal is checked against the limit
! values MinOut and MaxOut.
!
!*/
Object PidX $ClassDef 26 12-JAN-2006 07:30:19.53
Body SysBody 12-JAN-2006 07:30:19.53
Attr Editor = 0
Attr Editor = 0
Attr Method = 5
Attr Method = 6
Attr Flags = 2128
Attr Flags = 80
Attr PopEditor = 2
EndBody
EndBody
Object RtBody $ObjBodyDef 1 12-JAN-2006 07:
29:56.01
Object RtBody $ObjBodyDef 1 12-JAN-2006 07:
30:19.53
Body SysBody 12-JAN-2006 07:
29:56.01
Body SysBody 12-JAN-2006 07:
30:19.53
Attr StructName = "P
ID_1uP
"
Attr StructName = "P
idX
"
Attr NextAix = "_X
58
"
Attr NextAix = "_X
62
"
EndBody
EndBody
Object Description $Attribute 1 12-JAN-2006 07:29:56.01
!/**
Body SysBody 12-JAN-2006 07:29:56.01
! Specifies the set point value.
Attr PgmName = "Description"
!*/
Attr TypeRef = "pwrs:Type-$String80"
Object SetVal $Input 1 12-JAN-2006 07:30:19.53
EndBody
Body SysBody 12-JAN-2006 07:30:19.53
EndObject
Object DevName $Attribute 2 12-JAN-2006 07:29:56.01
Body SysBody 12-JAN-2006 07:29:56.01
Attr PgmName = "DevName"
Attr TypeRef = "pwrs:Type-$String40"
EndBody
EndObject
Object ErrorCount $Attribute 3 12-JAN-2006 07:29:56.01
Body SysBody 12-JAN-2006 07:29:56.01
Attr PgmName = "ErrorCount"
Attr Flags = 1024
Attr TypeRef = "pwrs:Type-$UInt32"
EndBody
EndObject
Object ErrorSoftLimit $Attribute 4 12-JAN-2006 07:29:56.01
Body SysBody 12-JAN-2006 07:29:56.01
Attr PgmName = "ErrorSoftLimit"
Attr TypeRef = "pwrs:Type-$UInt32"
EndBody
EndObject
Object ErrorHardLimit $Attribute 5 12-JAN-2006 07:29:56.01
Body SysBody 12-JAN-2006 07:29:56.01
Attr PgmName = "ErrorHardLimit"
Attr TypeRef = "pwrs:Type-$UInt32"
EndBody
EndObject
Object StallReact $Attribute 6 12-JAN-2006 07:29:56.01
Body SysBody 12-JAN-2006 07:29:56.01
Attr PgmName = "StallReact"
Attr TypeRef = "pwrs:Type-$UInt32"
EndBody
EndObject
Object RegAddress $Attribute 7 12-JAN-2006 07:29:56.01
Body SysBody 12-JAN-2006 07:29:56.01
Attr PgmName = "RegAddress"
Attr TypeRef = "pwrs:Type-$UInt32"
EndBody
EndObject
Object VectAddress $Attribute 8 12-JAN-2006 07:29:56.01
Body SysBody 12-JAN-2006 07:29:56.01
Attr PgmName = "VectAddress"
Attr TypeRef = "pwrs:Type-$UInt32"
EndBody
EndObject
Object Process $Attribute 9 12-JAN-2006 07:29:56.01
Body SysBody 12-JAN-2006 07:29:56.01
Attr PgmName = "Process"
Attr TypeRef = "pwrs:Type-$UInt32"
EndBody
EndObject
Object ThreadObject $Attribute 10 12-JAN-2006 07:29:56.01
Body SysBody 12-JAN-2006 07:29:56.01
Attr PgmName = "ThreadObject"
Attr TypeRef = "pwrs:Type-$Objid"
EndBody
EndObject
Object PidXCon $Intern 11 12-JAN-2006 07:29:56.01
Body SysBody 12-JAN-2006 07:29:56.01
Attr PgmName = "PidXCon"
Attr TypeRef = "pwrs:Type-$Objid"
EndBody
EndObject
Object SetVal $Attribute 12 12-JAN-2006 07:29:56.01
Body SysBody 12-JAN-2006 07:29:56.01
Attr PgmName = "SetVal"
Attr PgmName = "SetVal"
Attr Flags = 2048
Attr TypeRef = "pwrs:Type-$Float32"
Attr TypeRef = "pwrs:Type-$Float32"
Attr GraphName = "SV"
EndBody
EndBody
EndObject
EndObject
Object BiasD $
Attribute 13 12-JAN-2006 07:29:56.01
Object BiasD $
Input 2 12-JAN-2006 07:30:19.53
Body SysBody 12-JAN-2006 07:
29:56.01
Body SysBody 12-JAN-2006 07:
30:19.53
Attr PgmName = "BiasD"
Attr PgmName = "BiasD"
Attr Flags = 2048
Attr TypeRef = "pwrs:Type-$Float32"
Attr TypeRef = "pwrs:Type-$Float32"
Attr GraphName = "BIS"
EndBody
EndBody
EndObject
EndObject
Object ForcVal $Attribute 14 12-JAN-2006 07:29:56.01
!/**
Body SysBody 12-JAN-2006 07:29:56.01
! Specifies which value is to be used when Force is TRUE.
! When Force is TRUE OutVal is equal to ForcVal. This
! input is in general connected to the corresponding
! output of a Mode object.
!*/
Object ForcVal $Input 3 12-JAN-2006 07:30:19.53
Body SysBody 12-JAN-2006 07:30:19.53
Attr PgmName = "ForcVal"
Attr PgmName = "ForcVal"
Attr Flags = 2048
Attr TypeRef = "pwrs:Type-$Float32"
Attr TypeRef = "pwrs:Type-$Float32"
Attr GraphName = "FOV"
EndBody
EndBody
EndObject
EndObject
Object Force $Attribute 15 12-JAN-2006 07:29:56.01
!/**
Body SysBody 12-JAN-2006 07:29:56.01
! Specifies whether forced control is selected
! or not. FALSE means none;
!*/
Object Force $Input 4 12-JAN-2006 07:30:19.53
Body SysBody 12-JAN-2006 07:30:19.53
Attr PgmName = "Force"
Attr PgmName = "Force"
Attr Flags =
2048
Attr Flags =
8192
Attr TypeRef = "pwrs:Type-$Boolean"
Attr TypeRef = "pwrs:Type-$Boolean"
Attr GraphName = "for"
EndBody
EndBody
EndObject
EndObject
Object IntOff $Attribute 16 12-JAN-2006 07:29:56.01
!/**
Body SysBody 12-JAN-2006 07:29:56.01
! Specifies whether to enable or disable the integration.
! FALSE means that the integration is on; TRUE switches
! the integration off.
!*/
Object IntOff $Input 5 12-JAN-2006 07:30:19.53
Body SysBody 12-JAN-2006 07:30:19.53
Attr PgmName = "IntOff"
Attr PgmName = "IntOff"
Attr Flags =
2048
Attr Flags =
8192
Attr TypeRef = "pwrs:Type-$Boolean"
Attr TypeRef = "pwrs:Type-$Boolean"
Attr GraphName = "iof"
EndBody
EndBody
EndObject
EndObject
Object Init $Attribute 17 12-JAN-2006 07:29:56.01
!/**
Body SysBody 12-JAN-2006 07:29:56.01
! Description.
Attr PgmName = "Init"
!*/
Attr Flags = 2048
Object Description $Intern 9 12-JAN-2006 07:30:19.53
Attr TypeRef = "pwrs:Type-$Boolean"
Body SysBody 12-JAN-2006 07:30:19.53
Attr PgmName = "Description"
Attr TypeRef = "pwrs:Type-$String80"
EndBody
EndBody
EndObject
EndObject
Object PidAlg $Attribute 18 12-JAN-2006 07:29:56.01
!/**
Body SysBody 12-JAN-2006 07:29:56.01
! Not used.
Attr PgmName = "PidAlg"
!*/
Attr Flags = 2048
Object Pid1uPCon $Intern 10 12-JAN-2006 07:30:19.53
Attr TypeRef = "pwrs:Type-$UInt32"
Body SysBody 12-JAN-2006 07:30:19.53
Attr PgmName = "Pid1uPCon"
Attr TypeRef = "pwrs:Type-$Objid"
Attr NiNaAnnot = 1
EndBody
EndBody
EndObject
EndObject
Object Inverse $Attribute 19 12-JAN-2006 07:29:56.01
!/**
Body SysBody 12-JAN-2006 07:29:56.01
! Accumulated control error - in time form.
Attr PgmName = "Inverse"
!*/
Attr Flags = 2048
Object Acc $Intern 11 12-JAN-2006 07:30:19.53
Attr TypeRef = "pwrs:Type-$Boolean"
Body SysBody 12-JAN-2006 07:30:19.53
Attr PgmName = "Acc"
Attr Flags = 1040
Attr TypeRef = "pwrs:Type-$Float32"
EndBody
EndBody
EndObject
EndObject
Object PidGain $Attribute 20 12-JAN-2006 07:29:56.01
!/**
Body SysBody 12-JAN-2006 07:29:56.01
! The controller's control signal. The value is based
Attr PgmName = "PidGain"
! either on the algorithm's current result or a forced value.
Attr Flags = 2048
!*/
Object OutVal $Intern 12 12-JAN-2006 07:30:19.53
Body SysBody 12-JAN-2006 07:30:19.53
Attr PgmName = "OutVal"
Attr Flags = 1040
Attr TypeRef = "pwrs:Type-$Float32"
Attr TypeRef = "pwrs:Type-$Float32"
EndBody
EndBody
EndObject
EndObject
Object IntTime $Attribute 21 12-JAN-2006 07:29:56.01
!/**
Body SysBody 12-JAN-2006 07:29:56.01
! Control error (= ProcVal - SetVal).
Attr PgmName = "IntTime"
!*/
Attr Flags = 2048
Object ControlDiff $Intern 13 12-JAN-2006 07:30:19.53
Attr TypeRef = "pwrs:Type-$Float32"
Body SysBody 12-JAN-2006 07:30:19.53
EndBody
Attr PgmName = "ControlDiff"
EndObject
Attr Flags = 1040
Object DerTime $Attribute 22 12-JAN-2006 07:29:56.01
Body SysBody 12-JAN-2006 07:29:56.01
Attr PgmName = "DerTime"
Attr Flags = 2048
Attr TypeRef = "pwrs:Type-$Float32"
EndBody
EndObject
Object DerGain $Attribute 23 12-JAN-2006 07:29:56.01
Body SysBody 12-JAN-2006 07:29:56.01
Attr PgmName = "DerGain"
Attr Flags = 2048
Attr TypeRef = "pwrs:Type-$Float32"
EndBody
EndObject
Object MinOut $Attribute 24 12-JAN-2006 07:29:56.01
Body SysBody 12-JAN-2006 07:29:56.01
Attr PgmName = "MinOut"
Attr Flags = 2048
Attr TypeRef = "pwrs:Type-$Float32"
EndBody
EndObject
Object MaxOut $Attribute 25 12-JAN-2006 07:29:56.01
Body SysBody 12-JAN-2006 07:29:56.01
Attr PgmName = "MaxOut"
Attr Flags = 2048
Attr TypeRef = "pwrs:Type-$Float32"
EndBody
EndObject
Object EndHys $Attribute 26 12-JAN-2006 07:29:56.01
Body SysBody 12-JAN-2006 07:29:56.01
Attr PgmName = "EndHys"
Attr Flags = 2048
Attr TypeRef = "pwrs:Type-$Float32"
EndBody
EndObject
Object BiasGain $Attribute 27 12-JAN-2006 07:29:56.01
Body SysBody 12-JAN-2006 07:29:56.01
Attr PgmName = "BiasGain"
Attr Flags = 2048
Attr TypeRef = "pwrs:Type-$Float32"
EndBody
EndObject
Object UseDynBias $Attribute 28 12-JAN-2006 07:29:56.01
Body SysBody 12-JAN-2006 07:29:56.01
Attr PgmName = "UseDynBias"
Attr Flags = 2048
Attr TypeRef = "pwrs:Type-$Boolean"
EndBody
EndObject
Object ActMax $Attribute 29 12-JAN-2006 07:29:56.01
Body SysBody 12-JAN-2006 07:29:56.01
Attr PgmName = "ActMax"
Attr Flags = 2048
Attr TypeRef = "pwrs:Type-$Float32"
EndBody
EndObject
Object ActMin $Attribute 30 12-JAN-2006 07:29:56.01
Body SysBody 12-JAN-2006 07:29:56.01
Attr PgmName = "ActMin"
Attr Flags = 2048
Attr TypeRef = "pwrs:Type-$Float32"
EndBody
EndObject
Object ActRawMax $Attribute 31 12-JAN-2006 07:29:56.01
Body SysBody 12-JAN-2006 07:29:56.01
Attr PgmName = "ActRawMax"
Attr Flags = 2048
Attr TypeRef = "pwrs:Type-$Int32"
EndBody
EndObject
Object ActRawMin $Attribute 32 12-JAN-2006 07:29:56.01
Body SysBody 12-JAN-2006 07:29:56.01
Attr PgmName = "ActRawMin"
Attr Flags = 2048
Attr TypeRef = "pwrs:Type-$Int32"
EndBody
EndObject
Object BiasMax $Attribute 33 12-JAN-2006 07:29:56.01
Body SysBody 12-JAN-2006 07:29:56.01
Attr PgmName = "BiasMax"
Attr Flags = 2048
Attr TypeRef = "pwrs:Type-$Float32"
EndBody
EndObject
Object BiasMin $Attribute 34 12-JAN-2006 07:29:56.01
Body SysBody 12-JAN-2006 07:29:56.01
Attr PgmName = "BiasMin"
Attr Flags = 2048
Attr TypeRef = "pwrs:Type-$Float32"
EndBody
EndObject
Object BiasRawMax $Attribute 35 12-JAN-2006 07:29:56.01
Body SysBody 12-JAN-2006 07:29:56.01
Attr PgmName = "BiasRawMax"
Attr Flags = 2048
Attr TypeRef = "pwrs:Type-$Int32"
EndBody
EndObject
Object BiasRawMin $Attribute 36 12-JAN-2006 07:29:56.01
Body SysBody 12-JAN-2006 07:29:56.01
Attr PgmName = "BiasRawMin"
Attr Flags = 2048
Attr TypeRef = "pwrs:Type-$Int32"
EndBody
EndObject
Object UseAo $Attribute 37 12-JAN-2006 07:29:56.01
Body SysBody 12-JAN-2006 07:29:56.01
Attr PgmName = "UseAo"
Attr Flags = 2048
Attr TypeRef = "pwrs:Type-$Boolean"
EndBody
EndObject
Object AoMax $Attribute 38 12-JAN-2006 07:29:56.01
Body SysBody 12-JAN-2006 07:29:56.01
Attr PgmName = "AoMax"
Attr Flags = 2048
Attr TypeRef = "pwrs:Type-$Float32"
EndBody
EndObject
Object AoMin $Attribute 39 12-JAN-2006 07:29:56.01
Body SysBody 12-JAN-2006 07:29:56.01
Attr PgmName = "AoMin"
Attr Flags = 2048
Attr TypeRef = "pwrs:Type-$Float32"
EndBody
EndObject
Object AoRawMax $Attribute 40 12-JAN-2006 07:29:56.01
Body SysBody 12-JAN-2006 07:29:56.01
Attr PgmName = "AoRawMax"
Attr Flags = 2048
Attr TypeRef = "pwrs:Type-$Int32"
EndBody
EndObject
Object AoRawMin $Attribute 41 12-JAN-2006 07:29:56.01
Body SysBody 12-JAN-2006 07:29:56.01
Attr PgmName = "AoRawMin"
Attr Flags = 2048
Attr TypeRef = "pwrs:Type-$Int32"
EndBody
EndObject
Object UsePos3p $Attribute 42 12-JAN-2006 07:29:56.01
Body SysBody 12-JAN-2006 07:29:56.01
Attr PgmName = "UsePos3p"
Attr Flags = 2048
Attr TypeRef = "pwrs:Type-$Boolean"
EndBody
EndObject
Object PosMax $Attribute 43 12-JAN-2006 07:29:56.01
Body SysBody 12-JAN-2006 07:29:56.01
Attr PgmName = "PosMax"
Attr Flags = 2048
Attr TypeRef = "pwrs:Type-$Float32"
EndBody
EndObject
Object PosMin $Attribute 44 12-JAN-2006 07:29:56.01
Body SysBody 12-JAN-2006 07:29:56.01
Attr PgmName = "PosMin"
Attr Flags = 2048
Attr TypeRef = "pwrs:Type-$Float32"
EndBody
EndObject
Object PosRawMax $Attribute 45 12-JAN-2006 07:29:56.01
Body SysBody 12-JAN-2006 07:29:56.01
Attr PgmName = "PosRawMax"
Attr Flags = 2048
Attr TypeRef = "pwrs:Type-$Int32"
EndBody
EndObject
Object PosRawMin $Attribute 46 12-JAN-2006 07:29:56.01
Body SysBody 12-JAN-2006 07:29:56.01
Attr PgmName = "PosRawMin"
Attr Flags = 2048
Attr TypeRef = "pwrs:Type-$Int32"
EndBody
EndObject
Object ErrSta $Attribute 47 12-JAN-2006 07:29:56.01
Body SysBody 12-JAN-2006 07:29:56.01
Attr PgmName = "ErrSta"
Attr Flags = 2048
Attr TypeRef = "pwrs:Type-$Float32"
EndBody
EndObject
Object ErrSto $Attribute 48 12-JAN-2006 07:29:56.01
Body SysBody 12-JAN-2006 07:29:56.01
Attr PgmName = "ErrSto"
Attr Flags = 2048
Attr TypeRef = "pwrs:Type-$Float32"
EndBody
EndObject
Object Pos3pGain $Attribute 49 12-JAN-2006 07:29:56.01
Body SysBody 12-JAN-2006 07:29:56.01
Attr PgmName = "Pos3pGain"
Attr Flags = 2048
Attr TypeRef = "pwrs:Type-$Float32"
EndBody
EndObject
Object ProcFiltTime $Attribute 50 12-JAN-2006 07:29:56.01
Body SysBody 12-JAN-2006 07:29:56.01
Attr PgmName = "ProcFiltTime"
Attr Flags = 2048
Attr TypeRef = "pwrs:Type-$Float32"
EndBody
EndObject
Object BiasFiltTime $Attribute 51 12-JAN-2006 07:29:56.01
Body SysBody 12-JAN-2006 07:29:56.01
Attr PgmName = "BiasFiltTime"
Attr Flags = 2048
Attr TypeRef = "pwrs:Type-$Float32"
EndBody
EndObject
Object PosFiltTime $Attribute 52 12-JAN-2006 07:29:56.01
Body SysBody 12-JAN-2006 07:29:56.01
Attr PgmName = "PosFiltTime"
Attr Flags = 2048
Attr TypeRef = "pwrs:Type-$Float32"
EndBody
EndObject
Object UseInc3p $Attribute 53 12-JAN-2006 07:29:56.01
Body SysBody 12-JAN-2006 07:29:56.01
Attr PgmName = "UseInc3p"
Attr Flags = 2048
Attr TypeRef = "pwrs:Type-$Boolean"
EndBody
EndObject
Object Inc3pGain $Attribute 54 12-JAN-2006 07:29:56.01
Body SysBody 12-JAN-2006 07:29:56.01
Attr PgmName = "Inc3pGain"
Attr Flags = 2048
Attr TypeRef = "pwrs:Type-$Float32"
EndBody
EndObject
Object MinTim $Attribute 55 12-JAN-2006 07:29:56.01
Body SysBody 12-JAN-2006 07:29:56.01
Attr PgmName = "MinTim"
Attr Flags = 2048
Attr TypeRef = "pwrs:Type-$Float32"
EndBody
EndObject
Object MaxTim $Attribute 56 12-JAN-2006 07:29:56.01
Body SysBody 12-JAN-2006 07:29:56.01
Attr PgmName = "MaxTim"
Attr Flags = 2048
Attr TypeRef = "pwrs:Type-$Float32"
EndBody
EndObject
Object MaxInteg $Attribute 57 12-JAN-2006 07:29:56.01
Body SysBody 12-JAN-2006 07:29:56.01
Attr PgmName = "MaxInteg"
Attr Flags = 2048
Attr TypeRef = "pwrs:Type-$Float32"
EndBody
EndObject
EndObject
Object DevBody $ObjBodyDef 2 12-JAN-2006 07:29:56.01
Body SysBody 12-JAN-2006 07:29:56.01
Attr NextAix = "_X2"
EndBody
Object PlcNode $Buffer 1 12-JAN-2006 07:29:56.01
Body SysBody 12-JAN-2006 07:29:56.01
Attr Flags = 2048
Attr Class = "pwrs:Class-$PlcNode"
EndBody
EndObject
EndObject
Object Template PID_1uP 2154266624 01-JAN-1970 01:00:00.00
Body RtBody 01-JAN-1970 01:00:00.00
EndBody
Body DevBody 01-JAN-1970 01:00:00.00
EndBody
EndObject
EndObject
Object PidX $ClassDef 26 12-JAN-2006 07:30:19.53
Body SysBody 12-JAN-2006 07:30:19.53
Attr Editor = 0
Attr Method = 6
Attr Flags = 80
Attr PopEditor = 2
EndBody
Object RtBody $ObjBodyDef 1 12-JAN-2006 07:30:19.53
Body SysBody 12-JAN-2006 07:30:19.53
Attr StructName = "PidX"
Attr NextAix = "_X62"
EndBody
Object SetVal $Input 1 12-JAN-2006 07:30:19.53
Body SysBody 12-JAN-2006 07:30:19.53
Attr PgmName = "SetVal"
Attr TypeRef = "pwrs:Type-$Float32"
Attr GraphName = "SV"
EndBody
EndObject
Object BiasD $Input 2 12-JAN-2006 07:30:19.53
Body SysBody 12-JAN-2006 07:30:19.53
Attr PgmName = "BiasD"
Attr TypeRef = "pwrs:Type-$Float32"
Attr GraphName = "BIS"
EndBody
EndObject
Object ForcVal $Input 3 12-JAN-2006 07:30:19.53
Body SysBody 12-JAN-2006 07:30:19.53
Attr PgmName = "ForcVal"
Attr TypeRef = "pwrs:Type-$Float32"
Attr GraphName = "FOV"
EndBody
EndObject
Object Force $Input 4 12-JAN-2006 07:30:19.53
Body SysBody 12-JAN-2006 07:30:19.53
Attr PgmName = "Force"
Attr Flags = 8192
Attr TypeRef = "pwrs:Type-$Boolean"
Attr GraphName = "for"
EndBody
EndObject
Object IntOff $Input 5 12-JAN-2006 07:30:19.53
Body SysBody 12-JAN-2006 07:30:19.53
Attr PgmName = "IntOff"
Attr Flags = 8192
Attr TypeRef = "pwrs:Type-$Boolean"
Attr GraphName = "iof"
EndBody
EndObject
Object PosVal $Output 6 12-JAN-2006 07:30:19.53
Body SysBody 12-JAN-2006 07:30:19.53
Attr PgmName = "PosVal"
Attr Flags = 1040
Attr TypeRef = "pwrs:Type-$Float32"
Attr GraphName = "POS"
EndBody
EndObject
Object ProcVal $Output 7 12-JAN-2006 07:30:19.53
Body SysBody 12-JAN-2006 07:30:19.53
Attr PgmName = "ProcVal"
Attr Flags = 1040
Attr TypeRef = "pwrs:Type-$Float32"
Attr GraphName = "PV"
EndBody
EndObject
Object Bias $Output 8 12-JAN-2006 07:30:19.53
Body SysBody 12-JAN-2006 07:30:19.53
Attr PgmName = "Bias"
Attr Flags = 1040
Attr TypeRef = "pwrs:Type-$Float32"
Attr GraphName = "BIS"
EndBody
EndObject
Object Description $Intern 9 12-JAN-2006 07:30:19.53
Body SysBody 12-JAN-2006 07:30:19.53
Attr PgmName = "Description"
Attr TypeRef = "pwrs:Type-$String80"
EndBody
EndObject
Object Pid1uPCon $Intern 10 12-JAN-2006 07:30:19.53
Body SysBody 12-JAN-2006 07:30:19.53
Attr PgmName = "Pid1uPCon"
Attr TypeRef = "pwrs:Type-$Objid"
Attr NiNaAnnot = 1
EndBody
EndObject
Object Acc $Intern 11 12-JAN-2006 07:30:19.53
Body SysBody 12-JAN-2006 07:30:19.53
Attr PgmName = "Acc"
Attr Flags = 1040
Attr TypeRef = "pwrs:Type-$Float32"
EndBody
EndObject
Object OutVal $Intern 12 12-JAN-2006 07:30:19.53
Body SysBody 12-JAN-2006 07:30:19.53
Attr PgmName = "OutVal"
Attr Flags = 1040
Attr TypeRef = "pwrs:Type-$Float32"
EndBody
EndObject
Object ControlDiff $Intern 13 12-JAN-2006 07:30:19.53
Body SysBody 12-JAN-2006 07:30:19.53
Attr PgmName = "ControlDiff"
Attr Flags = 1040
Attr TypeRef = "pwrs:Type-$Float32"
Attr TypeRef = "pwrs:Type-$Float32"
EndBody
EndBody
EndObject
EndObject
...
@@ -6335,6 +6132,17 @@ Volume SsabOx $ClassVolume 0.0.250.5
...
@@ -6335,6 +6132,17 @@ Volume SsabOx $ClassVolume 0.0.250.5
Attr TypeRef = "pwrs:Type-$Float32"
Attr TypeRef = "pwrs:Type-$Float32"
EndBody
EndBody
EndObject
EndObject
!/**
! Specifies if OutVal at this scanning has been limited
! against any of the limit values in the interval {
! MinOut, MaxOut } or not. If a limitation is done
! against
!
! -- MinOut, then EndMin is set TRUE
! -- MaxOut, then EndMax is set TRUE
! else they are FALSE.
!
!*/
Object EndMax $Intern 15 12-JAN-2006 07:30:19.53
Object EndMax $Intern 15 12-JAN-2006 07:30:19.53
Body SysBody 12-JAN-2006 07:30:19.53
Body SysBody 12-JAN-2006 07:30:19.53
Attr PgmName = "EndMax"
Attr PgmName = "EndMax"
...
@@ -6342,6 +6150,17 @@ Volume SsabOx $ClassVolume 0.0.250.5
...
@@ -6342,6 +6150,17 @@ Volume SsabOx $ClassVolume 0.0.250.5
Attr TypeRef = "pwrs:Type-$Boolean"
Attr TypeRef = "pwrs:Type-$Boolean"
EndBody
EndBody
EndObject
EndObject
!/**
! Specifies if OutVal at this scanning has been limited
! against any of the limit values in the interval {
! MinOut, MaxOut } or not. If a limitation is done
! against
!
! -- MinOut, then EndMin is set TRUE
! -- MaxOut, then EndMax is set TRUE
! else they are FALSE.
!
!*/
Object EndMin $Intern 16 12-JAN-2006 07:30:19.53
Object EndMin $Intern 16 12-JAN-2006 07:30:19.53
Body SysBody 12-JAN-2006 07:30:19.53
Body SysBody 12-JAN-2006 07:30:19.53
Attr PgmName = "EndMin"
Attr PgmName = "EndMin"
...
@@ -6349,276 +6168,584 @@ Volume SsabOx $ClassVolume 0.0.250.5
...
@@ -6349,276 +6168,584 @@ Volume SsabOx $ClassVolume 0.0.250.5
Attr TypeRef = "pwrs:Type-$Boolean"
Attr TypeRef = "pwrs:Type-$Boolean"
EndBody
EndBody
EndObject
EndObject
!/**
! Request to initialize card, not implemented.
!*/
Object Init $Intern 17 12-JAN-2006 07:30:19.53
Object Init $Intern 17 12-JAN-2006 07:30:19.53
Body SysBody 12-JAN-2006 07:30:19.53
Body SysBody 12-JAN-2006 07:30:19.53
Attr PgmName = "Init"
Attr PgmName = "Init"
Attr TypeRef = "pwrs:Type-$Boolean"
Attr TypeRef = "pwrs:Type-$Boolean"
EndBody
EndBody
EndObject
EndObject
!/**
! @Summary The PID control algorithm
! There are several variations of the PID control
! algorithm. PidAlg specifies the current choice. The
! possible values are as follows:
!
! 1 -- I Integral controller. Gain is not used.
!
! 3 -- I+P Integral controller with proportional
! control action. The P-term is based on the
! the process value.
!
! 6 -- P Proportional Controller.
!
! 7 -- PI Proportional Integral Controller. The
! P-term is based on the control error.
!
! 11 -- I+PD Integral controller with proportional
! derivative control action. Both the P- and
! D-term are based on the process value.
!
! 14 -- P+D Proportional Controller with derivative
! control action. P is based on the control error,
! D on the process value.
!
! 15 -- PI+D Proportional Integral Controller with
! derivative control action. P is based on
! the control error, D on the process value.
!
! 30 -- PD Proportional Derivative Controller. Both
! the P- and D-term are based on the control
! error.
!
! 31 -- PID Proportional Integral Derivative
! Controller. Both the P- and D-term are
! based on the control error.
!*/
Object PidAlg $Intern 18 12-JAN-2006 07:30:19.53
Object PidAlg $Intern 18 12-JAN-2006 07:30:19.53
Body SysBody
12-JAN-2006 07:30:19.53
Body SysBody
31-MAR-2009 14:29:29.84
Attr PgmName = "PidAlg"
Attr PgmName = "PidAlg"
Attr TypeRef = "pwr
s:Type-$UInt32
"
Attr TypeRef = "pwr
b:Type-PidAlgEnum
"
EndBody
EndBody
EndObject
EndObject
!/**
! Specifies whether the control action should be inverted
! or not. FALSE means that a spontaneous increasing
! process value, in a control with fixed set point, is
! met by an increasing control signal, i.e. reverse
! control action. TRUE is the normal case, where a
! spontaneous increasing process value is met by a
! decreasing control signal.
!*/
Object Inverse $Intern 19 12-JAN-2006 07:30:19.53
Object Inverse $Intern 19 12-JAN-2006 07:30:19.53
Body SysBody 12-JAN-2006 07:30:19.53
Body SysBody 12-JAN-2006 07:30:19.53
Attr PgmName = "Inverse"
Attr PgmName = "Inverse"
Attr TypeRef = "pwrs:Type-$Boolean"
Attr TypeRef = "pwrs:Type-$Boolean"
EndBody
EndBody
EndObject
EndObject
!/**
! Specifies the proportional control factor; >= 0.
! The value may be changed in the more info form of the
! Pid object.
!*/
Object PidGain $Intern 20 12-JAN-2006 07:30:19.53
Object PidGain $Intern 20 12-JAN-2006 07:30:19.53
Body SysBody 12-JAN-2006 07:30:19.53
Body SysBody 12-JAN-2006 07:30:19.53
Attr PgmName = "PidGain"
Attr PgmName = "PidGain"
Attr TypeRef = "pwrs:Type-$Float32"
Attr TypeRef = "pwrs:Type-$Float32"
EndBody
EndBody
EndObject
EndObject
!/**
! Specifies the integral action time in seconds.
! The value may be changed in the more info form of the
! Pid object.
!*/
Object IntTime $Intern 21 12-JAN-2006 07:30:19.53
Object IntTime $Intern 21 12-JAN-2006 07:30:19.53
Body SysBody 12-JAN-2006 07:30:19.53
Body SysBody 12-JAN-2006 07:30:19.53
Attr PgmName = "IntTime"
Attr PgmName = "IntTime"
Attr TypeRef = "pwrs:Type-$Float32"
Attr TypeRef = "pwrs:Type-$Float32"
EndBody
EndBody
EndObject
EndObject
!/**
! Specifies the derivative time in seconds; see p. 3-258.
! Normally DerTime is greater than ScanTime and
! 1.0 <= DerGain < DerTime/ScanTime
!*/
Object DerTime $Intern 22 12-JAN-2006 07:30:19.53
Object DerTime $Intern 22 12-JAN-2006 07:30:19.53
Body SysBody 12-JAN-2006 07:30:19.53
Body SysBody 12-JAN-2006 07:30:19.53
Attr PgmName = "DerTime"
Attr PgmName = "DerTime"
Attr TypeRef = "pwrs:Type-$Float32"
Attr TypeRef = "pwrs:Type-$Float32"
EndBody
EndBody
EndObject
EndObject
!/**
! Factor to specify the first order lag filter used in
! filtering of the derivative contribution.
!
! 1.0 <= DerGain < DerTime/ScanTime, otherwise no filtering
!
! DerGain is normally in the size of 3 to 4.
! The value may be changed in the more info form of the
! Pid object.
!*/
Object DerGain $Intern 23 12-JAN-2006 07:30:19.53
Object DerGain $Intern 23 12-JAN-2006 07:30:19.53
Body SysBody 12-JAN-2006 07:30:19.53
Body SysBody 12-JAN-2006 07:30:19.53
Attr PgmName = "DerGain"
Attr PgmName = "DerGain"
Attr TypeRef = "pwrs:Type-$Float32"
Attr TypeRef = "pwrs:Type-$Float32"
EndBody
EndBody
EndObject
EndObject
!/**
! The control signal OutVal
! is supposed to be in the interval { MinOut, MaxOut }.
! The EndMin /EndMax flags are used to signal if any
! limitation has occurred.
! If OutVal is greater than MaxOut or less than MinOut,
! OutVal is limited to the value at the end of the
! interval.
!
! If MinOut >= MaxOut no limitation will occur.
!*/
Object MinOut $Intern 24 12-JAN-2006 07:30:19.53
Object MinOut $Intern 24 12-JAN-2006 07:30:19.53
Body SysBody 12-JAN-2006 07:30:19.53
Body SysBody 12-JAN-2006 07:30:19.53
Attr PgmName = "MinOut"
Attr PgmName = "MinOut"
Attr TypeRef = "pwrs:Type-$Float32"
Attr TypeRef = "pwrs:Type-$Float32"
EndBody
EndBody
EndObject
EndObject
!/**
! The control signal OutVal
! is supposed to be in the interval { MinOut, MaxOut }.
! The EndMin /EndMax flags are used to signal if any
! limitation has occurred.
! If OutVal is greater than MaxOut or less than MinOut,
! OutVal is limited to the value at the end of the
! interval.
!
! If MinOut >= MaxOut no limitation will occur.
!*/
Object MaxOut $Intern 25 12-JAN-2006 07:30:19.53
Object MaxOut $Intern 25 12-JAN-2006 07:30:19.53
Body SysBody 12-JAN-2006 07:30:19.53
Body SysBody 12-JAN-2006 07:30:19.53
Attr PgmName = "MaxOut"
Attr PgmName = "MaxOut"
Attr TypeRef = "pwrs:Type-$Float32"
Attr TypeRef = "pwrs:Type-$Float32"
EndBody
EndBody
EndObject
EndObject
!/**
! Specifies the hysteresis on MinOut and MaxOut in
! connection with the handling of EndMin/EndMax.
! @image orm_en1-144.gif
!*/
Object EndHys $Intern 26 12-JAN-2006 07:30:19.53
Object EndHys $Intern 26 12-JAN-2006 07:30:19.53
Body SysBody 12-JAN-2006 07:30:19.53
Body SysBody 12-JAN-2006 07:30:19.53
Attr PgmName = "EndHys"
Attr PgmName = "EndHys"
Attr TypeRef = "pwrs:Type-$Float32"
Attr TypeRef = "pwrs:Type-$Float32"
EndBody
EndBody
EndObject
EndObject
!/**
! Specifies the feed forward gain; this factor may be
! negative.
!
! The values may be changed in the more info form of the
! Pid object.
!*/
Object BiasGain $Intern 27 12-JAN-2006 07:30:19.53
Object BiasGain $Intern 27 12-JAN-2006 07:30:19.53
Body SysBody 12-JAN-2006 07:30:19.53
Body SysBody 12-JAN-2006 07:30:19.53
Attr PgmName = "BiasGain"
Attr PgmName = "BiasGain"
Attr TypeRef = "pwrs:Type-$Float32"
Attr TypeRef = "pwrs:Type-$Float32"
EndBody
EndBody
EndObject
EndObject
!/**
! True if bias should be used.
!*/
Object UseDynBias $Intern 28 12-JAN-2006 07:30:19.53
Object UseDynBias $Intern 28 12-JAN-2006 07:30:19.53
Body SysBody 12-JAN-2006 07:30:19.53
Body SysBody 12-JAN-2006 07:30:19.53
Attr PgmName = "UseDynBias"
Attr PgmName = "UseDynBias"
Attr TypeRef = "pwrs:Type-$Boolean"
Attr TypeRef = "pwrs:Type-$Boolean"
EndBody
EndBody
EndObject
EndObject
!/**
! Engineering value representing maximum raw value
! of the process value.
!*/
Object ProcMax $Intern 29 12-JAN-2006 07:30:19.53
Object ProcMax $Intern 29 12-JAN-2006 07:30:19.53
Body SysBody 12-JAN-2006 07:30:19.53
Body SysBody 12-JAN-2006 07:30:19.53
Attr PgmName = "ProcMax"
Attr PgmName = "ProcMax"
Attr TypeRef = "pwrs:Type-$Float32"
Attr TypeRef = "pwrs:Type-$Float32"
EndBody
EndBody
EndObject
EndObject
!/**
! Engineering value representing minimum raw value
! of the process value.
!*/
Object ProcMin $Intern 30 12-JAN-2006 07:30:19.53
Object ProcMin $Intern 30 12-JAN-2006 07:30:19.53
Body SysBody 12-JAN-2006 07:30:19.53
Body SysBody 12-JAN-2006 07:30:19.53
Attr PgmName = "ProcMin"
Attr PgmName = "ProcMin"
Attr TypeRef = "pwrs:Type-$Float32"
Attr TypeRef = "pwrs:Type-$Float32"
EndBody
EndBody
EndObject
EndObject
!/**
! The unit of the process value.
!*/
Object ProcValueUnit $Intern 31 12-JAN-2006 07:30:19.53
Object ProcValueUnit $Intern 31 12-JAN-2006 07:30:19.53
Body SysBody 12-JAN-2006 07:30:19.53
Body SysBody 12-JAN-2006 07:30:19.53
Attr PgmName = "ProcValueUnit"
Attr PgmName = "ProcValueUnit"
Attr TypeRef = "pwrs:Type-$String16"
Attr TypeRef = "pwrs:Type-$String16"
EndBody
EndBody
EndObject
EndObject
!/**
! Filter time of the analog input of the process value.
!*/
Object ProcFiltTime $Intern 32 12-JAN-2006 07:30:19.53
Object ProcFiltTime $Intern 32 12-JAN-2006 07:30:19.53
Body SysBody 12-JAN-2006 07:30:19.53
Body SysBody 12-JAN-2006 07:30:19.53
Attr PgmName = "ProcFiltTime"
Attr PgmName = "ProcFiltTime"
Attr TypeRef = "pwrs:Type-$Float32"
Attr TypeRef = "pwrs:Type-$Float32"
EndBody
EndBody
EndObject
EndObject
!/**
! Raw value representing the maximum value of the analog input
! of the process value. This is default 30000.
!*/
Object ProcRawMax $Intern 33 12-JAN-2006 07:30:19.53
Object ProcRawMax $Intern 33 12-JAN-2006 07:30:19.53
Body SysBody 12-JAN-2006 07:30:19.53
Body SysBody 12-JAN-2006 07:30:19.53
Attr PgmName = "ProcRawMax"
Attr PgmName = "ProcRawMax"
Attr TypeRef = "pwrs:Type-$Int32"
Attr TypeRef = "pwrs:Type-$Int32"
EndBody
EndBody
EndObject
EndObject
!/**
! Raw value representing the minimum value of the analog input
! of the process value. This is default 30000.
!*/
Object ProcRawMin $Intern 34 12-JAN-2006 07:30:19.53
Object ProcRawMin $Intern 34 12-JAN-2006 07:30:19.53
Body SysBody 12-JAN-2006 07:30:19.53
Body SysBody 12-JAN-2006 07:30:19.53
Attr PgmName = "ProcRawMin"
Attr PgmName = "ProcRawMin"
Attr TypeRef = "pwrs:Type-$Int32"
Attr TypeRef = "pwrs:Type-$Int32"
EndBody
EndBody
EndObject
EndObject
!/**
! Engineering value representing maximum raw value
! of the bias analog input.
!*/
Object BiasMax $Intern 35 12-JAN-2006 07:30:19.53
Object BiasMax $Intern 35 12-JAN-2006 07:30:19.53
Body SysBody 12-JAN-2006 07:30:19.53
Body SysBody 12-JAN-2006 07:30:19.53
Attr PgmName = "BiasMax"
Attr PgmName = "BiasMax"
Attr TypeRef = "pwrs:Type-$Float32"
Attr TypeRef = "pwrs:Type-$Float32"
EndBody
EndBody
EndObject
EndObject
!/**
! Engineering value representing minimum raw value
! of the bias analog input.
!*/
Object BiasMin $Intern 36 12-JAN-2006 07:30:19.53
Object BiasMin $Intern 36 12-JAN-2006 07:30:19.53
Body SysBody 12-JAN-2006 07:30:19.53
Body SysBody 12-JAN-2006 07:30:19.53
Attr PgmName = "BiasMin"
Attr PgmName = "BiasMin"
Attr TypeRef = "pwrs:Type-$Float32"
Attr TypeRef = "pwrs:Type-$Float32"
EndBody
EndBody
EndObject
EndObject
!/**
! The unit of the bias value.
!*/
Object BiasValueUnit $Intern 37 12-JAN-2006 07:30:19.53
Object BiasValueUnit $Intern 37 12-JAN-2006 07:30:19.53
Body SysBody 12-JAN-2006 07:30:19.53
Body SysBody 12-JAN-2006 07:30:19.53
Attr PgmName = "BiasValueUnit"
Attr PgmName = "BiasValueUnit"
Attr TypeRef = "pwrs:Type-$String16"
Attr TypeRef = "pwrs:Type-$String16"
EndBody
EndBody
EndObject
EndObject
!/**
! Filter time of the analog input of the bias value.
!*/
Object BiasFiltTime $Intern 38 12-JAN-2006 07:30:19.53
Object BiasFiltTime $Intern 38 12-JAN-2006 07:30:19.53
Body SysBody 12-JAN-2006 07:30:19.53
Body SysBody 12-JAN-2006 07:30:19.53
Attr PgmName = "BiasFiltTime"
Attr PgmName = "BiasFiltTime"
Attr TypeRef = "pwrs:Type-$Float32"
Attr TypeRef = "pwrs:Type-$Float32"
EndBody
EndBody
EndObject
EndObject
!/**
! Raw value representing the maximum value of the analog input
! of the bias value. This is default 30000.
!*/
Object BiasRawMax $Intern 39 12-JAN-2006 07:30:19.53
Object BiasRawMax $Intern 39 12-JAN-2006 07:30:19.53
Body SysBody 12-JAN-2006 07:30:19.53
Body SysBody 12-JAN-2006 07:30:19.53
Attr PgmName = "BiasRawMax"
Attr PgmName = "BiasRawMax"
Attr TypeRef = "pwrs:Type-$Int32"
Attr TypeRef = "pwrs:Type-$Int32"
EndBody
EndBody
EndObject
EndObject
!/**
! Raw value representing the minimum value of the analog input
! of the bias value. This is default 0.
!*/
Object BiasRawMin $Intern 40 12-JAN-2006 07:30:19.53
Object BiasRawMin $Intern 40 12-JAN-2006 07:30:19.53
Body SysBody 12-JAN-2006 07:30:19.53
Body SysBody 12-JAN-2006 07:30:19.53
Attr PgmName = "BiasRawMin"
Attr PgmName = "BiasRawMin"
Attr TypeRef = "pwrs:Type-$Int32"
Attr TypeRef = "pwrs:Type-$Int32"
EndBody
EndBody
EndObject
EndObject
!/**
! Represents the stall action to be taken when there is no cyclic
! communication with the card. if TRUE the analog output of the
! control value will be held. If FALSE the PID-algorithm will
! continue calculating the control value.
!*/
Object UseAo $Intern 41 12-JAN-2006 07:30:19.53
Object UseAo $Intern 41 12-JAN-2006 07:30:19.53
Body SysBody 12-JAN-2006 07:30:19.53
Body SysBody 12-JAN-2006 07:30:19.53
Attr PgmName = "UseAo"
Attr PgmName = "UseAo"
Attr TypeRef = "pwrs:Type-$Boolean"
Attr TypeRef = "pwrs:Type-$Boolean"
EndBody
EndBody
EndObject
EndObject
!/**
! Engineering value representing maximum raw value
! of the control signal analog output.
!*/
Object AoMax $Intern 42 12-JAN-2006 07:30:19.53
Object AoMax $Intern 42 12-JAN-2006 07:30:19.53
Body SysBody 12-JAN-2006 07:30:19.53
Body SysBody 12-JAN-2006 07:30:19.53
Attr PgmName = "AoMax"
Attr PgmName = "AoMax"
Attr TypeRef = "pwrs:Type-$Float32"
Attr TypeRef = "pwrs:Type-$Float32"
EndBody
EndBody
EndObject
EndObject
!/**
! Engineering value representing minimum raw value
! of the control signal analog output.
!*/
Object AoMin $Intern 43 12-JAN-2006 07:30:19.53
Object AoMin $Intern 43 12-JAN-2006 07:30:19.53
Body SysBody 12-JAN-2006 07:30:19.53
Body SysBody 12-JAN-2006 07:30:19.53
Attr PgmName = "AoMin"
Attr PgmName = "AoMin"
Attr TypeRef = "pwrs:Type-$Float32"
Attr TypeRef = "pwrs:Type-$Float32"
EndBody
EndBody
EndObject
EndObject
!/**
! The unit of the control value.
!*/
Object AoValueUnit $Intern 44 12-JAN-2006 07:30:19.53
Object AoValueUnit $Intern 44 12-JAN-2006 07:30:19.53
Body SysBody 12-JAN-2006 07:30:19.53
Body SysBody 12-JAN-2006 07:30:19.53
Attr PgmName = "AoValueUnit"
Attr PgmName = "AoValueUnit"
Attr TypeRef = "pwrs:Type-$String16"
Attr TypeRef = "pwrs:Type-$String16"
EndBody
EndBody
EndObject
EndObject
!/**
! Raw value representing the maximum value of the analog output
! of the control value. This is default 30000.
!*/
Object AoRawMax $Intern 45 12-JAN-2006 07:30:19.53
Object AoRawMax $Intern 45 12-JAN-2006 07:30:19.53
Body SysBody 12-JAN-2006 07:30:19.53
Body SysBody 12-JAN-2006 07:30:19.53
Attr PgmName = "AoRawMax"
Attr PgmName = "AoRawMax"
Attr TypeRef = "pwrs:Type-$Int32"
Attr TypeRef = "pwrs:Type-$Int32"
EndBody
EndBody
EndObject
EndObject
!/**
! Raw value representing the minimum value of the analog output
! of the control value. This is default 0.
!*/
Object AoRawMin $Intern 46 12-JAN-2006 07:30:19.53
Object AoRawMin $Intern 46 12-JAN-2006 07:30:19.53
Body SysBody 12-JAN-2006 07:30:19.53
Body SysBody 12-JAN-2006 07:30:19.53
Attr PgmName = "AoRawMin"
Attr PgmName = "AoRawMin"
Attr TypeRef = "pwrs:Type-$Int32"
Attr TypeRef = "pwrs:Type-$Int32"
EndBody
EndBody
EndObject
EndObject
!/**
! Positional 3-step controller with position feedback and
! dead zone. Positional is aimed at the input signal and
! the digit 3 on the fact that the output signals specify
! one of three distinct orders e.g. increase / decrease.
!
! If set to TRUE, the positional 3-step controller will be used.
!*/
Object UsePos3p $Intern 47 12-JAN-2006 07:30:19.53
Object UsePos3p $Intern 47 12-JAN-2006 07:30:19.53
Body SysBody 12-JAN-2006 07:30:19.53
Body SysBody 12-JAN-2006 07:30:19.53
Attr PgmName = "UsePos3p"
Attr PgmName = "UsePos3p"
Attr TypeRef = "pwrs:Type-$Boolean"
Attr TypeRef = "pwrs:Type-$Boolean"
EndBody
EndBody
EndObject
EndObject
!/**
! Engineering value representing maximum raw value
! of the position signal analog input.
!*/
Object PosMax $Intern 48 12-JAN-2006 07:30:19.53
Object PosMax $Intern 48 12-JAN-2006 07:30:19.53
Body SysBody 12-JAN-2006 07:30:19.53
Body SysBody 12-JAN-2006 07:30:19.53
Attr PgmName = "PosMax"
Attr PgmName = "PosMax"
Attr TypeRef = "pwrs:Type-$Float32"
Attr TypeRef = "pwrs:Type-$Float32"
EndBody
EndBody
EndObject
EndObject
!/**
! Engineering value representing minimum raw value
! of the position signal analog input.
!*/
Object PosMin $Intern 49 12-JAN-2006 07:30:19.53
Object PosMin $Intern 49 12-JAN-2006 07:30:19.53
Body SysBody 12-JAN-2006 07:30:19.53
Body SysBody 12-JAN-2006 07:30:19.53
Attr PgmName = "PosMin"
Attr PgmName = "PosMin"
Attr TypeRef = "pwrs:Type-$Float32"
Attr TypeRef = "pwrs:Type-$Float32"
EndBody
EndBody
EndObject
EndObject
!/**
! The unit of the position signal.
!*/
Object PosValueUnit $Intern 50 12-JAN-2006 07:30:19.53
Object PosValueUnit $Intern 50 12-JAN-2006 07:30:19.53
Body SysBody 12-JAN-2006 07:30:19.53
Body SysBody 12-JAN-2006 07:30:19.53
Attr PgmName = "PosValueUnit"
Attr PgmName = "PosValueUnit"
Attr TypeRef = "pwrs:Type-$String16"
Attr TypeRef = "pwrs:Type-$String16"
EndBody
EndBody
EndObject
EndObject
!/**
! Filter time of the analog input of the position value.
!*/
Object PosFiltTime $Intern 51 12-JAN-2006 07:30:19.53
Object PosFiltTime $Intern 51 12-JAN-2006 07:30:19.53
Body SysBody 12-JAN-2006 07:30:19.53
Body SysBody 12-JAN-2006 07:30:19.53
Attr PgmName = "PosFiltTime"
Attr PgmName = "PosFiltTime"
Attr TypeRef = "pwrs:Type-$Float32"
Attr TypeRef = "pwrs:Type-$Float32"
EndBody
EndBody
EndObject
EndObject
!/**
! Raw value representing the maximum value of the analog input
! of the position signal. This is default 30000.
!*/
Object PosRawMax $Intern 52 12-JAN-2006 07:30:19.53
Object PosRawMax $Intern 52 12-JAN-2006 07:30:19.53
Body SysBody 12-JAN-2006 07:30:19.53
Body SysBody 12-JAN-2006 07:30:19.53
Attr PgmName = "PosRawMax"
Attr PgmName = "PosRawMax"
Attr TypeRef = "pwrs:Type-$Int32"
Attr TypeRef = "pwrs:Type-$Int32"
EndBody
EndBody
EndObject
EndObject
!/**
! Raw value representing the minimum value of the analog input
! of the position signal. This is default 0.
!*/
Object PosRawMin $Intern 53 12-JAN-2006 07:30:19.53
Object PosRawMin $Intern 53 12-JAN-2006 07:30:19.53
Body SysBody 12-JAN-2006 07:30:19.53
Body SysBody 12-JAN-2006 07:30:19.53
Attr PgmName = "PosRawMin"
Attr PgmName = "PosRawMin"
Attr TypeRef = "pwrs:Type-$Int32"
Attr TypeRef = "pwrs:Type-$Int32"
EndBody
EndBody
EndObject
EndObject
!/**
! Specifies the dead zone value which the control error
! has to exceed before an open- or close-signal will be
! set or started.
!
! The demand on the dead zone is 0 ErrSto ErrSta
! Open or Close is set when the absolute value of (OutVal(t)
! - Pos(t) ) is greater than ErrSta.
!
! Only used when UsePos3p is TRUE.
!*/
Object ErrSta $Intern 54 12-JAN-2006 07:30:19.53
Object ErrSta $Intern 54 12-JAN-2006 07:30:19.53
Body SysBody 12-JAN-2006 07:30:19.53
Body SysBody 12-JAN-2006 07:30:19.53
Attr PgmName = "ErrSta"
Attr PgmName = "ErrSta"
Attr TypeRef = "pwrs:Type-$Float32"
Attr TypeRef = "pwrs:Type-$Float32"
EndBody
EndBody
EndObject
EndObject
!/**
! Specifies the dead zone value which the control error
! have to be below before an open- or close-signal will
! be reset or stopped.
! Open or Close is interrupted when the absolute value of
! (OutVal(t) - Post(t)) is less than ErrSto.
! The demand on the dead zone is 0 <= ErrSto <= ErrSta
!
! Only used when UsePos3p is TRUE.
!*/
Object ErrSto $Intern 55 12-JAN-2006 07:30:19.53
Object ErrSto $Intern 55 12-JAN-2006 07:30:19.53
Body SysBody 12-JAN-2006 07:30:19.53
Body SysBody 12-JAN-2006 07:30:19.53
Attr PgmName = "ErrSto"
Attr PgmName = "ErrSto"
Attr TypeRef = "pwrs:Type-$Float32"
Attr TypeRef = "pwrs:Type-$Float32"
EndBody
EndBody
EndObject
EndObject
!/**
! Gain, in seconds, per control signal unit. The control
! signal is often in the range 0 - 100 %. Suppose it is
! possible to measure the running time, e.g. the time to
! drive a valve from completely open to completely
! closed. Then select Gain as running time divided by the
! range; ( here 100 - 0).
!
! Gain is only used in conjunction with timer control of
! the outputs.
!*/
Object Pos3pGain $Intern 56 12-JAN-2006 07:30:19.53
Object Pos3pGain $Intern 56 12-JAN-2006 07:30:19.53
Body SysBody 12-JAN-2006 07:30:19.53
Body SysBody 12-JAN-2006 07:30:19.53
Attr PgmName = "Pos3pGain"
Attr PgmName = "Pos3pGain"
Attr TypeRef = "pwrs:Type-$Float32"
Attr TypeRef = "pwrs:Type-$Float32"
EndBody
EndBody
EndObject
EndObject
!/**
! Incremental 3-point output with dead zone. Incremental
! comes from the type of input and the digit 3 of the
! output, which can have three distinct values, e.g. open
! / close / 0 but also with the meaning of up / down / 0
! or right / left / 0 or increase / decrease / 0 etc. The
! outputs are time-proportional to the input.
!
! If set to TRUE, the positional 3-step controller will be used.
!*/
Object UseInc3p $Intern 57 12-JAN-2006 07:30:19.53
Object UseInc3p $Intern 57 12-JAN-2006 07:30:19.53
Body SysBody 12-JAN-2006 07:30:19.53
Body SysBody 12-JAN-2006 07:30:19.53
Attr PgmName = "UseInc3p"
Attr PgmName = "UseInc3p"
Attr TypeRef = "pwrs:Type-$Boolean"
Attr TypeRef = "pwrs:Type-$Boolean"
EndBody
EndBody
EndObject
EndObject
!/**
! Gain, in seconds, per control signal unit. Often the
! control signal is in the range 0 - 100 %. Suppose it is
! possible to measure the running time, for example, the
! time to drive a valve from completely open to
! running time / divided by the range; ( here 100 - 0).
!*/
Object Inc3pGain $Intern 58 12-JAN-2006 07:30:19.53
Object Inc3pGain $Intern 58 12-JAN-2006 07:30:19.53
Body SysBody 12-JAN-2006 07:30:19.53
Body SysBody 12-JAN-2006 07:30:19.53
Attr PgmName = "Inc3pGain"
Attr PgmName = "Inc3pGain"
Attr TypeRef = "pwrs:Type-$Float32"
Attr TypeRef = "pwrs:Type-$Float32"
EndBody
EndBody
EndObject
EndObject
!/**
! The dead zone in seconds; see the description above. If
! the absolute value of Acc is less than MinTim no output
! at all is set.
!
! Only used when UseInc3p is TRUE.
!*/
Object MinTim $Intern 59 12-JAN-2006 07:30:19.53
Object MinTim $Intern 59 12-JAN-2006 07:30:19.53
Body SysBody 12-JAN-2006 07:30:19.53
Body SysBody 12-JAN-2006 07:30:19.53
Attr PgmName = "MinTim"
Attr PgmName = "MinTim"
Attr TypeRef = "pwrs:Type-$Float32"
Attr TypeRef = "pwrs:Type-$Float32"
EndBody
EndBody
EndObject
EndObject
!/**
! When the MaxTim, in seconds, has elapsed without any
! output signal Acc is set equal to 0.
!
! Only used when UseInc3p is TRUE.
!*/
Object MaxTim $Intern 60 12-JAN-2006 07:30:19.53
Object MaxTim $Intern 60 12-JAN-2006 07:30:19.53
Body SysBody 12-JAN-2006 07:30:19.53
Body SysBody 12-JAN-2006 07:30:19.53
Attr PgmName = "MaxTim"
Attr PgmName = "MaxTim"
Attr TypeRef = "pwrs:Type-$Float32"
Attr TypeRef = "pwrs:Type-$Float32"
EndBody
EndBody
EndObject
EndObject
!/**
! Unknown usage. Should be set to 1.0.
!*/
Object MaxInteg $Intern 61 12-JAN-2006 07:30:19.53
Object MaxInteg $Intern 61 12-JAN-2006 07:30:19.53
Body SysBody 12-JAN-2006 07:30:19.53
Body SysBody 12-JAN-2006 07:30:19.53
Attr PgmName = "MaxInteg"
Attr PgmName = "MaxInteg"
Attr TypeRef = "pwrs:Type-$Float32"
Attr TypeRef = "pwrs:Type-$Float32"
EndBody
EndBody
EndObject
EndObject
!/**
! Position, from card.
!*/
Object PosVal $Output 6 27-MAR-2009 16:11:46.22
Body SysBody 12-JAN-2006 07:30:19.53
Attr PgmName = "PosVal"
Attr Flags = 1040
Attr TypeRef = "pwrs:Type-$Float32"
Attr GraphName = "POS"
EndBody
EndObject
!/**
! Process value, from card.
!*/
Object ProcVal $Output 7 27-MAR-2009 16:11:48.43
Body SysBody 12-JAN-2006 07:30:19.53
Attr PgmName = "ProcVal"
Attr Flags = 1040
Attr TypeRef = "pwrs:Type-$Float32"
Attr GraphName = "PV"
EndBody
EndObject
!/**
! Bias Value, from card.
!*/
Object Bias $Output 8 27-MAR-2009 16:11:49.77
Body SysBody 12-JAN-2006 07:30:19.53
Attr PgmName = "Bias"
Attr Flags = 1040
Attr TypeRef = "pwrs:Type-$Float32"
Attr GraphName = "BIS"
EndBody
EndObject
EndObject
EndObject
Object DevBody $ObjBodyDef 2 12-JAN-2006 07:30:19.53
Object DevBody $ObjBodyDef 2 12-JAN-2006 07:30:19.53
Body SysBody 12-JAN-2006 07:30:19.53
Body SysBody 12-JAN-2006 07:30:19.53
...
@@ -6632,7 +6759,7 @@ Volume SsabOx $ClassVolume 0.0.250.5
...
@@ -6632,7 +6759,7 @@ Volume SsabOx $ClassVolume 0.0.250.5
EndObject
EndObject
EndObject
EndObject
Object GraphPlcNode $GraphPlcNode 148 12-JAN-2006 07:30:19.53
Object GraphPlcNode $GraphPlcNode 148 12-JAN-2006 07:30:19.53
Body SysBody
12-JAN-2006 07:30:19.53
Body SysBody
27-MAR-2009 16:05:51.62
Attr object_type = 11
Attr object_type = 11
Attr parameters[0] = 5
Attr parameters[0] = 5
Attr parameters[1] = 53
Attr parameters[1] = 53
...
@@ -6654,7 +6781,29 @@ Volume SsabOx $ClassVolume 0.0.250.5
...
@@ -6654,7 +6781,29 @@ Volume SsabOx $ClassVolume 0.0.250.5
EndBody
EndBody
EndObject
EndObject
Object Template PidX 2154528768 01-JAN-1970 01:00:00.00
Object Template PidX 2154528768 01-JAN-1970 01:00:00.00
Body RtBody 01-JAN-1970 01:00:00.00
Body RtBody 31-MAR-2009 14:44:34.00
Attr PidAlg = 3
Attr Inverse = 1
Attr PidGain = 1.000000e+00
Attr IntTime = 1.200000e+02
Attr DerGain = 3.000000e+00
Attr MaxOut = 1.000000e+02
Attr BiasGain = 1.000000e+00
Attr ProcMax = 1.000000e+02
Attr ProcRawMax = 30000
Attr BiasMax = 1.000000e+02
Attr BiasRawMax = 30000
Attr AoMax = 1.000000e+02
Attr AoRawMax = 30000
Attr PosMax = 1.000000e+02
Attr PosRawMax = 30000
Attr ErrSta = 1.000000e+00
Attr ErrSto = 1.000000e+00
Attr Pos3pGain = 1.000000e+00
Attr Inc3pGain = 1.000000e+00
Attr MinTim = 1.000000e+00
Attr MaxTim = 1.000000e+00
Attr MaxInteg = 1.000000e+00
EndBody
EndBody
Body DevBody 01-JAN-1970 01:00:00.00
Body DevBody 01-JAN-1970 01:00:00.00
EndBody
EndBody
...
...
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