How to copy a lot of tags - PLC to PLC

passwordg

Member
Join Date
Aug 2011
Location
South Carolina
Posts
224
Hi,
I am playing around with some concepts.

Lets say, we have a String type array tag of 1000 members - String[1000] in ControlLogix.
Any changes in this PLC need to be copied to another identical PLC as fast as possible. What can be a good way of doing this ?

Thanks.

Another question:
What are all the popular ways to share data between two ControlLogix or CompactLogix PLCs ?
There are:
1. Messaging
2. Produced and Consumed bits
Is there any other way to exchange data apart from these two ?
 
Hi,
I am playing around with some concepts.

Lets say, we have a String type array tag of 1000 members - String[1000] in ControlLogix.
Any changes in this PLC need to be copied to another identical PLC as fast as possible. What can be a good way of doing this ?

Logic you can't sync from controller to controller. Are you talking about data contained within your String array?


Another question:
What are all the popular ways to share data between two ControlLogix or CompactLogix PLCs ?
There are:
1. Messaging
2. Produced and Consumed bits
Is there any other way to exchange data apart from these two ?

You can always have a third party do the work. Such as scripting in a SCADA package to transfer data and such. Otherwise direct PLC communications require one of the options you've described. I prefer messaging as it is easier to change "online" were produced/consumed require a PLC download. Either work, pending application you may consider one over the other.
 
Is there any other way to exchange data apart from these two ?
Yes, if you have a computer that can access both PLCs at the same time. Go into program mode with each, open one window for the data tables of the first to be copied from, and a second window for the data tables of the other PLC to be changed. Then Ctrl Copy the first, and Ctrl Paste to the second.
 
Yes, if you have a computer that can access both PLCs at the same time. Go into program mode with each, open one window for the data tables of the first to be copied from, and a second window for the data tables of the other PLC to be changed. Then Ctrl Copy the first, and Ctrl Paste to the second.

I meant Automated transfer. It seemed like a good exercise.
 
A Red Lion HMI is a good option for something like a large array you want to mirror between two plc's. You can set up a "data block" in the target plc array that transmits the source array at specified intervals, or on events, such as "on change". Perfect for when you don't want to overburden a network with undue traffic.
Produce/Consume is the easiest to set up, but I would imagine you don't want to be broadcasting 1000 string tags constantly. Remember, that is 82000 bytes!
 
Lets say, we have a String type array tag of 1000 members - String[1000] in ControlLogix.
Any changes in this PLC need to be copied to another identical PLC as fast as possible. What can be a good way of doing this ?

What do you mean by "fast"? Do you mean repetitive broadcasts, or do you mean occasionally being triggered very quickly on an event?


Another question:
What are all the popular ways to share data between two ControlLogix or CompactLogix PLCs ?
There are:
1. Messaging
2. Produced and Consumed bits
Is there any other way to exchange data apart from these two ?

As has already been mentioned, you may use an HMI to function as a router between your PLCs. This would require an HMI capable of supporting string data types. I don't see what you would gain by using this method versus direct messaging.
 
Hi,
I am playing around with some concepts.

Lets say, we have a String type array tag of 1000 members - String[1000] in ControlLogix.
Any changes in this PLC need to be copied to another identical PLC as fast as possible. What can be a good way of doing this ?

Let us make things a little easier for ourselves. Concepts and Reality are mostly counter-productive. Stop and think about the logistics of what you NEED, rather than what you WANT, or DESIRE : often these compete with each other.

Conceptually, you want to update the other machine "as fast as possible". Is there justification for this requirement? Getting the data transferred from one to the other will always "take some time", and there will always be that time "window" when the data does not match. How detrimental is this? Even if you had another machine updating both PLCs, it cannot do them simultaneously.

You need to decide the importance of data-synchronisation to determine how to tackle the problem. The only guaranteed way of achieving perfect synchronisation is to store it on a 3rd machine, which both PLCs "pull" the data from.

I am envisioning that your String array tag contains something like Alarm message texts, and you just want to ensure that both controllers contain the same descriptors.

Whatever the data is, there is absolutely NO justification in sending 1000 Strings to another machine continuously, just to 'capture' the (perhaps rare, or infrequent) occasions when one element has changed. You will just be hogging network bandwidth for no good reason.

You could write code that cycles through the strings to detect changes, and sends any changed strings to the other PLC, but now you are executing a large amount of PLC code continuously to 'capture' the (perhaps rare, or infrequent) occasions when one element has changed.

What instigates the change of the data? If this is done by PLC code, you could add code that conditionally sends the new data to the other PLC. If it is done manually from the programming software, you could incorporate a routine that you can manually initiate a "one-time" transfer, perhaps by setting a tag value to the index number of the string you have just updated in the "master".

I hope you see that the question you asked has many answers, depending on the application.

One more thing....

The pre-defined STRING data-type is constructed to allow for string data of [up to] 82 characters. If you don't need 82, then you can create your own String data-type to suit. e.g. if you will only ever require the strings to be up to 40 characters long, then create a new string data-type called (for example) STRING40 (See Pic1). Storage space (memory) is reduced, and any subsequent data processing (including data-transfers) will be streamlined.


What are all the popular ways to share data between two ControlLogix or CompactLogix PLCs ?
There are:
1. Messaging
2. Produced and Consumed bits
Is there any other way to exchange data apart from these two ?

Produced/Consumed tags (not bits), are limited to 500 bytes, that's 250 INTs, 125 DINTs or REALs. You will not be able to Produce/Consume a String[1000] array tag at all.

Messaging will split the data-set into "chunks" (i think 500 bytes each), so will take a long time to transfer 1000 Strings.

Pic1.jpg
 

Similar Topics

I have 2 7cp476 plcs. How can I copy one of them and install it somewhere else?
Replies
0
Views
73
Hello Inside a FB, I´m trying to transfer a string from a DB to a IN_OUT var that was define as a UDT. The problem is that i can´t determine the...
Replies
4
Views
128
Hi everyone I'm in a bit of a conundrum, I've been trying to get this HMI on our machine and I am unable to retrieve it. Device Delta Model...
Replies
10
Views
881
Hi I have a Melsec FX1S-20MR, which has been programmed. I would like to copy the program to a new FX1S-20MR? What are the possible ways to do...
Replies
4
Views
620
Project involves updating a ~23 year old controller (C200HX CPU64). The HMI is a windows NT machine with the gui done with Delphi 5 (Pascal)...
Replies
1
Views
1,098
Back
Top Bottom