Skip to content

Class definition

Station

Bases: PviObject

class representing station object

ANSL & INA2000: can be used but is not necessary SNMP specifies particular PLC see PVI documentation for more details

Source code in pvi\pvi_objects\Station.py
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
class Station(PviObject):
    '''class representing station object

    ANSL & INA2000: can be used but is not necessary
    SNMP specifies particular PLC
    see PVI documentation for more details
    '''
    def __init__( self, parent : PviObject, name : str, **objectDescriptor: Union[str,int, float] ):
        '''
        Args:
            parent : device object  
            name : name of station in PVI hierarchy
            objectDescriptor :
                ANSL : ''
                INA2000 : ''
                SNMP : MAC address, e.g. CD="/CN=00-60-65-02-f0-2c"
        '''
        if parent.type != T_POBJ_TYPE.POBJ_DEVICE:
            raise PviError(12009, self)          
        super().__init__( parent, T_POBJ_TYPE.POBJ_STATION, name, **objectDescriptor)

    def __repr__(self):
        return f"Station( name={self._name}, linkID={self._linkID} )"

descriptor: dict property

object descriptor example:

temperature = Variable( task1, 'gHeating.status.actTemp' )
...
print( "descriptor=", temperature.name)

results in:

descriptor= {'CD': 'gHeating.status.actTemp', 'RF': 0}

errorChanged: Callable property writable

callback for 'error changed'

It is advisable to always check the error status '0' before accessing an object.

Args:
    cb: callback( PviObject, int ) or callback( int )

typical example:

cpu = Cpu( device, 'myArsim', CD='/IP=127.0.0.1' )
...
def cpuErrorChanged( error : int ):
    if error != 0:
        raise PviError(error)

cpu.errorChanged = cpuErrorChanged

name: str property

hierarchical PVI object name

example:

name= @Pvi/LNANSL/TCP/myArsim/mainlogic/gHeating.status.actTemp

objectName: str property

object name

example:

temperature = Variable( task1, 'gHeating.status.actTemp' )
...
print( "oname=", temperature.name)

results in:

oname= gHeating.status.actTemp

status: dict property writable

PviObject.status read the object's status

example:

cpu = Cpu( device, 'myArsim', CD='/IP=127.0.0.1' )
task1 = Task( cpu, 'mainlogic')
temperature = Variable( task1, 'gHeating.status.actTemp' )
...
print("status=", cpu.status )

results in:

cpu.status= {'ST': 'WarmStart', 'RunState': 'RUN'}
task1.status {'ST': 'Running'}
temperature.status= {'ST': 'Var', 'SC': 'g'}

type: T_POBJ_TYPE property

object type

example:

temperature = Variable( task1, 'gHeating.status.actTemp' )
...
print( "type=", temperature.type)

results in:

type= T_POBJ_TYPE.POBJ_PVAR

__init__(parent, name, **objectDescriptor)

Parameters:

Name Type Description Default
parent

device object

required
name

name of station in PVI hierarchy

required
objectDescriptor

ANSL : '' INA2000 : '' SNMP : MAC address, e.g. CD="/CN=00-60-65-02-f0-2c"

{}
Source code in pvi\pvi_objects\Station.py
35
36
37
38
39
40
41
42
43
44
45
46
47
def __init__( self, parent : PviObject, name : str, **objectDescriptor: Union[str,int, float] ):
    '''
    Args:
        parent : device object  
        name : name of station in PVI hierarchy
        objectDescriptor :
            ANSL : ''
            INA2000 : ''
            SNMP : MAC address, e.g. CD="/CN=00-60-65-02-f0-2c"
    '''
    if parent.type != T_POBJ_TYPE.POBJ_DEVICE:
        raise PviError(12009, self)          
    super().__init__( parent, T_POBJ_TYPE.POBJ_STATION, name, **objectDescriptor)

kill()

PviObject.kill: kills this object this should be called when object is not beeing used anymore to save PVI resources

Source code in pvi\pvi_objects\Object.py
468
469
470
471
472
473
474
475
476
477
478
479
480
481
def kill(self):
    '''
    PviObject.kill: kills this object
    this should be called when object is not beeing used anymore
    to save PVI resources
    '''
    if self._linkID != 0 and self._connection != None:

        self._connection._linkIDs.pop(self._linkID) # remove from linkIDs
        self._connection._pviObjects.remove(self) # remove from PviObjects
        self._result = PviXUnlink(self._hPvi, self._linkID)
        self._linkID = 0
        if self._result != 0 and self._result != 12045:
            raise PviError(self._result, self)