Block transfer for Analog inputs

shahmirous

Member
Join Date
Nov 2007
Location
Perth
Posts
17
Hi guys '

Can anyone help with the problem of configuring an analog input module (1746 NI8) using block transfers (BTW) .
I have a SLC 5/05 CPU and a 1747-SN(Scanner) this system is connected to a 1747ASB module which has a 1746 NI8 as a RIO module.
as far as i know i can configure the 1746 NI8 by copying into outut words (O:1.0 to O:1.7) because the scanner is on slot 1 i use O:1.X.
But is there any way to configure the module using BTW??? i have a sample program that it seems it is working like this but i can't figure out any ruls it is just transfering a block of configuration (lets say N10:0) to the same address (Group 0,rack 0,Slot 0) of the analog input module??? can this realy be done? don't we need to let the module know in any way that this is the cofiguration word???
 
Shahmirous,

Yes it really can be done. You let the Analog Input module know that it is the confiiguration word by writing a SPECIFIC 16-bit integer number into the right Output address. Where you send the configuration word TO is the key. If the address of you Input module is I:1.0 (Input located in Slot 1, Channel 0), then your configuration word should go to the Output equivalent word, O:1.0. It is that simple.

Because the Output word on an Input module was previously unused, Rockwell thought this was a neat idea to allow the modules to be software-programmable instead of using DIP switches as in the past.
 
More details

Lancie1 ,



Thank you very much for your time and fast reply.



I think I shoud give you some more details about the program I am looking at.

As you know the analog module is located in a RIO chasie and communication with the 5/05 CPU through an ASB module and the Scanner module .

The program is using a BTW to write the configuration words into the analog input module .here is how the BTW is configured :



Rack 0

Group 0

Slot 0

Control block N99.120

Data file N91.0

Buffer file M0:1.100

Requested word count 8



As you see there is nothing about output file that you mentioned ??? is the analog module intelligent enough to locate the N91.0 words in it’s related output words like you said??



Also the program is using a BTR to read from the analog input module :



Rack 0

Group 0

Slot 0

Control block N99.0

Data file N90.0

Buffer file M1:1.100

Requested word count 8



Why it didn’t use simple copy instruction to copy the configuration words to the O:1.0 to O:1.7?

I am confused that how we can distinguish between input and output words when the module is located in a RIO chasie??

may be N91.0 is the output address of the analog input module but
I can't understand how?
 
Hi Shahmirous,

When you use an NI8 in a Remote RACK using RIO ASB Module and a RIO Scanner SN in the Main chassis, you actually mix TWO different Addressing format.

I suggest that you read carefully the SN and ASB modules user manuals. Everything is there with examples.

RIO refers to PLC-5 Format. To define the Address of a Digital Module in RIO, this is <I or O>:<Rack><Group>/<Bit> ex.: I:014/03 Input Rack 01 Group 4 Point 3. (This is all Octal numbers)
The Group often refer to the Module Slot depending if you configure 2, 1, or 1/2 slot addressing...

Of course, the RIO addressing format cannot be used in SLC program.
This is why the RIO RACK GROUP format is mapped in the 32 possible words of the SN module(I and O).
Since one Module Group is 16 bits and One Rack has 8 Module Group, SN Module can handle only 4 rio Racks (Rack 0, 1, 2, 3).

So, when you refer to O:1.0 to O:1.7, you actually refer to the Whole Rack 0 which represent 8 io Modules (8 SLots!). Not the Ouput Image of One Analog Module!

In SLC, One Single Speciality Module (Ex.NI8) in ONE Slot can handle up to 32 words (you can access the word using the DOT in I:5.4 for ex.). In RIO, ONE SLOT = ONE Module Group = 16 Bits = 1 Integer Only. There is NO DOT in RIO.

In RIO setup, Analog Modules use only half a Group (8 Bit) to send their Datas (Many Integer) using BTR/BTW Mechanism. BTR/BTW is the only way to access many Integer from ONE module in RIO setup.


Regards

Yves Levesque
 
Greetings shahmirous ...



my distinguished colleague Lancie1 is probably offline for our country’s Thanksgiving holidays ... I’ll try to shed some light on your problem while we’re waiting for Lancie1 to return ...



as far as i know i can configure the 1746 NI8 by copying into outut words (O:1.0 to O:1.7) because the scanner is on slot 1 i use O:1.X. ... Why it didn’t use simple copy instruction to copy the configuration words to the O:1.0 to O:1.7?



let me ask you a question that will help you understand what’s going on ... suppose that you had another identical 1746-NI8 card to be installed in the very next slot of that same Remote I/O chassis ... do you think that you could just copy the eight configuration words for that NEXT module into output words O:1.???? through O:1.???? ... oops! ... see the problem? ... the method of copying the words into the “multiword” module works only when the module is located in the local (processor resident) chassis ... that’s because the NI8 module OWNS the slot number that your program addresses (example: slot 1) ... but in a Remote I/O chassis the SLOT number gets tied to the 1747-SN scanner module - and not to the analog module ... so if you tried that simple “copy” approach for the configuration, there could be some overlap from one remote module to another ... and that’s why you need to use Block Transfers in the first place ... specifically, your program needs to Transfer a Block of information - because there’s no realistic way to address those MULTIPLE data words using any other method ...



secret handshake: in the Remote I/O system, the Block Transfers are used for modules which require MULTIPLE words of data ... that’s how we work around the limitations of slot/word addressing ...



I am confused that how we can distinguish between input and output words when the module is located in a
RIO chasie??




most of my students understand the “mailman” analogy best ... think of the Block Transfer operations as MAILMEN ... they don’t actually WRITE the mail - and they don’t actually READ the mail ... those WRITE and READ words only tell us IN WHICH DIRECTION the data is traveling ... and the direction is ALWAYS determined from the processor’s point of view ... so ... a block transfer WRITE mailman carries mail FROM the processor TO another module ... but ... a block transfer READ mailman carries mail TO the processor FROM another module ... handy way to remember: the processor WRITES the letter and then the block transfer WRITE mailman carries the letter away ... or ... the block transfer READ mailman carries the letter in, and then the processor READS the letter ... in each case, it’s the processor that “acts on” the data - and the block transfer mailmen just carry the data into or out of the processor ...



going further: with the SLC processors, the 1747-SN modules use M0 and M1 “buffers” ... BTW instructions must be assigned to use M0 buffers ... BTR instructions must be assigned to use M1 buffers ...



secret handshake: even though the “M” buffers are assigned as mentioned above, each Block Transfer USES BOTH the M0 and the M1 buffers ... (the “matching” unassigned buffer is sort of “used in the background”) ... what that means is that since you’re using M0:1.100 for your BTW, you should NOT use M1:1.100 for anything else ... according to what you’ve posted, you’ve violated that rule ... I’d recommend that you change your BTR assignment to use M1:1.200 ... if you don’t separate those M0 and M1 assignments, you can expect poor - or worse - performance ...



may be N91.0 is the output address of the analog input module but I can't understand how?



basically it works like this:



(a) your ladder program tells the block transfer WRITE mailman to pick up the eight words of data which start at the address N91:0 ... and



(b) carry that data to the M0:100 buffer which resides in the 1747-SN Scanner module at Slot 1 of your processor’s local chassis ... then



(c) since this is using an “M0” (output type) buffer, the 1747-SN scanner module will know to communicate those eight words of data TO the module in the REMOTE RACK which resides at address “Rack 0 - Group 0 - Slot 0” ...



(d) the 1746-NI8 module will understand (bless its little heart) that those eight words that it just received FROM the scanner module are the configuration words for its eight channels ... imagine it this way: the NI8 module does NOT know (or even care) that the eight words are coming from N91:0 through N91:7 ... specifically, he doesn’t know WHERE (what addresses) the information came from ... all he knows is that he just RECEIVED eight words of data in the mail ... and he knows that the first word is the configuration code for the first analog channel ... and that the second word is the configuration code for the second analog channel ... and so on down the list ...



finally ... I’ve had to make quite a few assumptions in writing this ... you haven’t told us whether your Remote chassis is set up for two-slot, one-slot, or half-slot addressing ... (I assumed one-slot since it’s the most common) ... you also didn’t tell us whether you’re using Class 1 or Class 3 operation for your 1746-NI8 analog input module (I assumed Class 1) ... also, you made quite a few typographical errors in your integer addresses ... (example: “N91.0” should be “N91:0”) ... harmless little errors like that make us at least SLIGHTLY suspicious that you might have made other little errors on other things that might actually be quite IMPORTANT ...



anyway ... if this doesn’t help you get everything working, I’d strongly recommend that you post your .RSS program file - and a DETAILED list of how ALL of the hardware is to be assembled ... we can give you DETAILED help - but only if we have DETAILED information to work from ...



word of warning ... I’ve just had project come up that I need to take care of ... I haven’t had time to proofread this material as well as I would have liked ... I apologize for any errors - the other guys on the forum will help you sort them out ... basically I’m just trying to give you the “big picture” ideas here - and hope that the details will take care of themselves ...



hope this helps ...

PS Edit ... it looks like AEI232 posted while I was typing ... based on a quick browse through what he wrote, it looks good ... if you understand it the way he explained it, please don't let me confuse you ...
 
Last edited:
Thanks every body

Dear Ron,



I don't know how to thank you because of the time you spent to describe this matter in such a detail , you answered all of the questions I asked and I am very thankful of that .

Also thank to every body.



Regards

Shahmirous
 

Similar Topics

I've got a SLC with a RIO scanner 1747-SN and a flex IO DIN rail 1794-ASB with an analog output module 1794-OF4I Now I've found example code etc...
Replies
5
Views
2,326
Hi All, First time caller, long time listener... Have a new system in the field with a new controllogix 1756-DHRIO talking to 6 existing chassis...
Replies
9
Views
5,781
so after a previous thread about the panelview 1200. I figured everything out that I needed to get working with it. I've got the RIO discrete...
Replies
5
Views
1,580
Good Evening , I need to convert a PLC 2/17 ( RS Logix 5 ) over to a CompactLogix 1769-L33ER . I took notice in the RS Logix 5 program that...
Replies
9
Views
2,087
Hello all, I couldn't find a solution through the search tool so hopefully someone out there can help me along. I'm working with a converted...
Replies
3
Views
1,208
Back
Top Bottom