Edge Best Practices

This follows on from another thread but I think deserves its own not to confuse the OP’s question.

Lets say hypothetical I have 100 machines with edge installed, all mobile and travel the world. The machines have a internet connection when in use, mostly cell modems. I want to use MQTT transmission to publish data back to the main ignition server to reduce over head. Some machines will have a mobile HMI so will use a android tablet with the app, connected locally to the machine over wifi. I don’t need any retention as the MQTT messages are more for monitoring purposes for wear and predicting services etc, so doesn’t matter if any messages get lost as the newest message will pull that last stored value from the PLC DB

Of these 100 machines there is 10 different types, So say Machine A, Machine B etc. They are all PLC controlled (siemens) and data will be polled from the PLC using OPC. Each machine category has different tags.

My thinking was (since edge can only support one project) was to create one master project. When the user opens the app and log’s in, If possible I can pull the machine type from the PLC database and direct to that particular page (mostly one page per machine type, with maybe some pop ups). Or there can be a welcome page which gives the app time to poll the database then the button can get that parameter then pass to the navigation. So the operator will only ever see the page of the machine he is connected to.

This means that the ‘master’ project needs all the OPC values of all the machines, even if some may be faulted or polling wrong data. As for example Machine A could poll OPC value 1 to get say control panel temp, but Machine B could poll OPC value 1 and get ambient temp. But in my mind that wont matter as the only page the operator can see is the one applicable to that machine.

So, now the real question and the reason for posting. What is the best way to create that master project, in a designer directed to one of the machines, or in a designer directed to the main server? My thinking was the main server as using EAM I can push the project to the edge devices. But in the main server designer I cant see any OPC tags. What is the best way to build that tag list from 10 different machines not being able to browse and add. Can I just create a list with OPC value 1 – OPC value 200 and what ever is not used will be faulted or will that drag the whole OPC connection down with faulted values?. Machine A might only poll 20 OPC tags where as Machine B may poll 50. Same goes for the MQTT, I would need to set up the message for the machine with the most tags. Unless there was a way to pull the machine type from the database then tailor the OPC connection and MQTT message from that value?

Or is it best to create 10 different projects applicable to each machine ? Again, where do I design this as I want it really in the main server so I can push it out with EAM, But again from there I cant see the OPC tags or set up up transmission. Or design it for starters in the machine designer then import it to the main server ?

Edited to add, all the PLC’s have the same IP address etc. So the OPC set to for example will be able to access any of the PLC’s and all with the same login credentials.

it's a very nice subject.

will you use the siemens onboard OPC server? be aware of all the options you need to activate in your hardware config of the PLC. also if I remember correctly the opc server is not the same between a 1200 and 1500 PLC or some options are not available on a 1200. The use of different plc even with the same address I think this will not work since event between two plc of the same type it will be a different certificate. so you will always need to validate the communication certificate. I'm not sure about that but I can test it tomorrow at the office. For the rest I don't have that much of experience with edge so I will not able to help you further. But I will follow this topic closely since it could be useful for one of my customer. I will let you know the result of my test.

Thankyou. All the machines have the same PLC (standardized parts). I currently use Raspberry pi’s with node red polling the PLC OPC. I keep a master image of that Pi SD and works for any PLC I plug it into of the same type (same PLC program) never tried it with a different machine (PLC program). Not sure what would happen if it tries to poll OPC values that dont exist, say OPC value 51-100 when the machine only has 50.

Little update on this from what I’ve learned so far.

I’ve created a project using the main server designer. This will be the master project, I’ve successfully pushed that out to some edge devices, so that parts working.

In the main server gateway I created a new tag provider, these will be tags that I push out to the edge devices. I created 10 groups, machine A, machine B etc etc. In these groups I manually added the OPC tag path that will be applicable to that machine, I can then push out that applicable tag group to the edge devices. When you set up EAM you can group machines. So I can push the tag folder machine A out to Machine A group. That all works great.

There is still some manual set up as the transmission settings for the node ID and client ID need to be manually set, I’ve asked over on the cirrus forum if there is a way to use the gateway name as the client id. The transmission settings says the client and node id is optional but if I leave them blank it wont connect. Using the gateway name would be prefect as edge picks that up from the pi host name, in my case the pi name is the machine serial number.

I’ve also asked over on the cirrus forum about transmission and OPC tags. For some reason transmission will not send OPC tag data. It will send the tag name and data on birth and death messages but not in-between. If I create a derived tag from that OPC tag it works perfect. When I try and publish that OPC tag and derived tag together only the derived tag will update, both values in the designer work and update. Having to set up derived tags creates double work so don’t want that.

So the plan will be to set up a PI with with all the appropriate settings and create a backup, that backup can then be used to initialize new pi’s then just change a few things here and there. From there EAM can push out the master program and tag folders.

I may even go one further and put a PLC on the master server with OPC set up, so at least when designing pages I can see values rather then ‘Error Configurations’

If a machine is not online during pushing out a project using the task scheduler to a group of edge nodes, will it pick up the update automatically once its online or will the update need pushed out again ?