chantecler

Copy data from/to a 5069 digital module

10 posts in this topic

Could somebody let me know how to copy the input data from a 5069-IB16 to an integer within a single instruction like a “MOV” or a “COP” (in ladder diagram please).

 

I can do it bit by bit like this:

 

Local:6:I.Pt00.Data ---[]-------------{}---DI_01.0                   (DI_01 is an INT)

Local:6:I.Pt01.Data ---[]-------------{}---DI_01.1

Local:6:I.Pt02.Data ---[]-------------{}---DI_01.2

.

.

.

Local:6:I.Pt15.Data ---[]-------------{}---DI_01.15

 

But this is not efficient

 

Thank you, very much

Share this post


Link to post
Share on other sites

Is there any efficient method to copy the state of the inputs at the beginning of each scan?

I just want to make sure that the values I utilize during the scan don’t change.

Share this post


Link to post
Share on other sites

chantecler,

I'm not sure what data type that card uses, I haven't used that model PLC, yet.  Most of the 16 PT cards I have used are INT datatype under the custom hardware datatypes.

A standard COP with the length of 1 works for me for all of the ControlLogix and CompactLogix input cards I use.

As far as making sure the inputs don't change state, I make my "Map Inputs" it's own routine or task and make sure the program runs it at the beginning of the scan.

Because of an old customer specification, I do the same thing for my outputs at the end of the scan.  I'm sure there was a reason for it, but I can;t recall at the moment.

 

Map Inputs.jpg

Map Inputs Routine.jpg

 

 

Edited by Picklemon
removed duplicate picture

Share this post


Link to post
Share on other sites

Wow, this is a great question !    I too have not used the 5069 IO platform yet, but creating a project in Logix Designer shows that the discrete modules have a Data and a Packed Data format, and that the points are all individual BOOL datatypes, with fault and Uncertain BOOLs mixed in there as well.

I would approach this by using a subroutine (or eventuall an AOI) to use a CPS (Copy Synchronous) instruction to copy the whole 68-byte datatype into an INT array and then parse out the bits I'm interested in.  It might take some experimentation to figure out which bits are which;  overlays inside Module-defined datatypes aren't always obvious.

Share this post


Link to post
Share on other sites

Thank you Picklemon,

 

That is the same I do for the 1769 io modules. But for the 5069 io modules AB created module defined data types that cannot be copied or monitored as a group (at least I don’t know how). I am trying to figure out the reason why they have done this … not success so far

Share this post


Link to post
Share on other sites

Hi Ken,
Thanks for answering. This is my first time on this platform as well. I chose it because I'm doing a very fast servo application and was also asked to utilize a "future proof system" (my client said: "I want a new new system not a new old system").

Another characteristic that I like is the dual ethernet. I can have a CIP linear network on the A2 port and the HMI conneted to the A1 port.

The only drawback I considered was that this product isn't fully developed yet.

Regarding the new digital module data type I'm starting to believe that it was a very stupid decition or too deep for my understanding.

Well, I'll keep on trying to build an application as simple and efficient as possible.
 

Share this post


Link to post
Share on other sites

I've just encountered this issue too. Coming from Compactlogix 1769 modules it was easy to get an INT/DINT to 16/32 channel I/O modules. Our applications send this I/O data over OPC, so it was important to have values representing all the inputs and outputs of various modles, and a quick single instruction eg. MOV Local:12:I.Data to OPC_Module12_Inputs seemed simple enough.

However, having "upgraded" to the new 5069 range, I find there is no way to get a quick INT/DINT representing the I/O modules anymore. The only way seems to be to write a horrendous ladder setting each individual Input/Output bit to modify a single value. In a project with say 10 16 channel input/output modules, this now means 10 MOV instructions being replaced with 160 bit assignment instructions.

If anyone has found a solution to this, I'd be very grateful to know what it is.

Share this post


Link to post
Share on other sites

I wrote a couple of AOIs for the IB16 & OB16.  They're not perfect; I could not figure a way to write to the output module in one instruction.  Nice thing about v28, you can reference the module directly for inOut parameters.  I also condensed the faults and status into a single DINT output.  I'll post them in the files section shortly.

 

Available here for anyones use :http://forums.mrplc.com/index.php?/files/file/1135-cop_5069_digioacd/

Edited by jstolaruk
added link

Share this post


Link to post
Share on other sites

Hi All,

 

Rockwell have created a Tech Note for these modules that describes how to convert the module data back to INT's.

 

TN number is 790954

Alan.
 
 

Share this post


Link to post
Share on other sites
10 hours ago, alan_505 said:

Hi All,

 

Rockwell have created a Tech Note for these modules that describes how to convert the module data back to INT's.

 

TN number is 790954

Alan.
 
 

Learn something new every day, thanks!

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now