escet merge requestshttps://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests2022-07-01T15:07:47Zhttps://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/341#387 Add README and CODE_OF_CONDUCT files and missing trademarks2022-07-01T15:07:47ZDennis Hendriks#387 Add README and CODE_OF_CONDUCT files and missing trademarks- Added mandatory `README` file.
- Added recommended `CODE_OF_CONDUCT` file.
- Added trademark for first and prominent mentions of ESCET in root .asciidoc files.
Closes #387- Added mandatory `README` file.
- Added recommended `CODE_OF_CONDUCT` file.
- Added trademark for first and prominent mentions of ESCET in root .asciidoc files.
Closes #387v0.6https://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/342#386 Make cross-docset links to ESCET website version-specific2022-07-04T15:07:15ZDennis Hendriks#386 Make cross-docset links to ESCET website version-specificMade cross-docset links to ESCET website version-specific. E.g. one release notes page links to another for the same version.
Note that:
* Replacements happen during the Maven build. As such, looking at the AsciiDoc sources with any tex...Made cross-docset links to ESCET website version-specific. E.g. one release notes page links to another for the same version.
Note that:
* Replacements happen during the Maven build. As such, looking at the AsciiDoc sources with any text editor, with the Eclipse AsciiDoctor Editor, or via the GitLab web GUI, the links won't work directly.
* I've made sure that the links work when built for a dev build, as well as for milestone/RC/final releases.
* I'ved tested this locally. We can test this out for real with v0.6-RC2.
Closes #386v0.6https://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/343#389 Updated release notes for v0.6-RC2.2022-07-04T15:50:21ZDennis Hendriks#389 Updated release notes for v0.6-RC2.Addresses #389Addresses #389v0.6https://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/344#389 develop to master for v0.6-RC22022-07-04T16:27:49ZDennis Hendriks#389 develop to master for v0.6-RC2Addresses #389Addresses #389v0.6https://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/345#396 Link release note issues to GitLab issue URLs2022-07-06T20:27:56ZFerdie Reijnen#396 Link release note issues to GitLab issue URLsCloses #396Closes #396v0.6https://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/346#342 Updated release notes for v0.62022-07-06T21:15:27ZFerdie Reijnen#342 Updated release notes for v0.6Addresses #342Addresses #342v0.6https://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/347#342 develop to master for v0.62022-07-07T06:53:15ZFerdie Reijnen#342 develop to master for v0.6Addresses #342Addresses #342v0.6https://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/348#393 Prepare Git repo for v0.72022-07-07T17:32:22ZFerdie Reijnen#393 Prepare Git repo for v0.7Closes #393Closes #393v0.7https://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/349#368 Implement cif2dmm2023-01-18T06:23:03ZAlbert Hofkamp#368 Implement cif2dmmRewritten from scratch. Extracts CIF object relations from a specification, in particular from plants and input variables to invariants and requirement automata, through shared events, and accessed locations and variables.
As the theory...Rewritten from scratch. Extracts CIF object relations from a specification, in particular from plants and input variables to invariants and requirement automata, through shared events, and accessed locations and variables.
As the theory isn't developed beyond normal automata, much of the implementation was guided by the spirit of the math and the previous attempt. As such, it would be helpful if @mgoorden7u4 could have a look at it.
Some notes about the submitted files:
- Code is in `oee.cif.multilevel` as that it is part of that application.
- The pre-checker should only check for `cif2dmm` requirements, not sure abut "locations references must be to plant locations".
- While it is no doubt a sane rule, I am not sure it is strictly a requirement. Other code simply ignores all requirement automata locations, which has the same doubts of course.
- The pre-checker is not collecting problems, it simply throws on the first found problem. The reason for that is that this checker needs to be integrated in the multilevel application eventually together with eg datasynthesis pre-conditions. Also, At the time of writing a more modular prechecker was being created, it seemed a waste of time to finish this
- `Cif2Dmm` is the main program of the sub-routine, and is also the result (the 4 DMM variables at the top).
- It collects references by searching through parts of the specification using the the `Collector` class.
- The `FoundObjects` class stores the all relevant CIF elements (events, locations, variables) in an array to obtain a unique index for each element, and keeps `BitSet`s of "referenced and possibly shared" references to such elements from "referring" elements (automata and invariants).
- All kinds of objects are all thrown into one heap, as code is working with the bitsets.
- Once the relations are found, constructing product systems is simple in `FoundObjects.partitionPlantsToProductSystems()`.
- And then it is time to construct the DMMs from the bitsets. I opted for splitting the relations so the rows and columns of a DMM have only one kind of CIF element. I didn't bother removing empty rows or columns, not sure if that is needed.
Closes #368Albert HofkampAlbert Hofkamphttps://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/350#398 Various checks for CIF checker crash for violations in the root of the s...2022-09-11T18:09:55ZFerdie Reijnen#398 Various checks for CIF checker crash for violations in the root of the specificationCloses #398Closes #398v0.7https://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/351#145 Add confluence check to controllercheck2023-08-23T20:26:59ZAlbert Hofkamp#145 Add confluence check to controllercheckAdds confluence checking to the `controllercheck` application, as both properties should hold before a specification can be used in a PLC implementation.
Refactored computing MDD and other data into a new class, which is then made avail...Adds confluence checking to the `controllercheck` application, as both properties should hold before a specification can be used in a PLC implementation.
Refactored computing MDD and other data into a new class, which is then made available to both finite response and confluence checking.
It is likely easier to read each commit separately.v0.7Albert HofkampAlbert Hofkamphttps://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/352Draft: #382 Make plcgen0 accessible in ESCET.2022-08-11T10:50:09ZAlbert HofkampDraft: #382 Make plcgen0 accessible in ESCET.Making previous art available for testing and reference.
An improved version is being created in #397.
## Restrictions:
``` text
// 1. no external functions
// 2. no tau events
// 3. no types: Set, Func, Comp...Making previous art available for testing and reference.
An improved version is being created in #397.
## Restrictions:
``` text
// 1. no external functions
// 2. no tau events
// 3. no types: Set, Func, CompParamWrap, CompInstWrap, ComponentDef, Dist, Dict, Void.
// 4. no automaton reference (or self) child isn't allowed
// 5. no exprs: slice, tau, event, set, time, self, component, compParamWrap, compInstWrap, dict
// 6. no urgent locations/edges
// 7. must have trivially true initial location and expressions.
// 8. no empty lists/arrays
// 9. no variable length lists
// 10. no continue function statement (from FuncGen.java:186, even though funcs are not allowed)
// 11. no function parameter names that are are keywords, including EN and ENO. (from renameNames:393)
// 12. no string projection
// 13. no multiple initial values
// 14. no stdLibFuncs: ACOSH ASINH ATANH BERNOULLI BETA BINOMIAL CEIL CONSTANT COSH DELETE EMPTY ERLANG EXPONENTIAL FLOOR FORMAT GAMMA GEOMETRIC LOG_NORMAL NORMAL POISSON POP RANDOM ROUND SCALE SIGN SINH SIZE TANH TRIANGLE UNIFORM WEIBULL
// 15. no unary expression SAMPLE
// 16. no binary expression ELEMENT_OF SUBSET
// 17. no internal functions with cyclic dependencies (there should not be functions)
// 18. no an event must have at least one non-monitoring automaton. (-> finite response)
// 19. no list/array of empty tuples
// 20. no constants may not use functions (both internal and stdlib).
```
CIF code that will cause crashes/incorrect PLC code:
``` text
- Using tuples in updates creates incorrect PLC code, eg "edge a do x:=(1,2);"
- Events that are declared within an automaton but not used anywhere result in an AssertionError.
- Multi-assignments result in a java.lang.NullPointerException. eg "edge a do (x,y) := (y,x);"
```
## Using the generator:
- Make an empty IO table named `empty.csv`.
- Make a `.tooldef` file with the following text:
``` tooldef
// Defines the 'plcgen0 tool.
tool int plcgen0(list string args = [], string stdin = "-", string stdout = "-", string stderr = "-",
bool appendOut = false, bool appendErr = false, bool errToOut = false, bool ignoreNonZeroExitCode = false):
return app("org.eclipse.escet.cif.plcgen0", "org.eclipse.escet.cif.plcgen0.app.PlcGen2App", args, stdin, stdout, stderr,
appendOut, appendErr, errToOut, ignoreNonZeroExitCode);
end
// Run the plcgen0 program.
// - Replace "abb" by "siemens-7-1500" to get siemens output, (Other targets will likely fail.)
// - Replace "model.cif" by the name of the cif model to convert,
// - stdout and stderr settings may be omitted to get the output at the console.
plcgen0(["--io-table=empty.csv", "--target-type=abb", "model.cif"], stdout="out_file", stderr="err_file");
// For a non-empty IO table, the following fields are required for each line in the .CSV file:
// - PLC address,
// - PLC typename,
// - Full path to CIF input-variable or output location/disc-variable/alg-variable
//
// For example for "input bool input1" and "alg bool output1 = ..." in the root of the specification, the following is accepted.
// %I1,BOOLEAN,input1
// %Q2,BOOLEAN,output1
```
- Adjust the `plcgen0` line to your liking, `plcgen0(["-h"]);` will dump the accepted options.https://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/353#400 Refactor `cif2plc` writers2022-08-11T05:05:26ZAlbert Hofkamp#400 Refactor `cif2plc` writersTo enable using the existing `cif2plc` writers for `plcgen` static function code should not grab external state from a future unused option class. Solved by instantiating the writers, and moving code generation into them, thus also clean...To enable using the existing `cif2plc` writers for `plcgen` static function code should not grab external state from a future unused option class. Solved by instantiating the writers, and moving code generation into them, thus also cleaning up the model layer.
Addresses #400v0.7Albert HofkampAlbert Hofkamphttps://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/354#364 CIF data-based synthesis performance test models: bridge2022-08-10T07:51:40ZFerdie Reijnen#364 CIF data-based synthesis performance test models: bridgeAddresses #364Addresses #364v0.7https://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/355#364 CIF data-based synthesis performance test models: sudoku2022-08-10T19:46:21ZFerdie Reijnen#364 CIF data-based synthesis performance test models: sudokuAddresses #364Addresses #364v0.7https://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/356#401 Be more careful in ignoring 'target' directories2022-08-11T04:59:09ZAlbert Hofkamp#401 Be more careful in ignoring 'target' directoriesCloses #401Closes #401v0.7Albert HofkampAlbert Hofkamphttps://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/357Draft: #382 (take 2) Make plcgen0 accessible in ESCET.2023-12-22T13:44:51ZAlbert HofkampDraft: #382 (take 2) Make plcgen0 accessible in ESCET.Making previous art available for testing and reference.
**This branch should not be merged**.
An improved version is being created in #397.
## Restrictions:
``` text
// 1. no external functions
// 2. no tau events
...Making previous art available for testing and reference.
**This branch should not be merged**.
An improved version is being created in #397.
## Restrictions:
``` text
// 1. no external functions
// 2. no tau events
// 3. no types: Set, Func, CompParamWrap, CompInstWrap, ComponentDef, Dist, Dict, Void.
// 4. no automaton reference (or self) child isn't allowed
// 5. no exprs: slice, tau, event, set, time, self, component, compParamWrap, compInstWrap, dict
// 6. no urgent locations/edges
// 7. must have trivially true initial location and expressions.
// 8. no empty lists/arrays
// 9. no variable length lists
// 10. no continue function statement (from FuncGen.java:186, even though funcs are not allowed)
// 11. no function parameter names that are are keywords, including EN and ENO. (from renameNames:393)
// 12. no string projection
// 13. no multiple initial values
// 14. no stdLibFuncs: ACOSH ASINH ATANH BERNOULLI BETA BINOMIAL CEIL CONSTANT COSH DELETE EMPTY ERLANG EXPONENTIAL FLOOR FORMAT GAMMA GEOMETRIC LOG_NORMAL NORMAL POISSON POP RANDOM ROUND SCALE SIGN SINH SIZE TANH TRIANGLE UNIFORM WEIBULL
// 15. no unary expression SAMPLE
// 16. no binary expression ELEMENT_OF SUBSET
// 17. no internal functions with cyclic dependencies (there should not be functions)
// 18. no an event must have at least one non-monitoring automaton. (-> finite response)
// 19. no list/array of empty tuples
// 20. no constants may not use functions (both internal and stdlib).
```
CIF code that will cause crashes/incorrect PLC code:
``` text
- Using tuples in updates creates incorrect PLC code, eg "edge a do x:=(1,2);"
- Events that are declared within an automaton but not used anywhere result in an AssertionError.
- Multi-assignments result in a java.lang.NullPointerException. eg "edge a do (x,y) := (y,x);"
```
## Using the generator:
- Make an empty IO table named `empty.csv`.
- Make a `.tooldef` file with the following text:
``` tooldef
// Defines the 'plcgen0 tool.
tool int plcgen0(list string args = [], string stdin = "-", string stdout = "-", string stderr = "-",
bool appendOut = false, bool appendErr = false, bool errToOut = false, bool ignoreNonZeroExitCode = false):
return app("org.eclipse.escet.cif.plcgen0", "org.eclipse.escet.cif.plcgen0.app.PlcGen2App", args, stdin, stdout, stderr,
appendOut, appendErr, errToOut, ignoreNonZeroExitCode);
end
// Run the plcgen0 program.
// - Replace "abb" by "siemens-7-1500" to get siemens output, (Other targets will likely fail.)
// - Replace "model.cif" by the name of the cif model to convert,
// - stdout and stderr settings may be added to get the output at the console.
plcgen0(["--io-table-name=empty.csv", "--target-type=abb", "model.cif"]);
// With output redirection: plcgen0(["--io-table-name=empty.csv", "--target-type=abb", "model.cif"], stdout="out_file", stderr="err_file");
// For a non-empty IO table, the following fields are required for each line in the .CSV file:
// - PLC address,
// - PLC typename,
// - Full path to CIF input-variable or output location/disc-variable/alg-variable
//
// For example for "input bool input1" and "alg bool output1 = ..." in the root of the specification, the following is accepted.
// %I1,BOOLEAN,input1
// %Q2,BOOLEAN,output1
```
- Adjust the `plcgen0` line to your liking, `plcgen0(["-h"]);` will dump the accepted options.v3.0Albert HofkampAlbert Hofkamphttps://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/358#403 Rename checker classes to simplify finding them2022-08-22T12:07:18ZAlbert Hofkamp#403 Rename checker classes to simplify finding themCloses #403Closes #403v0.7Albert HofkampAlbert Hofkamphttps://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/359#404 Event-based synthesis analysis tool has wrong conclusion2022-08-19T17:51:35ZFerdie Reijnen#404 Event-based synthesis analysis tool has wrong conclusionCloses #404Closes #404v0.7https://gitlab.eclipse.org/eclipse/escet/escet/-/merge_requests/360#402 Double dash in branch-names are interpreted as CJK ideographs2022-08-19T19:57:57ZFerdie Reijnen#402 Double dash in branch-names are interpreted as CJK ideographsCloses #402Closes #402v0.7