Exchange of information between 10 PLCs S7-1200

Hello, I'm new to node red, and I have a demand where I need to exchange information between 10 siemens 1200 plcs, the idea of ​​the project is to centralize some 9 clps variables in a db in a central clp to show the information in an HMI, and also, I need to be able to change these variables through the HMI and send them back to each clp, I tried to make an implementation, but the program is not behaving as expected, when I try to change the variables on one of the sides (do clp central to the others, or vice versa) the information does not reach the other side, or if it does, it takes a long time. My question is, what am I doing wrong? is it a limitation of the node, maybe the refresh rate, a limitation of the central plc, or a problem with the logic of the program, or how could I debug this solution to be able to identify where the problem is. (In the image it is not showing connected with the plcs because the program is not running), any information will be very relevant, thank you in advance.

Hello @ViniciusMilan, welcome to the forum.

I don't think we can tell what the problem is without looking at your code. Can you export it from the editor and post it here (use the </> button to paste it so we can read it)

And for those of us without Siemens 1200 knowledge, it might help if you explain what a clp variable is, what you mean by HMI (I don't see any dashboard nodes?) and what database is involved?

  1. what is clp?
  2. why don't you connect all plcs do single HMI. You can easily have 10 hmi -plc connections.
  3. I would suggest you to do data exchange between plcs with setup as IO devices: TIA Portal: IO-Devices / PLC-PLC Communication - YouTube
    4.It is hard to understand your use cases of nodered in this project, but at the backend nodered uses polling mechanism >50ms. If your signals are stored shorter than that they won't be caught.If you work in the realm of <10000bytes of data exchange s7 read node can handle data in <100-200ms (depending on plc). When you write in plc more than one variable data. Lets say DB1.DBD0, DB1,DBD4... these variables might be written in separate PLC cycles it might be in the same cycle.

If you would share more details what is your end goal it would be easier to propose a solution and steps to achieve it

1 Like

CLP variable, I meant that I will exchange information (variables) of 9 clps.

About HMI, I wanted to say that my problem is that I need to have control of 10 clps (CPU 1200) or more, through a HMI KTP700 Basic.

The database used is MicrosoftSQL.

I will make the code available through a google drive link because I can't upload files here because I'm a new user, and I also can't put the code because it exceeds 32 thousand characters

https://drive.google.com/file/d/1N6Ii-YAVREuqxIbra9KsyaYms1n2A0bs/view?usp=sharing

  1. clp = plc
  2. because an HMI KTP700 has a limitation of how many connections with PLC I can have
  3. It seems to me to be a good alternative if I can't do it with Node-red, but it seems to be easier to do with node red.

My goal is to control several plcs (10 or more) through a KTP700 Basic HMI, and the way I thought of doing it was to centralize all the variables I need from the other plcs in a DB of a central plc, and then I connect this central plc with the HMI, thus having control of all the plcs

note that the flow is a little different from the photo, because I made some changes, I separated the writing of some variables that had a faster update for a 2 second cycle (temperature values ​​that came from sensors) because I didn't need them to keep updating the every 50 ms that is the case with commands, I separated the writing of these variables from the writing and reading of commands (On/Off of engines) and Setpoints, apparently I managed to solve the problems I was having with this change, I believe that the problem was that I had a very large amount of data and this was causing an absurd delay in the commands and making it not work correctly, but I'm still testing it before implementing this solution in a real process so that I don't have problems

Nice to hear that it works, still few questions remain:
1.What are you using as nodered host? Raspberry, PC, Siemens IOT device?
2.From my experience the problem with similar data exchange in nodered is that all variables are set with fixed addresses and if you want to add something then you must do it at the end. Also creating batches of variables is also tedious work. Also is inconvenient to pass batches of data. Like you could do it with PUT/GET, or IO device setup. And it is paint to maintain stuff when something is not working

I use nodered as work-around when there is no way to modify existing PLC project, but if you are creating something from scratch I would stick to PUT/GET or IO exchange and all PLCs in the same project

This topic was automatically closed 60 days after the last reply. New replies are no longer allowed.