From 9300263411ac0c943fbc11a30a1c2d10d7581cf1 Mon Sep 17 00:00:00 2001 From: Jerzy Jamroz <jerzy.jamroz@esss.se> Date: Mon, 25 Nov 2019 13:59:21 +0100 Subject: [PATCH] Update README.md --- .gitignore | 1 + LICENSE | 339 ++++++++++++++++++ README.md | 15 +- init/.gitkeep | 0 init/README.md | 19 + init/ess.json | 136 +++++++ spreadsheets/.gitkeep | 0 .../20191031_Supercycle_Example_EX1.xlsx | Bin 0 -> 14966 bytes supercycles/.gitkeep | 0 tools/.gitkeep | 0 tools/README.md | 8 + 11 files changed, 516 insertions(+), 2 deletions(-) create mode 100644 .gitignore create mode 100644 LICENSE create mode 100644 init/.gitkeep create mode 100644 init/README.md create mode 100644 init/ess.json create mode 100644 spreadsheets/.gitkeep create mode 100644 spreadsheets/20191031_Supercycle_Example_EX1.xlsx create mode 100644 supercycles/.gitkeep create mode 100644 tools/.gitkeep create mode 100644 tools/README.md diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e43b0f9 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.DS_Store diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..dd04245 --- /dev/null +++ b/LICENSE @@ -0,0 +1,339 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc., <http://fsf.org/> + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + LookupTables + Copyright (C) 2019 icshwi + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + {signature of Ty Coon}, 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. diff --git a/README.md b/README.md index c758f41..c7d1dd9 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,14 @@ -# LookupTables +ESS Lookup Tables +-- -ESS Lookup Tables \ No newline at end of file +# Directory description + +* init: will be loaded during the initialization. The facility constant configuration. +* supercycles: will be loaded upon the selection (memorized PV with the supercycle table selection). The dynamic routines/cycles (runtime). +* spreadsheets: examples for the supercycle usage. +* tools: productivity enhancements. + +# Documentation + +## Data buffer +* https://confluence.esss.lu.se/display/HAR/Data+Buffer \ No newline at end of file diff --git a/init/.gitkeep b/init/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/init/README.md b/init/README.md new file mode 100644 index 0000000..4b18289 --- /dev/null +++ b/init/README.md @@ -0,0 +1,19 @@ +init +-- + +# Usage +* Load this file upon the startup. The file contains the constant configuration of the machine. + +# Note +* modes->id: will be hardcoded in the firmware by + * the machine protection group + * PLC group +* EVT_14HZ is always ON. The cycle fiducial mark and the first event within the sequence. + +# Target Segment +* pv: TgSeg-RB [uint] - the actuall target segment number. + +# TODO +* Event mapping for each mode. +* 1Hz beam operation means that which events always exist in the 1Hz beam? ION_ST/END? +* Constant base time shift for each event code. \ No newline at end of file diff --git a/init/ess.json b/init/ess.json new file mode 100644 index 0000000..d7c58cd --- /dev/null +++ b/init/ess.json @@ -0,0 +1,136 @@ +{ + "Modes": { + "None": { + "id": 0, + "events": "None" + }, + "Probe Beam": { + "id": 1, + "events": [ + "ION_ST", + "ION_END", + "BPULSE_CM", + "BPULSE_ST", + "BPULSE_END", + "DATA" + ] + }, + "Fast Tuning": { + "id": 2, + "events": [ + "ION_ST", + "ION_END", + "BPULSE_CM", + "BPULSE_ST", + "BPULSE_END", + "DATA" + ] + }, + "Slow Tuning": { + "id": 3, + "events": [ + "ION_ST", + "ION_END", + "BPULSE_CM", + "BPULSE_ST", + "BPULSE_END", + "DATA" + ] + }, + "Fat Probe": { + "id": 4, + "events": [ + "ION_ST", + "ION_END", + "BPULSE_CM", + "BPULSE_ST", + "BPULSE_END", + "DATA" + ] + }, + "Slow Studies": { + "id": 5, + "events": [ + "ION_ST", + "ION_END", + "BPULSE_CM", + "BPULSE_ST", + "BPULSE_END", + "DATA" + ] + }, + "Long Pulse Verification": { + "id": 6, + "events": [ + "ION_ST", + "ION_END", + "BPULSE_CM", + "BPULSE_ST", + "BPULSE_END", + "DATA" + ] + }, + "Shielding Verification": { + "id": 7, + "events": [ + "ION_ST", + "ION_END", + "BPULSE_CM", + "BPULSE_ST", + "BPULSE_END", + "DATA" + ] + }, + "Production": { + "id": 8, + "events": [ + "ION_ST", + "ION_END", + "BPULSE_CM", + "BPULSE_ST", + "BPULSE_END", + "DATA" + ] + }, + "Global": { + "pv": "PBMod" + } + }, + "Destination": { + "None": { + "id": 0 + }, + "LEBT FC": { + "id": 1 + }, + "MEBT FC": { + "id": 2 + }, + "DTL 2 FC": { + "id": 3 + }, + "DTL 4 FC": { + "id": 4 + }, + "Spokes FC": { + "id": 5 + }, + "MBL Beam Stop": { + "id": 6 + }, + "Tuning Dump": { + "id": 7 + }, + "Target": { + "id": 8 + }, + "Global": { + "pv": "PBDest" + } + }, + "Target": { + "Global": { + "pv": "TgSeg" + } + } +} \ No newline at end of file diff --git a/spreadsheets/.gitkeep b/spreadsheets/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/spreadsheets/20191031_Supercycle_Example_EX1.xlsx b/spreadsheets/20191031_Supercycle_Example_EX1.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..af476dc4e24a86239151e0c7ef2b966fe362643e GIT binary patch literal 14966 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 IwqK?H2ZGhd+5i9m literal 0 HcmV?d00001 diff --git a/supercycles/.gitkeep b/supercycles/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/tools/.gitkeep b/tools/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/tools/README.md b/tools/README.md new file mode 100644 index 0000000..9d65423 --- /dev/null +++ b/tools/README.md @@ -0,0 +1,8 @@ +Tools +-- + +# Convert .json to a table +* http://json2table.com/ + +# Check the .json syntax +* https://jsonformatter.curiousconcept.com/ -- GitLab