IO Browser
The IO Browser allows you to connect your simulation to PLCs for virtual commissioning and controls testing.
The user interface is split into three tabs.
- Servers: displays all the configured servers (PLCs) and the tags for those servers.
- Bindings: displays the complete list of bindings for all tag servers.
- Signals: displays information about all IO signals in the model, including the access restriction, data type, address and value.
Definitions
Servers
A (tag) server is a device, such as a PLC, that provides IO points called tags. This documentation will refer to servers and PLCs interchangeably. Servers typically support one or more protocols which allow clients, such as ProtoTwin Connect, to read and write tag values.
Tags
Tags represent areas of memory in the PLC. Tags usually have an associated name, area and data type. Most PLCs and protocols support at least three areas:
- Inputs: The tag is an input to the PLC, which the PLC program can read.
- Outputs: The tag is an output from the PLC, which the PLC writes to.
- Memory: The tag can be read and written by the PLC.
ProtoTwin Connect supports reading and writing tags for the following data types:
- Bit: A boolean value, which can either be true or false.
- UInt8: An unsigned byte, which can represent integral values between 0 and 255 inclusive.
- Int8: A signed byte, which can represent integral values between -128 and 127 inclusive.
- UInt16: An unsigned word, which can represent integral values between 0 and 65,535 inclusive.
- Int16: A signed word, which can represent integral values between -32,768 and 32,767 inclusive.
- UInt32: An unsigned double word, which can represent integral values between 0 and 4,294,967,295 inclusive.
- Int32: A signed double word, which can represent integral values between -2,147,483,648 and 2,147,483,647 inclusive.
- Float: A single precision floating point number, which can represent real numbers.
- Double: A double precision floating point number, which can represent real numbers.
Arrays and UDTs are currently not supported.
Signals
Signals represent IO points in the model, such as the state of a sensor or the speed of a motor. Signals have an access restriction associated with them. This access restriction is analagous to file permissions in a filesystem:
- Readable: The signal can be read by a PLC.
- Writable: The signal can be read or written by a PLC.
You can think of writable signals as inputs to the model, and readable signals as outputs from the model. However, since writable signals can also be read, a writable signal could also be an output from the model. This is best illustrated with a concrete example. The motor component provides the following input (writable) signals:
- State: Whether the motor is switched on.
- Target Position: The target position of the motor, when operating with the Position controller mode.
- Target Velocity: The maximum velocity of the motor.
- Force Limit: The maximum force/torque that the motor may apply to achieve the motion profile.
A PLC may write to any of these signals. However, it may also make sense for the PLC to be able to read from any of these signals. Conversely, the distance sensor component provides the following output (readable) signals:
- State: Whether an object is being detected by the sensor.
- Distance: The distance to the detected object.
A PLC may read any of these signals, but it doesn’t make sense for the PLC to be able to write to any of them.
Bindings
Bindings are the connection between PLC tags and model signals. Bindings are directional. The direction that data flows is determined by the direction of the binding. The direction of a binding for input and output tags cannot be changed. ProtoTwin Connect will always write to input tags and read from output tags.
The direction of a binding involving memory tags can be specified.
- Inputs: Values are transferred from signals to the input PLC tags.
- Outputs: Values are transferred from output PLC tags to (writable) signals.
- Memory: Values are transferred in the direction specified by the binding.
Note that only writable signals may be written to. It is not possible to bind an output tag to a readable signal. Readable signals can only be transferred to the PLC. The binding direction of tags to readable signals cannot be changed. The binding direction of tags to writable signals can be toggled by clicking the binding direction icon in the left-most column of the binding table.
Servers
This section provides important information about the servers table.
Adding Servers
You can add a server (PLC) by clicking the Add Server button. This will bring up a dialog window, where you can select the protocol for the connection along with various connection parameters. The connection parameters depend on the protocol selected. Please refer to the documentation page for each specific protocol for further information:
- Siemens S7
- Allen-Bradley Ethernet/IP
- Beckhoff ADS
- Omron FINS & Ethernet/IP
- Schneider Modicon Modbus TCP
- Mitsubishi MELSEC
- Arduino Modbus TCP
- Modbus TCP
- OPC UA
Select Save to add the server once all the parameters have been configured. The server will now appear in the list of tag servers.
Adding Tags
Select the server for which you want to add tags. The tag table will appear, which lists all the tags that have been added or imported for that server. You can add tags manually or import a collection of tags from the PLC or from an excel spreadsheet.
Selecting Tags
Select tags by clicking on a tag in the tag table. Click the tag again to deselect it. You can use the CTRL key or SHIFT key while clicking to select or deselect many tags.
Deleting Tags
Press the DELETE key to delete all the selected tags. Deleting a tag will cause any binding associated with that tag to also be deleted.
Binding Tags
Select any of the servers to display the list of tags for that server. Click the button in the left-most column of the tag table to create a binding for that tag. Tags that have been successfully bound are displayed in green. Tags that have incomplete bindings are displayed in red. You can hold the CTRL key and click multiple tags to create many bindings quickly. Clicking a tag that is already bound will take you to the binding for that tag in the bindings table.
Bindings
This section provides important information about the bindings table.
Configuring Bindings
Once the binding has been created, you must configure the signal for the binding. Each signal is defined by an Entity/Component/Property path. You must first select the entity. Then select a component on that entity. Then select a property/signal on that component. If an entity only contains a single component with a single valid property, ProtoTwin will automatically go ahead and configure the component and property for you.
Deleting Bindings
Bindings may be deleted by selecting them and pressing the DELETE key. Note that if the entity or component for the signal are deleted/removed then the binding will become inactive. If an entity or component is removed while the model is running, the binding will become inactive until the model is reset. Resetting a model will restore the model and any bindings to the state that existed immediately prior to running the simulation.
Directing Bindings
The direction for bindings of memory tags to writable signals can be toggled by clicking the icon in the left-most column of the binding table. This allows you to specify whether values should be:
- Write to Server: Written from the signal to the PLC tag.
- Read from Server: Read from the PLC tag and written to the signal.
Note that it is not possible to toggle the direction for bindings involving input or output tags, or for bindings with readable signals. The signal must be writable and the binding must involve a memory tag.
Columns
The button at the top right of the bindings table can be used to toggle the columns you want displayed. This includes:
- The direction of the binding.
- The name of the tag.
- The data type of the tag.
- The address of the tag (if the PLC is address-based).
- The signal Entity/Component/Property path.
- The current value of the signal/tag. The display will be updated when you run the simulation and the value changes. The value will be
NULLuntil you run the simulation. ProtoTwin connects to the server automatically when you start the simulation. - The converter for the binding.
Converters
Converters allows you to transform the values before or after the data is transferred between the PLC and the ProtoTwin Connect client.
Signals
This section provides important information about the signals table.
IO
The signals table displays information about the IO for all signals in your model. This includes:
- The Entity/Component/Property path of the signal.
- The data type of the signal
- The access of the signal, whether it has read or write accessibility.
- The address of the signal, which is a positive integer.
- The current value of the signal. The display will be updated when you run the simulation and the value changes.
You can click the columns button at the top right of the signals table, to toggle which of the above columns you want to be displayed. The address is important if you want to read or write to a signal from our Python client. You can click the copy button to copy the selected signals to the clipboard. Use this to quickly create python variables for a signal. ProtoTwin will determine an appropriate name: <entity_name>_<component_name>_<property_name> = <address_value>