Easily Understand

Indirect 

Addressing

Let OnlinePLCSupport.com be Your Secret Weapon to Keeping up with Technology

Easily Understand

Indirect Addressing

Let OnlinePLCSupport.com

be Your Secret Weapon to Keeping up with Technology

 

Indirect Addressing in Studio 5000

In this section, I will be talking about indirect addressing in the use with Rockwell Automation’s Studio 5000 and how it can be used to be used to help with programming or understanding what other people have been programming I the case where you are troubleshooting a section of PLC code.

To start off, the term indirect addressing often through people for a loop at first at least until you have seen and used it a few times then you know exactly where to look but in the case of someone not knowing then I will break down exactly how this process works.

Indirect addressing tags in exactly what the name says it is, you will have one tag that references another tag which at first glance may not look it does at all. Generally, this is done by having the tag that receives the data on the outside of the expression.

Here is an example of an this: Tag1[Tagvalue]

In the cases of this example that I just showed, Tag1 is the receiving tag while the value of TagValue is what Tag1 will reference.

Another side note is that the description of the main tag is the one that will appear in the rung and not the end description of the received data, this has been confused in many cases but Rockwell has done this to show the main element to define a base structure instead of a changing element. This makes it easier to troubleshoot.

In the video above I show adding a new routine in the Studio 5000 program and show how to link the newly created routine with the JSR. In the new routine for the indirect addressing, I add a move instruction to show a very simple use of indirect addressing.

I make a tag called IndirectArray which is a dint of 50 to make it an array, this will give the source data a selected path to go to….meaning if a value of 1 is entered then the part of the array that will be pointed to is IndirectArray[1].

Next, I make a single dint called ExactArrayPosition which I place in brackets to complete the expression for the indirect address. In other words, the expression looks like IndirectArray[ExactArrayPosition] and the data types look like Dint[50]Dint.

IndirectArrayExactArrayPosition
Dint[50]Dint

 

To better explain why the IndirectArray tag is a Dint of 50 deep, you are able to set each word of that Array to index whatever bits that you would like to make turn on when the source Dint is that value.

Next, I add the final element of the move instruction which is the tag ArrayOutputValue which a single Dint and is the end result of the indirect addressed expression.

The second rung in the simple system that is shown is just for placing a value into the ExactArrayPosition to show the change of states in the ArrayOutputValue tag easier in the video. I hope the video did more justice in explaining indirect addressing then the text as this is not exactly the easiest way to show the use of indirect addressing.

That is mainly why I made the short video to aid in giving a better understanding of this process.

As always, if there are any questions about anything that you would like to see then feel free to drop me a line.

Here is a direct link to my full servo video library on YouTube – Click here Shane Welcher – Servo Controls

Thanks,

Shane

Indirect Addressing in Studio 5000

In this section, I will be talking about indirect addressing in the use with Rockwell Automation’s Studio 5000 and how it can be used to be used to help with programming or understanding what other people have been programming I the case where you are troubleshooting a section of PLC code.

To start off, the term indirect addressing often through people for a loop at first at least until you have seen and used it a few times then you know exactly where to look but in the case of someone not knowing then I will break down exactly how this process works.

Indirect addressing tags in exactly what the name says it is, you will have one tag that references another tag which at first glance may not look it does at all. Generally, this is done by having the tag that receives the data on the outside of the expression.

Here is an example of an this: Tag1[Tagvalue]

In the cases of this example that I just showed, Tag1 is the receiving tag while the value of TagValue is what Tag1 will reference.

Another side note is that the description of the main tag is the one that will appear in the rung and not the end description of the received data, this has been confused in many cases but Rockwell has done this to show the main element to define a base structure instead of a changing element. This makes it easier to troubleshoot.

In the video above I show adding a new routine in the Studio 5000 program and show how to link the newly created routine with the JSR. In the new routine for the indirect addressing, I add a move instruction to show a very simple use of indirect addressing.

I make a tag called IndirectArray which is a dint of 50 to make it an array, this will give the source data a selected path to go to….meaning if a value of 1 is entered then the part of the array that will be pointed to is IndirectArray[1].

Next, I make a single dint called ExactArrayPosition which I place in brackets to complete the expression for the indirect address. In other words, the expression looks like IndirectArray[ExactArrayPosition] and the data types look like Dint[50]Dint.

IndirectArrayExactArrayPosition
Dint[50]Dint

 

To better explain why the IndirectArray tag is a Dint of 50 deep, you are able to set each word of that Array to index whatever bits that you would like to make turn on when the source Dint is that value.

Next, I add the final element of the move instruction which is the tag ArrayOutputValue which a single Dint and is the end result of the indirect addressed expression.

The second rung in the simple system that is shown is just for placing a value into the ExactArrayPosition to show the change of states in the ArrayOutputValue tag easier in the video. I hope the video did more justice in explaining indirect addressing then the text as this is not exactly the easiest way to show the use of indirect addressing.

That is mainly why I made the short video to aid in giving a better understanding of this process.

As always, if there are any questions about anything that you would like to see then feel free to drop me a line.

Here is a direct link to my full servo video library on YouTube – Click here Shane Welcher – Servo Controls

Thanks,

Shane