web developer & system programmer

coder . cl

ramblings and thoughts on programming...


proview and direct binding

published: 07-06-2012 / updated: 07-06-2012
posted in: c, c++, development, programming, projects, proview, tips
by Daniel Molina Wegener

I am currently working on a ICS/DCS system using ProView. The project is cool, very interesting, where I must implement some nodes on the DCS system, as usual it has three main types of nodes where I must implement two of them: the controlling station and the processing station, there are more nodes to be implemented in the future, like reporting nodes and storage nodes. I was working with the controlling station and I was impressed with the abstraction layer, where you can bind the processing station objects into the HMI objects directly. This is really nice, and due to the nature of the used protocols, like Modbus, RP, Profibus and similar ones, we are not able to use a Web Interface.

For IPC or Inter-Process Communications it uses QCOM, but it has a better and more suitable abstraction layer through the connected nodes that makes possible to see the nodes transparently, without having to plug too many configuration files and protocol specifications. Once you bind the mounted volumes, you can see the configured nodes transparently, without doing too much effort from your C and C++ applications, because they are seen as local nodes, you just need to get the object ID and bind it from your code, and they are connected usually with its Profibus implementation.

For example one of our processing are using mainly RTU connections, so we do not have too much bandwidth — about 19200 bps — so we cannot use anything related to heavy protocols like SOAP, Web Services or even JSON, which are heavy to process and are heavy to be used inside this kind of networks. So, we prefer Profibus, which can be easily handled in real time environments, without too much processing load.

The Global Data Handler or GDH API is very well implemented, you can bind any object of local or mounted volumes as they are local objects. The API calls are non-blocking calls, because the I/O Agent delivers data on the read stage, all parameters are passed to your applications on the scan stage and then they written on the write stage. So, data processing is feasible even if your environment runs in real time, allowing complex algorithms to be implemented. That is the case of one of our processing stations, which requires some complex algorithms to implement automated control.

The main problem probably is the fact that with custom classes to bind devices, you cannot use the GDH API, and you access devices directly, where you must implement the I/O calls to be bound from the I/O Agent. Once you have your custom classes running, then you can bind them directly from your processing applications using GDH if you want, but is preferable to use the GDH abstraction layer, because it is more reliable to handle objects, attributes and signals.


one comment to “proview and direct binding”

  1. Good luck and thanks.
    There is a Wiki as well….

post a comment

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>