# OPC connections between Ignition and Siemens PLC

**URL:** <https://forum.inductiveautomation.com/t/opc-connections-between-ignition-and-siemens-plc/73887>\
**Category:** Ignition\
**Tags:** ignition81, perspective\
**Created:** [May 18, 2023, 10:58am UTC](https://forum.inductiveautomation.com/t/opc-connections-between-ignition-and-siemens-plc/73887 "2023-05-18T10:58:57Z")\
**Posts on this page:** 17\
**Page:** 1

<div class="post-metadata">

**Author:** ![g.cascales](https://avatars.discourse-cdn.com/v4/letter/g/71c47a/32.png) [@g.cascales](https://forum.inductiveautomation.com/u/g.cascales)\
**Post date:** [May 18, 2023, 10:58am UTC](https://forum.inductiveautomation.com/t/opc-connections-between-ignition-and-siemens-plc/73887/1 "2023-05-18T10:58:57Z")

</div>

Hi there!

I know there are several posts about OPC tags and connections to a Siemens PLC, but I wanted to ask something slightly different:

- I have a S7-1200 Siemens PLC with OPC UA capabilities. Since it is a S7-1200 it only provides acting as OPC UA Server.

Therefore, what would be the best option (in terms of performance and computational resources) to carry out the connection between Ignition and the PLC?

1. Connect to a "Device" from Ignition gateway, as indicated in [Siemens - Ignition User Manual 8.1 - Ignition Documentation](https://docs.inductiveautomation.com/display/DOC81/Siemens). A big disadvantage of this is that _The access level must be "full"_, what leaves the PLC unprotected.

2. Use Ignition as an OPC UA client to the OPC UA Server embedded in the PLC, as indicated in [OPC UA Client Connection Settings - Ignition User Manual 8.1 - Ignition Documentation](https://docs.inductiveautomation.com/display/DOC81/OPC+UA+Client+Connection+Settings#OPCUAClientConnectionSettings-OPCUAClientConnectionSettings). Will I have access (read and write) to all the tags published in the PLC´s OPC UA Server easily? Are there any disadvantages or special considerations I am missing?

3. Other ways I am not aware now.

Any suggestions?

PS: Ignition is always running, but the PLC would be off during non-working hours. I am worried about "error" messages in the log or other issues that could affect. Something else I should consider?

Thanks in advance!

---

<div class="post-metadata">

**Author:** ![Kevin.Herron](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/kevin.herron/32/7259_2.png) [@Kevin.Herron](https://forum.inductiveautomation.com/u/Kevin.Herron)\
**Post date:** [May 18, 2023, 12:42pm UTC](https://forum.inductiveautomation.com/t/opc-connections-between-ignition-and-siemens-plc/73887/2 "2023-05-18T12:42:54Z")

</div>

If you’re within the system limits of the S7-1200 using OPC UA should be fine, otherwise you might consider the driver instead. I think they are limited to 1,000 monitored items via the OPC UA interface.

---

<div class="post-metadata">

**Author:** ![g.cascales](https://avatars.discourse-cdn.com/v4/letter/g/71c47a/32.png) [@g.cascales](https://forum.inductiveautomation.com/u/g.cascales)\
**Post date:** [May 18, 2023, 2:15pm UTC](https://forum.inductiveautomation.com/t/opc-connections-between-ignition-and-siemens-plc/73887/3 "2023-05-18T14:15:17Z")

</div>

thanks @Kevin.Herron ,

do you know if there are plans to implement the driver for protected PLCs?

Leaving the PLC unprotected is a risk for us now.

Any comments about what I said in "PS"?

Thanks

---

<div class="post-metadata">

**Author:** ![Ladrone](https://avatars.discourse-cdn.com/v4/letter/l/a698b9/32.png) [@Ladrone](https://forum.inductiveautomation.com/u/Ladrone)\
**Post date:** [May 18, 2023, 2:17pm UTC](https://forum.inductiveautomation.com/t/opc-connections-between-ignition-and-siemens-plc/73887/4 "2023-05-18T14:17:01Z")

</div>

> [@Kevin.Herron](#):
>
> within the system limits of the S7-1200 using OPC UA should be fine, otherwise you might consider the driver instead. I think they are limited to 1,000 monitored items via the OPC UA inte

[S7 1200/1500 limits](https://support.industry.siemens.com/cs/document/109755846/what-are-the-system-limits-of-the-opc-ua-server-with-s7-1500-and-s7-1200)

---

<div class="post-metadata">

**Author:** ![Kevin.Herron](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/kevin.herron/32/7259_2.png) [@Kevin.Herron](https://forum.inductiveautomation.com/u/Kevin.Herron)\
**Post date:** [May 18, 2023, 3:04pm UTC](https://forum.inductiveautomation.com/t/opc-connections-between-ignition-and-siemens-plc/73887/5 "2023-05-18T15:04:37Z")

</div>

> [@g.cascales](#):
>
> PS: Ignition is always running, but the PLC would be off during non-working hours. I am worried about "error" messages in the log or other issues that could affect. Something else I should consider?

The OPC connection won't spam the logs, the driver may be chattier. Doesn't matter either way unless it bothers you.

> [@g.cascales](#):
>
> do you know if there are plans to implement the driver for protected PLCs?

We've got plans to evaluate a 3rd party library... some day... and if that works out we'll build a new driver around it. If it doesn't work out for some reason, then no. Siemens doesn't document S7 or S7+ and their official stance on interoperability is to use OPC UA.

---

<div class="post-metadata">

**Author:** ![g.cascales](https://avatars.discourse-cdn.com/v4/letter/g/71c47a/32.png) [@g.cascales](https://forum.inductiveautomation.com/u/g.cascales)\
**Post date:** [May 24, 2023, 7:00am UTC](https://forum.inductiveautomation.com/t/opc-connections-between-ignition-and-siemens-plc/73887/6 "2023-05-24T07:00:23Z")

</div>

@Kevin.Herron sorry to disturb again.

I have implemented the PLC as an OPC UA Server and Ignition works as client.

But I am not able to read arrays from the PLC, please see images below:

PLC:

 ![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/9/6/968c05eca165d35f93caa821bcc18e1b02d9e726.png)

Ignition tags:

 ![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/2/4/249f2202664aaffbaee084223eacb07fd6746697.png)

The only way I got it working is selecting the individual elements of the array (and creating a "byte" tag for each element of the array):

 ![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/b/8/b8e3a0861f98b7371860225991d4f19c902a6448.png)

Is there any configuration I am missing to directly read the whole array?

---

<div class="post-metadata">

**Author:** ![Davide\_Bortolini](https://avatars.discourse-cdn.com/v4/letter/d/3e96dc/32.png) [@Davide\_Bortolini](https://forum.inductiveautomation.com/u/Davide_Bortolini)\
**Post date:** [May 24, 2023, 8:05am UTC](https://forum.inductiveautomation.com/t/opc-connections-between-ignition-and-siemens-plc/73887/7 "2023-05-24T08:05:44Z")

</div>

Hi @g.cascales,  
you shouldn't have any issues reading arrays from an OPC device, so it's really strange. An OPC connection to a Siemens S-1200/1500 PLC is usually pretty straightforward.  
But let me understand why you have implemented a server interface in the PLC? Have you tried to read the same array via generic interface?

Davide

---

<div class="post-metadata">

**Author:** ![g.cascales](https://avatars.discourse-cdn.com/v4/letter/g/71c47a/32.png) [@g.cascales](https://forum.inductiveautomation.com/u/g.cascales)\
**Post date:** [May 24, 2023, 8:50am UTC](https://forum.inductiveautomation.com/t/opc-connections-between-ignition-and-siemens-plc/73887/8 "2023-05-24T08:50:23Z")

</div>

Hi @Davide_Bortolini ,

I have implemented a server interface because the PLC is acting as an OPC UA server, and it is the way to expose the tags to be accessed by clients. It is the only way I know to share tags when PLC is acting as an OPC UA server.

Do not really understand what you mean with "generic interface".

---

<div class="post-metadata">

**Author:** ![Davide\_Bortolini](https://avatars.discourse-cdn.com/v4/letter/d/3e96dc/32.png) [@Davide\_Bortolini](https://forum.inductiveautomation.com/u/Davide_Bortolini)\
**Post date:** [May 24, 2023, 11:12am UTC](https://forum.inductiveautomation.com/t/opc-connections-between-ignition-and-siemens-plc/73887/9 "2023-05-24T11:12:37Z")

</div>

My bad, I've seen now that you're working on a S7-1200 that requires a Server Interface defined. On S7-1500 there's no need at first as you can enable the Generic Siemens Interface (that's what I was referring to).  
I'm more familiar with 1500 family thus I'm not aware if there are some incompatibilities with OPC on 1200 platform.  
As testing purpose, have you tried to access to the same NodeId with another client, eg UAExpert?

Davide

---

<div class="post-metadata">

**Author:** ![g.cascales](https://avatars.discourse-cdn.com/v4/letter/g/71c47a/32.png) [@g.cascales](https://forum.inductiveautomation.com/u/g.cascales)\
**Post date:** [May 24, 2023, 12:32pm UTC](https://forum.inductiveautomation.com/t/opc-connections-between-ignition-and-siemens-plc/73887/10 "2023-05-24T12:32:04Z")

</div>

@Davide_Bortolini I tried with UaExpert and seems that the array itself does not have a dedicated NodeId, but each element of the array has a NodeId. Do not know if this is the reason that I cannot get the whole array into a tag in Ignition.

 ![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/6/a/6ac62bf1ecf06e4249f9559cb166ac59abc77367.png)

---

<div class="post-metadata">

**Author:** ![Kevin.Herron](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/kevin.herron/32/7259_2.png) [@Kevin.Herron](https://forum.inductiveautomation.com/u/Kevin.Herron)\
**Post date:** [May 24, 2023, 12:33pm UTC](https://forum.inductiveautomation.com/t/opc-connections-between-ignition-and-siemens-plc/73887/11 "2023-05-24T12:33:57Z")

</div>

It will have a NodeId, but it may not be a Variable, in which case it does not have a Value attribute to subscribe to.

Look at that same Node in that Attributes pane of the normal view in UaExpert

---

<div class="post-metadata">

**Author:** ![Kevin.Herron](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/kevin.herron/32/7259_2.png) [@Kevin.Herron](https://forum.inductiveautomation.com/u/Kevin.Herron)\
**Post date:** [May 24, 2023, 12:36pm UTC](https://forum.inductiveautomation.com/t/opc-connections-between-ignition-and-siemens-plc/73887/12 "2023-05-24T12:36:43Z")

</div>

Another thing I will mention, since I missed that this was a S7-1200, is that via the “Server Interface” mechanism Ignition will not be able to read whole structures, only individual exposed structure members. I can’t remember if the 1200 exposes these or not, but it’s not ideal performance-wise for the PLC.

This is because the 1200’s Service Interface mechanism only supports the newer DataTypeDefinition attribute, and not the older DataType Dictionary mechanism, that let’s clients learn about structured types in the server.

---

<div class="post-metadata">

**Author:** ![g.cascales](https://avatars.discourse-cdn.com/v4/letter/g/71c47a/32.png) [@g.cascales](https://forum.inductiveautomation.com/u/g.cascales)\
**Post date:** [May 24, 2023, 12:47pm UTC](https://forum.inductiveautomation.com/t/opc-connections-between-ignition-and-siemens-plc/73887/13 "2023-05-24T12:47:30Z")

</div>

To sum up, I cannot access directly the whole array, right? I will have to access each element of the array.

---

<div class="post-metadata">

**Author:** ![Kevin.Herron](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/kevin.herron/32/7259_2.png) [@Kevin.Herron](https://forum.inductiveautomation.com/u/Kevin.Herron)\
**Post date:** [May 24, 2023, 12:48pm UTC](https://forum.inductiveautomation.com/t/opc-connections-between-ignition-and-siemens-plc/73887/14 "2023-05-24T12:48:49Z")

</div>

It looks that way, but we can confirm that with more poking around in UaExpert.

---

<div class="post-metadata">

**Author:** ![g.cascales](https://avatars.discourse-cdn.com/v4/letter/g/71c47a/32.png) [@g.cascales](https://forum.inductiveautomation.com/u/g.cascales)\
**Post date:** [May 25, 2023, 8:23am UTC](https://forum.inductiveautomation.com/t/opc-connections-between-ignition-and-siemens-plc/73887/15 "2023-05-25T08:23:05Z")

</div>

@Kevin.Herron there you go:

 ![image](https://us1.discourse-cdn.com/inductiveautomation/original/3X/0/0/00bce7d1c39e0ea21f09332a99d972fbe9be869e.jpeg)

---

<div class="post-metadata">

**Author:** ![automatisation](https://avatars.discourse-cdn.com/v4/letter/a/94ad74/32.png) [@automatisation](https://forum.inductiveautomation.com/u/automatisation)\
**Post date:** [May 25, 2023, 11:17am UTC](https://forum.inductiveautomation.com/t/opc-connections-between-ignition-and-siemens-plc/73887/16 "2023-05-25T11:17:36Z")

</div>

Have you tried declaring a Companion specification with the help of SIOME ? [https://support.industry.siemens.com/cs/document/109755133/siemens-opc-ua-modeling-editor-(siome)?dti=0&lc=en-CA](https://support.industry.siemens.com/cs/document/109755133/siemens-opc-ua-modeling-editor-(siome)?dti=0&lc=en-CA)  
It is way more tedious but it enables you to specify string for the nodes ids which works way better in Ignition and especially with UDTs.  
I've never had to deal with arrays from PLC to Ignition so can't tell but it might help you.

---

<div class="post-metadata">

**Author:** ![Kevin.Herron](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/kevin.herron/32/7259_2.png) [@Kevin.Herron](https://forum.inductiveautomation.com/u/Kevin.Herron)\
**Post date:** [May 25, 2023, 12:43pm UTC](https://forum.inductiveautomation.com/t/opc-connections-between-ignition-and-siemens-plc/73887/17 "2023-05-25T12:43:52Z")

</div>

Looks like a Variable, but it has a Null value, so I assume the server does not intend for you to access it as a whole array.
