Mapp View with External OPC UA Servers (LENZE, SIEMENS)

Hi everyone,
I recently got mapp View working with external OPC UA servers on both Lenze and Siemens PLCs. I faced a few challenges, especially around namespace index and refId configuration, so I’m sharing what worked for me in case it helps someone else.


:wrench: Lenze PLC Setup

  • Alias: Lenze

  • IP: 192.168.0.11

  • Port: 4840

  • Namespace: CODESYSSPV3/3S/IecVarAccess

  • Security: Best Available (Anonymous)

Binding Example:

XML


:wrench: Siemens PLC Setup

  • Alias: Siemens

  • IP: 192.168.0.10

  • Port: 4840

  • Security: None (Anonymous)

Binding Example:

XML


:puzzle_piece: Tricky Binding Case

One of the more complex bindings I had to configure was for an array variable in Siemens:

XML

:memo: Note: In XML, double quotes (") must be written as ", so "G" becomes "G".


Configure the binding file properly:
For example:

  • Use serverAlias="http://Serverinterfaces_1"

  • Set refId="NS2|Numeric|6067"

  • Link it to the right widget using widgetRefId="NumericOutput1"

:warning: What Was Tricky

The most confusing part was figuring out the Namespace Index and the correct refId for bindings.
Here’s what helped:

  • Every PLC lists its Namespace Array, which shows all available namespaces.

  • The Node ID of each variable includes a namespace index like NS2, NS3, NS4, etc.

  • You need to match this index in your mapp View server config and binding file.

  • UA Expert is very useful for browsing the server and finding these details.


:raising_hands: Special Thanks

A big thanks to my colleague @javier.novella who helped me during this setup — his support made a big difference.


Hope this helps someone save time. If you’re working on something similar and stuck, feel free to reach out. Happy to share what I’ve learned!

17 Likes

this is really valuable information. thanks for sharing :clap:

1 Like

Hi,You use AS6 or AS4.12? Namespace:CODESYSV3 OR CODESYSPV3 In the Picture.Can you provide detailed operational procedures?

I have used AS6. For Namespace i suggest first you connect with UAExpert then check in NamespaceArray whichever node you want to use then you can configure accordingly.

1 Like


as here the node is 5 so find NamespaceArray for it

1 Like

I have still problem to connect to an other B&R PLC HMI over OPC UA and Server Alias.

Ther are alwys BadNodeIdUnknown error in the logger.

Have you used correct NameSpace Array !? @Manuel_Wittmer

Thats a good questen, i don’t know. You can see the UAExpert with the node and the B&R XML configuration.

Hi, Can you Please check this

As you have Index 7 so in my case it is showing “urn:PLCopen/pv/’’

then make sure you have added the exact configuration in OPCUaCs file

for you it might be ‘‘Cell1’’ so your Alias is Cell1, define IP, then whatever you have in UAExpert on Index 7 in Default Namespace “urn:PLCopen/pv/’’

Once everything Configured and Verified then you can move to Binding part..

hm yes it locks everthing ok unfortunatly…

Hi @Manuel_Wittmer ,

what exact error message do you get in the logger?

CHH

Got it…

Now Try Binding refId=“::MainLogic:HMI.LogicButton.bStart” serverAlias=“Cell1”

Try this and let me know!

no idee what i do wrong. the server connection is establishd.

In the logbook I see three failing bindings with “#EURange” is not found. Based on the information you provided so far, I’d assume, that these nodes do not have a unit assigned and therefore no #EURange (::MainLogic:HMI.LogicButton.bStart does not sound like a node with units …).
If the node does not have units - but you use a node-binding - this message is expected and does not really indicate an error … (If my assumption is correct, I would recommend to switch to value bindings - as this requires less resources and is quicker).

Additionally, the binding reference in the log seems to be odd …
If you’re connecting to a B&R System, it should not be needed to provide a NS in your binding data - you just need to configure the default namespace in the .uaserver file … then it should be sufficient to just use the identifier (“::MainLogic … “)

3 Likes