280 likes | 509 Views
What Does ACL Stand For, Anyway?. Originally, Accelerator Command LanguageAlso, ACNET Command LanguageSometimes, ACNET Control Language (not by me). What is ACL?.
E N D
1. ACL – An Introduction Brian Hendricks
2. What Does ACL Stand For, Anyway? Originally, Accelerator Command Language
Also, ACNET Command Language
Sometimes, ACNET Control Language (not by me)
3. 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
4. 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)
5. 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}
6. 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
7. 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
8. 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
9. 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
10. ACL Operators Arithmetic
+, -, *, /, ^, %, >>, <<, plus, minus, times
Logical
&&, ||, and, or, .xor.
Comparison
<, >, <=, >=, =, ==, equals
11. 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
12. 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}
13. 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}
14. Device Field Specifiers Only used for alarm properties
Normal dot notation
Examples
min, max, nominal, mask, limit_data_type, etc.
read M:OUTTMP.min
15. 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
16. 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…
17. Substitution Options Substitute devices
G:DEVnnn
used anywhere a device expression can be used
Substitute strings
stringnnn
literal string substitution
18. 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 – ‘@’
19. Example 1
20. Example 2
21. Example 3
22. 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
23. 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
24. 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