LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

cRIO FPGA IO node property??

Highlighted
Hi,
      Im using compact RIO 9004 with NI 9104 FPGA & NI 9201 IO module. When IO node is placed in the FPGA target , the data is read in the fixed point format where as in some example codes in NI , the same IO node reads data in integer format. Why is this so?
0 Kudos
Message 1 of 5
(1,870 Views)
Highlighted
Hi Sithu,

You are right.
Most of these examples are developed before NI-RIO 2.4.
The newer RIO Driver (NI-RIO 2.4) have the capability of reading FPGA IO Node in calibrated data (Instead of Raw data)

You have the option of changing the values read by right clicking on the C series Module >> Properties >> Expand "Calibration Mode" >> select either "Raw" (integer 16) or "Calibrated" (Fixed Point)

Below are two very useful knowledgebases that talks about this issue. The second KB indicates the correct way to pass Fixed Point data from the FPGA to the Host (RT)

Moving CompactRIO VIs with Uncalibrated Data to FPGA Targets with Calibrated Data

How Can I Transfer My Fixed-Point Data Using a FIFO or Memory in LabVIEW 8.5.x?


Good luck

Van L
NI Applications Engineer
0 Kudos
Message 2 of 5
(1,844 Views)
Highlighted

Hello!

Do you have a detailled picture, where I could see how to change these options. I am using LabVIEW 2010 and cRIO 9074 with the AO 9263.

 

"(...) You have the option of changing the values read by right clicking on the C series Module >> Properties >> Expand "Calibration Mode" >> select either"Raw" (integer 16) or "Calibrated" (Fixed Point) (...)"

 

My AO is "grey" (fixed point) and I cannot shift FIXED POINT data from the crio (host) to the FPGA. This is not possible. I am using DATA TRANSFER VIA INTERRUPTS and no NI-Scan Engine, no FIFO. So this is why I prefer working with INTEGER VALUES. In my hostVI the data to be written is DOUBLE or FIXED POINT, but I only can transfer data from cRIO to the FPGA using INTEGER VALUES. I want to calculate INTEGER VALUES from the DOUBLE VALUES to get the correct relationship.

 

It would be great if someone had an answer for me after this long time between my question and the last answer of this topic.

BYE

0 Kudos
Message 3 of 5
(1,482 Views)
Highlighted

@cs134 wrote:

Hello!

Do you have a detailled picture, where I could see how to change these options. I am using LabVIEW 2010 and cRIO 9074 with the AO 9263.

 

"(...) You have the option of changing the values read by right clicking on the C series Module >> Properties >> Expand "Calibration Mode" >> select either"Raw" (integer 16) or "Calibrated" (Fixed Point) (...)"

 

My AO is "grey" (fixed point) and I cannot shift FIXED POINT data from the crio (host) to the FPGA. This is not possible. I am using DATA TRANSFER VIA INTERRUPTS and no NI-Scan Engine, no FIFO. So this is why I prefer working with INTEGER VALUES. In my hostVI the data to be written is DOUBLE or FIXED POINT, but I only can transfer data from cRIO to the FPGA using INTEGER VALUES. I want to calculate INTEGER VALUES from the DOUBLE VALUES to get the correct relationship.

 

It would be great if someone had an answer for me after this long time between my question and the last answer of this topic.

BYE


In the project you shoudl see the 9201 module under your FPGA Target in the tree. Right click the module and choose properties, exactly as has been clearly described before.

 

If you want to convert integer to double data, first look to see what type of integer it is (I32, U32, I16, U16, etc). From my experience with FPGA it is a 16 bit integer. Then look at what the voltage range is you are reading. Let's assume it is 0-10 volts. In order to convert from integer to a voltage value, once you have the integer on the RT, divide the integer by 32,767 and multiply by 10. This scales it to volts.

0 Kudos
Message 4 of 5
(1,476 Views)
Highlighted

Thanks a lot! Now it is working. I guess I was blind yesterday! 😉

 

Bye

0 Kudos
Message 5 of 5
(1,466 Views)