acl – an introduction brian hendricks. what does acl stand for, anyway? originally, accelerator...

29
ACL – An Introduction Brian Hendricks

Upload: sharon-cunningham

Post on 01-Jan-2016

232 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: ACL – An Introduction Brian Hendricks. What Does ACL Stand For, Anyway? Originally, Accelerator Command Language Also, ACNET Command Language Sometimes,

ACL – An Introduction

Brian Hendricks

Page 2: ACL – An Introduction Brian Hendricks. What Does ACL Stand For, Anyway? Originally, Accelerator Command Language Also, ACNET Command Language Sometimes,

What Does ACL Stand For, Anyway?

• Originally, Accelerator Command Language

• Also, ACNET Command Language

• Sometimes, ACNET Control Language (not by me)

Page 3: ACL – An Introduction Brian Hendricks. What Does ACL Stand For, Anyway? Originally, Accelerator Command Language Also, ACNET Command Language Sometimes,

What is ACL?

• “Simple” script language– borrows concepts from other languages

• Interpreted, not compiled– runtime compilation available

• Supports ACNET device notation• Implemented in ASCII text files and

database text files• Built into CLIB

Page 4: ACL – An Introduction Brian Hendricks. What Does ACL Stand For, Anyway? Originally, Accelerator Command Language Also, ACNET Command Language Sometimes,

What is ACL Used For?

• Lex SA (script object)– originally to provide control– also supports display scripts

• Sequencer– eliminates the need for most new commands

• Parameter page (also parameter window)– supports complicated settings, etc.

• Command line interface (general use)

Page 5: ACL – An Introduction Brian Hendricks. What Does ACL Stand For, Anyway? Originally, Accelerator Command Language Also, ACNET Command Language Sometimes,

How Can I Use ACL?

• Call it from your program using CLIB interface

• Command line interface (type in ‘acl’)• Program tools IDE (‘ACL Edit/Run’)• Parameter page and parameter window• Web

– http://adcon.fnal.gov/cgi-bin/acl?acl={insert ACL code here}

Page 6: ACL – An Introduction Brian Hendricks. What Does ACL Stand For, Anyway? Originally, Accelerator Command Language Also, ACNET Command Language Sometimes,

Language Components

• Commands– roughly 100

• Variables– expire when the current script ends

• Symbols– expire when the calling program ends– names start with a dollar sign

• Operators• Device expressions

Page 7: ACL – An Introduction Brian Hendricks. What Does ACL Stand For, Anyway? Originally, Accelerator Command Language Also, ACNET Command Language Sometimes,

ACL Commands

• Device oriented– read, list, show, set, on, off, turn, reset, positive,

negative , toggle, delta_set , increment, decrement, compare, copy, download, restore, fill, ramp, enable, disable, bypass, activate, deactivate, search, logger_get

• Program control– loop, endloop, exitloop, while, endwhile, continue, if,

elseif, else, endif, exit , on_error, gosub, return, retry, break

• Special support– camac, gpib, timer_event, trigger, step_motor

Page 8: ACL – An Introduction Brian Hendricks. What Does ACL Stand For, Anyway? Originally, Accelerator Command Language Also, ACNET Command Language Sometimes,

ACL Commands (continued)

• Input/output– print, output, input

• Environmental control– timeout, ftd, data_event, data_source

• System information– setting_log, alarm_log, event_log, state_log,

node_info, node, event_info, mdat_info, program_info, user_info, error_text

Page 9: ACL – An Introduction Brian Hendricks. What Does ACL Stand For, Anyway? Originally, Accelerator Command Language Also, ACNET Command Language Sometimes,

ACL Commands (continued)

• Variable control– declare, resize

• run– runs other programs including other ACL

scripts

• wait– pauses the script for a period of time or until a

clock event or state event occurs

Page 10: ACL – An Introduction Brian Hendricks. What Does ACL Stand For, Anyway? Originally, Accelerator Command Language Also, ACNET Command Language Sometimes,

ACL Operators

• Arithmetic– +, -, *, /, ^, %, >>, <<, plus, minus, times

• Logical– &&, ||, and, or, .xor.

• Comparison– <, >, <=, >=, =, ==, equals

Page 11: ACL – An Introduction Brian Hendricks. What Does ACL Stand For, Anyway? Originally, Accelerator Command Language Also, ACNET Command Language Sometimes,

ACL Special Operators

• is (isnot) – device status– on, off, ready, tripped, remote, local, positive negative,

ramping, dc, good, alarming, enabled, disabled, bypassed, active, inactive, defined, undefined

• has (doesnt_have) – database attribute– reading, setting, status, control, analog_alarm,

digital_alarm, reset_control, on_control, off_control, positive_control, negative_control, on_status, ready_status, remote_status, polarity_status

Page 12: ACL – An Introduction Brian Hendricks. What Does ACL Stand For, Anyway? Originally, Accelerator Command Language Also, ACNET Command Language Sometimes,

Device Expressions

• Property specification– : and ? -> reading, _ -> setting, | -> basic status,

& -> basic control, @ -> analog alarm, $ -> digital alarm

• Array notation [begin_index:end_index]– T:SBDASS[0:36] or T:SBDASS[]

• Length/offset notation {offset:length}– T:SBDASS{0:148}

Page 13: ACL – An Introduction Brian Hendricks. What Does ACL Stand For, Anyway? Originally, Accelerator Command Language Also, ACNET Command Language Sometimes,

Device Modifiers

• src – data source– dp (default), db, sr:{file}, sda:{file}:{case}:

{set}, dl:{date}:{node}

• scaling type– scaled (default), raw, primary

• ftd=(FTD string}

Page 14: ACL – An Introduction Brian Hendricks. What Does ACL Stand For, Anyway? Originally, Accelerator Command Language Also, ACNET Command Language Sometimes,

Device Field Specifiers

• Only used for alarm properties

• Normal dot notation

• Examples– min, max, nominal, mask, limit_data_type, etc.– read M:OUTTMP.min

Page 15: ACL – An Introduction Brian Hendricks. What Does ACL Stand For, Anyway? Originally, Accelerator Command Language Also, ACNET Command Language Sometimes,

Device Display Types

• ascii – display reading as ASCII text• state_text – display as state text• bit_status – display basic status with bit

descriptions• node – display reading as an ACNET node

value• acnet_error – display reading as an ACNET

error value

Page 16: ACL – An Introduction Brian Hendricks. What Does ACL Stand For, Anyway? Originally, Accelerator Command Language Also, ACNET Command Language Sometimes,

Device List Specifiers

• name={string} (uses standard SQL wildcards)

• node={node name}

• type={device type string or number}

• family={family device}

• file={file name}

• Many more…

Page 17: ACL – An Introduction Brian Hendricks. What Does ACL Stand For, Anyway? Originally, Accelerator Command Language Also, ACNET Command Language Sometimes,

Substitution Options

• Substitute devices– G:DEVnnn– used anywhere a device expression can be used

• Substitute strings– stringnnn– literal string substitution

Page 18: ACL – An Introduction Brian Hendricks. What Does ACL Stand For, Anyway? Originally, Accelerator Command Language Also, ACNET Command Language Sometimes,

ACL’s Special Characters

• Comment– ‘#’ and the dreaded ‘!’– ‘!’ can also be used in ‘!=‘ and ‘!exists(variable)’– comments text to end of line

• End of line – ‘;’– allows multiple commands per line

• Line continuation – ‘\’– better than Windows’ ‘^’

• Execute an ACL file – ‘@’

Page 19: ACL – An Introduction Brian Hendricks. What Does ACL Stand For, Anyway? Originally, Accelerator Command Language Also, ACNET Command Language Sometimes,

Example 1

! Conditionally turn on a device

if G:DEV00 is off

turn G:DEV00 on

endif

Page 20: ACL – An Introduction Brian Hendricks. What Does ACL Stand For, Anyway? Originally, Accelerator Command Language Also, ACNET Command Language Sometimes,

Example 2

! Turn Booster low level RF curves off

turn B:BIAS2 off ! sends off command to old bias curveturn B:BIASON off ! sends off to the new DSP bias curveturn B:APGC off ! sends off to the anode program curveturn B:CIGC off ! sends off to the cascode curvenegative B:VDFSM1 ! switches polarity to (-) for DC operation

! for the frequency curve on DSP VXI

Page 21: ACL – An Introduction Brian Hendricks. What Does ACL Stand For, Anyway? Originally, Accelerator Command Language Also, ACNET Command Language Sometimes,

Example 3

! Test a C460 module for the copy time to G(I) bug

while (1 = 1) ! loop forever

wait/event/delay=1000 5 ! wait for event 05 plus 1 second

print "Event detected!“

camac/select/node=ncamac/crate=2/slot=13 ! select module

camac/fa=26:10 ! restore G(I) table

endwhile

Page 22: ACL – An Introduction Brian Hendricks. What Does ACL Stand For, Anyway? Originally, Accelerator Command Language Also, ACNET Command Language Sometimes,

Help for ACL

• Command line interface– ‘help’ for general help– ‘help {command}’ for command help

• Program Tools interface– ‘ACL Help’ for general help– ‘ACL Command Help’ for command help

• Web document– http://adcon.fnal.gov/controls/clib/intro_acl.html

• Me

Page 23: ACL – An Introduction Brian Hendricks. What Does ACL Stand For, Anyway? Originally, Accelerator Command Language Also, ACNET Command Language Sometimes,

Other ACL Tools

• ACL database file editor (D136)– place to edit scripts used in Lex SA

– requires special permission to write files

• ACL file launcher– supports launching a predefined ACL script (S69)

• ACL spawn– supports asynchronous execution of ACL scripts

Page 24: ACL – An Introduction Brian Hendricks. What Does ACL Stand For, Anyway? Originally, Accelerator Command Language Also, ACNET Command Language Sometimes,

Summary

• Utilized in many environments– Sequencer– Lex SA– testing (new damper, CAMAC debugging, front

end debugging)– examining the control system

• Empowers end users• Has grown to meet the needs of those users

Page 25: ACL – An Introduction Brian Hendricks. What Does ACL Stand For, Anyway? Originally, Accelerator Command Language Also, ACNET Command Language Sometimes,
Page 26: ACL – An Introduction Brian Hendricks. What Does ACL Stand For, Anyway? Originally, Accelerator Command Language Also, ACNET Command Language Sometimes,
Page 27: ACL – An Introduction Brian Hendricks. What Does ACL Stand For, Anyway? Originally, Accelerator Command Language Also, ACNET Command Language Sometimes,
Page 28: ACL – An Introduction Brian Hendricks. What Does ACL Stand For, Anyway? Originally, Accelerator Command Language Also, ACNET Command Language Sometimes,
Page 29: ACL – An Introduction Brian Hendricks. What Does ACL Stand For, Anyway? Originally, Accelerator Command Language Also, ACNET Command Language Sometimes,