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
f3924217
Commit
f3924217
authored
Jun 30, 2010
by
Claes Sjofors
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
PSS9000 card MIO3102 added
parent
ae30438d
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
873 additions
and
2 deletions
+873
-2
ssabox/lib/rt/src/os_linux/rt_io_m_ssab_mioup.c
ssabox/lib/rt/src/os_linux/rt_io_m_ssab_mioup.c
+567
-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
+305
-2
No files found.
ssabox/lib/rt/src/os_linux/rt_io_m_ssab_mioup.c
0 → 100644
View file @
f3924217
/*
* Proview $Id$
* 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_mioup.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_time.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 IO_MAXCHAN 32
#define ADDR_DO_OFFSET 1
#define ADDR_AI_OFFSET 3
#define ADDR_AO_OFFSET 19
typedef
struct
{
unsigned
int
Address
;
int
Qbus_fp
;
int
ScanCount
[
IO_MAXCHAN
];
unsigned
int
bfb_item
;
pwr_tFloat32
OldValue
[
IO_MAXCHAN
];
pwr_tBoolean
OldTestOn
[
IO_MAXCHAN
];
int
WriteFirst
;
pwr_tTime
ErrTime
;
}
io_sLocal
;
static
pwr_tStatus
AoRangeToCoef
(
io_sChannel
*
chanp
)
{
pwr_sClass_ChanAo
*
cop
;
char
buf
[
120
];
pwr_tStatus
sts
;
pwr_tFloat32
PolyCoef1
;
pwr_tFloat32
PolyCoef0
;
cop
=
chanp
->
cop
;
if
(
cop
)
{
cop
->
CalculateNewCoef
=
0
;
/* Coef for ActualValue to RawValue conversion */
if
(
cop
->
ActValRangeHigh
!=
cop
->
ActValRangeLow
)
{
cop
->
SigValPolyCoef1
=
(
cop
->
SensorSigValRangeHigh
-
cop
->
SensorSigValRangeLow
)
/
(
cop
->
ActValRangeHigh
-
cop
->
ActValRangeLow
);
cop
->
SigValPolyCoef0
=
cop
->
SensorSigValRangeHigh
-
cop
->
ActValRangeHigh
*
cop
->
SigValPolyCoef1
;
}
else
{
sts
=
gdh_AttrrefToName
(
&
chanp
->
ChanAref
,
buf
,
sizeof
(
buf
),
cdh_mName_volumeStrict
);
if
(
EVEN
(
sts
))
return
sts
;
errh_Error
(
"Invalid ActValueRange in Ao channel %s"
,
buf
);
return
IO__CHANRANGE
;
}
/* Coef for ActualValue to SignalValue conversion */
if
(
cop
->
ChannelSigValRangeHigh
!=
0
)
{
PolyCoef0
=
0
;
PolyCoef1
=
cop
->
RawValRangeHigh
/
cop
->
ChannelSigValRangeHigh
;
cop
->
OutPolyCoef1
=
cop
->
SigValPolyCoef1
*
PolyCoef1
;
cop
->
OutPolyCoef0
=
PolyCoef0
+
PolyCoef1
*
cop
->
SigValPolyCoef0
;
}
else
{
sts
=
gdh_AttrrefToName
(
&
chanp
->
ChanAref
,
buf
,
sizeof
(
buf
),
cdh_mName_volumeStrict
);
if
(
EVEN
(
sts
))
return
sts
;
errh_Error
(
"Invalid SigValueRange in Ao channel %s"
,
buf
);
return
IO__CHANRANGE
;
}
}
return
IO__SUCCESS
;
}
static
pwr_tStatus
AiRangeToCoef
(
io_sChannel
*
chanp
)
{
pwr_sClass_ChanAi
*
cop
;
char
buf
[
120
];
pwr_tStatus
sts
;
pwr_tFloat32
PolyCoef1
;
pwr_tFloat32
PolyCoef0
;
cop
=
chanp
->
cop
;
if
(
cop
)
{
cop
->
CalculateNewCoef
=
0
;
/* Coef for RawValue to SignalValue conversion */
cop
->
SigValPolyCoef0
=
0
;
cop
->
SigValPolyCoef1
=
cop
->
ChannelSigValRangeHigh
/
30000
;
/* Coef for SignalValue to ActualValue conversion */
if
(
chanp
->
ChanClass
!=
pwr_cClass_ChanAit
&&
cop
->
SensorPolyType
==
1
)
{
if
(
cop
->
SensorSigValRangeHigh
!=
cop
->
SensorSigValRangeLow
)
{
PolyCoef1
=
(
cop
->
ActValRangeHigh
-
cop
->
ActValRangeLow
)
/
(
cop
->
SensorSigValRangeHigh
-
cop
->
SensorSigValRangeLow
);
PolyCoef0
=
cop
->
ActValRangeHigh
-
cop
->
SensorSigValRangeHigh
*
PolyCoef1
;
cop
->
SensorPolyCoef1
=
cop
->
SigValPolyCoef1
*
PolyCoef1
;
cop
->
SensorPolyCoef0
=
PolyCoef0
+
PolyCoef1
*
cop
->
SigValPolyCoef0
;
}
else
{
sts
=
gdh_AttrrefToName
(
&
chanp
->
ChanAref
,
buf
,
sizeof
(
buf
),
cdh_mName_volumeStrict
);
if
(
EVEN
(
sts
))
return
sts
;
errh_Error
(
"Invalid SigValueRange in Ai channel %s"
,
buf
);
return
IO__CHANRANGE
;
}
}
}
return
IO__SUCCESS
;
}
static
pwr_tStatus
IoCardInit
(
io_tCtx
ctx
,
io_sAgent
*
ap
,
io_sRack
*
rp
,
io_sCard
*
cp
)
{
pwr_sClass_Ssab_BaseMCard
*
op
;
io_sLocal
*
local
;
int
i
;
io_sChannel
*
chanp
;
op
=
(
pwr_sClass_Ssab_BaseMCard
*
)
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 Multi IO card '%s'"
,
cp
->
Name
);
/* Write the first 50 loops */
local
->
WriteFirst
=
50
;
/* Calculate polycoeff for Ai */
chanp
=
cp
->
chanlist
;
for
(
i
=
0
;
i
<
op
->
MaxNoOfAiChannels
;
i
++
)
{
if
(
chanp
->
sop
)
AiRangeToCoef
(
chanp
);
chanp
++
;
}
/* Caluclate polycoeff for Ao */
chanp
=
cp
->
chanlist
+
op
->
MaxNoOfAiChannels
;
for
(
i
=
0
;
i
<
op
->
MaxNoOfAoChannels
;
i
++
)
{
if
(
chanp
->
sop
)
AoRangeToCoef
(
chanp
);
chanp
++
;
}
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 ai 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
;
io_sRackLocal
*
r_local
=
(
io_sRackLocal
*
)(
rp
->
Local
);
pwr_tInt16
data
=
0
;
pwr_sClass_Ssab_BaseMCard
*
op
;
pwr_sClass_Ssab_RemoteRack
*
rrp
;
int
i
;
pwr_tFloat32
actvalue
;
io_sChannel
*
chanp
;
pwr_sClass_ChanAi
*
cop
;
pwr_sClass_Ai
*
sop
;
int
sts
;
qbus_io_read
rb
;
int
bfb_error
=
0
;
pwr_tTime
now
;
local
=
(
io_sLocal
*
)
cp
->
Local
;
op
=
(
pwr_sClass_Ssab_BaseMCard
*
)
cp
->
op
;
chanp
=
&
cp
->
chanlist
[
0
];
for
(
i
=
0
;
i
<
op
->
MaxNoOfAiChannels
;
i
++
)
{
if
(
!
chanp
->
cop
||
!
chanp
->
sop
)
{
chanp
++
;
continue
;
}
cop
=
(
pwr_sClass_ChanAi
*
)
chanp
->
cop
;
sop
=
(
pwr_sClass_Ai
*
)
chanp
->
sop
;
if
(
cop
->
CalculateNewCoef
)
AiRangeToCoef
(
chanp
);
if
(
cop
->
ConversionOn
)
{
if
(
local
->
ScanCount
[
i
]
<=
1
)
{
if
(
r_local
->
Qbus_fp
!=
0
&&
r_local
->
s
==
0
)
{
rb
.
Address
=
local
->
Address
+
2
*
i
+
ADDR_AI_OFFSET
;
sts
=
read
(
local
->
Qbus_fp
,
&
rb
,
sizeof
(
rb
));
data
=
(
unsigned
short
)
rb
.
Data
;
}
else
{
/* Ethernet I/O, Get data from current address */
data
=
bfbeth_get_data
(
r_local
,
(
pwr_tUInt16
)
(
local
->
Address
+
2
*
i
+
ADDR_AI_OFFSET
),
&
sts
);
/* Yes, we want to read this address the next time aswell */
bfbeth_set_read_req
(
r_local
,
(
pwr_tUInt16
)
(
local
->
Address
+
2
*
i
+
ADDR_AI_OFFSET
));
if
(
sts
==
-
1
)
{
/* Error handling for ethernet Qbus-I/O */
rrp
=
(
pwr_sClass_Ssab_RemoteRack
*
)
rp
->
op
;
if
(
bfb_error
==
0
)
{
op
->
ErrorCount
++
;
bfb_error
=
1
;
if
(
op
->
ErrorCount
==
op
->
ErrorSoftLimit
)
errh_Error
(
"IO Error soft limit reached on card '%s'"
,
cp
->
Name
);
if
(
op
->
ErrorCount
==
op
->
ErrorHardLimit
)
errh_Error
(
"IO Error hard limit reached on card '%s', stall action %d"
,
cp
->
Name
,
rrp
->
StallAction
);
if
(
op
->
ErrorCount
>=
op
->
ErrorHardLimit
&&
rrp
->
StallAction
==
pwr_eSsabStallAction_ResetInputs
)
{
data
=
0
;
sts
=
1
;
}
if
(
op
->
ErrorCount
>=
op
->
ErrorHardLimit
&&
rrp
->
StallAction
==
pwr_eSsabStallAction_EmergencyBreak
)
{
ctx
->
Node
->
EmergBreakTrue
=
1
;
return
IO__ERRDEVICE
;
}
}
if
(
sts
==
-
1
)
{
chanp
++
;
continue
;
}
}
else
{
op
->
ErrorCount
=
0
;
}
}
if
(
sts
==
-
1
)
/* Error handling for local Qbus-I/O */
{
/* Increase error count and check error limits */
time_GetTime
(
&
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
);
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
;
}
chanp
++
;
continue
;
}
/* Convert rawvalue to sigvalue and actualvalue */
sop
->
RawValue
=
data
;
sop
->
SigValue
=
data
*
cop
->
SigValPolyCoef1
+
cop
->
SigValPolyCoef0
;
switch
(
chanp
->
ChanClass
)
{
case
pwr_cClass_ChanAi
:
io_ConvertAi
(
cop
,
data
,
&
actvalue
);
break
;
case
pwr_cClass_ChanAit
:
io_ConvertAit
(
(
pwr_sClass_ChanAit
*
)
cop
,
data
,
&
actvalue
);
break
;
}
/* Filter */
if
(
sop
->
FilterType
==
1
&&
sop
->
FilterAttribute
[
0
]
>
0
&&
sop
->
FilterAttribute
[
0
]
>
ctx
->
ScanTime
)
{
actvalue
=
*
(
pwr_tFloat32
*
)
chanp
->
vbp
+
ctx
->
ScanTime
/
sop
->
FilterAttribute
[
0
]
*
(
actvalue
-
*
(
pwr_tFloat32
*
)
chanp
->
vbp
);
}
*
(
pwr_tFloat32
*
)
chanp
->
vbp
=
actvalue
;
local
->
ScanCount
[
i
]
=
cop
->
ScanInterval
+
1
;
}
local
->
ScanCount
[
i
]
--
;
}
chanp
++
;
}
return
1
;
}
static
pwr_tStatus
IoCardWrite
(
io_tCtx
ctx
,
io_sAgent
*
ap
,
io_sRack
*
rp
,
io_sCard
*
cp
)
{
io_sLocal
*
local
;
io_sRackLocal
*
r_local
=
(
io_sRackLocal
*
)(
rp
->
Local
);
pwr_sClass_Ssab_BaseMCard
*
op
;
int
i
;
io_sChannel
*
chanp
;
pwr_sClass_ChanAo
*
cop
;
pwr_sClass_Ao
*
sop
;
pwr_tFloat32
value
;
int
fixout
;
pwr_tUInt16
data
=
0
;
pwr_tFloat32
rawvalue
;
qbus_io_write
wb
;
int
sts
;
pwr_tTime
now
;
pwr_tUInt16
invmask
;
pwr_tUInt16
testmask
;
pwr_tUInt16
testvalue
;
local
=
(
io_sLocal
*
)
cp
->
Local
;
op
=
(
pwr_sClass_Ssab_BaseMCard
*
)
cp
->
op
;
fixout
=
ctx
->
Node
->
EmergBreakTrue
&&
ctx
->
Node
->
EmergBreakSelect
==
FIXOUT
;
chanp
=
&
cp
->
chanlist
[
op
->
MaxNoOfAiChannels
];
for
(
i
=
0
;
i
<
op
->
MaxNoOfAoChannels
;
i
++
)
{
if
(
!
chanp
->
cop
||
!
chanp
->
sop
)
{
chanp
++
;
continue
;
}
cop
=
(
pwr_sClass_ChanAo
*
)
chanp
->
cop
;
sop
=
(
pwr_sClass_Ao
*
)
chanp
->
sop
;
if
(
*
(
pwr_tFloat32
*
)
chanp
->
vbp
!=
local
->
OldValue
[
i
]
||
local
->
WriteFirst
>
0
||
cop
->
CalculateNewCoef
||
fixout
||
cop
->
TestOn
||
local
->
OldTestOn
[
i
]
!=
cop
->
TestOn
)
{
if
(
fixout
)
value
=
cop
->
FixedOutValue
;
else
if
(
cop
->
TestOn
)
value
=
cop
->
TestValue
;
else
value
=
*
(
pwr_tFloat32
*
)
chanp
->
vbp
;
if
(
cop
->
CalculateNewCoef
)
AoRangeToCoef
(
chanp
);
/* Convert to rawvalue */
if
(
value
>
cop
->
ActValRangeHigh
)
value
=
cop
->
ActValRangeHigh
;
else
if
(
value
<
cop
->
ActValRangeLow
)
value
=
cop
->
ActValRangeLow
;
rawvalue
=
cop
->
OutPolyCoef1
*
value
+
cop
->
OutPolyCoef0
;
if
(
rawvalue
>
0
)
sop
->
RawValue
=
rawvalue
+
0
.
5
;
else
sop
->
RawValue
=
rawvalue
-
0
.
5
;
data
=
sop
->
RawValue
;
if
(
r_local
->
Qbus_fp
!=
0
&&
r_local
->
s
==
0
)
{
wb
.
Data
=
data
;
wb
.
Address
=
local
->
Address
+
2
*
i
+
ADDR_AO_OFFSET
;
sts
=
write
(
local
->
Qbus_fp
,
&
wb
,
sizeof
(
wb
));
}
else
{
/* Ethernet I/O, Request a write to current address */
bfbeth_set_write_req
(
r_local
,
(
pwr_tUInt16
)
(
local
->
Address
+
2
*
i
+
ADDR_AO_OFFSET
),
data
);
sts
=
1
;
}
if
(
sts
==
-
1
)
{
/* Exceptionhandler was called */
/* Increase error count and check error limits */
time_GetTime
(
&
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
);
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
;
}
chanp
++
;
continue
;
}
else
local
->
OldValue
[
i
]
=
value
;
}
local
->
OldTestOn
[
i
]
=
cop
->
TestOn
;
chanp
++
;
}
if
(
local
->
WriteFirst
)
local
->
WriteFirst
--
;
if
(
ctx
->
Node
->
EmergBreakTrue
&&
ctx
->
Node
->
EmergBreakSelect
==
FIXOUT
)
data
=
op
->
DoFixedOutValue
;
else
io_DoPackWord
(
cp
,
&
data
,
i
);
testmask
=
op
->
DoTestMask
;
invmask
=
op
->
DoInvMask
;
/* Invert */
data
=
data
^
invmask
;
/* Testvalues */
if
(
testmask
)
{
testvalue
=
op
->
DoTestValue
;
data
=
(
data
&
~
testmask
)
|
(
testmask
&
testvalue
);
}
if
(
r_local
->
Qbus_fp
!=
0
&&
r_local
->
s
==
0
)
{
/* Write to local Q-bus */
wb
.
Data
=
data
;
wb
.
Address
=
local
->
Address
+
ADDR_DO_OFFSET
;
sts
=
write
(
local
->
Qbus_fp
,
&
wb
,
sizeof
(
wb
));
}
else
{
/* Ethernet I/O, Request a write to current address */
bfbeth_set_write_req
(
r_local
,
(
pwr_tUInt16
)
local
->
Address
+
ADDR_DO_OFFSET
,
data
);
sts
=
1
;
}
if
(
sts
==
-
1
)
{
/* Increase error count and check error limits */
time_GetTime
(
&
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
);
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_MIOuP
)
=
{
pwr_BindIoMethod
(
IoCardInit
),
pwr_BindIoMethod
(
IoCardClose
),
pwr_BindIoMethod
(
IoCardRead
),
pwr_BindIoMethod
(
IoCardWrite
),
pwr_NullMethod
};
ssabox/lib/rt/src/rt_io_ssabox.meth
View file @
f3924217
...
...
@@ -6,6 +6,7 @@ Ssab_Do
Ssab_Co
Ssab_RemoteRack
Ssab_PIDuP
Ssab_MIOuP
Di_DIX2
Do_HVDO32
Ao_HVAO4
...
...
ssabox/wbl/mcomp/src/ssabox.wb_load
View file @
f3924217
Volume SsabOx $ClassVolume 0.0.250.5
Body SysBody 01-JAN-1970 01:00:00.00
Attr NextOix = "_X1
67
"
Attr NextCix = "_X3
1
"
Attr NextOix = "_X1
75
"
Attr NextCix = "_X3
3
"
Attr NextTix[0] = "_X5"
EndBody
Object Type $TypeHier 138 30-DEC-2005 14:28:03.99
...
...
@@ -872,6 +872,165 @@ Volume SsabOx $ClassVolume 0.0.250.5
EndObject
EndObject
EndObject
Object Ssab_BaseMCard $ClassDef 31 30-JUN-2010 10:14:51.29
Body SysBody 30-JUN-2010 10:14:40.65
Attr Editor = 0
Attr Method = 5
Attr Flags = 16464
EndBody
Object RtBody $ObjBodyDef 1 30-JUN-2010 10:16:54.04
Body SysBody 30-JUN-2010 11:30:53.26
Attr StructName = "Ssab_BaseMCard"
Attr NextAix = "_X23"
EndBody
Object Description $Attribute 1 30-JUN-2010 10:14:40.65
Body SysBody 30-JUN-2010 10:14:40.65
Attr PgmName = "Description"
Attr TypeRef = "pwrs:Type-$String80"
EndBody
EndObject
Object DevName $Attribute 2 30-JUN-2010 10:14:40.65
Body SysBody 30-JUN-2010 10:14:40.65
Attr PgmName = "DevName"
Attr TypeRef = "pwrs:Type-$String40"
EndBody
EndObject
Object ErrorCount $Attribute 3 30-JUN-2010 10:14:40.65
Body SysBody 30-JUN-2010 10:14:40.65
Attr PgmName = "ErrorCount"
Attr Flags = 1040
Attr TypeRef = "pwrs:Type-$UInt32"
EndBody
EndObject
Object ErrorSoftLimit $Attribute 4 30-JUN-2010 10:14:40.65
Body SysBody 30-JUN-2010 10:14:40.65
Attr PgmName = "ErrorSoftLimit"
Attr TypeRef = "pwrs:Type-$UInt32"
EndBody
EndObject
Object ErrorHardLimit $Attribute 5 30-JUN-2010 10:14:40.65
Body SysBody 30-JUN-2010 10:14:40.65
Attr PgmName = "ErrorHardLimit"
Attr TypeRef = "pwrs:Type-$UInt32"
EndBody
EndObject
Object MaxNoOfAiChannels $Attribute 6 30-JUN-2010 10:29:28.54
Body SysBody 30-JUN-2010 10:29:31.57
Attr PgmName = "MaxNoOfAiChannels"
Attr Flags = 1056
Attr TypeRef = "pwrs:Type-$UInt16"
EndBody
EndObject
Object MaxNoOfAoChannels $Attribute 20 30-JUN-2010 10:29:39.19
Body SysBody 30-JUN-2010 10:29:40.54
Attr PgmName = "MaxNoOfAoChannels"
Attr Flags = 1056
Attr TypeRef = "pwrs:Type-$UInt16"
EndBody
EndObject
Object MaxNoOfDiChannels $Attribute 21 30-JUN-2010 10:29:50.06
Body SysBody 30-JUN-2010 10:29:51.16
Attr PgmName = "MaxNoOfDiChannels"
Attr Flags = 1056
Attr TypeRef = "pwrs:Type-$UInt16"
EndBody
EndObject
Object MaxNoOfDoChannels $Attribute 22 30-JUN-2010 10:29:58.07
Body SysBody 30-JUN-2010 10:29:59.38
Attr PgmName = "MaxNoOfDoChannels"
Attr Flags = 1056
Attr TypeRef = "pwrs:Type-$UInt16"
EndBody
EndObject
Object RegAddress $Attribute 7 30-JUN-2010 10:14:40.65
Body SysBody 30-JUN-2010 10:14:40.65
Attr PgmName = "RegAddress"
Attr TypeRef = "pwrs:Type-$UInt32"
EndBody
EndObject
Object VectAddress $Attribute 8 30-JUN-2010 10:14:40.65
Body SysBody 30-JUN-2010 10:14:40.65
Attr PgmName = "VectAddress"
Attr TypeRef = "pwrs:Type-$UInt32"
EndBody
EndObject
Object Process $Attribute 9 30-JUN-2010 10:14:40.65
Body SysBody 30-JUN-2010 10:14:40.65
Attr PgmName = "Process"
Attr TypeRef = "pwrb:Type-IoProcessMask"
EndBody
EndObject
Object ThreadObject $Intern 10 30-JUN-2010 10:14:40.65
Body SysBody 30-JUN-2010 10:14:40.65
Attr PgmName = "ThreadObject"
Attr TypeRef = "pwrs:Type-$Objid"
EndBody
EndObject
Object DataSheet $Attribute 11 30-JUN-2010 10:14:40.65
Body SysBody 30-JUN-2010 10:14:40.65
Attr PgmName = "DataSheet"
Attr TypeRef = "pwrs:Type-$URL"
EndBody
EndObject
Object DiConvMask $Attribute 12 30-JUN-2010 10:16:42.55
Body SysBody 30-JUN-2010 10:16:44.56
Attr PgmName = "DiConvMask"
Attr TypeRef = "pwrb:Type-CardMask1_1"
EndBody
EndObject
Object DiInvMask $Attribute 14 30-JUN-2010 10:17:01.95
Body SysBody 30-JUN-2010 10:17:03.99
Attr PgmName = "DiInvMask"
Attr TypeRef = "pwrb:Type-CardMask1_1"
EndBody
EndObject
Object DoInvMask $Attribute 16 30-JUN-2010 10:17:37.44
Body SysBody 30-JUN-2010 10:17:39.70
Attr PgmName = "DoInvMask"
Attr TypeRef = "pwrb:Type-CardMask1_1"
EndBody
EndObject
Object DoTestMask $Attribute 17 30-JUN-2010 10:17:47.62
Body SysBody 30-JUN-2010 10:17:49.04
Attr PgmName = "DoTestMask"
Attr Flags = 16
Attr TypeRef = "pwrb:Type-CardMask1_1"
EndBody
EndObject
Object DoTestValue $Attribute 18 30-JUN-2010 10:17:54.65
Body SysBody 30-JUN-2010 10:17:56.27
Attr PgmName = "DoTestValue"
Attr Flags = 16
Attr TypeRef = "pwrb:Type-CardMask1_1"
EndBody
EndObject
Object DoFixedOutValue $Attribute 19 30-JUN-2010 10:18:02.74
Body SysBody 30-JUN-2010 10:18:04.05
Attr PgmName = "DoFixedOutValue"
Attr TypeRef = "pwrb:Type-CardMask1_1"
EndBody
EndObject
EndObject
Object ConfiguratorPoson $Menu 168 30-JUN-2010 10:14:40.65
Object Pointed $Menu 169 30-JUN-2010 10:14:40.65
Object Connect $MenuButton 170 30-JUN-2010 10:14:40.65
Body SysBody 30-JUN-2010 10:14:40.65
Attr ButtonName = "Connect PlcThread"
Attr MethodName = "$Objid-Connect"
Attr MethodArguments[0] = "ThreadObject"
Attr MethodArguments[1] = "PlcThread"
Attr FilterName = "$Objid-IsOkConnect"
Attr FilterArguments[0] = "ThreadObject"
Attr FilterArguments[1] = "PlcThread"
EndBody
EndObject
EndObject
EndObject
Object Template Ssab_BaseMCard 2155839488 01-JAN-1970 01:00:00.00
Body RtBody 01-JAN-1970 01:00:00.00
EndBody
EndObject
EndObject
!/**
! @Version 1.0
! @Group IO,IO_PSS9000
...
...
@@ -4436,6 +4595,150 @@ Volume SsabOx $ClassVolume 0.0.250.5
EndBody
EndObject
EndObject
Object Ssab_MIO3102uP $ClassDef 32 30-JUN-2010 10:20:02.49
Body SysBody 30-JUN-2010 10:20:39.09
Attr Editor = 0
Attr Method = 0
Attr Flags = 18448
EndBody
Object RtBody $ObjBodyDef 1 30-JUN-2010 10:21:31.55
Body SysBody 30-JUN-2010 10:21:31.55
Attr StructName = "Ssab_MIO3102uP"
Attr NextAix = "_X8"
EndBody
Object Super $Attribute 1 30-JUN-2010 10:21:42.76
Body SysBody 30-JUN-2010 10:22:11.99
Attr PgmName = "Super"
Attr Flags = 393216
Attr TypeRef = "SsabOx:Class-Ssab_BaseMCard"
EndBody
EndObject
Object ChAi01 $Attribute 2 30-JUN-2010 10:23:13.69
Body SysBody 30-JUN-2010 10:24:18.70
Attr PgmName = "ChAi01"
Attr Flags = 131072
Attr TypeRef = "pwrb:Class-ChanAi"
EndBody
EndObject
Object ChAi02 $Attribute 3 30-JUN-2010 10:24:22.32
Body SysBody 30-JUN-2010 10:24:22.27
Attr PgmName = "ChAi02"
Attr Flags = 131072
Attr TypeRef = "pwrb:Class-ChanAi"
EndBody
EndObject
Object ChAi03 $Attribute 4 30-JUN-2010 10:24:23.96
Body SysBody 30-JUN-2010 10:24:23.91
Attr PgmName = "ChAi03"
Attr Flags = 131072
Attr TypeRef = "pwrb:Class-ChanAi"
EndBody
EndObject
Object ChAo01 $Attribute 5 30-JUN-2010 10:24:45.78
Body SysBody 30-JUN-2010 10:24:51.40
Attr PgmName = "ChAo01"
Attr Flags = 131072
Attr TypeRef = "pwrb:Class-ChanAo"
EndBody
EndObject
Object ChDo01 $Attribute 6 30-JUN-2010 10:25:09.41
Body SysBody 30-JUN-2010 10:25:16.61
Attr PgmName = "ChDo01"
Attr Flags = 131072
Attr TypeRef = "pwrb:Class-ChanDo"
EndBody
EndObject
Object ChDo02 $Attribute 7 30-JUN-2010 10:25:18.65
Body SysBody 30-JUN-2010 10:25:18.59
Attr PgmName = "ChDo02"
Attr Flags = 131072
Attr TypeRef = "pwrb:Class-ChanDo"
EndBody
EndObject
EndObject
Object IoMethods $RtMethod 171 30-JUN-2010 10:26:01.18
Object IoCardInit $Method 172 30-JUN-2010 10:26:01.18
Body SysBody 30-JUN-2010 10:26:55.42
Attr MethodName = "Ssab_MIOuP-IoCardInit"
EndBody
EndObject
Object IoCardClose $Method 173 30-JUN-2010 10:26:01.18
Body SysBody 30-JUN-2010 10:27:11.13
Attr MethodName = "Ssab_MIOuP-IoCardClose"
EndBody
EndObject
Object IoCardWrite $Method 174 30-JUN-2010 10:26:01.18
Body SysBody 30-JUN-2010 10:27:21.66
Attr MethodName = "Ssab_MIOuP-IoCardWrite"
EndBody
EndObject
Object IoCardRead $Method 175 30-JUN-2010 10:27:35.49
Body SysBody 30-JUN-2010 10:27:41.11
Attr MethodName = "Ssab_MIOuP-IoCardRead"
EndBody
EndObject
EndObject
Object Template Ssab_MIO3102uP 2156101632 01-JAN-1970 01:00:00.00
Body RtBody 30-JUN-2010 10:41:08.04
Attr Super.ErrorSoftLimit = 25
Attr Super.ErrorHardLimit = 50
Attr Super.MaxNoOfAiChannels = 3
Attr Super.MaxNoOfAoChannels = 1
Attr Super.MaxNoOfDoChannels = 2
Attr Super.Process = 1
Attr ChAi01.ConversionOn = 1
Attr ChAi01.ScanInterval = 1
Attr ChAi01.RawValRangeLow = -3.000000e+04
Attr ChAi01.RawValRangeHigh = 3.000000e+04
Attr ChAi01.ChannelSigValRangeLow = -2.000000e+01
Attr ChAi01.ChannelSigValRangeHigh = 2.000000e+01
Attr ChAi01.SigValueUnit = "mA"
Attr ChAi01.SensorPolyType = 1
Attr ChAi01.SensorSigValRangeLow = 4.000000e+00
Attr ChAi01.SensorSigValRangeHigh = 2.000000e+01
Attr ChAi01.ActValRangeHigh = 1.000000e+02
Attr ChAi01.Representation = 3
Attr ChAi02.Number = 1
Attr ChAi02.ConversionOn = 1
Attr ChAi02.ScanInterval = 1
Attr ChAi02.RawValRangeLow = -3.000000e+04
Attr ChAi02.RawValRangeHigh = 3.000000e+04
Attr ChAi02.ChannelSigValRangeLow = -2.000000e+01
Attr ChAi02.ChannelSigValRangeHigh = 2.000000e+01
Attr ChAi02.SigValueUnit = "mA"
Attr ChAi02.SensorPolyType = 1
Attr ChAi02.SensorSigValRangeLow = 4.000000e+00
Attr ChAi02.SensorSigValRangeHigh = 2.000000e+01
Attr ChAi02.ActValRangeHigh = 1.000000e+02
Attr ChAi02.Representation = 3
Attr ChAi03.Number = 2
Attr ChAi03.ConversionOn = 1
Attr ChAi03.ScanInterval = 1
Attr ChAi03.RawValRangeLow = -3.000000e+04
Attr ChAi03.RawValRangeHigh = 3.000000e+04
Attr ChAi03.ChannelSigValRangeLow = -2.000000e+01
Attr ChAi03.ChannelSigValRangeHigh = 2.000000e+01
Attr ChAi03.SigValueUnit = "mA"
Attr ChAi03.SensorPolyType = 1
Attr ChAi03.SensorSigValRangeLow = 4.000000e+00
Attr ChAi03.SensorSigValRangeHigh = 2.000000e+01
Attr ChAi03.ActValRangeHigh = 1.000000e+02
Attr ChAi03.Representation = 3
Attr ChAo01.OutPolyType = 1
Attr ChAo01.ActValRangeLow = -1.000000e+02
Attr ChAo01.ActValRangeHigh = 1.000000e+02
Attr ChAo01.SensorSigValRangeLow = -1.000000e+01
Attr ChAo01.SensorSigValRangeHigh = 1.000000e+01
Attr ChAo01.SigValueUnit = "V"
Attr ChAo01.ChannelSigValRangeLow = -1.000000e+01
Attr ChAo01.ChannelSigValRangeHigh = 1.000000e+01
Attr ChAo01.RawValRangeLow = -3.000000e+04
Attr ChAo01.RawValRangeHigh = 3.000000e+04
Attr ChAo01.Representation = 3
Attr ChDo02.Number = 1
EndBody
EndObject
EndObject
Object Ai_AI32uP $ClassDef 16 30-DEC-2005 11:26:36.69
Body SysBody 30-DEC-2005 11:26:36.69
Attr Editor = 0
...
...
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