OPC UA with Kepware/Matrikon

Hi all,

I’m developing an huge project where the control remains in some Siemens PLCs (S7-300, S7-1200, S7-1500).

So, to connect Factory IO to them all, I’m thinking on OPC UA.
I’ve tried with Kepware but I have a problem: when I filter the nodes, Factory IO shows me all the “_” nodes like _address, _timestamp… and I need only the .value ones. Problem here is that I will run out of tags (I’ll be using 200/300 IO variables in Factory IO, and each Kepware tag has 16 nodes, so I’m talking about more than 3000 OPC UA nodes)

So, my questions are:

  • Can I filter in some way this “_” nodes if I use kepserver?
  • Will i have the same problem if I use Matrikon OPC server? (I’ve tried with kepserver trial, but i dont want to buy a matrikon license to have the same problem)

My last solution is to use a single PLC as a Master (for example, the S7-1500) connected to factory IO and exchanging variables with the other PLCs but… I prefer to communicate throught OPC UA

Thanks for your help

Hi @user122,

Take a look at the following page of the documentation, it includes instructions on how to get around this issue: OPC Client DA/UA - FACTORY I/O

The idea is to use a prefix in the OPC UA server nodes (e.g. ‘fio_’) and then use the start with filter in Factory IO in order to retrieve only these nodes from the server.

Hi Bruno, thanks for your response.

The problem here with Kepware (at least, because i dont know if this problem exists with Matrikon too) is that a tag has a lot of parameters “added” to the value.
Yesterday I did this filtering as you are suggesting, for example:
If i have a sensor I named the variable
lab_sensor

The problem is, when I filter as you say, the tags that FactoryIO are reading are
lab_sensor (this is the “value”, the only tag that I really want here)
lab_sensor._address
lab_sensor._timestamp
lab_sensor._highlimit
lab_sensor._lowlimit
lab_sensor._description
and so on (around 16 parameter each value)

For 9 variables, I have more than 100 tags in factoryIO

It doesn’t look like an elementary data type (Boolean, SByte, Byte, …). Take a look at the data type of the item configured in the server. You should use Boolean, Int32 and Float data types with Factory I/O.

Hi @brunovgr

Thanks again but, the datatype in Kepserver is Boolean

The configuration in FIO-driver, with the filters:

But, as you can see, FIO explores the entire tags parameters
fio

The selected item is “Siemens.SiemensLab.Lab_EntryConveyor._Address”, the fisical address for the Lab_EntryConveyor tag.
I didnt create it, its created by kepserver, so i cant delete it.

And, because it has the same beginning as my desired tag, I cant avoid FIO to explore it

(I’m sorry, as a new user i cant post 3 images in a post, so i divided it in three different sendings)

OK, I see. I believe there is no easy way to filter these items.

I would recommend that you create a new KEPServerEx6 project and configure your own channel, device, and items. This way you can add only the items you intend to use in Factory I/O.