rymdem software

Functionality

Working exclusively with low-level graphics libraries provides rymden software with tremendous design flexibility. Have a particular data representation, widget or figure in mind? Chances are we can build it, not by kludging it together from some toolkit API, but efficiently from the ground up.

The samples shown below are for demonstration purposes only and may be fully customized to your needs.


Sample modal and non-modal slide-in panels

Modal and non-modal slide-in panels

Slide-in panels are useful for presenting advanced features or other items only required infrequently. Two basic types are possible: modal and non-modal. In the modal case, the original content is hidden; in the non-modal case, it is fully accessible.

In our implementation of the modal case, clicking the scrim or swiping the workspace will close the panel. In the non-modal case, swipe gestures may be used in the workspace to open or close the panel. Note that the swipe gestures are optional and could be suppressed if desired.

Note also that the "modal" case only blocks the functionality of the central workspace: other features of the application, for example the navigation bar or the Stop button, are fully accessible.

youtu.be/IBwbpbyak7g
6-DOF serial manipulator

6-DOF serial manipulator

Informal study of the effect of update frequency on the animation "quality" of a 6 DOF serial manipulator digital twin. This use case, namely trying to visualize the movement of a remote device in realtime, is common in industry.

Joint data (the six axis positions of the robot) are streamed from a Bosch Rexroth ctrlX CORE X3 controller via server-sent events (SSE). In each case the publish interval — the time between data packets — is shown in the lower left corner of the window. In the control case, shown on the right, data is received every 15 ms, roughly the update time of the 60 Hz display used for testing. For comparison, cases with publish time equal to 120, 60 and 30 ms are shown in succession.

youtu.be/jIapqwEpb5c
MQTT publisher/subscriber

MQTT publisher/subscriber

MQTT is a lightweight, secure publish/subscribe messaging protocol that has become an essential part of the IoT landscape.

Here we demonstrate how MQTT may be integrated into the Gio user interface library for Golang. For the test the MQTT broker is installed on a remote computer, so messages are effectively making a round trip from the publisher (left), to the remote broker, and back to the subscriber (right). Messages are triggered upon hovering or selecting each color swatch in the color picker.

youtu.be/pMmjXa6DvmI
InfluxDB

InfluxDB

InfluxDB is a database purpose-built to handle time-series data. Like other types of databases, clients may query the stored data for analysis or visualization. Because the requirement to track data over time is so common in industry (e.g. energy usage over time, motor output over time, reactor temperature over time, etc.), machine builders could benefit greatly by integrating InfluxDB into their automation platforms.

In this clip we use Golang module influxdb-client-go to query InfluxDB once per second, producing the trendline in white. We combine this with a local cache of the same data source, updated every 50 ms via OPC UA, to produce the trendline in grey.

youtu.be/W0tAGKN6vs4
OPC UA: optimized polling

OPC UA: optimized polling

rymden software has developed an optimization mechanism that allows us to read (via OPC UA polling) only the minimum amount of data required for the active view.

In the clip, the application begins by reading all 4000 tags configured in the interface. Note the initial high bulk read time. After a few seconds the optimization mechanism begins. A drastic drop in bulk read time and corresponding drop in CPU load on the controller may be seen.

As the window is scrolled or resized, note that the number data points read (the "bulk read count") varies accordingly.

The point here is that the polling configuration — in other words the list of tags to be read from the server — will be produced automatically based on the information being presented on the given screen.

youtu.be/VYMlppdA5Lc

YouTube

For additional samples, please visit our YouTube channel: youtube.com/@rymden-software