Skip to main content
Version: 4.0.0

Setting up IOs

Exchange tables

In Fuzzy Studio, the IOs are set up in Exchange tables. Exchange tables are tables that dictates which information is stored at which bytes in the Inputs and Outputs topics. It is necessary to create your exchange table according to your needs and to be certain that your external device is setup with the right exchage tables too.



In order to setup your Exchange table, you need to open the Exchange Table Configuration Panel.


The Exchange Table Configuration panel allows user to setup and activate their Exchange tables.

  • 1 The Device to Studio Arrow opens the Input table.
  • 2 The Studio to Device Arrow opens the Output table.
  • 3 The Name of the Device is written here and it is possible to Rename it by clicking the Pencil icon. The name of the Device is very important : it will set the name of the MQTT topic.
  • 4 The Active toggle sets wether the exchange table is active or not.
  • 5 The Create device button will create a new device with the name specified in the Device name text box.

On a new project there is a default_plc device that is created by default.



The Input and Ouput table panels contain different parts :

  • 1 : The IO library contains the available IOs that you can add to your exchange tables. Default IOs are specified later on this page. It is possible to create new inputs or outputs by clicking the corresponding button. Created Input and outputs can be either Bool, Int8, Int16, UInt8, UInt16.
  • 2 : The arrow transfers the selected IO at the bottom of the Exchange table.
  • 3 : The exchange table contains all the IO present on this Input or Output Exchange table. The bytes are filled starting by the high Weights.
  • 4 : The MQTT Topic states the topic where the table is read or published : /fuzzy_studio/io/{name_of_your_device}/from_device for the Input topic and /fuzzy_studio/io/{name_of_your_device}/to_device for the Output topic.

Default IOs in Libraries

In the Input and Ouput panels there are default IOs that can be added in the exchange tables:

Input table default IOs : actions

Change tool

The Change tool input allows to switch from the actual tool into the one selected on the input. It is a boolean.

Move object

The Move object input allows to move any object in the scene from an increment or to a specific position in any axis relative to a reference. It is an Int16.

Rotate object

The Rotate object input allows to rotate any object in the scene from an increment or to a specific orienatation in any axis relative to a reference. It is an Int16.

Select trajectory

The Select trajectory input will select one of the trajectory in the trajectory library by calling its index. The index of any trajectory is set by the trajectories position in the trajectory Library. It is an Int8.

Trajectory Action

The Trajectory action input will try to set the current trajectory action to the one picked in the IO. The different trajectory actions are : Nothing, Play, Play with approach, Stop, Pause and Rewind. The Play action cannot pass if the robot is not curently directly on the selected trajectory, but the Play with approach action will first create and play an approach trajectory to the start of the seected trajectory. It is a boolean.

Output table default IO : Events

Action Error

The Action Error output can be associated to any action input and will output a result code of the last change for the selected action input. The specific error codes are specified when setting up the IO. It is an Int8.

Active tool

The Active Tool output is associated to a specific tool and TCP and will have a value of 1 if the selected tool and TCP is setup and 0 otherwise. It is a boolean.

Active trajectory

The Active trajectory output sends the current selected trajectory index in the trajectory list. It is an Int8.

TCP speed

The TCP speed output regularly outputs the TCP speed in mm/s. It is an Int16.

Trajectory state

The Trajectory state output sends the current state of the robot regarding the current trajectory. The state can be : Unknown, Stopped, Paused, Playing, Rewinding, PendingStop, Finished and NotOnTrajectory. It is an Int8.


The Watchdog output forces the emission of the exchange table at each selected period. It is a Bool and its value will always be True.