AdvancedHMI Software

General Category => Open Discussion => Topic started by: bachphi on April 14, 2020, 07:47:29 PM

Title: Send a message to multiple controllers
Post by: bachphi on April 14, 2020, 07:47:29 PM
In the Logix 5000 Controllers Messages programming manual, Rockwell devoted a whole chapter to sending
message to mutiple controllers. The idea behind it was using just a single message instruction to communicate
with different controllers.
However, the chapter was written badly, incomplete and in some cases it was wrong as well.
Below is my take on sending message to  mutiple controllers. Hope that it will be usefull for someone in someday.
Any comments  or suggestions are super welcome.

(https://i.postimg.cc/mrFSzNnR/Message-To-Multiple-Controllers.png)

(https://i.postimg.cc/5yf5rc2N/Message-To-Multiple-Controllers-Msg-Config-Path.png)
Title: Re: Send a message to multiple controllers
Post by: bachphi on April 15, 2020, 10:31:35 AM
The same idea can be expanded further.
Let's say you need to read different tags from the same controller.
As a side note, UDT structure still remains the most efficient to read. I was able to transfer an entire UDT_Parts[] array.

1. Going from Dual-IP 5380-L, A1 Enterprise port . path string : $13$tTARGET_IP_ADDRESS$00
2. Going from Dual-IP 5380-L, A2 DeviceLevel port . path string : $14$tTARGET_IP_ADDRESS$00

3. I dont have a 5480 to verify, so below is my guess:
4.  Going from Dual-IP 5480, B1  port:   path string : $12$pTARGET_IP_ADDRESS
5.  Going from Dual-IP 5480, A1  port:   path string : $14$rTARGET_IP_ADDRESS$00
6.  Going from Dual-IP 5480, A2  port:   path string : $15$rTARGET_IP_ADDRESS$00
Title: Re: Send a message to multiple controllers
Post by: dmroeder on April 15, 2020, 04:20:55 PM
The same idea can be expanded further.
Let's say you need to read different tags from the same controller.
As a side note, UDT structure still remains the most efficient to read. I was able to transfer an entire UDT_Parts[] array.

1. Going from Dual-IP 5380-L, A1 Enterprise port . path string : $13$tTARGET_IP_ADDRESS$00
2. Going from Dual-IP 5380-L, A2 DeviceLevel port . path string : $14$tTARGET_IP_ADDRESS$00

3. I dont have a 5480 to verify, so below is my guess:
4.  Going from Dual-IP 5480, B1  port:   path string : $12$pTARGET_IP_ADDRESS
5.  Going from Dual-IP 5480, A1  port:   path string : $14$rTARGET_IP_ADDRESS$00
6.  Going from Dual-IP 5480, A2  port:   path string : $15$rTARGET_IP_ADDRESS$00

I had to do the same thing about a month ago.  This was 6 machines, the operator could edit a recipe on one machine, send the updated recipe to the other 5 machines.  I had an array of strings that were pre-populated with the paths.  Machine 1's path was in Paths[1], Machine 2 in Paths[2] and so on.  A single message instruction was used, just updated the MSG path depending on which machine I was sending the recipe to.
Title: Re: Send a message to multiple controllers
Post by: bachphi on April 19, 2020, 07:31:54 PM
very funny, I just found MSG_To_Multiple_Controllers.acd  in the sample folder. Doh.

I was looking at the sample project little more. I think my version is a little better with error handling.
If one of the controllers is offline, it flag up the error of which controller is offline and then move on to the next one.