Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Overview

FactoryStudio is an industrial automation software that enables the creation of SCADA and HMI applications to monitor and control industrial processes in real-time. The software platform supports various communication protocols and offers advanced visualization features, alarm and data logging capabilities to ensure operational efficiency of the industrial processes.protocols, such as Modbus, OPC UA, and AB Rockwell ControlLogix, to ensure compatibility with a wide range of industrial devices.  In addition to the larger set of protocols provided, it is possible also to create new Protocol Drivers with the Driver Toolkit. 

When creating new drivers, or doing advanced diagnostics in existing ones, it is important to have a deep understanding on how a communication protocol for industrial devices works. 

On this page:

Table of Contents
maxLevel3
stylenone


Purpose and

Key Concepts

Key concepts related to device communication in FactoryStudio include:

communication protocol

TX message

RX message

byte

communication driver

external device.

and Terms

Protocols define the rules and message formats that govern device communication. Each external device follows specific communication rules established by its manufacturer or protocol creator. These rules dictate the structure of TX messages (sent from the platform to the device) and RX messages (sent from the device to the platform). Users select the appropriate protocol for the device they want to connect to and configure the necessary communication drivers to enable communication.

  • Communication protocol: A set of rules that define how external devices communicate with the software platform.
  • Communication driver: Software designed for data transmission between the software platform and an external device following the device's communication protocol.
  • TX message: A message sent from the software platform to the external device.
  • RX message: A message sent from the external device to the software platform.
  • Byte: The basic unit of information used in TX and RX messages.
  • External device: Any device or software used with the software platform, such as PLCs, sensors, and actuators.

Commonly Used Protocols

The platform supports multiple communication protocols, each with specific characteristics and benefits suited to different applications. Here are descriptions of some commonly used protocols:

Modbus

A serial protocol that uses a master-slave architecture to communicate with external devices. It operates on a request-response basis, where the master device sends a request to the slave device and waits for a response before sending the next request. Modbus supports various data types, including bits, bytes, integers, and floats. See Modbus Master Protocol and Modbus Slave Protocol for examples on the configuration and addresses for that protocol.

OPC UA (Open Platform Communications Unified Architecture)

It

Communication Protocols

FactoryStudio supports multiple communication protocols, including Modbus, OPC UA, and AB Rockwell ControlLogix. Each protocol has its own specific characteristics and benefits that may be more suitable for different applications.

2.1 Modbus

Modbus is a widely used serial protocol with a master-slave architecture. It supports various data types and a wide variety of devices, including PLCs, sensors, and actuators.

2.2 OPC UA

OPC UA

is a platform-independent protocol based on web services

, offering interoperability between different platforms and devices, as well as enhanced security.

2.3 AB Rockwell ControlLogix

. It uses a client-server model to communicate with external devices and supports advanced security and encryption to protect transmitted information. See OPC UA Client Driver on how to configure the network addresses and Points addresses to that protocols.

AB Rockwell ControlLogix

 This

The AB Rockwell ControlLogix

protocol is used to communicate with devices in the ControlLogix family from Rockwell Automation. It uses a master-slave architecture and supports various data types, including bits, bytes, integers, and floats. The ControlLogix protocol is widely used in the industry and is relatively easy to implement.

For more information related to a specific protocol

See AB Rockwell ControlLogix and CompactLogix devices on how to configure the network addresses and Points addresses to that protocols.

Info

There are several other communication protocols available to connect to external devices using the software. Each protocol has its own specific characteristics and benefits that may be more suitable for different applications, or reflect standards used by hardware vendors.
For the updated list of available protocols, go to:
Communication Drivers

- v10 - Tatsoft LLC

Detailed Functionality

3.1 Communication Messages

Communication between FactoryStudio and external devices occurs through TX messages (sent from FactoryStudio to the device) and RX messages (sent from the device to FactoryStudio). Each byte within these messages has a specific meaning.

3.2 Protocol Example

A fictitious communication protocol is presented to illustrate how TX and RX messages are structured and how they can be interpreted.

.



Mapping Protocol Addresses  

The following organization is created when mapping address to the Tags in the Application. 

Address Syntax

Different protocols will have distinct ways to identify their internal elements, but essentially in all protocols, there is an address that will be mapped (for reading or writing) to a variable in the solution.

Read Groups and Write Groups

Read Groups and Write Groups are crucial for managing communication between the platform

3.3 ReadGroups and WriteGroups

ReadGroups and WriteGroups are created during the device module startup to handle the communication between FactoryStudio

and external devices. They contain information

regarding FS Tags

about tags and communication operands,

and their amount must be less than the MaximumBlockSize.

3.4 Communication Optimization

Optimizing communication can be achieved by configuring points with sequential and continuous addresses, using NodeConnections for simultaneous TX/RX exchange, and prioritizing specific communication groups.

3.5 ReadOnDisplay AccessType

organizing and optimizing the data exchange process. A Read Group reads data from devices, while a Write Group writes data to devices. These groups are dynamically created based on the tags' configuration, such as Access Type, Polling Rate, and addresses, and are managed by the communication driver.

Communication Optimization

Efficient communication is vital for the performance of any industrial automation system. Several strategies can optimize communication between the platform and external devices, including:

  • Grouping tags with similar polling rates and access types.
  • Combining sequential addresses in a single request message to reduce the number of messages.
  • Adjusting the MaximumBlockSize parameter according to the device's capabilities.
  • Using multiple communication channels to prioritize specific requests or handle different devices concurrently.

Read On Display Access Type

The Read On Display Access Type setting enables communication only when data is displayed

The ReadOnDisplay AccessType is a setting that enables the communication group if any data is

on the screen. This can

be useful for data that is not saved in history and is only displayed on the screens. However, it is important to understand its operation in detail, as it may not be very intuitive.

improve performance for data that doesn't require constant updates or historical storage. Read Groups and Write Groups are created during the Devices Module startup without considering the Access Type. When a screen opens, the platform checks if any points have the Read On Display setting and are linked to the tags of the open screen. Points with Read On Display Access Type that are not displayed on the screen are disabled, and the associated group is only turned off if all its points are disabled.

Understanding how the Read On Display Access Type works is essential for efficient communication, as it helps reduce unnecessary data exchange. To learn more, see Access Types.


Communication Protocol Execution 

Communication Messages

Communication messages are the foundation of data exchange between the platform and external devices. They transmit information from one entity to another, following a specific communication protocol. There are two types of communication messages:

  • TX messages: Sent from the software to the device.
  • RX messages: Sent from the device to the software.

Both types contain a series of bytes, each with its specific meaning, following the rules established by the chosen communication protocol. Message types can include:

  • Commands
  • Response
  • Data
  • Status

Each device manufacturer and communication protocol creator defines communication message rules

Communication protocols exist so that there can be communication between two entities. In our case, we are talking about FactoryStudio and other external devices used in the field; mainly PLCs, but they can be other types of devices or software. 

Each device manufacturer and/or creator of a communication protocol defines the rules of communication messages. These messages are called TX and RX. TX messages are the messages that go from FactoryStudio the software platform to the device, and the RX messages are the messages that go from the device to FactoryStudiothe software platform. Each entity related to in this “conversation” needs to know the communication protocol to understand what the TX and RX messages mean. Each byte within the message has a meaning. Let us consider a fictitious communication protocol definition, for example:

Protocol: [STX] [CMD] [OPR] [STA] [CNT] <DATA> [ETX]

Where:

specific meaning.

Protocol Example: Modbus

To better understand the communication process, let's analyze Modbus TCP/IP, a widely used protocol in industrial automation that allows data exchange between various devices through a TCP/IP network. This protocol uses a client-server model, where the client (the platform) sends requests to the server (the device) to read or write data.

Image Added

Modbus TCP/IP Message Structure

  • Transaction ID (2 bytes): This unique number helps match requests and responses.
  • Protocol ID (2 bytes): This is a constant value (0x0000) for Modbus.
  • Length Field (2 bytes): Specifies the length of the remaining message.
  • Unit ID (1 byte): The address of the remote device.
  • Function Code (1 byte): Indicates the requested action, such as read or write.
  • Data (variable): Contains the data to be read or written or error information.

Understanding the structure of a specific protocol is important for advanced scenarios where performance optimization or network-level diagnostics are necessary.

Protocol Example: STX and ETX

Consider the following fictitious communication protocol definition:

  • [STX]: Start Message (02 hexa).
  • [CMD]: Command (04 hexa for a Read Action, 05 hexa for a Write Action, or 06 hexa for Ack Answer).
  • [OPR]: Operand (31 hexa for an Integer or 32 hexa for a Float).
  • [STA]: Start Address -
  • [STX] Start Message : 02 hexa
  • [CMD] Command : 04 hexa — Read Action, 05 - hexa Write Action, 06 – Ack Answer
  • [OPR] Operand :  31 hexa — Integer (2bytes) , 32 hexa– Float (4bytes)
  • [STA] Start AddressBeginning address to read or write (two bytes).
  • [CNT]: Counter — Quantity of the quantity of bytes in the data packet to read or write (one byte)  .
  • <DATA>: Data <data> - data bytes related to the content read or write written (each operand can have 2 or 4 bytes).
  • [ETX]  : End Message –– (0D hexa
 
  • ).

Based on this communication protocol definition, we could say that the fowling TX and RX below lines are valid:.

  • TX: 02 05 31 00 00 04 0D (
FS send
  • Send to Device)
  • RX: 02 06 31 00 00 04 00 00 00 00 0D (Device answer
to FS
  • )
This

That means

-

the TX is composed by:

02[STX]

05[CMD RD]

31 [Integer]

00 00 [Start Address : 0]

04[Quantity: 4 bytes]

0D [ETX]

This means  - RX

The RX was composed by:

02 [STX]

06 [ACK ANSWER]

31 [Integer]

00 00 [Start Address : 0]

04 [Quantity: 4 bytes (two operands integer)]

00 00 [Operand 1 with data value 0]

00 00 [Operand 2 with data value 0]

0D [ETX]

After analyzing this fictitious protocol, we can conclude:

Defining Communication Blocks

  • If Since the CNT is a single byte that indicates indicating the number of bytes and the FF hex means 255 bytes, a communication block of communication can have a maximum of 255 bytes. Thus, each TX/RX can transmit a maximum of 127 (integer) integers or 64 ( floats), which are the operands operand limits per communication block. The CNT, or 255 in this case, is what we call the MaximumBlockSize, which is defined as the maximum size of the communication block. As defined by the communication protocol, the user generally cannot customize the MaximumBlockSize.
  • Since a device's available operands can be much larger than the MaximumBlockSize, multiple TX/RX exchanges can may be required for it to read or write on all the data. 
  • In a TX/RX, a read dataset is called a ReadGroup. Each ReadGroup contains information regarding FS Tags and communication operands. Consequently, the amount number of operands must be less than the MaximumBlockSizemaximum block size.
  • ReadGroups and WriteGroups are created during the device module Devices Module startup. Also, the The Points settings are sorted, and the Groups are sequentially created by taking into account the information of whether or not considering whether two different points can be in the same communication TX/RX. The information taken into account is: considered includes Node, Address (Operand, Address, Name), MaximumBlockSize, Read/Write Command, Polling Time.and Polling Time.

In this section:

 

Once the ReadGroups and WriteGroups are created and when the read or write event happens, the group is placed in a run queue. It is never queued more than once; it must run and exit the queue so that it can be queued again.

This execution queue is emptied by the execution of the communication driver. The communication driver takes the information the TX sends to the device, waits for the RX response, handles the data, assigns the values in the Tags if necessary, and gives the execution as complete. ******

It is important to realize that there is a wait time for the the RX response throughout this cycle. The wait time does not depend on FactoryStudio's execution; it depends on the device's execution, which can take more or less time — In general, a PLC program has an execution cycle time that directly influences the time of treatment and response of the communication, which means a PLC with a longer cycle time will take longer to respond to an RX.

If we imagine that this entire cycle takes around 20ms, we will have 50 TX/RX exchanges in 1s. By taking into account the maximum amount of operands for TX/RX, we know how many operands we can exchange in 1s.

This is the traditional form of communication for Master/Slave. However, many devices that accept TCPIP communication also accept multi master or multi connections, which means that more than one master can send a message at the same time. In FactoryStudio, this is done through the NodeConnections configuration. The NodeConnections is the amount of connections that each node will establish with the device for simultaneous TX/RX exchange.

In this case, instead of the PLC having to handle only one message per execution cycle, it will have to handle multiple messages, which can cause an increase in response time for each RX. Although we generally have a performance gain almost proportional to the number of node connections, it is important to remember that devices have a maximum number of connections allowed, ranging from equipment to equipment.

The most optimized form of communication is the configuration of points with sequential and continuous addresses because all of the byes belonging to the databuffer are used. When we set up points with address jumps, there is a waste of communication. For example: Read address 0, 10, 50, and 100. We will read only 4 operands in a buffer exchanged with 100 operands; this is a great waste of communication.

Once we know the criteria for generating a ReadGoup, we can use a new Node or a different pooling time to force the operand to be separate from the previous ReadGroup. In some cases, mainly serial communication, we can decrease the amount of bytes in communication by creating more groups with smaller sizes. In general, this optimization does not make much sense for TCPIP communication because the speed of the communication makes the number of groups end up having greater influence than the size of the groups.

Another important optimization is for when we have a large volume of communication groups and want to give priority to some of them. In this case, as long as the communication is TCPIP and the device accepts multiple connections, you must create a channel so that a smaller group of points communicate more frequently. If this is not done, these points will be together with other groups in the execution queue. Remember that the same group cannot be in the queue more than once.

Sometimes, communication is not saved in the history, and calculations are only displayed on the screens instead of being performed with the read field value. This type of data does not need to be read all the time, it can be read only when the screen that uses it is open. There is a setting in the AccessType ReadOnDisplay that enables the communication group if any data is on the screen. It is important to understand this operation in detail as it may not be very intuitive.

At device module startup, the ReadGroups and WriteGroups groups are created by taking into account all configured communication points, as already described earlier. At this point, we do not know if the AccessType configuration is ReadOnDisplay or Always; we simply create all the groups taking into account the factors already described in this document.

When a screen opens during execution, we check if there are points with the ReadOnDisplay setting and if the points are linked to the tags of the open screens. Points that have the ReadOnDisplay AccessType and that are not on the open screens are disabled, and the group related to it is only disabled if all of the configured points are also disabled — which may be enabled because they are the Always AccessType instead of ReadOnDisplay. This is relevant because the way groups are assembled is important when we think about the relationship of having only screen data or not. A group that always has a specific screen point along with an Always data will never be disabled, sparing no communication.

In this section...

Page Tree
root@parent
spacesV10