Table of Contents

ActuatorDigitalBiLsPlusMinusUM

Namespace
ZEquipment
Extends
Inherited Properties
Inherited Methods
Implements
FUNCTION_BLOCK ActuatorDigitalBiLsPlusMinusUM EXTENDS ZEquipment.ActuatorDigital IMPLEMENTS ZCore.IUnmanagedObject, ZEquipment.IActuatorDigital, ZCore.IObject, ZCore.IError (
 [output] Diagnostics : ZCore.DiagnosticMessage,
 [output] MinusOutput : DigitalOutput,
 [output] PlusOutput : DigitalOutput,
 [output] MinusInput : DigitalInput,
 [output] PlusInput : DigitalInput)

Implementation of a digital actuator that uses two digital outputs for moving the actuator and two digital inputs to monitor the actuators position - one at every possible position the actuator may move to.

For details see ActuatorDigital.

Here is short code snippet with all important initialization setters for this type of actuator, you just have to edit the names and durations. Also make sure that the simulation property is set according to your testing environment:

Actuator.SetLogger(Logger);
Actuator.SetName(name:='BistableLsPlusMinus', movePlusName:='Open', moveMinusName:='Close',
                 plusName:='IsOpen', minusName:='IsClosed');
Actuator.SetSimulation(mode:=ZEquipment.ActuatorDigitalSimulation.Automatic);
Actuator.SetSimulationUncertainty(uncertainty:=10);
Actuator.SetDelay(plusStartDuration:=0, plusEndDuration:=0, minusStartDuration:=0, minusEndDuration:=0, stop:=0);
Actuator.SetSwitchDuration(plusDuration:=0.2, minusDuration:=0.2);
Actuator.SetMovementDuration(plusDuration:=3, minusDuration:=3);
Actuator.SetTimeout(plusDuration:=5, minusDuration:=5);

Copy this example for a first test:

PROGRAM MAIN
VAR
  DateTime : ZAux.DateTimeUM;
  Logger : ZAux.LoggerFile7FFUM(datetime:=DateTime, filePath:='C:\temp\logfile.log', target:='');
  Actuator : ZEquipment.ActuatorDigitalBiLsPlusMinusUM;
  Step : ZCore.Step(begin:=0, end:=100);
END_VAR
--------------------------------------
DateTime.Cyclic();
Logger.Cyclic();
Actuator.Cyclic();

CASE Step.Index OF
  0:
    Actuator.SetLogger(Logger);
    Actuator.SetName(name:='BistableLsPlusMinus', movePlusName:='Open', moveMinusName:='Close',
                     plusName:='IsOpen', minusName:='IsClosed');
    Actuator.SetSimulation(mode:=ZEquipment.ActuatorDigitalSimulation.Automatic);
    Actuator.SetSimulationUncertainty(uncertainty:=10);
    Actuator.SetDelay(plusStartDuration:=0, plusEndDuration:=0, minusStartDuration:=0, minusEndDuration:=0,
                      stop:=0);
    Actuator.SetSwitchDuration(plusDuration:=0.2, minusDuration:=0.2);
    Actuator.SetMovementDuration(plusDuration:=3, minusDuration:=3);
    Actuator.SetTimeout(plusDuration:=5, minusDuration:=5);

    Step.SetNext(10);

  10:
    IF Step.OnEntry() THEN
      Actuator.MovePlusAsync(0);
    END_IF

    IF Actuator.Done THEN
      Step.SetNext(20);
    END_IF

  20:
    ;
END_CASE

Outputs

MinusOutput DigitalOutput
PlusOutput DigitalOutput
MinusInput DigitalInput
PlusInput DigitalInput

Constructor

FB_init

METHOD FB_init (
 [input] bInitRetains : BOOL,
 [input] bInCopyCode : BOOL) : BOOL

Inputs

bInitRetains BOOL

if TRUE, the retain variables are initialized (warm start / cold start)

bInCopyCode BOOL

if TRUE, the instance afterwards gets moved into the copy code (online change)

Returns

BOOL

Methods

Cyclic

METHOD Cyclic ()

the IUnmanagedObjects cyclic method must be implemented by any function block that implements IUnmanagedObjects. This method should be called from the creator of the object and is not automatically taken care of from the framework.