EB Pro: Working with two HMI's

EngNate

Member
Join Date
Jan 2023
Location
Bella Bella, BC
Posts
20
How do I get two HMI's to mirror each other?

Outputs on a smart relay are controlled from two locations, two HMIs with the same toggle switches. When a switch state is changed on one station it must be reflected on the other. How is it done? I am stuck at: "macro command cannot control a remote HMI". (attempt to use SetData command)

It doesn't look like there can be more than one local HMI. How would you get one to write to another?

Ethernet, connected thru a switch, Easy Builder, Zelio smart relay

I'm muddling through this stuff for the first time. Any direction will be appreciated!
 
Since I do not know from the problem description how the HMIs communicate with the smart relay this advice may be wrong. I assume both HMIs can read and write data to the smart relay. It seems this communication is through Ethernet (Modbus TCP?). If this is not the case the idea below is not of value.

Based only on the information you are providing, can "both" of the HMIs not poll the output data of the smart relay regularly? When one of the HMIs changes the output data of the smart relay, as soon as the other HMI detects the new value it updates its monitored value. The HMI could even indicate that the data was changed from the other HMI, which may be useful.
 
I would assume you have communications sett up for one HMI already?


I don't see any issue hooking another up as long as it has a separate IP address and the same exact program should at least read any info from the smart relay.


As far as writing to the safety relay; I would assume there is always the possibility of writing over each other if two people are using each HMI at the same time.
 
Thanks for the response. What I have - background: Was a working installation until both HMIs failed on the event of a power interruption (24VDC Main). Both are hung in bootup. There is no configuration backup file for them, and anyhow the 4" Schneider units are unavailable for the foreseeable future. I've chosen but not yet purchased the Weintek, understanding that it will work with the Zelio relays in Modbus, so yes on that question. I am familiar with some software programming and objects, logic, etc but pretty much a dunce with communication on a network.

The related hardware is 2x Zelio SR3B261BD + ethernet and an unmanaged hub/switch. Each Zelio program consists of simply a word>bit converter to discrete outputs. None of the ethernet outputs are used, just one input. That is as it was originally commissioned and worked for some years. So, there isn't any com back to the HMIs from the relays (right?). I need each HMI to be able to set two bits on the other one when a switch is touched - one to set the switch to the same state and one to disable its macro when that happens.

The Zelio program is attached, the EB file is too big (900Kb). I`ve got my panels of switches and they set the integer inputs to be passed to the converters in the relays, that much I have working. There is some stuff in the System Parameters I can`t figure out: Why my Local HMI doesn`t show a COM mode, and why I can`t select the Model for the Remote HMI.

So.., the challenge is emulate a simple hallway light with `3-way`switches using two HMIs.

Cheers, thanks for any help!
 
EngNate: Please confirm for me, are the Zerlio relays "Modbus RTU" slaves or "Modbus TCP" servers?

Edit:

OK, found the manual. The Zelio SR3B261BD is a Modbus TCP adapter.
Normally a Modbus TCP adapter can respond to requests from more than one client.
So, as I said in my original post. I do not think you need to communicate the HMIs with each other.

Simply have the HMIs to regularly poll the output status to see if the output was changed by the other HMI. When this change is detected simply update the HMI's process image.

https://download.schneider-electric...=EIO0000002690.01.pdf&p_Doc_Ref=EIO0000002690
 
Last edited:
So.., the challenge is emulate a simple hallway light with `3-way`switches using two HMIs.

If you can make the HMIs write to specific Auxiliary relay bit(s) in the Zelios, then there are a few ways:

1) If each HMI can write values of 0 (zero) or 1 (one) to a bit (HMI-A and HMI-B) in the Zelios, then an XOR circuit would make the output coil have a value 0 when the two bits are the same or have a value of 1 when they differ:

Code:
      HMI-A      HMI-B           Hall-Light
-------] [--------]/[------+--------( )-----
                           |
                           |
      HMI-A      HMI-B     |
-------]/[--------] [------+
2) If both HMIs can only write a 1 to the same bit in the Zelios when a button is pressed, then the Zelio resets that bit to 0 ("set and forget"), so the code need only detect that rising edge, then it could use a flip-flop circuit:

Code:
     HMI-bit   Hall-Light        Hall-Light
-------] [--------]/[------+--------( )-----
                           |
                           |
     HMI-bit   Hall-Light  |
-------]/[--------] [------+

                                  HMI-bit
------------------------------------(R)------
 
Last edited:
Simply have the HMIs to regularly poll the output status to see if the output was changed by the other HMI. When this change is detected simply update the HMI's process image.

Thank you, Alfred. I am going to have to learn this from start, can you help me out? Note, the Zelio's have ethernet extensions (SR3NET01), and not Modbus extensions. How might this have been done before, as the Zelio FBD has only a word-bit converter?

If I could I would hire the job out and just do what I know but I haven't found that option available.

Thanks!
 
...Some of this is slowly coming to light as I absorb how the Modbus TCP works...

If I got this right, I'm going to have one HMI a Modbus Server, the other HMI and the Zelio relays Clients?
 
Last edited:
...Some of this is slowly coming to light as I absorb how the Modbus TCP works...

If I got this right, I'm going to have one HMI a Modbus Server, the other HMI and the Zelio relays Clients?


Can the Zelio relays be Servers? Then the HMIs could both be clients and write a 1 to the HMI-bit whenever either of their single buttons are pressed, which would cause the light switch output coil to toggle its state (second example of mine, first rung), followed by the Zelio resetting that HMI-bit to a 0 (second example, second rung).

If the HMIs have two buttons each, then use the first example: one button on HMI A writes a 1 to bit HMI-A in the Zelio, and one button on HMI A writes a 0 to bit HMI-A in the Zelio; and the same for HMI B and bit HMI-B in the Zelio.
 
...Some of this is slowly coming to light as I absorb how the Modbus TCP works...

If I got this right, I'm going to have one HMI a Modbus Server, the other HMI and the Zelio relays Clients?


According to this, the Zelio Modbus Module can only act as a Modbus Slave i.e. Server.
 
I think you're referring to the Zelio Modbus extension. This is using the ethernet extension instead. But maybe its the other way, one client and three servers? HMI-a needs to set data on HMI-b and vice versa. Weintek has a video on this but I'm having trouble following it completely, and it's only one-way, switch on a and bit lamp on b.

...Ok, got the client-server relationship and how data goes both ways. So, how do I implement it - are the two HMIs separate projects or both in one?
 
Last edited:
Whoopsie, okay ethernet then.

If I am looking at the same video (here?) with the ethernet module, the Zelio is a Modbus Slave (Server) as well, which implies the PLC is the Master (Client) in that example.

So to match that, the HMIs would both need to be clients.

Do you already have the logic working, where the appropriate button presses on either HMI change the "hallway light" output coil?

And what exactly do you want reflected to the "B" HMI when the "A" HMI changes its button switch (and vice versa)? Is it

  • The current state of the button on HMI A should be updated and reflected on HMI B when the button on HMI A changes,
OR is it
  • The current state of the "hallway light" in the Zelios should be reflected on B when it is changed by the button on HMI A?
 
EngNate, for the logic explained by drbitboy to work, you have to make sure that "both" HMIs (the Modbus TCP clients) poll the output for the Zelio (Modbus TCP server) regularly.
 
"Modbus Server & Client Setup..." is the vid I referred to. There's gaps in it for me at the moment.

The hall light was just to illustrate. I have 2 HMIs, each with 15 switches (same on each) that control respective outputs on two Zelios, all connected thru a hub. So, the com between the two HMIs is to synch the switch states in both locations, option a keeps it simpler.

I'm working in FBD on the Zelio, that part of it is already there. LD doesn't work with the ethernet ext. If you have Zelio Soft 2 download my attachment above and have a look. That end is simple, pass the appropriate integer to the input and the desired outputs turn on. On the EB Pro I've gotten as far as having my switches generate the appropriate input values for each relay. Thru the haze I'm seeing that I get that to the relays via the Modbus address mapping. I see there's a relationship between the HMI and Zelio addresses. Does that mean for instance if the HMI writes to its LW_0 that automatically goes to the Zelio 3x0001? It seems that way from the video.

So, the HMIs should both be clients, and one will respond to a request from the other? And each device or HMI on the system has a client or server attached to it, right? And it looks like it has to be two EB projects

Cheers!
 
So, the HMIs should both be clients, and one will respond to a request from the other? And each device or HMI on the system has a client or server attached to it, right? And it looks like it has to be two EB projects

Cheers!
I think I have not explained myself prperly. Yes, both HMIs are clients (Modbus TCP clients). As such they cannot communicate with each other, because Modbus TCP communication is a client/server communication protocol. The client sends read or write requests, and the server responds to such requests.
So to your question:
HMIs should both be clients, and one will respond to a request from the other?
The answer is no. That is why I say both HMIs must poll the server's "output" (the Zelio's output data) regularly to be able to know if the other HMI has changed the output values.
Maybe the confusion is that I am saying polling the "output" of the slave device, since normally HMIs read the "input" data from a field device, but it is also possible to read the output value, at least for a Modbus TCP server device like this Zelio.
 
Last edited:

Similar Topics

Hello, I am using Unity pro V15. I have Quantum CPU 671 and Ethernet NOE 77101 configured. I have configured IO scanning on NOE. I have attached...
Replies
5
Views
184
Hi All, I'm new to PLCs and the Industrial Systems field as a whole. Currently I'm working through the exercises for LogixPro and was hoping I...
Replies
2
Views
3,739
This isn't a question but more of a Answer for many people who I know have been thinking about this. We have a Surface Pro that I have got running...
Replies
0
Views
2,259
Hi, I'm new in PLC and I got logixpro 1.61 to learn on it but when I try to send output command it dosen't work with me. for example in I/O...
Replies
4
Views
2,356
Hello all, I am currently facing a problem with a Pro-Face HMI PS5000 project file download. I have tried using GP-ProEX SP1 (4.09.350) and...
Replies
0
Views
31
Back
Top Bottom