Technical notes / OPC UA
Why the prototype used command-and-retrieve instead of a subscription
How raw vibration data was obtained from an IFM VSE100 through an OPC UA server in my thesis prototype.
The thesis prototype reads vibration data from an IFM VSE100 diagnostic module through an IFM VOS050 OPC UA server, using a Python client.
Subscription did not deliver raw data
A subscription is the usual OPC UA way to receive values as they change. In this setup a passive subscription did not deliver the raw vibration data. The raw data had to be requested explicitly.
A command-and-retrieve sequence
The client therefore calls a sequence of server methods: StartRecording, then Open, Read and Close. The data comes back as a JSON payload that the client decodes before processing.
Handing data to the processing
Acquisition and processing run as a producer–consumer pair connected by a thread-safe queue, so slow processing does not stop the next acquisition.
The OPC UA part is academic project use. I did not write an OPC UA server, and I did not program PLCs or fieldbuses.