esrf

Beamline Instrument Software Support
SPEC Macro documentation: [ Macro Index | BCU Home ]

ICE.MAC
See other macros in category: Positioning Isg
Description:
    Macros to control ISG ICEPAP motor controller as a macro motor and to configure macro counters to read DRIVERs temperatures. Replacing the old "icepap.mac" set of macros.
Documentation:
    DESCRIPTION
    Configuring macro motors
    1) You must have an entry in "MOTORS" table for each icepap MASTER
    - The "DEVICE" field must be set to string "icepap"
    - The "ADDR" must be set to the MASTER network name. The communication port can optionaly be specified also (ex: "isgtmp5:5000")
    - The "NUM" should be set to 159
    - The "TYPE" field must be set to "Macro Motors"
    2) For each axis you must define a motor with:
    - The "Controller" field set to "MAC_MOT"
    - The "Unit" field, numbered from 0, must be set to the MOTORS entry.
    - The "Module" field, numbered from 0, must be set to the ICEPAP rack number (seen on the red 7 segments display of the left hand of each rack)
    - The "Chan" field, numbered from 1, must be set to the DRIVER address NOTE: to configure a linked axis, the "Chan" field must be set to 9 and the "Module" to whatever value.
    - Example: "0/1/2" refers to the first icepap controller declared, the rack having the number "1" on its display, the 2nd DRIVER of this rack
    Configuring macro counters to read a DRIVER ENCODER POSITION
    1) You must have a "SCALER" define with "icepapenc" as "DEVICE" and "Macro Counter" as "TYPE".
    2) You must define a counter with "MAC_CNT" as "Device".
    - The "Unit" field must be set to the SCALER entry.
    - The "Chan" field must be set to the DRIVER address (ex: 5 for the 5th DRIVER of crate 0 or ex: 23 for the 3rd DRIVER of crate 2)
    - The "encoder" parameter can be set to one of the following values. Typically this parameter is set in config "custom parameters" screen for a counter. Hint: type "p" to get in.
    - "abs" Read the SSI absolute encoder
    - "absuXX" Read the unsigned SSI XX bits absolute encoder
    - "inc" Read the incremental encoder (DEFAULT)
    - "inpos" Read the DRIVER front panel input
    - "motor" Read the motor phase position
    Configuring macro counters to read a single DRIVER TEMPERATURE
    1) You must have a "SCALER" define with "icepapcnt" as "DEVICE" and "Macro Counter" as "TYPE".
    2) You must define a counter with "MAC_CNT" as "Device".
    - The "Unit" field must be set to the SCALER entry.
    - The "Chan" field must be set to the DRIVER address (ex: 5 for the 5th DRIVER of crate 0 or ex: 23 for the 3rd DRIVER of crate 2)
    Configuring macro counters to read several DRIVERs TEMPERATUREs
    1) You must have a "SCALER" define with "icepapcalc" as "DEVICE" and "Macro Counter" as "TYPE"
    2) For each counter declared:
    - The "Device" field set to "MAC_CNT"
    - The "Unit" field must be set to the SCALER entry.
    - The "Chan" field is not used.
    - The "Misc 1" parameter (type "s" to access it) is the crate number (ex: 0)
    - The "Misc 2" parameter is the type of calculation done on the DRIVERs temperatures of the crate. Possible values are "max", "min", "avg"
    Configuring macro counters to read a single DRIVER internal parameter
    1) You must have an entry in "SCALER" table for each icepap MASTER
    - The "DEVICE" field must be set to string "icepapmeas"
    - The "ADDR" must be set to the MASTER network name. The communication port can optionaly be specified also (ex: "isgtmp5:5000")
    - The "NUM" should be set to 159
    - The "TYPE" field must be set to "Macro Counter"
    2) You must define a counter with "MAC_CNT" as "Device".
    - The "Unit" field must be set to the SCALER entry.
    - The "Chan" field must be set to the DRIVER address (ex: 5 for the 5th DRIVER of crate 0 or ex: 23 for the 3rd DRIVER of crate 2)
    - An extra parameter called "cmd" must be set to the command to be used to get the DRIVER internal parameter (ex: "meas vm" "meas i" etc)
    Extra motor_par() parameters
    motor_par(motor,"power")
    Return "1" if the power is enabled on the speficied motor
    motor_par(motor,"power",1)
    Try to enable the the power the speficied motor and return the result
    motor_par(motor,"jog_speed")
    Returns the current speed if the motor is in never ending motion or returns "0" if it's stop or in normal operation mode.
    motor_par(motor,"jog_speed",speed)
    Sets the speed for the never ending motion. If the motor is already moving in this mode, its speed will be changed on the fly. If the new speed has not the same sign that the current one, the motor will first deccelerate until stopping and then starts rotating in the other direction with the new speed.
    motor_par(motor,"jog_speed",0)
    Cancel a never ending motion.
    motor_par(motor,"jog_modulo",steps)
    Optional parameter, used to set the motor position when canceling never ending motion.
    motor_par(motor,"closed_loop")
    Returns nonzero if the closed loop is active
    motor_par(motor,"closed_loop",1)
    Activate or desactivate the closed loop for the specified motor
    motor_par(motor,"reset_closed_loop")
    Reset the closed loop error (resynchronize axis position with encoder) Returns non null on success.
    motor_par(motor,"home_active")
    Returns nonzero if logical home signal is active
    motor_par(motor,"high_lim_set")
    Returns nonzero if positive limitswitch is active
    motor_par(motor,"low_lim_set")
    Returns nonzero if negative limitswitch is active
    motor_par(motor,"keepusable",1)
    Keep the motor usable even if power could not be switched on during reconfig. Typically this parameter is set in config "additional optional parameters" screen for a motor. Hint: type "p" to get in


Macros:
    icepap_brief_messages
    Usage: icepap_brief_messages [on|off]
    Switch on (default) brief messages on motors powering error during the reconfig.

    icepap_diagnostic
    Usage: icepap_diagnostic motor
    Print out information on the specified ICEPAP motor

    icepap_info
    Usage: icepap_info [hostname|motor]
    Print out information on the specified ICEPAP system or on an ICEPAP motor configured in the current SPEC session.

    icepap_mem_info
    Usage: icepap_mem_info motor | hostname [addr [addr ... ]]
    Print out detailed memory information for the specified DRIVERs The DRIVER can be specified by their address or by the corresponding motor already configured. If only an IcePAP system is given, all its DRIVERs will be print out.

    icepap_firmware_check
    Usage: icepap_firmware_check [hostname|motor]
    Check the firmware version(s) of the specificied ICEPAP system or ICEPAP motor configured in the current SPEC session.

    icepap_reset
    Usage: icepap_reset [hostname[:port]]
    Reset all the racks of the specified ICEPAP MASTER

    icepapenc_read
    Usage: icepapenc_read (<counter_mnemonic>)
    Returns value of encoder associated to macro-counter <encoder_mnemonic>. This function is similar to the previous one but provided to be user-callable by beeing more user-friendly.

    icepap_setenc
    Usage: icepap_setenc counter position


    icepap_all
    Usage: icepap_all hostname cmd [args]
    Execute the specified command with its args on all ICEPAP modules (MASTER, SLAVES and DRIVERS) known by the hostname. Note that quotes must be used when cmd includes a hash for the acknowledge.

    icepap_all_esrf
    Usage: icepap_all_esrf [option] cmd
    Execute the specified command with its args on all ESRF ICEPAP systems which follow the naming convention (hostname starting with "ice...") The option could be "slaves" to execute the command only on MASTERS and SLAVES modules.

    upgrade_firmware_1_22
    Usage: upgrade_firmware_1_22 hostname
    Upgrade the specified icepap system from firmware 1.22 to 2.0 If called from SPEC wizard mode, the security of the mandatory same subnetwork is bypassed.

    icepap_alldis
    Usage: icepap_alldis hostname
    Will try to guess if the DISDIS parameter is really needed on each DRIVER of the specified ICEPAP systerm. If not needed, the macro will remove it. WARNING: this macro is for temporary usage only.

    icepap
    Usage: icepap [hostname[:port]]
    Console implementation to communicate to icepap MASTER

    icepap_rprog
    Usage: icepap_rprog [hostname[:port] [file] [rack ... ]]
    Program a the ICEPAP specified list of racks using the rack back plane serial line.

    icepap_prog
    Usage: icepap_prog [hostname[:port] [file] [addr] [options]]
    Program a the ICEPAP module with the specified binary file

    icepap_history
    Usage: icepap_history
    Print out the history of commands sent to ICEPAP systems

    linkedstat
    Usage: linkedstat virtual_axis [virtual_axis...]
    Display information about the given virtual axis configured as a motor in the current SPEC session. The list of real axes linked together should not be configured but can be accessed through dedicated commands (linkedmv, linkedhome, etc).

    linkedsync
    Usage: linkedsync virtual_axis position
    Synchronizes all real linked axes members of the given virtual axis to the give position. No motion will take place. The position is given in user units of the virtual axis.

    linkedhome
    Usage: linkedhome ["strict"] real_axis "home+"|"home-" [[real_axis "home+"|"home-"]...]
    Launch a homing sequence on the given list of real linked axes. If the strict option is given then the first real linked axis that finds its home switch will stop the homing sequence of the other axes. The macros does not wait for the end of the homing sequence.

    linkedmv
    Usage: linkedmv real_axis posititon [[real_axis posititon] ...]
    Move the specified real linked axes to absolute positions. The positions are given in user units of the virtual axis of which the real axes are members.

    linkedmvr
    Usage: linkedmvr real_axis relative-posititon [[real_axis relative-posititon] ...]
    Move the specified real linked axes to relative positions. The positions are given in user units of the virtual axis of which the real axes are member.

    linkedresetclosedloop
    Usage: linkedresetclosedloop real_axis [real_axis ...]
    In case of closed error on a real linked axis, this macro has to be called to resynchronize the motor and its encoder. The power will be also put back.

    linkedopenclosedloop
    Usage: linkedopenclosedloop real_axis [real_axis ...]
    Open the closed loop on the specified real linked axes. The power is not touched.

    linkedreset
    Usage: linkedreset virtual_axis
    Synchronizes all real linked axes members of the given virtual axis to the give position. No motion will take place.

    ecamsetup
    Usage: ecamsetup motor source signal {pos_array}|{pos_first pos_last npos}
    Configure for the given motor source which kind of signal will be generated and at which positions. These ones can be given as an array of motor source positions or only as the beginning and ending positions with the number of positions. Example: short array listpos[10] array_op("fill", listpos, 100) ecamsetup m2 AXIS PULSE listpos ecamlist m2 ecamlist m2 clear

    ecamlist
    Usage: ecamlist motor [clear]
    Print out current position list information for the given motor. Or remove already loaded position list.

    ecamon
    Usage: ecamon motor


    ecamoff
    Usage: ecamoff motor


    poslistsetup
    Usage: poslistsetup motor {cyclic|nocyclic} {pos_array}|{pos_first pos_last npos}
    Define for the given motor a list of positions that will be used cyclicelly or not. These positions can be given as an array of motor positions or as the beginning/ending positions plus the total number of positions. The positions are given in steps.
    Example:
    long array listpos[11]
    array_op("fill", listpos, 100)
    poslistsetup m2 nocyclic listpos
    poslist m2
    poslist m2 clear
    poslistmv m2 2

    poslist
    Usage: poslist motor [clear]
    Print out current position list information for the given motor. Or remove already loaded position list.

    poslistmv
    Usage: poslistmv motor index
    Move the given motor at the position corresponding to the given index within a pre-configured positions list. The index can be float, then the target position will be interpolated inbetween the two nearest pre-configured positions. The macro waits for the end of the motion.

    poslisttrackon
    Usage: poslisttrackon motor source_signal [start_index]
    The given motor will track the given source signal and move within the previously loaded list of positions starting from the position corresponding to the optional given index in the list.

    poslisttrackoff
    Usage: poslisttrackoff motor
    The given motor will no more track a signal. Its position is silently updated.

Internal Macros:
    icepapdebug
    Usage: icepapdebug [personal msg]
    Switch on or off the print of debug messages

    icepap_fiforst
    Usage: icepap_fiforst(dev)
    Reset socket communication and MASTER FIFOs

    icepap_cleanup
    Usage: icepap_cleanup(dev)
    Called on <Ctrl-C>

    icepapdebug_init
    Usage: icepapdebug_init
    Needed to initialize debug print out macro the first time the file is loaded.

    icepap__tocase
    Usage: icepap__tocase (string, case)
    Convert to lower (case==1) or to upper (case==0) case the string passed

    icepap__tolower
    Usage: icepap__tolower (string)
    Return the lower string of the string passed

    icepap__toupper
    Usage: icepap__toupper (string)
    Return the upper string of the string passed

    icepap_trim
    Usage: icepap_trim (string)


    icepap_round
    Usage: icepap_round (x)
    Return a well rounded integer as opposed to int() which always round down

    icepap_chkerr
    Usage: icepap_chkerr (ans)
    Check if the answer given contains an ERROR and if yes request the error message

    icepap_config
    Usage: icepap_config(num,type,p1,p2,p3)


    icepap_par
    Usage: icepap_par(num,key,todo,p1)


    _icepap_prestart_all
    Usage: _icepap_prestart_all(dev)


    _icepap_start_all
    Usage: _icepap_start_all(dev)


    _icepap_start_one
    Usage: _icepap_start_one(dev, addr, pos)


    icepap_cmd
    Usage: icepap_cmd(num,key,p1,p2)


    _icepap_print_info
    Usage: _icepap_print_info (dev,addr,mne)


    _icepap_print_info_driver
    Usage: _icepap_print_info_driver (dev,addr)
    TODO: unify with icepap_info macro

    _icepap_print_tabbed
    Usage: _icepap_print_tabbed(tab,str)


    _icepap_print_info_mot
    Usage: _icepap_print_info_mot (motor)


    _icepap_print_info_system
    Usage: _icepap_print_info_system (hostname)


    _icepap_fw_check_mot
    Usage: _icepap_fw_check_mot (motor)


    _icepap_fw_check_system
    Usage: _icepap_fw_check_system (hostname)


    _icepap_fw_compare
    Usage: _icepap_fw_compare (rev1, rev2)
    Compare deux revisions, given as strings, and returns: 0 if rev1 equal rev2 1 if rev1 > rev2 2 if rev1 < rev2 -1 if invalid revision numbers

    _icepap_fw_controller
    Usage: _icepap_fw_controller (hostname)
    Returns, for the specified system, the firmware version of the CONTROLLER

    _icepap_fw_driver
    Usage: _icepap_fw_driver (hostname, addr)
    Returns, for the specified system, the firmware version of the DRIVER specified by its address.

    _icepap_mem_driver
    Usage: _icepap_mem_driver (hostname, addr)
    Print out, for the specified system, detailed memory information of the DRIVER specified by its address. Returns non null if error occured.

    _icepap_fw_saved
    Usage: _icepap_fw_saved (hostname)
    Returns, for the specified system, the firmware version saved in flash

    icepap_lock
    Usage: icepap_lock axis
    CONFIG LOCK: Add a lock on the specified axis (ex: 0/2)

    icepap_unlock
    Usage: icepap_unlock axis
    CONFIG LOCK: Remove a lock on the specified axis (ex: 0/2)

    _icepap_islockfile
    Usage: _icepap_islockfile()
    CONFIG LOCK: Check that lock file exist and create empty if not

    _icepap_lock
    Usage: _icepap_lock (axis,lock)
    CONFIG LOCK: Add or remove (lock=1 or 0) a lock on the specified axis (ex: 0/2)

    _icepap_islock
    Usage: _icepap_islock (axis)
    CONFIG LOCK: Return 1 if a lock exist for the specified axis (ex: 0/2) Return 0 if there is no lock. Return -1 in case of error.

    _icepapcnt_gettemp
    Usage: _icepapcnt_gettemp (hostname:port, address)


    icepapcnt_config
    Usage: icepapcnt_config(num,type,p1,p2,p3)


    icepapcnt_cmd
    Usage: icepapcnt_cmd(num,key,p1,p2)


    _icepapenc_getpos
    Usage: _icepapenc_getpos (<counter_number>, <hostname:port>, <address>)


    _icepapenc_setpos
    Usage: _icepapenc_setpos (counter, hostname:port, address, pos)


    _icepap_setenc
    Usage: _icepap_setenc (counter_mne, position)


    icepapenc_config
    Usage: icepapenc_config(num,type,p1,p2,p3)


    icepapenc_cmd
    Usage: icepapenc_cmd(num,key,p1,p2)


    icepapcalc_config
    Usage: icepapcalc_config(num,typ,p1,p2,p3)


    icepapcalc_cmd
    Usage: icepapcalc_cmd(num,key,p1,p2)


    icepapmeas_config
    Usage: icepapmeas_config(num,type,p1,p2,p3)


    icepapmeas_cmd
    Usage: icepapmeas_cmd(num,key,p1,p2)


    _icepap_all
    Usage: _icepap_all (hostname, cmd, prefix_string)


    _icepap_rid_esrf
    Usage: _icepap_rid_esrf [hostname [hostname [...]]]
    Print out the rack ID of all ESRF ICEPAP racks

    _icepap_get_all_hostnames
    Usage: _icepap_get_all_hostnames (host[])
    Fills the given associative array with all ICEPAP hostnames found in DNS and which start with "ice..." Returns the number of system or -1 if error occured.

    _icepap_get_addrs
    Usage: _icepap_get_addrs (hostname, slaves_only)
    Returns the addresses of all ICEPAP modules alive on the specficed hostname. The addresses are returned in a single string, blank separated.

    _is_package_installed
    Usage: _is_package_installed (bliss_package_name)


    _is_same_subnetwork
    Usage: _is_same_subnetwork (icepap_hostname)


    _is_valid_version
    Usage: _is_valid_version (firmwares_list)


    _is_alive
    Usage: _is_alive (icepap_hostname)


    _emulate_alldis
    Usage: _emulate_alldis (dev, addr_list)
    Bypass external disable signal on the list of drivers given. (this was done with DISDIS command on old firmwares <2.0) Works only on firmware >=2.0

    _emulate_onedis
    Usage: _emulate_onedis (dev, addr)
    Bypass external disable signal on the driver given. (this was done with DISDIS command on old firmwares <2.0) Works only on firmware >=2.0

    _icepap_alldis
    Usage: _icepap_alldis(dev, silent)


    _icepap_getdev
    Usage: _icepap_getdev (string, n)
    Parse the string to get the ICEPAP device to talk to. Try to get as nth argument (starting from 1) in the string, if not prompt the user.

    _icepap_getfname
    Usage: _icepap_getfname (string, n)
    Parse the string to get the ICEPAP tocho file. Try to get as nth argument (starting from 1) in the string, if not prompt the user.

    _icepap_getaddr
    Usage: _icepap_getaddr (string, n)
    Parse the string to get the addr for programming. Try to get as nth argument (starting from 1) in the string, if not prompt the user.

    _icepap_getopts
    Usage: _icepap_getopts (string, n)
    Parse the string to get the options for programming. Try to get as nth argument (starting from 1) in the string, if not prompt the user. Any remaining argument is also return as option.

    _icepap_checkprog
    Usage: _icepap_checkprog (dev, filename, address, options)
    Check that the giving programming options are compatible with system to upgrade. Returns non null if error.

    _icepap_getracks
    Usage: _icepap_getracks (string, n)
    Parse the string to get the rack addresses for programming. Try to get as nth argument (starting from 1) in the string, if not prompt the user. Any remaining argument is also return as option.

    _icepap_prog
    Usage: _icepap_prog (dev,fname,addr,opt)
    Program a the ICEPAP module with the specified arguments. If no firmware file name is given, the programmatino will used the firmware saved in the controller flash.

    _icepap_wrbin
    Usage: _icepap_wrbin (dev,fname)
    Send the contain of the file to the ICEPAP using the ISG binary transfer protocol.

    icepap_mdspreset
    Usage: icepap_mdspreset [hostname:port]
    Reset the MASTER DSP

    icepap_ddsppgm_sl
    Usage: icepap_ddsppgm_sl [hostname:port [driver]]
    Program one or all DRIVER DSP numbered from 1 to 8 using the backplane serial line and the DDSP programm taken from MDSP flash (no binary transferred)

    _icepap_check
    Usage: _icepap_check (hostname:port)
    Do not touch, needed by the "raleur"

    _icepap_close
    Usage: _icepap_close (hostname:port)


    _icepap_err
    Usage: _icepap_err


    _icepap_warn
    Usage: _icepap_warn


    _icepap_postmove
    Usage: _icepap_postmove (num, status)


    _icepap_stopcode
    Usage: _icepap_stopcode (num, status)
    Decode stop reason for the driver status given. No action, print only for diagnostic

    _icepap_stopcode2str
    Usage: _icepap_stopcode2str (mne, stop_code)
    Returns a string describing the given stop code for the given motor.

    _icepap_wr
    Usage: _icepap_wr (dev,addr,cmd)


    _icepap_lastchar
    Usage: _icepap_lastchar (ans)
    Returns the last valid char of the IcePAP answer. The terminator chars are ignored.

    _icepap_wrrd
    Usage: _icepap_wrrd (dev,addr,cmd)


    _icepap_query
    Usage: _icepap_query (dev,addr,cmd,silent)


    _icepap_patch
    Usage: _icepap_patch ()
    Temporary patch

    _icepap_patch_email
    Usage: _icepap_patch_email ()
    Temporary email after patch

    _icepap_email
    Usage: _icepap_email (message)
    Send an email with the specificied patch

    _icepap_hist_init
    Usage: _icepap_hist_init ()
    Init the ICEPAP history if needed

    _icepap_hist_add
    Usage: _icepap_hist_add (dev,cmd)
    Add to the ICEPAP history an entry

    _icepap_hist_append
    Usage: _icepap_hist_append (str)
    Append a string to the last line in the ICEPAP history

    _icepap_hist_dump
    Usage: _icepap_hist_dump ()
    Return a string with the history of commands sent to ICEPAP systems

    _icepap_ismot
    Usage: _icepap_ismot (motor_mne)
    Returns non null if the given motor mne is not an IcePAP one

    icepap_duplicate_conf
    Usage: icepap_duplicate_conf (dev,src_addr,dst_addr)
    Will copy the source driver configuration to the destination one (bypass of icepapcms) ex: ("iceid207",11,25)

    _lvcheck_mne
    Usage: _lvcheck_mne _lvcheck_mne(virtual_axis_mne)
    Returns non null if the given axis mnemonic is not a valid virtual axis composed of real linked axes.

    _lrcheck_mne
    Usage: _lrcheck_mne _lrcheck_mne(real_axis_mne)
    Returns non null if the given axis mnemonic is not a real linked axis member of a virtual axis.

    _linkedstat
    Usage: _linkedstat (linked_axis)
    Update the global array ICEPAP[] with information about the given virtual axis. Returns non null if an error occured.

    _linkedsync
    Usage: _linkedsync (virtual_axis_mne, position)
    Synchronizes all real linked axes members of the given virtual axis to the give position. No motion will take place. The position is given in user units of the virtual axis. Returns non null if an error occured.

    _linkedhome
    Usage: _linkedhome ("mne "home+"|"home-" [[mne "home+"|"home-"]...]", mode)
    Launch a homing sequence on the given list of real linked axes. If the mode option is set to "strict" then the first real linked axis that finds its home switch will stop the homing sequence of the other axes. The global ICEPAP[] will then contains the name and the home position of this real axis. The macros does not wait for the end of the homing sequence. Returns non null if an error occured.

    _linkedmvr
    Usage: _linkedmvr (real_axis_mne, relative_position)


    _linkedmv
    Usage: _linkedmv ("mne posititon [[mne position]...]")
    Move the specified real linked axes to absolute positions. Returns non null if an error occured.

    _linked_clean_cleanup
    Usage: _linked_clean_cleanup ()
    Needed to avoid side effects on <ctrl-C>

    _linked_stop
    Usage: _linked_stop ("dev=addr [addr...]")
    Stop the motion on the speficied axis identified by their address

    _linkedresetclosedloop
    Usage: _linkedresetclosedloop ("mne [mne ...]")
    Reset closed loop error on the specified real linked axes. Returns non null if an error occured.

    _linkedopenclosedloop
    Usage: _linkedopenclosedloop ("mne [mne ...]")
    Open the closed loop on the specified real linked axes. Returns non null if an error occured.

    _linkedreset
    Usage: _linkedreset (virtual_axis_mne)
    Synchronizes all real linked axes members of the given virtual axis to the give position. No motion will take place. Returns non null if an error occured.

    _ecamsetup
    Usage: _ecamsetup (motor, source, signal, posbeg, posend, npos)
    Returns non null if an error occured.

    _ecamaction
    Usage: _ecamaction (motor, action)
    Swith "ON" of "OFF" the electronic cam on the given axis which must have been previously configured with "ecamdat" macro. Returns non null if an error occured.

    _poslistsetup
    Usage: _poslistsetup (motor, mode, posbeg, posend, npos) or (motor, mode, posarray)
    Define for the given motor a list of positions. Returns non null if an error occured.

    _poslistmv
    Usage: _poslistmv (motor, index)
    Move the given motor at the position corresponding to the given index within a pre-configured positions list. The index can be float, then the target position will be interpolated inbetween the two nearest pre-configured positions. The function waits for the end of the motion. Returns non null if an error occured.

    _poslist_stop
    Usage: _poslist_stop (motor)
    Stop the motion on the speficied motor and resynchronize silently SPEC position

    _poslisttrackon
    Usage: _poslisttrackon (motor, src_sig) or (motor, src_sig, idx)
    The given motor will track the given source signal and move within the previously loaded list of positions starting from the position corresponding to the optional given index in the list. Returns non null if an error occured.

    _poslisttrackoff
    Usage: _poslisttrackoff (motor)
    The given motor will no more track a signal.

    _icepap_send_array
    Usage: _icepap_send_array (dev, addr, cmd, array, silent)
    Send the binary command with its data given in a SPEC data array. Supported types for the array are: short (16bits) ushort (16bits) ulong (32bits) float (32bits) double (64bits) Example: ushort array shdata[4] array_op("fill",shdata,2,2) _icepap_send_array("isgtmp5","#0","*ISG BINDATA WORD 4",shdata)

    _icepap_send_ushortarray
    Usage: _icepap_send_ushortarray (dev, addr, cmd, array, silent)
    Send the binary command with its data given in a SPEC ushort data array.

    _icepap_array_size
    Usage: _icepap_array_size (array)
    Returns the size in bytes of the data type of the given array. Otherwise -1 if not supported array type

    _icepap_array_type
    Usage: _icepap_array_type (array)
    Returns a string corresponding to IcePAP data type Otherwise "ERROR" if not supported array type

    _icepap_get_ushortarray
    Usage: _icepap_get_ushortarray (dev,addr,cmd,array)
    NOT IMPLEMENTED YET

Filename: ice.mac
Author: MP BLISS (Original 9/07).
$Revision: 1.87 $ / $Date: 2017/09/25 13:32:14 $
Last mod.: 13/10/2023 16:35 by guilloud