Jump to content

Recommended Posts

Hi all.

I need to implement an OPC UA Server in a Delphi program.

Actually, I've used an external QT C++ application to do OPC UA things but is complex to

maintain changes in the server and share an interface between this external program and the main program written with Delphi

and I would like to know if there is a valid native Delphi library to use, better if open-source, but this is not mandatory.

 

Thank you for your suggestions.

 

Share this post


Link to post

I tried. I really did. And then gave up and did it in C++ with the free and widely used open62541 library.

 

I tried using the dlls in Delphi, but always had access violations. The delphi translated headers were correct.

Fun fact: I am not the only one who tried and failed. Another Delphi-Praxis member, completely independent of me, also tried, failed and then just did it in .NET.

For me, that was now two years ago and our opc ua server has seen many extensions and is working well. I implemented it as a seperate standalone console application that talks with delphi application via http/rest. I find it very comfortable and easy to debug.

 

A coworker just added a simple opc ua server to his project in Python within an extremely short time.

 

tl;dr: Having a shared interface between Delphi and another binary really was the least challening part for us. I think actually understanding what OPC UA is and what it can do was much harder.

Share this post


Link to post

Interesting and disheartening in the same way.


Over the past 7 years, I have created an entire CNC ecosystem from logic boards to CNC control software running on Windows OS

done entirely in Delphi (well it runs without any problem, and in some bought even better, in Linux environment under Wine,

at least as far as memory management is concerned).

For OPC UA server management I have already sketched out something following the OPC 40502 standard (OPC UA for Computerized Numerical Control (CNC) Systems),

initially using Python opcua but then switched to a program external to Delphi made with QT.

Not having native handling in Delphi makes things quite complex for me, and I have to do everything with an additional TCP layer between the two processes to exchange information, events, etc.

I am precisely looking for a way to avoid all this and keep everything in one language and process.

Share this post


Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×