Thanks again for the response. Let me take a step back and describe the project.
I have a factory full of equipment (furnaces, compressors, solvent degreasers, forming machines, presses, etc…). Some of it has PLC’s or other modern controllers to drive the main component, but a lot of it is comprised of “dumb” electronics that just runs 24/7 for decades. Since 2010 I have been collecting Process Data on various portions and storing it into specific tables in an onsite MS SQL Database. Each table is pretty much either Machine or Process focused, and each record in the database provides a snapshot of the machines condition at that moment. Interval ranges from 5 seconds to 1 minute, depending on the machine. The data is easily accessed by a web site and is used as part of trouble shooting and predictive/preventative maintenance. Over time, I am continually expanding the scope and penetration of the system. I also collect machine faults and some user inputs, but that is not related to this issue.
The data acquisition components being used are varied. I have three Opto panels with SNAP PAC brains and I/O cards from about 2010 or so that do about 50% of the work. On other systems, I have installed some LabJack boxes to acquire primarily thermocouple and analog I/O from various things. I have a few MOXA boxes that seem to do well with a couple of furnace atmosphere controllers that use serial ModBus. The key here is the aggregation and curation of data points to make a single, time stamped database record that descries the condition at a point in time.
Currently, this aggregation is getting a bit complex and difficult to work with in a flexible manner. I have written a DataLink program that generates threads at a prescribed interval. These threads act as ModBus clients, reading from the various ModBus servers, be it a LabJack, a Eurotherm furnace controller, or a PLC with a ModBus server node running in it. This thread acquires the information, builds the parameter array, and adds it to the appropriate database table. It works very well, but it is getting difficult to update and maintain. I am currently hitting about 100 data points on the shop floor now, and it will likely double before the year end. It is also going to expand to three other locations I have next year.
My objective in evaluating the Opto RIO was to push some of the data aggregation out to the shop floor, probably some form of Edge computing. I would envision the RIO gathering some of the data itself, and as appropriate, read from some of the pertinent other ModBus servers it needs data from. The RIO would then have all the data it would need and could either append a database row itself (if I could get the node-red-contrib-mssql node to work), or it could simply hold the entire data package in local ModBus registers, all prepared, for the DataLink program to simply read and append.
I have an immediate need that I am using as an evaluation of the groov RIO. I need to read two thermocouples and two analog inputs (0-10VDC), There are also four data points I want to collect from two PLC’s and hold. This will provide a complete data package for two centrifuges, telling me the fluid temperature, actual rotation speed and setpoint, and the program used.
So, that is where I am. In regards to the reading from one ModBus register and putting it into a different one is relatively simple. I was working with a thermocouple readings on channel 0 and 1. If I read the register directly from an external ModBus client, the data read is stored in IEEE float32 format, which while very accurate, is much more difficult to work with. If I read from the channels’ register (1032?) using the Opto I/O node and store it into a normal Holding Register, it is stored in a much more typical integer format using the four bytes. While it is truncated and stored as an integer, that is more than accurate enough for me. If necessary I pre-multiply by 100 and divide by 100 upon reading.
So, I hope that helps. My primary question is can I put all my ModBus data from various sources into Holding Registers and Coils on the RIO and make them accessible to a remote ModBus client?
Again, I hope this is the right venue for questions like this, and thank you for your time.
RRR