I’d say Matrikon, but of course as an employee I’m more than a bit biased
Seriously though. As with any product ‘which is better’ is in the eyes of the user, and what their criteria is.
In terms of OPC, both companies are diligent in keeping their OPC servers up to Compliance with the OPC Foundation criteria. As well, both companies have a lot of history and experience dealing with industrial automation.
Since the OPC side of things is standardized their not much room for improvement any company can really do there. Much like ODBC is standard, what makes any of MySQL, Oracle or MS SQL a ‘better’ product? The answer lies with other features, such as usability, configuration or added functionality. For some users, the vendor’s experience and expertise and their ability to provide support, training and robust, quality products are important factors.
Features like DA, HDA or A&E support, browsing, configurable address space, customized scaling, etc may be important for one user and not to another. Auto configuration, flexible communication options or communication redundancy offer different advantages depending on whether the end device is a PLC, DCS, historian or remote RTU. The feature set the of end device the OPC server supports is just as important as the OPC side of things. At the end of the day, it’s subjective based on what you value as ‘better’. Both companies offer a range of free product downloads. I’d suggest taking some for a test drive.
On your other question, of course the folks at Inductive Automation have the final answer, but I can make a couple of comments.
Every OPC server supports the GetStatus call. It’s a very light weight call that returns information on the state of the OPC server, current time, vendor info etc. Many OPC clients will call this interface at a high frequency to use as a ‘heartbeat’ (DA 3.0 introduced a ‘real’ heartbeat interface). Many OPC clients will use the result of this call to determine if an OPC server is alive.
This is different from the OPC Quality of individual items. Many OPC clients will tie their error handling to the OPC item quality, since it is possible for an underlying device to go offline, but the OPC server is still functioning. The update rate of the OPC item Quality is the update rate of the Group (which is often much slower than the GetStatus call rate). Also an OPC client may attempt to retry a connection or wait for multiple items to report a Bad Quality before declaring the underlying system or server dead.
Hope you find some of that rambling helpful.