Presentation is loading. Please wait.

Presentation is loading. Please wait.

Instrument Control Systems Seminar 2014, 20 th -24 th October 2014 Instrument Control Systems 2014 J.Knudstrup, ESO/DoE/CSE/CINS ICS Fieldbus Extension.

Similar presentations


Presentation on theme: "Instrument Control Systems Seminar 2014, 20 th -24 th October 2014 Instrument Control Systems 2014 J.Knudstrup, ESO/DoE/CSE/CINS ICS Fieldbus Extension."— Presentation transcript:

1 Instrument Control Systems Seminar 2014, 20 th -24 th October 2014 Instrument Control Systems 2014 J.Knudstrup, ESO/DoE/CSE/CINS ICS Fieldbus Extension – Drivers

2 Instrument Control System Seminar, 20 th -24 th October 2014, Slide 2 Types of Adapters Type of AdapterDescription Device DriverAlways to be provided for a new type of device. Implements business logic to control the device (HW). Deployed on the IWS. Device Driver SimulatorShould always be provided together with a Device Driver. Implements the simulated behavior of the device (HW). Communication InterfaceImplements the specific communication protocol, used to interact with a specific type of HW. E.g. OPC UA. Normally not necessary to implement (use existing, supported protocol). Device Server ClassImplements the server host application, in which the Device Driver resides. Normally not necessary to implement, the default can be used. Device Simulator ClassImplements the server host application, in which the Device Driver Simulator resides. Normally not necessary to implement, the default can be used.

3 Instrument Control System Seminar, 20 th -24 th October 2014, Slide 3 Architecture Device Server IC0FB Control ICB Cfg. Device Simulator Device (e.g. PLC) Name Map- ping Com Int Sim Com Int Device Driver Dev Drv Simul Dev Drv Simul Dev Drv Simul Dev Drv Simul Client

4 Instrument Control System Seminar, 20 th -24 th October 2014, Slide 4 - Device Drivers derived from base class “ic0fbDevDrvBase”. - Naming convention: “ DevDrv.h/.C ”, e.g. “ic0fbiDevDrvSensor.h/.C”. - Device Driver Simulators derived from base class “ic0fbDevDrvSimBase”. - Naming convention: “ DevDrvSim.h/.C”. - Communication Interfaces derived from base class “ic0fbIfBase”. - Naming convention: “ If.h/.C”. Architecture – Cont’d

5 Instrument Control System Seminar, 20 th -24 th October 2014, Slide 5 Standard Device Drivers Device DriverDescription ic0fbDevDrvDiscreteMotorGeneral purpose motion control. Named positions. Simulator: “ic0fbiDevDrvSimDiscreteMotor”. ic0fbiDevDrvIoDevGeneral purpose I/O device. Supports 1) Analog, 2) Digital 3) Discrete, 4) Text, 5) Virtual Channels. Based on common ‘I/O Mgr Toolkit’. Simulator: “ic0fbiDevDrvSimIoDev”. ic0fbiDevDrvLakeshoreSupports Lakeshore 336. Simulator: “ic0fbiDevDrvSimLakeshore”. ic0fbiDevDrvLampStandard ‘ESO’ lamp device. Simulator: “ic0fbiDevDrvSimLamp”. ic0fbiDevDrvLdlsLaser Driven Light Source (ENERGETIQ EQ-99FC LDLS). Simulator: “ic0fbiDevDrvSimLdls”. ic0fbiDevDrvSensorGeneral purpose sensor device. Supports Supports also: Cabinet Cooling Controller, Lakeshore 218, Lakeshore 340. Simulator: “ic0fbiDevDrvSimSensor”. ic0fbiDevDrvShutterStandard ‘ESO’ shutter device. Simulator: “Ic0fbiDevDrvShutter”. ifbmotDevDrvDrotDescribed in other presentation. ifbmotDevDrvAdcDescribed in other presentation.

6 Instrument Control System Seminar, 20 th -24 th October 2014, Slide 6 Standard Communication Interfaces Communication InterfaceDescription ic0fbIfCcsImplements communication via CCS commands. Uses internal format for serializing/de-serializing parameters. Ic0fbsiaIfOpcUaBased on the OPC UA Client SDK from Softing Industrial Automation (http://industrial.softing.com).http://industrial.softing.com Standard SDK selected by ESO. ic0fbuaIfOpcUaBased on the OPC UA Client SDK from Unified Automation (http://www.unified-automation.com/).http://www.unified-automation.com/ ic0fbiIfSocketImplements a basic socket communication interface. Used for now only for Lakeshore 336. ic0fbs7Siemens Softnet protocol. ic0fbndSiemens Softnet protocol via free implementation (libnodave: http://libnodave.sourceforge.net/). http://libnodave.sourceforge.net/ ic0fbiIfLakeshoreBased on “ic0fbiIfSocket”. Adapted for Lakeshore 336.

7 Instrument Control System Seminar, 20 th -24 th October 2014, Slide 7 - General purpose motion control (FILT*, OPTI*, MIRR*). - Support named positions (for now in enc. units). - Can be positioned via SETUP in enc. or user units. - PLC FB (TwinCAT): “FB_MOTOR”. - DBL class: “ic0fbiDiscreteMotor.class”, IWS DBL class: “icbFB_MOTOR.class”. - HW: Tested with a wide range of stepper and DC motors. - Name Mapping (TwinCAT): ”ic0fbiDiscreteMotor_TwinCAT.fbmap”. Device Driver: “ic0fbiDevDrvDiscreteMotor” Parameter GroupParameters Timeouts INS.OPTI1.INITTOUT 120000; # Initialisation timeout INS.OPTI1.MOVETOUT 60000; # Move timeout INS.OPTI1.SWCHTOUT 10000; # Switch exit timeout Basic Motor INS.OPTI1.AXISTYPE "CIRCULAR"; # Axis type (c) INS.OPTI1.BACKLASH 0.0; # [UU] Backlash compensation INS.OPTI1.DEFVEL 5.0; # [UU/s] Speed while moving INS.OPTI1.TOLERANCE 0.091; # [UU] Tolerance for in-position INS.OPTI1.MINPOS -90.0; # [UU] Min position INS.OPTI1.MAXPOS 270.0; # [UU] Max position INS.OPTI1.AUTODIS F; # Auto disable motor when standing INS.OPTI1.BRAKES T; # If T, Brakes are used Active Low Flags INS.OPTI1.AL_LSTOP F; # T: Lower Stop is active low INS.OPTI1.AL_LHW T; # T: Lower HW Switch is active low INS.OPTI1.AL_REF F; # T: Lower REF Switch is active low INS.OPTI1.AL_INDEX F; # T: Lower Index Switch is active low INS.OPTI1.AL_UHW T; # T: Upper HW Switch is active low INS.OPTI1.AL_USTOP F; # T: Upper Stop is active low INS.OPTI1.AL_BRKS T; # T: Brakes feedback is active low

8 Instrument Control System Seminar, 20 th -24 th October 2014, Slide 8 Device Driver: “ic0fbiDevDrvDiscreteMotor” – Cont’d Parameter Group Parameters Simulation.SIMVAL "SCALE=0.01" Can be used to tune how fast simulator carries out the simulated movement. Init Sequence.INITSTEPi: Triggers the PLC FB to carry out an action. Possible Actions: CALIB_ABS: Set current position to given value CALIB_REL: Add value to current position, use this as new position. CALIB_SWITCH, DELAY, END, FIND_REF_LE, FIND_REF_UE, FIND_INDEX, FIND_LHW, FIND_UHW, MOVE_ABS, MOVE_REL # Find Upper HW Limit: INS.OPTI1.INITSTEP1"FIND_UHW,20.0,5.0" # Move relative -200 deg': INS.OPTI1.INITSTEP2"MOVE_REL,80.0,-200.0" # Find Z (index) pulse: INS.OPTI1.INITSTEP3"FIND_INDEX,-2,0.2" # Set detected Index position to 0.0: INS.OPTI1.INITSTEP4"CALIB_SWITCH,0.0,0.0" # Go to absolute position 180 deg: INS.OPTI1.INITSTEP5"MOVE_ABS,50.0,180.0" Named Positions (Optional) Can only specify in enc. values for now, later in UU. INS.OPTI1.POSID1 "Opti1-A-POSID"; # Position ID INS.OPTI1.POSENC1 1200; # Encoder value position INS.OPTI1.ID1 "Opti1-A-ID"; # Position ID INS.OPTI1.NAME1 "Opti1-A-Name"; # Name of position

9 Instrument Control System Seminar, 20 th -24 th October 2014, Slide 9 - General purpose tool to implement devices handling I/O. - Main toolkit class: “ic0fbiIoMgr”. - Based on a concept of I/O channels. Keywords of form: “ CHi. ”. - Meant to be used to build devices with a need for I/O. - Used for the standard Device Drivers “ic0fbiDevDrvIoDev” and “ic0fbiDevDrvSensor”. - Supports 9 types of I/O: 1./2. Analog Input/Output. 3./4. Digital Input/Output. 5./6. Discrete Input/Output. 7./8. Text Input/Output. 9. Virtual Input. - Parses the ICB cfg and configures itself accordingly, by instantiating the Channel Handler classes: - ic0fbiAnalogInput - … - ic0fbiVirtualChannel - Device Driver Simulator: “ic0fbDevDrvSimIoDev”. Allocates a simulator per channel. I/O Manager Toolkit

10 Instrument Control System Seminar, 20 th -24 th October 2014, Slide 10 - Special ‘DATA Point’ attributes: - “input” vector: “dbBYTES” – Values represented as strings (from IC0LCU). - “last” vector: “dbDOUBLE” – Values represented as doubles (from IC0LCU). - “output” vector: “dbBYTES” – Output values written, represented as strings. - Classes for IWS main CCS environment: “icbFB_IODEV_ _CH” (N: 16, 32, 64, 128, 256). - If more element needed, define private DBL class. I/O Manager Toolkit OLDB

11 Instrument Control System Seminar, 20 th -24 th October 2014, Slide 11 I/O Manager Toolkit – Cont’d Configuration – Analog I/O Channel typeParameters (Example) Analog Input INS.IODEV2.CH7.NAME "ACH1"; # Name of the value INS.IODEV2.CH7.DESC "Temp Celsius"; # Description of value INS.IODEV2.CH7.TYPE "ANALOG-IN"; # Channel type INS.IODEV2.CH7.AVAIL T; # Available INS.IODEV2.CH7.HEADER T; # Write value in FITS header INS.IODEV2.CH7.LOG T; # Log value periodically INS.IODEV2.CH7.FITS "INS.SENS2.VAL1"; # FITS keyword for value INS.IODEV2.CH7.UNIT "C"; # Unit INS.IODEV2.CH7.FORMAT "%12.5e"; # Sensor value output format INS.IODEV2.CH7.SIGNAL "2"; # Signal used INS.IODEV2.CH7.RANGE1 "4,10"; # Valid range INS.IODEV2.CH7.RANGE2 "-1,3"; # Valid range INS.IODEV2.CH7.COMPTYPE "QUADRATIC"; # Computation type INS.IODEV2.CH7.COMPPAR1 0.01; # Computation parameter INS.IODEV2.CH7.COMPPAR2 0.2; # Computation parameter INS.IODEV2.CH7.COMPPAR3 3.0; # Computation parameter INS.IODEV2.CH7.SIMVAL "6.0"; # Simulated value INS.IODEV2.CH7.SIMRAND "1.5"; # Simulated value Analog Output INS.IODEV2.CH9.NAME "AnalogOut1"; # Name of the value INS.IODEV2.CH9.DESC "Analog Output 1"; # Description of value INS.IODEV2.CH9.TYPE "ANALOG-OUT"; # Channel type INS.IODEV2.CH9.AVAIL T; # Available INS.IODEV2.CH9.SIGNAL "5"; # Signal used INS.IODEV2.CH9.RANGE1 "-2,-0.5"; # Valid range INS.IODEV2.CH9.RANGE2 "5,8"; # Valid range INS.IODEV2.CH9.COMPTYPE "LINEAR"; # Computation type INS.IODEV2.CH9.COMPPAR1 0.25; # Computation parameter INS.IODEV2.CH9.COMPPAR2 0.28; # Computation parameter

12 Instrument Control System Seminar, 20 th -24 th October 2014, Slide 12 - Computation supported for Analog I/O: - Name Mapping: “SIGNAL”(s) from cfg mapping into Internal Names: I/O Manager Toolkit – Cont’d Configuration Computation Method NoneNo processing carried out (default) EXPexp((Par1 * X)+ Par2) LINEAR(Par1 * X + Par2) QUADRATIC(Par1 * X^2 + Par2 * X + Par3) POWpower(Par1, ((Par2 * X) + Par3) Channel TypeInternal Name Analog Input“StatAnlgIn ” Analog Output”CtrlAnlgOut ” Digital Input”StatDigIn ” Digital Output”CtrlDigOut ” Discrete Input”StatDiscrIn ” Discrete Output”CtrlDiscrOut ” Text Input”StatTextIn ” Text Output”CtrlTextOut ” Virtual InputN/A

13 Instrument Control System Seminar, 20 th -24 th October 2014, Slide 13 I/O Manager Toolkit – Cont’d Configuration – Digital I/O Channel typeParameters (Example) Digital Input INS.IODEV2.CH4.NAME "Alarm"; # Name of the value INS.IODEV2.CH4.DESC "Alarm"; # Description of value INS.IODEV2.CH4.TYPE "DIGITAL-IN"; # Channel type INS.IODEV2.CH4.AVAIL T; # Available INS.IODEV2.CH4.HEADER T; # Write in FITS header INS.IODEV2.CH4.LOG T; # Log value periodically INS.IODEV2.CH4.FITS "INS.SENS2.STAT1"; # FITS keyword for value INS.IODEV2.CH4.SIGNALS "0,3,4,7"; # Bits to use in array INS.IODEV2.CH4.SIGMAP1 "0,0,0,0=OK"; # Signal mapping INS.IODEV2.CH4.SIGMAP2 "0,1,1,0=WARN"; # Signal mapping INS.IODEV2.CH4.SIGMAP3 "1,X,X,1=ALARM"; # Signal mapping INS.IODEV2.CH4.SIMVAL "0,1,1,0"; # Simulated value Digital Output INS.IODEV2.CH1.NAME "DigOut1"; # Name of the value INS.IODEV2.CH1.DESC "Digital Output 1"; # Description of value INS.IODEV2.CH1.TYPE "DIGITAL-OUT"; # Channel type INS.IODEV2.CH1.AVAIL T; # Available INS.IODEV2.CH1.SIGNALS "0,3,4,7"; # Bits to use in array INS.IODEV2.CH1.SIGMAP1 "0,0,0,0=Value1-1"; # Signal mapping INS.IODEV2.CH1.SIGMAP2 "0,1,1,0=Value1-2"; # Signal mapping INS.IODEV2.CH1.SIGMAP3 "1,1,1,1=Value1-3"; # Signal mapping

14 Instrument Control System Seminar, 20 th -24 th October 2014, Slide 14 I/O Manager Toolkit – Cont’d Configuration – Discrete I/O Channel typeParameters (Example) Discrete Input INS.IODEV2.CH10.NAME "DiscreteInput1"; # Name of the value INS.IODEV2.CH10.DESC "Discrete Input 1"; # Description of value INS.IODEV2.CH10.TYPE "DISCRETE-IN"; # Channel type INS.IODEV2.CH10.AVAIL T; # Available INS.IODEV2.CH10.HEADER T; # Write value in FITS hdr INS.IODEV2.CH10.LOG T; # Log value periodically INS.IODEV2.CH10.FITS "INS.SENS2.STAT4"; # FITS keyword for value INS.IODEV2.CH10.FORMAT "%s"; # Sensor value format INS.IODEV2.CH10.SIGNAL "3"; # Signal used INS.IODEV2.CH10.VALMAP1 "1=INIT"; # Value mapping INS.IODEV2.CH10.VALMAP2 "2=READ_SINGLE"; # Value mapping INS.IODEV2.CH10.VALMAP3 "3=READ_CONT"; # Value mapping INS.IODEV2.CH10.VALMAP4 "4=USER_SINGLE"; # Value mapping INS.IODEV2.CH10.VALMAP5 "5=USER_CONT"; # Value mapping INS.IODEV2.CH10.SIMVAL "4"; # Simulated value INS.IODEV2.CH10.SIMRAND "2"; # Simulated value Discrete Output(*) INS.IODEV2.CH11.NAME "DiscreteOutput1"; # Name of the value INS.IODEV2.CH11.DESC "Discrete Output 1"; # Description of value INS.IODEV2.CH11.TYPE "DISCRETE-OUT"; # Channel type INS.IODEV2.CH11.SIGNAL "6"; # Signal used *: Value mapping not supported at this point in time.

15 Instrument Control System Seminar, 20 th -24 th October 2014, Slide 15 - One use case is for serial devices. I/O Manager Toolkit – Cont’d Configuration – Text I/O Channel typeParameters (Example) Text Input INS.IODEV2.CH12.NAME "TextInput1"; # Name of the value INS.IODEV2.CH12.DESC "Text Input 1"; # Description of value INS.IODEV2.CH12.TYPE "TEXT-IN"; # Channel type INS.IODEV2.CH12.AVAIL T; # Available INS.IODEV2.CH12.HEADER T; # Write value in FITS header INS.IODEV2.CH12.LOG T; # Log value periodically INS.IODEV2.CH12.FITS "INS.SENS2.STAT5"; # FITS keyword for value INS.IODEV2.CH12.SIGNAL "1"; # Signal number INS.IODEV2.CH12.SIMVAL "Text-Ch-1"; # Simulated value Text Output INS.IODEV2.CH17.NAME "TextOutput1"; # Name of the value INS.IODEV2.CH17.DESC "Text Output 1"; # Description of value INS.IODEV2.CH17.TYPE "TEXT-OUT"; # Sensor type INS.IODEV2.CH17.AVAIL T; # Available INS.IODEV2.CH17.SIGNAL "7"; # Signal number

16 Instrument Control System Seminar, 20 th -24 th October 2014, Slide 16 - Purpose of Virtual Channel: Inject data into the OLDB ‘ICB attributes’ of the I/O device point. - Reserves space in the “last”/”input” vectors for data to be display in ICBPAN widgets. I/O Manager Toolkit – Cont’d Configuration – Virtual Input Channel typeParameters (Example) Virtual Input Conversion to Double Conversion to String Reading from OLDB INS.IODEV2.CH14.NAME "VirtCh2"; # Name of the value INS.IODEV2.CH14.DESC "Virtual Channel 2"; # Description of value INS.IODEV2.CH14.TYPE "VIRTUAL-IN"; # Channel type INS.IODEV2.CH14.NAMES "StatDiscrIn3"; # Associated names INS.IODEV2.CH14.COMPTYPE "DOUBLE"; # Comp Type INS.IODEV2.CH14.OUTPUTNM "StatVirtCh2"; # Output variable name INS.IODEV2.CH16.NAME "VirtCh4"; # Name of the value INS.IODEV2.CH16.DESC "Virtual Channel 4"; # Description of value INS.IODEV2.CH16.TYPE "VIRTUAL-IN"; # Channel type INS.IODEV2.CH16.NAMES "StatDigIn6,StatDiscrIn3,INS.SENS2.VAL1,StatTextIn1"; # Associated names INS.IODEV2.CH16.COMPTYPE "STRING"; # Comp Type INS.IODEV2.CH16.COMPPAR1 ","; # Comp parameter INS.IODEV2.CH16.OUTPUTNM "StatVirtCh4"; # Output variable name INS.IODEV2.CH1.NAME "VirtCh1"; # Name of the value INS.IODEV2.CH1.DESC "Virtual Channel 1"; # Description of value INS.IODEV2.CH1.TYPE "VIRTUAL-IN"; # Channel type INS.IODEV2.CH1.NAMES "OLDB: OPTI1.device" INS.IODEV2.CH1.COMPTYPE "STRING"; # Comp Type INS.IODEV2.CH1.OUTPUTNM "INS.SENS5.VAL1"; # Output variable name

17 Instrument Control System Seminar, 20 th -24 th October 2014, Slide 17 - Possible to add new, specialized Virtual Input Channels. - Shall be derived from “ic0fbiVirtualChannel”. - Implement the “processUser()”, possibly “updateDbUser()” virtual methods. - Allocate name for new channel type, e.g. “MY-CHANNEL”. - Create a new IC0FB Device Driver (use e.g. “ic0fbiDevDrvIoDev” as example). - In the “ ::initialiseDeviceUser()” method, register the new Virtual Channel class: - Create cfg: - “.NAMES”: Triggers when Channel Handler is invoked (if names matches). I/O Manager Toolkit – Cont’d Implementing Specialized Virtual Ch. xxxxMyChannel chFactoryObj; if (ioMgr().addChFactoryObject(“MY-CHANNEL”, chFactoryObj) == FAILURE) … if (ioMgr().initialise(device(), comInterface().nameMapping()) == FAILURE) … INS.SENSORi.CHi.NAME "VirtCh1"; # Name of the value INS.SENSORi.CHi.DESC "Virtual Channel 1"; # Description of value INS.SENSORi.CHi.TYPE "MY-CHANNEL”; # Sensor type INS.SENSORi.CHi.NAMES "StatAnlgIn3, StatDigIn2“; # Associated names INS.SENSORi.CHi.OUTPUTNM "INS.SENS2.VAL3"; # Output variable name

18 Instrument Control System Seminar, 20 th -24 th October 2014, Slide 18 - ic0fbiDevDrvIoDev: Based on I/O Manager Toolkit. Device Driver: “ic0fbiDevDrvIoDev” ccsCOMPL_STAT ic0fbiDevDrvIoDev::setupUser(ic0fbRequestHandle& request) { ic0fbTRACE; // Generate vector with parameters to write to the device. ic0fbPars_t processedPars; if (ioMgr().processForDevice(request.inputPars(), processedPars) == FAILURE)... // Write the processed parameters to the device. if (comInterface().write(processedPars) == FAILURE)... // Activate the outputs. ic0fbParameter activatePar(DevCtrlCommand, CtrlCmdActivate); if (comInterface().write(activatePar) == FAILURE)... ic0fbParameter execPar(DevCtrlExecute, (vltLOGICAL)TRUE); if (comInterface().write(execPar) == FAILURE)... // Update status in the OLDB. if (ioMgr().updateDb(request.inputPars()) == FAILURE)... return SUCCESS; }

19 Instrument Control System Seminar, 20 th -24 th October 2014, Slide 19 - Based on I/O Manager Toolkit. - Output channels disabled: - Output channels not defined for “INSi.SENSORi” in “IC0FBI_CFG” dictionary. - Setup/write methods disabled: Device Driver: “ic0fbiDevDrvSensor” ccsCOMPL_STAT ic0fbiDevDrvSensor::setupUser(ic0fbRequestHandle& request) { ic0fbTRACE; ic0fbFAILURE("The sensor device does not support the Setup Operation"); } ccsCOMPL_STAT ic0fbiDevDrvSensor::writeUser(ic0fbRequestHandle& request) { ic0fbTRACE; ic0fbFAILURE("The sensor device does not support the Write Operation"); }

20 Instrument Control System Seminar, 20 th -24 th October 2014, Slide 20 - All based on “ic0fbiDevDrvSensor” (“ic0fbiDevDrvIoDev”), a matter of configuration to provide support. - Example: Cabinet Cooling Controller: Cabinet Cooling Controller, Lakeshore 218, Lakeshore 340 INS.SENSOR6.CH1.NAME "Temp-Outlet" INS.SENSOR6.CH1.DESC "Outlet Temp" INS.SENSOR6.CH1.TYPE "ANALOG-IN" INS.SENSOR6.CH1.AVAIL T INS.SENSOR6.CH1.HEADER T INS.SENSOR6.CH1.LOG T INS.SENSOR6.CH1.FITS "INS.SENS6.VAL1" INS.SENSOR6.CH1.UNIT "C" INS.SENSOR6.CH1.FORMAT "%8.1f" INS.SENSOR6.CH1.SIGNAL "0" INS.SENSOR6.CH1.SIMVAL "10" INS.SENSOR6.CH2.NAME "Temp-Inlet INS.SENSOR6.CH2.DESC "Inlet Temp" INS.SENSOR6.CH2.TYPE "ANALOG-IN" INS.SENSOR6.CH2.AVAIL T INS.SENSOR6.CH2.HEADER T INS.SENSOR6.CH2.LOG T INS.SENSOR6.CH2.FITS "INS.SENS6.VAL2" INS.SENSOR6.CH2.UNIT "C" INS.SENSOR6.CH2.FORMAT "%8.1f" INS.SENSOR6.CH2.SIGNAL "1" INS.SENSOR6.CH2.SIMVAL "15" … # Analog Input Signals: StatAnlgIn0: stat.lrTemp_outlet StatAnlgIn1: stat.lrTemp_inlet StatAnlgIn2: stat.lrTemp_cabinet StatAnlgIn3: stat.lrTemp_ambient StatAnlgIn4: stat.lrFlow_1 StatAnlgIn5: stat.lrFlow_2 StatAnlgIn6: stat.lrFlow_3 # Digital Input Signals: StatDigIn0: stat.bWarn_door_open StatDigIn1: stat.bWarn_cabinet_high …

21 Instrument Control System Seminar, 20 th -24 th October 2014, Slide 21 - Used only for Lake Shore 336. - Communication via Ethernet (using “ic0fbiIfSocket” ← “ic0fbiIfLakeshore”) – No PLC. - Based on I/O Manager Toolkit (“ic0fbiDevDrvSensor”). - Example of how I/O Mgr toolkit can be used to solve different use cases without coding anything. Device Driver: “ic0fbiDevDrvLakeshore” INS.SENSOR2.CH1.NAME "CH_A_TMP"; INS.SENSOR2.CH1.DESC "Channel A Temp"; INS.SENSOR2.CH1.TYPE "ANALOG-IN"; INS.SENSOR2.CH1.AVAIL T; INS.SENSOR2.CH1.HEADER T; INS.SENSOR2.CH1.LOG T; INS.SENSOR2.CH1.FITS "INS.SENS4.VAL1"; INS.SENSOR2.CH1.FORMAT "%3.5e"; INS.SENSOR2.CH1.SIGNAL "0"; INS.SENSOR2.CH1.SIMVAL "150"; INS.SENSOR2.CH1.SIMRAND "1.5"; … INS.SENSOR2.CH6.NAME "CLOOP_2_PID"; INS.SENSOR2.CH6.DESC "Control Loop 2 PID"; INS.SENSOR2.CH6.TYPE "TEXT-IN"; INS.SENSOR2.CH6.AVAIL T; INS.SENSOR2.CH6.SIGNAL "1"; INS.SENSOR2.CH6.SIMVAL "5.6,2.3,3.1"; … INS.SENSOR2.CH14.SIMVAL "1"; # Control Commands: CtrlClearInterface: *CLS # Analog Input Signals: StatAnlgIn0: KRDG? A StatAnlgIn1: SETP? 1 StatAnlgIn2: KRDG? B StatAnlgIn3: SETP? 2 StatAnlgIn4: HTR? 1 StatAnlgIn5: HTR? 2 StatAnlgIn6: AOUT? 3 StatAnlgIn7: AOUT? 4 # Discrete Input Signals: StatIdQuery: *IDN? StatDiscrIn0: RANGE? 1 StatDiscrIn1: RANGE? 2 StatDiscrIn2: RANGE? 3 StatDiscrIn3: RANGE? 4 # Text Input Signals: StatTextIn0: PID? 1 StatTextIn1: PID? 2

22 Instrument Control System Seminar, 20 th -24 th October 2014, Slide 22 - Used for control of lamps with or without intensity control. - PLC FB (TwinCAT): “FB_LAMP”. - Supports both analog and digital feedback signals. - ‘Active Low’ level configurable individually for all digital signals. - Range of analog output for intensity control configurable, e.g. 12-bit, 15-bit, 16-bit. Device Driver: “ic0fbiDevDrvLamp” INSi.LAMPi.LOWFAULT If T, fault signal is active low Normally, a signal is active when its value is 1 (true). Active low means that the signal logic is reversed and it is considered to be active when its value is 0 (false). INSi.LAMPi.LOWLOCAL If T, local signal is active low See INSi.LAMPi.LOWFAULT. INSi.LAMPi.LOWON If T, on signal is active low See INSi.LAMPi.LOWFAULT. INSi.LAMPi.LOWSWITCH If T, switch signal is active low See INSi.LAMPi.LOWFAULT. INSi.LAMPi.WAITCMPL If T, wait till lamp reaches final state INSi.LAMPi.ANLGTHR Analog threshold If this signal is used, any value above it will Indicate that the lamp is ON. INSi.LAMPi.ANLGRANG Full range of A/D converter Full range of A/D converter for analog output for intensity control. Default is 15-bit.

23 Instrument Control System Seminar, 20 th -24 th October 2014, Slide 23 - Used for control of Laser-Driven Light Source (LDLS) (for calibration). - PLC FB (TwinCAT): “FB_LDLS”. - Supports Model EQ-99-FC. - This type of lamps should be kept ON all the time during use. - Commands can be DISABLED, so it stays ON even if device is OFF. - ‘Active Low’ level configurable for all digital input signals. - New LDLS specific LAMP keywords: Device Driver: “ic0fbiDevDrvLdls” INSi.LAMPi.DISABLE If T, LDLS commands are disabled. INSi.LAMPi.TOLAMP Timeout for LDLS lamp [sec] INSi.LAMPi.TOLASER Timeout for LDLS laser [sec]

24 Instrument Control System Seminar, 20 th -24 th October 2014, Slide 24 - Used for control of standard shutters. - PLC FB (TwinCAT): “FB_SHUTTER”. - ‘Active Low’ level configurable individually for all digital signals. - Non-existing signals can be ignored. Device Driver: “ic0fbiDevDrvShutter” INSi.SHUTi.IGCLOSED Ignore closed signal if T INSi.SHUTi.LOWCLOSED If T, signal is active low INSi.SHUTi.LOWFAULT If T, signal is active low INSi.SHUTi.LOWLOCAL If T, signal is active low INSi.SHUTi.LOWOPEN If T, signal is active low INSi.SHUTi.LOWSWITCH If T, signal is active low INSi.SHUTi.INITTOUT Timeout to apply during initialisation INSi.SHUTi.MOVETOUT Timeout to apply while repositioning device

25 Instrument Control System Seminar, 20 th -24 th October 2014, Slide 25 - One man-page per driver (should be) provided, e.g.: - Template for Device Driver documentation: “ic0fb/doc/ic0fbDevDrv_template.doc”. - Base ICS, Fieldbus Extension, Device Drivers, Communication Interfaces & PLC Code, User’s Manual: VLT-MAN-ESO-17240-5628. Documentation ~/IC0FB/ic0fbi/ 1091 > ll doc/*.doc../doc/ic0fbiDevDrvDiscreteMotor.doc../doc/ic0fbiDevDrvIoDev.doc../doc/ic0fbiDevDrvLakeShore.doc../doc/ic0fbiDevDrvLamp.doc../doc/ic0fbiDevDrvLdls.doc../doc/ic0fbiDevDrvSensor.doc../doc/ic0fbiDevDrvShutter.doc


Download ppt "Instrument Control Systems Seminar 2014, 20 th -24 th October 2014 Instrument Control Systems 2014 J.Knudstrup, ESO/DoE/CSE/CINS ICS Fieldbus Extension."

Similar presentations


Ads by Google