Architecture magazine

Summary of the requests:
-You guess my design appropriate, if the need arise to scale upward even further.
-How can I improve conditions of potential competition in the data record.

I work in the research of catalyst, where I support about 100 scientists, which includes the construction of automated test systems. I have a joint Bachelor's degree and 5 years experience professional in electronics and software engineering, including 3 years is LabVIEW Development.

I can bounce around ideas of electronics on the site, but as I am the only software person, I was hoping that some of you might take 10 minutes and my general software architecture review.

The platforms have usually several pieces of fixed material, usually in the form of:
-Hardware DAQ USB of NOR
-Eurotherm controllers (Controller Mini8, 2000 series, 3000 series) on RS232, RS485 or TCP.
-The material is not relevant, because I communicate with them through OCP
-Other instruments RS232/RS485, communicate through NI VISA.
-Other USB instruments, communicate via directx or device drivers, and al.

An execution will generally last more than 12 hours, and so they need be sure to leave unattended. Generally, this is in the form of hardware locking mechanisms, because I do not trust do not lock down the computers. In addition, it means error real manipulation in software rather than appear an error message on screen

I love my modular software designs and abstract (although never to excess). Each hardware device is handled in its own class data structure; The values are read, stamped and recorded in a shift register. Values are constantly compared to safe operating limits. The only time where an external level, or senior VI is called from the controller is a configuration during initialization data structure. Actions can be sent to the device controller via a queue. If a value is outside the safe operating conditions, special condition is sent to an alarm handler via a queue.

Fortunately, experience can often be arranged in a sequence of steps configurable user. This takes the form of an array of clusters. The cluster instance stores set values for temperatures, dwell time, States of the device and so on. When a sequence step is advanced, the set values are powered by queues to each device controller. It all works fine and dandy.

A higher level than, the test runs can be put on hold a user will put a sample in the rigging, log on to the system, create a sequence of the series of tests and let him get on with it. I would also add sequences and execution conditions are recorded on the disc, so if the PC crash, things can become operational quickly.

Regarding the interface user; That's it, that is. None of the screws in the user interface deal with the operation of the platform. Changes to the user interface are written to the data structure of file config, directly on the device controllers, Manager of alarm or a controller of various processes. The readings of the displayed user interface have a set update rate, which queries data of each device controller

At the request of scientists, all data that may be stored, is recorded at a frequency set by the user. Once the log file reaches a number of lines, it is closed and incremented file name continues. This is why they can be imported into excel, or to relieve pressure on a computer, data processing. Each iteration of newspapers, data are queried from everywhere where the readings are taken.

I think I have a stable, reliable and safe way to build platforms, but I remain unsatisfied with my methods I've tried to present data to the user and save the data. Given that the data is either read from a number of sources, I want a good way to keep reasonably synchronized data. (Reasonable being less than 50 ms) Temperatures, pH levels, pressures, motorized actuators and mass flow controllers fluctuate enough that an accuracy of more than a few hundred Hertz will count (though oversampling and smoothing occur inside the controller of the data of / on the device).

My current method creates a temporary Notifier and adding to the front of the queue. On the next iteration of the device, he's jumped out of the queue and the last value in the buffer is returned by the notifier to the calling function. I support this action engine; because as there is no easy way to tell when to take a reading, whenever the controller of the machine took a reading, it was necessary to update the engine of the action. I'm still unhappy with my method under querying data, because I can't guarantee that the new values have been updated in the device controllers when the section of data logging queries data. This can even cause the same value to be connected. (Race condition) This problem still persists with a motor of action.


Just a few ideas:

* time stamp each reading

* Instead of logging the time stamp of the file, you can trigger an old flag 'data' or similar. I think that the Protocol of the OPC has a flag that indicates how new and recent is any value. Maybe you want to copy from this standard.

* In this case, I would just read the data via a notifier of broadcasting all the time instead of notification of recall temproary. The journal (or other) just browse the list of notifiers and takes the most recent value.


Tags: NI Software

Similar Questions

Maybe you are looking for