3.3. Cascade DataHub data transmission

The Cascade DataHub works in conjunction with the qserve (queue manager) program to provide asynchronous data transmission between tasks.

Cascade DataHub Data Transmission

Figure 3.3. Cascade DataHub Data Transmission

Any number of tasks can write data directly to the Cascade DataHub, because it is a non-blocking program that is always ready to receive a message.

When a program wishes to read the point value from the DataHub, the task registers for exceptions for that point. Then, whenever the DataHub receives a new value for a particular data point, it immediately sends a message to the queue for each client program that has registered an interest in that data point. The queue manager then sends a signal to the client program, informing the client that there is a message waiting on its queue. The client program then sends a message to the queue manager requesting the message. The queue manager sends the new value for the data point in the reply to the client.

There are three ways in which a client can register for exceptions from the DataHub.

    A client registers for exceptions on a point-by-point basis. Each time one of the registered points changes value in the DataHub, a message is sent to the client.

    A client can register for exceptions for all points currently in the DataHub. Any change to the value of a data point that is placed in the DataHub after this registration will not be sent to the client.

    A client can register for exceptions for any point that ever appears in the DataHub. All data change events in the DataHub will be broadcast to the client even if the point is created in the DataHub subsequent to the client's registration. When a DataHub client tries to register for exceptions for points that do not exist in the DataHub, the point is created in the DataHub and any further value changes are reported. The number of points in the DataHub is only limited by system resources. The DataHub has been tested with over 65,000 points and simply grows in size to meet the need of the application.