Frequently Asked Questions

Eclipse

Execution error in eclipse-escet.exe after Eclipse ESCET installation

The installation of Eclipse ESCET can fail with a number of error messages, such as:

  • Error: A Java Runtime Environment (JDK) must be available in order to run Eclipse-escet. No Java virtual machine was found after searching the following locations: plugins/org.eclipse.justj.openjdk.hotsopot.jre.full. … jre/bin

  • Error: Path too long

    The Path too long error can occur while extracting the downloaded zip file.

The cause of these errors is usually one of the following:

  1. A corrupt installation, due to a download error.

    Remedy: delete downloaded file and redo download and extraction.

  2. An error during unzipping. If any error occurs during unzipping, however small it may appear, your installation will not work.

    Remedy: delete unzipped folder and unzip again.

  3. Windows has a hard limit on the length of path names, which may lead to the Path too long error at some point during the installation.

    Remedy: Create a folder directly in the root of your C: drive, e.g. C:\Eclipse, and unzip your Eclipse ESCET folder there.

My Folder in Eclipse is not up-to-date.

Select your folder and press F5, or right click on the folder and select refresh.

Delay in simulation

Here you can find the guide to solve performance issues in Eclipse.

Error: IOConsole updater has encountered a problem.

Probably a simulation with livelock is still running. Terminate the simulation by clicking the red button on the Console. Restart Eclipse and clear the console (Right mouse button menu > Clear).

Error: Out of Memory

Probably a simulation with livelock is still running. Terminate the simulation by clicking the red button on the Console. Restart Eclipse and clear the console (Right mouse button menu > Clear).

Is it allowed to include other libraries in Eclipse?

No, that is neither needed nor allowed.

After generating PLC code, Eclipse gives an error

You probably included unsupported syntax in your controller. Have a look at the CIF: supported subset for PLC code generation page, to see if you used on or more of the listed features. If you did, change your controller.

GitKraken

How do I get the PRO version of GitKraken?

Follow this guide step-by-step to get started with the git tools.

How do I share files in GitKraken?

In this guide you can read about pushing (uploading) and pulling (downloading) in GitKraken.

Error: No merge base found

There is no remote branch which can be pulled. First push your branch to make your local branch remote. More information on local and remote branches can be found here..

How do I open files from GitKraken?

Follow this guide to get started with GitKraken.

Error: This appears to be a private repository
../../_images/gitkraken-private.png

To solve this error, login via GitHub in GitKraken:

  1. Click Profile -> Sign into a different account in the upper right corner of GitKraken:

    ../../_images/gitkraken-signin.png
  2. Sign in to GitHub, using your tue email address:

    ../../_images/github-signin.png
  3. When signed in, Click Continue authorization:

    ../../_images/gitkraken-github-authorize.png
Error: This subscription has expired
../../_images/gitkraken-expired.png

This error usually occurs when you have not properly installed GitKraken via the GitHub Education program, but instead downloaded a GitKraken trial version. Such a trial version expires after a week. To get a license, go to the GitHub Eduction page and sign up for the Student Developer Pack, see the GitHub instructions.

When you have properly installed GitKraken via the GitHub Education program, you may also get this error after about a year or so, because you must periodically re-verify your academic affiliation to continue to qualify for GitHub Education benefits. You can re-verify your academic affiliation via the profile button in the top right corner of the GitKraken window. Clicking this button opens a drop down menu with the re-verify command. You may also follow the steps at the GitHub instructions.

CIF modeling and simulation

What is the difference between global events and events declared locally in automata.

In this course, we stick to the convention that events declared locally inside automata do not synchronize, and events declared on a global level, so not declared inside automata, do synchronize, see Event declaration placement.

An automaton does not react when its guard becomes true.

This could be due to problems described in Section Problems with root finding, which also lists two solutions. An easy solution is to reduce the maximum check interval option, as explained in Solution 1: maximum check interval. This is done in the example tooldef file below. The only disadvantage of defining a smaller root check interval (0.01 instead of the default value of 0.5) is that the simulator may become slower.

from "lib:cif3" import *;

cif3sim(
    "modelname.cif",
    "--solver-root-maxchk=0.01",    // reduce the root check interval to 0.01 s
);
SVG object starts moving from the wrong position when translating.

The position of an SVG object can be updated dynamically, based on the state of a CIF model, for the purpose of visualization. Such movements can be achieved by means of SVG transforms, such as the one shown below. This line adds a transform attribute with the desired translation to the SVG object with id prod_conveyer.

svgout id "prod_conveyer" attr "transform" value fmt("translate (%s,0)",
pos_x);

Problems can arise when the object that is translated already has a transform attribute, such as the one shown in the figure below. In this case, the existing transform in the SVG is overwritten by the CIF svgout statement, which causes the group origin to jump to a different location (from (-67.6, 62.3) to (pos_x, 0)).

../../_images/group-with-transform.png

A group with a transform attribute.

Such an undesired override of an already existing transform attribute can be prevented by creating a new group containing the group that needs to be moved. A new group does not have a transform attribute, except when it is moved in Inkscape after its creation.

To create the new group, select the object that needs to be moved and apply the group command (Object > Group or Ctrl-G). The new group is shown in the figure shown below. Note that the ids should be changed either in CIF or in Inkscape to move the correct group.

../../_images/group-without-transform.png

Possible solution to get a group without a transform attribute.

Another solution, which does not introduce an additional group, is to ungroup the group you want to move (when the objects in this group are in the correct position) and then regroup them again. This deletes the transform attribute by pushing the transformation into the individual elements of the group.

SVG error message

Your simulation with an SVG file gives the following error message:

ERROR: Failed to open editor "nl.tue.common.svg.SvgVisualizer" for file "yourSVGfile.svg".
CAUSE: (NullPointerException) <cause details not available>

Also, you cannot show the SVG figure in Eclipse: Right click on SVG file ‣ Open With ‣ SVG Viewer.

Validating the SVG file

To find the cause, upload the SVG file to the W3C Validation Service and press the Check button. Possible errors in the file will be listed, along with the line numbers.

Possible cause: ellipse with incorrect radius

You have an ellipse object in your SVG file with a single radius attribute r, rx or ry instead of two attributes rx and ry. You can fix this problem in two ways:

  • Remove the ellipse object from your file using a text editor, and add a proper circle using the Inkscape editor.

  • You may also change the ellipse object into a circle object in your text editor, by simply replacing the word “ellipse” by “circle”, and correcting the radius so that, for instance:

    <ellipse
        style="..."
        id=".."
        cx="..."
        cy="..."
        rx=".." />
    

    becomes:

    <circle
        style="..."
        id=".."
        cx="..."
        cy="..."
        r=".." />
    

Possible cause: flowRoot object

You have aded a text object to your SVG file by click-dragging, instead of by just clicking. Click-dragging leads to a flowRoot object, in your SVG file, of the form:

<flowRoot
    ...
    ...><flowRegion
            ...
            ...><rect
                ...
                .../></flowRegion><flowPara
                                    ..></flowPara></flowRoot>

Open your SVG file with a text editor, remove the complete flowRoot object (<flowRoot  ... /flowRoot> from your file.

A sensor is activated in the visualization but the controller does not react.

Activation of a sensor is shown in the visualization by a change off the sensor’s color. In the console, however, the sensor remains off (false), and also the controller does not react to the sensor becoming true. This is a manifestation of the same problem as described below in the problem above.

The simulation is slow
State vizualizer has many variables:

Try closing the state visualizer to see if that helps.

Too many mutually dependent discontinuous equations:

The equation solver could take a lot of time during time transitions when there are many mutually dependent discontinuous equations. This can often be solved by adding some automata, that have different equations per state, instead of discontinuous equations.

Too much console output:

If you right-click in the console and select Word Wrap, during a simulation, you can see how much output is printed in the console. The amount of output printed in the console can be significantly reduced by adding the option “-o -state-target” to your tooldef file for simulation. This will suppress printing of the complete state after each transition.

What is the difference between disc, const, and alg?

Look carefully at the following course concepts.

Concept

Discussed in

Discrete variables

Data

Algebraic variables

Scalable Solutions

Continuous variables

Time

What is the difference between finite and infinite state spaces?

You can read more about finite and infinite state spaces in the course concept basics.

Is there a way to loop over a large amount of objects when visualizing with svg?

You could use a parameterized group definition, which includes one of the SVG objects and then instantiate that group multiple times with different parameters.

Is it possible to stateviz only some selected variables?

You could use --stateviz-filter=AutomatonA.var1,AutomatonA.loc1,AutomatonB.var1, see CIF 3 essential simulator options.

Is it possible to update two variables at once?

Yes, see Multi-assignments.

SVG and Inkscape

Is it possible to have multiple transformations in a single transform attribute?

Yes, for example:

Attribute

Value

transform

translate(x,y) rotate(alpha,x,y)

transform

scale(k) rotate(alpha,x,y) translate(x,y)

For more information see Nesting multiple transformations.

Quizzes

Do the quizzes count towards the final grade?

Yes, the quizzes count toward your final grade. For the weight of the grade, see the study guide.

What are the deadlines for the Canvas quizzes?

The deadlines of the Canvas quizzes can be found on Canvas. Normally this is one week after the day of its associated module in the course guide.

Are there answers of the Canvas quizzes?

For the availability of the quiz answers, see the study guide.

Is it possible to close the quiz and continue at another time?

Yes, you can close the quiz and continu your quiz at another time. It might not be possible to continue the quiz after submission.

Assignments in general

General questions and problems about the midterm and final assignment.

Is it allowed to put comments beyond column number 120 in your CIF models?

An occasional comment behind 120 is okay, but not structurally.

Is it required to explain in the operator manual how to generate PLC code and how to import it?

Do not include general information that is available on this site like generating plc code, importing XML-files, or how to execute a tooldef.

My controller works in combination with my plant model, but does not work when using TwinCAT. What should I do?

It should not be possible that the controller in Eclipse has different behavior than in TwinCAT. First, make sure you understand the difference between plant and controller here. Then look into the code of your plant. Note that only the controller file is used in TwinCAT.

Possible cause: nondeterminism

There could be undesirable nondeterminism in your model. In the case of a choice between different events, the choice of the simulator is determined by the option “-a first”, “-a last”, or the default option “-a random”. These options define which event is selected in the case there is a choice. In the console, you can see all available choices, and which event is chosen. Of course, this only works if you give all your events a specific name, otherwise you will only see “tau” events in the console.

The behavior of your controller should not depend on the value of the “-a” option. Selecting the “-a first” option should result in the same behavior as the default “-a random” option. If it does not, try to correct this.

The behavior of the real-time controller corresponds to the “-a first” option.

Possible cause: wrong name of sensor or actuator

You may have misspelled the name of an actuator or sensor. Such an error is not detected by the PLC code generator, and does not result in an error message or warning.

Possible cause: stop button sensor is not inverted

You may have modeled the stop button just like the start button, whereas the stop button is inverted: its sensor is true when the button is not pressed, and becomes false when the stop button is pressed.

Possible cause: wrong interpetation sensor or actuator

Cearfuly study the behavior of the digital twin in manual mode; when do sensors turn on? When should you activate actuators? Look at the definition of the sensors and actuators of your workstation. You can examine the location of automata and the status of sensors and actuators in TwinCAT to better understand where the behavior differs.

Should Festo workstation 1 and workstation 2 each have two control panels?

No, all workstations, including workstation 1 and 2, should have a single control panel in your SVG figure, plant model and controller.

Is it allowed to add additional sensors and/or actuators to the io-file?

No. The system you are replicating does not have those additional IO ports.

How do you remove products in the digital twin?

Use your rightmouse button to remove products or use the Delete All button in the spawning menu.

How do you measure distances?

A product has a diameter of 40mm, with this given you could make an estimated guess of the other dimensions. Or you could visit the Festo lab after making an appointment.

Midterm assignment

Is there a rubric?
Is it allowed to add additonal files to the repository?

Not allowed, the only exceptions are the generated merged.cif and plc.xml files.

Do we need to model the reset and stop buttons?

Not needed for the midterm assignment.

Does the page A4 limit include the group information at the top of the document?

Yes.

How do I claim a timeslot for the grading session?

The grading session takes place according to the procedure found on the page of the Midterm Assignment.

Final assignment

Is there a rubric?
Is it allowed to add additonal files to the repository?

Yes, but no folder, see the Requirements for submission.

It is stated that “the operator should be able to manipulate the simulated physical system, including the processed products”. Is this required in the SVG visualisation, or in the digital twin/Festo system?

For the digital twin it is not a requirement, but simply a fact. So the only system for which the requirement is an actual requirement is the SVG visualisation.

Should the controller work with multiple products?

One of the graded aspects is: “Time efficient, leading to a high throughput”, see the final assignment.

Do we need to book a grading session like in the midterm?

No

Does the page limit include the front page?

Yes

What is the purpose of the start-, stop-, resetbuttons and the autoswitch?

As the designer of the control systems, it is up to you to decide what the purpose of these buttons is. Explain your choices in your report. There are two exceptions:

What is the purpose of the LEDs on the user interface?

As the designer of the control systems, it is up to you to decide what the purpose of these LEDs is. Explain your choices in your report.

Where can I find the template of the final assignment?

In the final assignment you continue your work for the midterm assignment. There is no separate or additional repository for the final assignment. You can continue using the files in the midterm assignment repository.

Specific Festo workstations

Questions about a specific Festo workstation. Most of these questions apply to the final assignment.

Does the manipulator’s arm go down at any point or are is it allowed to only make it go down at the s_xpos_at sensors?

In manual mode, the operator should be able to move the arm at other positions. For the controller, this is not desired.

Is it possible to differentiate between the three products heights?

Yes, if you make use of s_productheight, s_elevator_up, and a time delay, you should be able to figure it out. It is recommended to manually try different products in the digital twin to see how those sensors react to the different products before working on your controller.

Is it allowed to spawn the incoming products directly at the rotation table (as was stated for the midterm) or should it now be supplied by the incoming conveyer?

In the end, your controller should work for the whole workstation, and in reality the products are supplied by the conveyor, so this should be the default spawning position (for your final simulation). You could add a spawning position on the rotation table in your SVG plant for testing purposes if you want.

If a product is oriented upside down, the operator should press a button after correcting the product. Which button should be pressed?

You may think of a good solution yourself. You are the designer of the control system and responsible for the quality of your design. Please support your desing choices by reasoning and explanation in the report.

A button (or switch) of your choice on the UI panel. Explain your choice in the report.

Is it true that upside down products are not detected by the capacitive sensors at the discrete positions?

Yes.

Does the actuator a_processingready directly switch the incoming conveyor on and off in the digital twin?

That depends on whether there is a product on the incoming conveyor. If so, the buffering station will send it towards the processing station. If not, the conveyer will not start.

For the extended conveyor, how many products do we need to have on the conveyor at once?

Think about it, make your choice and explain your line of reasoning in the report.

TwinCAT and digital twins

Is TwinCAT available on macOS or Linux?

No, only available on a Windows operating system.

How do I resolve “Target system reports a fatal error” when activating RunMode?
../../_images/TwinCATclock.png

You forgot to execute win8settick.bat, repeat steps 4 till 7 from this guide.

TwinCAT is not working anymore.

If TwinCAT did run on your PC before, restart your computer and download the TwinCAT template again.

Is there something that can be done about the large number of File has been changed outside the environment… prompts?

Yes. Click Tools ‣ Options… to show the Options dialog. On the left, select Environment ‣ Documents. Then, on the right, enable the Detect when file is changed outside the environment and Auto-load changes, if saved options.

Why does opening the MAIN program take so long in Run Mode?

As the generated code becomes larger, it can take a long time for TwinCAT to set up the environment for inline monitoring of the MAIN program. To disable inline monitoring, click Tools ‣ Options… to show the Options dialog. On the left, select TwinCAT ‣ PLC Environment ‣ Text Editor. Then, on the right, switch to the Monitoring tab. Disable the Enable inline monitoring option.

One or more actuators of the digital twin are initially true

When the digital twin is started or reloaded, all its actuators should be false. If you cannot get your digital twin to start with all actuators false, there is probably still a PLC running in the background.

First, if you can see a PLC still running in TwinCAT, stop it and logout, see Stop the PLC when you are done. If that does not help, restart your computer. This will shutdown any PLC that might still be running.