kwaltzer (Customer) asked a question.

Live MQTT monitoring of one tag on multiple PLCs

For our production area we have 3 lines or isle of machines, One line has 10 machines, one line has 9 machines, and one line has 15 machines. Each machine has its own Prod 3000 controller. There is a help button on each machines HMI that when pressed will turn on a Blue blinking stack light at the machine to signal to the line help that the operator is in need of assistance.

 

I have been asked to add another signal light at the end of each line so if any of the machines down that line have the help light on, that it will also trigger the end of line light to come on to increase the visibility that someone down the line needs help.

 

All machines are on an internal network via ethernet. Is it possible for all of the production machines that run the Prod 3000 plc to communicate to single Prod 1000 plc that would control just the end of line light??? Otherwise I would have to run an individual output from each machine across the ceiling to a junction box to the end of line light.

 

We already use MQTT through NodeRed for production data collection (cycle counts, recipe parameters, etc.) but its not "Live". it is event or tag triggered at specific events. I figured if this was possible the Prod 1000 end of line light controller would need to be constantly monitoring the help button tag or place the task in the run every second.

 

Or would this have to run through NodeRed to our nextwork and the End of line light controller monitor all the presses through that???


  • ADC_AutomationControls_PE03 (AutomationDirect)

    If the Productivity1000 CPU is on the same internal network as the Productivity3000 CPUs, then there are a few ways for the P1000 CPU to read tags/values in the P3000 CPUs - read modbus register or coil (MRX or MBUS instructions) or network read tag (RX or NETW instructions).

    Another possibility is if the Productivity1000 CPU has access to the same MQTT broker as the Productivity3000 CPUs, then you could have the P3000 CPUs publish their status as a new topic to the MQTT broker and the P1000 CPU could subscribe to the P3000 CPUs status topics.

    Expand Post
    Selected as Best
  • ADC_AutomationControls_PE03 (AutomationDirect)

    If the Productivity1000 CPU is on the same internal network as the Productivity3000 CPUs, then there are a few ways for the P1000 CPU to read tags/values in the P3000 CPUs - read modbus register or coil (MRX or MBUS instructions) or network read tag (RX or NETW instructions).

    Another possibility is if the Productivity1000 CPU has access to the same MQTT broker as the Productivity3000 CPUs, then you could have the P3000 CPUs publish their status as a new topic to the MQTT broker and the P1000 CPU could subscribe to the P3000 CPUs status topics.

    Expand Post
    Selected as Best
    • kwaltzer (Customer)

      Yes the units would be on the same network with access to the same broker. However it seems like the modbus or network read/write might be a better method.

       

      The Prod PLC only allows 4 MQTT clients per CPU. Ability to send multiple payloads per publisher, but in order to send a payload you have to enable the publisher which in turn will publish all the payloads under that Publisher. I could block out the payloads so the data I dont want to send is blank but that will create an error on the SQL Node in NodeRed for the blank data. So seeing as how I dont need to save or store this trigger to turn the light on just see if its triggered, the modbus or network is probably the way to go. no secondary monitoring on another platform to worry about.

       

      I know modbus has been around for awhile but I have no experience programming it. Will I need to create a Modbus or network read block on the Prod 1000 (light plc) for every machines Prod 3000 IP address???

      Expand Post
      • ADC_AutomationControls_PE03 (AutomationDirect)

        Again, there are a couple of ways you could do this.

         

        The most straightforward way is to assign a Modbus address to the tag in each of the P3000 CPUs (if it hasn't been assigned already) and then configure an MRX instruction in the P1000 CPU for each of the P3000 CPUs.

         

        Alternatively, you could use an RX instruction for each P3000 CPU (this doesn't require you to assign a Modbus address to the tag in each P3000, but does require that you link to the saved project for each P3000 CPU).

        Expand Post
      • kwaltzer (Customer)

        The modbus address Im assuming has to be a unique tag per each machine correct? Machine 1&2 cant have the same modbus address for the help button tag even though they have different IP addresses.

      • ADC_AutomationControls_PE03 (AutomationDirect)

        Actually, the unique IP address for each machine is all you need to differentiate machines when you are reading their Modbus addresses. So, all the machines could use the same Modbus address for something like the help button tag.