Digital PID Loop Output from MV?

I'm setting up a PID loop with a digital output. It's a heating pad (which heats up pretty quickly). I've been looking for a good example of PID loops with digital outputs and haven't really found much. It seems like I just need to find a way to turn a 0-100% value into a binary value which turns on and off rapidly.
I made a simple little VI which I would attach to the output (MV) of the PID loops (standard). I just wondered if anyone could let me know if this is good enough? Is there a level of complexity I haven't thought of yet?
Attachments:
Digital PID Output.png ‏21 KB

Are you looking for a PWM digital output?  If so, this thread might be useful.  It uses a USB-6008 for the digital ouput so it should work with any NI-DAQ device with a digtial output.  There are better ways of doing PWM with more capable devices but it's a start.
~Simon

Similar Messages

  • Simultaneous Digital Input and Output from NI 9403

    Hi,
    I was wondering if it is possible to digital output through one line in this module(NI 9403) while simultaneously reading from 10 other lines?
    Basically what I need is for line0 to always be closed(true), and read lines1:10 - at very least 1sample/second.
    I have attached a stripped down version of my code illustrating my error. I thought I was getting the error because the two tasks were using different clock configurations, but I tried using the same inputs and that doesn't work for me.
    Any input is greatly appreciated.
    Thank you
    Attachments:
    Digital I-O.vi ‏22 KB

    Hi Matthew,
    The behavior you're seeing is expected for the 9403 module, since it is a serial module. The DAQmx help has the following restrictions in the Digital I/O Considerations for C Series Devices section.
    Timed digital input/output restrictions:
    You cannot use parallel and serial modules together on the same hardware timed task. 
    You cannot use serial modules for triggering. 
    You cannot do both static and timed tasks at the same time on a single serial module. 
    You can only do hardware timing in one direction at a time on a serial bidirectional module.
    So you can only do timed input or output at one time, but not both. However, based on the VI you attached and the description of what you want to do, you don't necessarily need both timed tasks in your loop. You can create a static output task to update that one line and after that, you can just start your timed input task on the rest of the lines. This should maintain the state on the DO line, since you're not acquiring from it.
    Cheers,
    Cristina
    Cristina

  • Comparing digital input and output from two different DAQs

    I want to create this program where the digital output lights up LEDs at random and push buttons are the digital input part of another DAQ are pushed. When the correct button is pushed, the score will increase by 1. My code doesn't work though. Can someone point my errors to me? Both the DAQs i'm using are USB-6008 DAQs. thanks
    Attachments:
    Untitled 1.vi ‏41 KB

    Let's start with the digital output
    What is this code all about?
    Do you want only one of the 8 led's to lit randomly or are multiple led's also ok?
    The two possible codes are in attached file SNAG-003.jpg
    Connect the output of the "Scale by power of 2" function or the "Multiply" output directly to the Write DAQmx vi
    I don't understand the purpose of the "Boolean Value" and "Replace subset array" thing, so I skipped it
    Attachments:
    SNAG-002.jpg ‏49 KB
    SNAG-003.jpg ‏22 KB

  • No digital output from 6 year old Sound Blaster C

    Hey Everyone, I'm new to this board and have a question. I recently purchased a custom-built computer with an ASRock PCI Express motherboard with
    onboard speaker and mic inputs. I have Boston Acoustic BA735 digtal speakers. I can only get
    analog from the onboard sound. I removed and installed my 6 year old Sound Blaster Li've
    Value card (Model # M48309403265) from my old Gateway PC into my new one, and installed
    the Li'veDrvUni-Pack update for Windows XP. I can't get any digital or analog output from the
    card. I tried my mic on the onboard input, but kept getting pulses at regular intervals on
    my WAVforms or sonographs. I plugged the mic into my old Sound Blaster card and the pulses
    disappeared, so I know the mic is working. With all the info I've provided, is there a patch
    or update or anything for my old Sound Blaster Li've card to get digital output?
    I tried the Sound Blaster Li've 24 Bit card, but returned it because the same input for the
    speakers is the same for the mic. Also, there's no gameport on it.

    Yo, BadBoy! Phew! Man, you helped me out a bunch. I had to do some tinkerin' between the drivers from Gateway and the Li'veDrvUni-Pack. I had to install it without the windows drivers from Li'veDrv... and start clean. I'm now getting digital output and my mic is working on my old card. I can't get the Creative Surround Mixer from my old card's software, or from Li'veDrv.. but I can use Windows' Volume Control. If you want to see why sound is so important to me ya' can check out my site at http://www.ramseybotelho.com. Thanks again, Dude.

  • How do I keep a digital output from SCC DO01 from fluctuating states?

    Background: Hooking an ohm-meter across a digital output from a SCC DO01 isolated optical switch shows that the resistance fluctuates and at times goes open circuit. It appears directly related to the LabView code where I'm writing to this digital line within a WHILE loop. The loop has a variety of other operations going on. These other operations, I believe, are causing this problem due to timing or something.
    How can I improve the reliability of this digital output? There must be some method of establishing priority within a WHILE loop.
    Really appreciate the help.
    Hunter

    Howdy, Justin
    Thanks for your reply.
    I've actually been connecting the meter across Vss and Vout. Actuating the digital output, I can see the state of the switch. Attached is the VI which involves this DO01, specifically, it's associated with the VFD RUN/STOP.
    Since I sent this question out, I've actually gotten some help from Andy Watchorn of NI. This switch holds state much better.
    All the best,
    Hunter
    Attachments:
    VFD_ControlVIs.zip ‏120 KB

  • No digital video output from XVR-300 in Ultra-45

    I am switching from solaris 10/x86 to sparc. I have a new Ultra-45 with XVR-300 graphics adapter. It's running Solaris 10u4. The system was ordered as a standard configuration from the catalog.
    The XVR-300 graphics adapter currently produces no digital output. My Sun A1240P0 24" monitor reports no signal on the DVI input. That is, there is no digital output at power on (boot ROM), during Solaris boot (terminal), nor after Solaris finishes booting (X).
    The graphics adaptor uses a connector with two video outputs, and comes with a splitter cable with two DVI output connectors. I get no video output on either. The DVI cable I am using is the one that works when connected to the graphics adaptor on the old system.
    I added a VGA adapter plug to connector 1 of the splitter cable, and was able to get an analog signal to drive the display via the VGA input connector.
    The manuals for the Ultra-45 and for the XVR-300 make no mention of analog vs digital output. They both just say to connect the adapter to the monitor.
    Since I can get analog output from the SVR-300, the card is basically working. The DVI cable and the monitor's DVI input work with another system. The only variables are the digital output from the XVR-300 and the splitter cable. (The splitter cable's analog signals work.)
    How can I activate digital output and make it the default?

    try this page........
    http://docs.sun.com/source/819-6651-13/chap2.install.html#50589705_pgfId-1001195
    To Set the Sun XVR-300 Graphics Accelerator as the Default Monitor Console Display
    1. At the ok prompt, type:
    ok show-displays
    The following shows how to set the console device:
    a) /pci@1f,700000/SUNW,XVR-300@0
    b) /pci@1e,600000/pci@0/pci@8/SUNW,XVR-300@0
    q) NO SELECTION
    Enter Selection, q to quit:
    2. Select the graphics accelerator you want to be the default console display.
    In this example, you would select b for the Sun XVR-300 graphics accelerator.
    Enter Selection, q to quit: b
    /pci@1e,600000/pci@0/pci@8/SUNW,XVR-300@0 has been selected.
    Type ^Y ( Control-Y ) to insert it in the command line.
    e.g. ok nvalias mydev ^Y
         for creating devalias mydev for
    /pci@1e,600000/SUNW,XVR-300@5
    3. Create an alias name for the Sun XVR-300 graphics accelerator device.
    This example shows mydev as the alias device name.
    ok nvalias mydev
    Press Control-Y, then Return.
    4. Set the device you selected to be the console device.
    ok setenv output-device mydev
    5. Store the alias name that you have created.
    ok setenv use-nvramrc? true
    6. Reset the output-device environment:
    ok reset-all
    7. Connect your monitor cable to the Sun XVR-300 graphics accelerator on your system back panel.
    Man Pages
    The Sun XVR-300 graphics accelerator man pages describe how you can query and set frame buffer attributes such as screen resolutions and visual configurations.
    Use the fbconfig(1M) man page for configuring all Sun graphics accelerators.
    SUNWnfb_config(1M) contains Sun XVR-300 device-specific configuration information. To get a list of all graphics devices on your system, type:
    host% fbconfig -list
    This example shows a list of graphics devices displayed:
    Device-Filename Specific Config Program
    /dev/fbs/nfb0 SUNWnfb_config
    procedure icon To Display Man Pages
    single-step bulletUse the fbconfig -help option to display the attributes and parameters information of the man page.
    host% fbconfig -dev nfb0 -help
    single-step bulletTo access the fbconfig man page, type:
    host% man fbconfig
    single-step bulletTo access the Sun XVR-300 graphics accelerator man page, type:
    host% man SUNWnfb_config
    haroldkarl

  • What is the proper interpretation of the output from PID vi?

    Can someone clarify the meaning of the output from the NI PID vi's? From the documentation for the PID control toolkit, it appears that the output is an absolute quantity and not a delta (change) to the previous output. The problem I have is that if I am running proportional control only, and the controller is moving into a steady cooling air flow rate to achieve my setpoint temperature, the error goes to zero and the output from the controller drops to zero. This completely ruins the temperature control.
    Simply: assume that the output to the control valve I am using needs 12mA (4-20mA controlled) constant value (flow rate) to maintain my setpoint. When the error goes to zero, the controller output goes to zero. This, of course, leads to terrible oscillation etc.
    Other PID implementations I have used are all delta (change) based. In other words, you calculate a P, I, and D correction to the previous output.
    What am I missing? All of the NI labview PID examples use the output directly to drive I/O, and never use it as a change (delta).
    I read this newsgroup's archives and found a similar question, but the answer was not helpful.
    thanks much in advance!

    Hi Darth,
    You have read the documentation correctly. The output of the PID VI is an absolute value. If you are using a P algorithm then you will need to use the PID Output Rate Limiter VI to control the rate of the oscillation. Your other option is to use a PID algorithm rather than just the P algorithm. The I and D portion of the PID algorithm are based on the current and previous error and output respectively. For further information on how the PID output is calculated please reference chapter 2 of the LabVIEW PID Control Toolset User Manual
    Hope this helps!
    Brooks W.
    National Instruments

  • Multiple Input and Output from a 6534

    Hello
    I am after some advice regarding my PCI 6543 digital I/O card and the best way to achieve my desired results. I am programming in Visual C++ with Ni-DAQ 7.
    I want to generate a pattern output from one of the ports, Port A, following a software command. This pattern consists of a 10uS pulse on DIOA0, that repeats 200 times with a period of 100uS. I want this DIOA0 output line to initiate an input on ports C and D, possibly through the REQ pin. Consequently the input should acquire 200 times for each call to the pattern output.
    I want this to repeat, so the pattern output goes again (as in a FOR loop), and the input occurs again for an as yet undetermined number of times.
    I have managed to get something worki
    ng for 1 iteration, and I can generate multiple pattern outputs, but the inputs only seem to acquire for the 1st iteration. However, if I step through the code in debug mode I can get the input to work correctly.
    Any ideas would be gratefully appreciated.
    I am still trying to get some earlier problems with this application solved.
    Kind Regards
    Jamie

    Hi Jamie,
    There are a couple different ways you can loop from a buffer. You can either use the onboard memory of the 6534 and loop from there or you can specify as a software configuration that the board loop through the PC memory buffer.
    For the onboard looping you need to specify the following:
    iStatus = Set_DAQ_Device_Info (1, ND_PATTERN_GENERATION_LOOP_ENABLE, ND_ON);
    For software, PC memory looping, the following function specifies this:
    iStatus = DIG_DB_Config (iDevice, iGroup, 1, 0, 1);
    I attached a couple programs that might be of use. Check this post:
    http://exchange.ni.com/servlet/ProcessRequest?RHIVEID=101&RPAGEID=135&HOID=5065000000080000008BA10000&USEARCHCONTEXT_CATEGORY_0=_31_%24_12_&USEARCHCONTEXT_CATEGORY_S=0&UCATEGORY_0=_31_%24_1
    2_&UCATEGORY_S=0
    Hope that helps. Have a good day.
    Ron

  • How many PID loops could I run on cRIO RT?

    Hi,
    I am trying to create a temperature process controller. I have 3 RS232-enabled OMEGA mass flow controllers, 12 thermocouples, 6 heaters (that will be connected in sets of two), and 3 PWM-enabled fan banks.
    My thinking is that I would connect the heaters in parallel to a phase-angle-fired SSR (http://www.chromalox.com/catalog/resources/PDS-PK308-SSR.pdf). That way, I could use a 0-20 mA output signal from the cRIO to control the power appplied to the heaters. I would use PID, and scale the output of the PID to a 0-20 mA signal to control the process temperature. I also want cascade control - I want to have 2 additional thermocouples that are connected to the PID loop acting as limit sensors. If the temperature limit is exceeded in either thermocouple, the PID loop is "turned off" until reset by a user. I would want three of these configurations (2 heaters, 3 thermocouples, 1 SSR - x3, so 6 heaters, 9 thermocouples, 3 SSRs).
    Rather than control the PWM fans with a PWM output directly from the cRIO (which I heard can be painful) I found a PWM controller that is controlled by a 0-5VDC signal. I wanted to use a thermocouple as a process value, and the 0-5VDC signal would scale to control the fans to achieve the desired temperature. I would want three of these configurations (1 fan bank, 1 thermocouple - x3, so 3 fan banks, 3 thermocouples).
    So now, my REAL question - Would one cRIO chassis be able to control these 6 PID loops AND my OMEGA mass flow controllers? I'm just unsure of the processing power that is required of PID/limit control.
    I appreciate any help I get - If need any more specifics, please let me know!
    Thanks!

    Just to follow up - I have no problem using FPGA as well, if leveraging both the RT and FPGA systems will allow me to achieve my goal. I have heard, though, that FPGA is only good if you are only maintaining one set point for the PID loops. My fan bank PID loops will keep a constant set-point, however my heater bank PID loops will require constant changing (the heaters will be used to create a cycle that maintains one temperature for 60 mins, than goes to a different temperature for another 60 minutes, and repeats).

  • Error message by periodic weekly: No output from the 1 file processed

    Hi there,
    since four weeks, I got a problem with the maintenance script periodic weekly. Up to December 22nd, the script did, what it should do: rebuilding the database of locate and whatis, rotating log-files. Since one week later, I got the error message: No output from the 1 file processed.
    Normally, I use Anacron to do the job. When I noticed the problem, I tried to start the script with Tinker Tool System getting the same result. Another try using the Terminal (sudo periodic weekly) also failed. The commands locate and whatis are working, locate.updatedb and makewhatis also. I'm running 10.4.8; in the past, I did not have such problems. Anyone with an idea or solution?
    Thanks
    Klaus
    MacBook Pro   Mac OS X (10.4.8)  

    Hi Gary,
    here is the output you were asking for:
    Last login: Thu Jan 25 20:03:55 on console
    Welcome to Darwin!
    DeepThought:~ dirk$ sudo /private/etc/periodic/weekly/500.weekly; echo $?
    Password:
    Sorry, try again.
    Password:
    Rebuilding locate database:
    Rebuilding whatis database:
    find: /usr/local/man: No such file or directory
    makewhatis: /usr/share/man/man1/fetchmailconf.1.gz: No such file or directory
    Rotating log files: ftp.log lpr.log mail.log netinfo.log ipfw.log ppp.log secure.log
    access_log error_log
    Running weekly.local:
    Rotating psync log files:/etc/weekly.local: line 17: syntax error near unexpected token `)'
    /etc/weekly.local: line 17: `if [ -f /var/run/syslog.pid ]; then kill -HUP 0 80 79 81 0cat /var/run/syslog.pid | head -1); fi'
    2
    DeepThought:~ dirk$ ls -loe /private/etc/periodic/weekly/500.weekly
    -r-xr-xr-x 1 root wheel - 2532 Jan 13 2006 /private/etc/periodic/weekly/500.weekly
    DeepThought:~ dirk$
    It seems, Rogers idea, PsynX respectively the deficient uninstalling by me is responsible for my problems, is correct. Should I remove the whole file weekly.local or should I only remove the content? I prefer removing the whole file, because it was created while installing PsyncX. The date of creation is the same as the date of installing the app (December 25).
    Klaus
    By the way: it seems to me, the solution of my problem is in sight. So I want to thank you all for the amazing aid I got from you!

  • PID loop rate with counters

    I'm trying to use a PXI-8106 RT and LabviewRT 8.5 as a PID controller to control 3 motors.  I'm measuring the speed of the motors by measuring the frequency of the encoder with a 6608.
    This article http://zone.ni.com/devzone/cda/tut/p/id/5423 claims a speed up to 107.5 khz.  I've set ethernet to polling and usb off, I didn't turn off  the CPU display, but I'll try that as soon as I can. However, I'm not anywhere close to 107khz, best I can get is about 10khz with one channel and about 2 khz with 3 channels.  I realize the tests were done with analog inputs, but I was hoping that  I'd get at least somewhere close using counters. With the 2Khz rate I really can't do what I need to do.
    Does anyone know what a realistic rate would be with this setup?
    I'm new at Labview so I may be doing something wrong, although I can't see what it could be. I've done quite a bit of research on the forums before I started to learn from other's examples.
    Here's a couple of things I've learned  trying to optimize my loops.
    Seems like Daqmx has some issues with applying a scale.  I have 2 scales, one is just a scale factor, 0.166, the other is .0002.  When applying the .0002 factor in Daqmx my performance takes  a huge hit, something like 10%!  If I just leave it at hz, and do the scaling myself I see no performance penalty.
    There is something strange about the timed loop % display in RT8.5, I wrote my own routine using expected end, actual end time, and the period to give me a % loop useage and it matches very well to the RT8.5 display for most of the time, however, when the loop starts missing iterations because I've gone over 100% the RT display drops down to about 50% which pretty much makes it useless.
    I've attached a couple of shots of my test loop. I can get this one to almost hit 10 khz. the other screen shots are of how I set up the counter, and how I read the counter. the read counter has the error trap to restart itself.  Also I set it to use DMA explicitly somewhere else in the program.
    Thanks for any help.
    Henri
    Attachments:
    Main Loop.JPG ‏55 KB
    Setup Counter.JPG ‏72 KB
    Read Counter.JPG ‏67 KB

    Devin,
    Thanks for the suggestions.
    A couple of related questions for you.
    The 200 uSec is leftover from my attempts at getting the 3 PID loops to work within the loop availability.  I can run  about 70 uSec i.e about 14khz  with only  a single counter.
    I've tried changing the buffers value and it has barely any effect on the speed of the loop. Right now I have 3 counters running with 200uSec timing and I get about 69% loop utilization. With a few missed iterations every once in a while. This is using 10000 samples, if I drop down to 100 samples utilization actually goes up to 70%!?  Doesn't make sense to me either, but this is using both my VI and the on screen Timed Structures % of LV8.5RT so I'm trusting it as real,
    In theory if I can get my loop rate up to 10 khz I'll only need 10 for the buffers since my top frequency to be measured is 100 kHz.
    Funny thing on the RT fifo variable... I turned on FIFO and it actually decreased performance by about 1%, both Total load and Time structures went up... so I turned it off for stop-RT, and got a 3% improvement! Down to 66% time structures.
    You mentioned the hardware timing to get a hardware timed single point. Unless I misunderstood the counters, this isn't possible since the sample rate is implicit in the frequency measured? i.e. it latches the count every rising edge.. so I'm my case I'd get a 100 khz sample rate (although obviouslyl that would be the max) Can you let me know if I've missed something there.
    I bought this system explicitly based on its dual core and its high speed so I could close my PID loops quickly enough with one CPU and still have processing time left over to log data, etc.  And the 6608 card is there so I can get high accuracy for my frequency measurements.   However, I'm really struggling to get this thing going.
    Any help would be greatly appreciated.
    Thanks
    Henri

  • Why do I have a rate-independent delay in my PID Loop?

    I am preparing to use an ETS Realtime target to do some fast PID loops. I have a 3 GHz P4 machine with a PCI-6259 DAQ card, ruuning LabVIEW 7.1RT with NI-DAQ 7.3 for the PCI-6259 board. For starters I decided to just do some speed tests, with the AO putting out exactly the value measured by the AI, with no PID calculations. I would expect the output to be an exact duplicate of the input, but jagged and with a small delay of approximately 1 loop time. What I see on the scope is that there is a fixed 0.1 msec delay between the input and output that is independent of the loop rate. I can run the loop up to 100 kHz rate. With this fast loop rate the output is a faithful replication of the input, but shifted by 0.1 msec. This delay will cause big problems in a real PID loop, since this is several sample periods. At first I thought that there was a buffer that was delaying the samples, but if that were the case the delay would be proportional to the sampling time and not independent of it. The delay is not in the loop itself, which can operate up to 10 times faster than the observed delay. I have attached the vi and configuration sub-vis. Please tell me what I am overlooking here.
    Thanks,
    Rich
    Attachments:
    Speed_test.zip ‏51 KB

    I am looking to run a very similar application with the same card, a similar computer, and do PID control. I'm amazed you were able to get a loop rate of 100 kHz even if it wasn't doing anything real! NI quotes 1 kHz max loop rates in most of its documentation, though I suspect most of it is quite old. I'm interested in what rate you were finally able to achieve with the PID control. I would also be interested in seeing the PID/DAQ communication part of your could if you are able/willing to share it. I was hoping to get 4-5 kHz with at least one channel and hopefully more.
    Thanks,
    Aaron

  • GUI locks up when trying to read output from server

    I have a client built in MVC fashion and have two GUI views. One view is for output from the server and input from the keyboard. The other view is for changing connection settings and starting the conection. The problem is when I make the call to connect from the connection GUI it is able to connect and set up the streams but both GUIs lock up once I start trying to output the text received from the server. The strange thing is that when I call these methods just from the Model and not via the GUI and its actionListener the whole thing works. I think it may have something to do with the loop locking up the GUI but don't how to resolve this.
    public void monitorServer()
    try
    char inputChar = (char)fromServer.read();
    while (socket.isConnected()==true && inputChar >-1 )
    inputChar = (char)fromServer.read();
    if ( ( (inputChar >= '0') && (inputChar <= 'z') )
    ||(inputChar == '\n')||(inputChar == '\r')
    ||(inputChar == ' ') )
    String tempString = (""+inputChar);
    mv.addText(tempString);
    catch(IOException ioException)
    JOptionPane.showMessageDialog(null,
    "Error: Failed to read message. Corrupt data sent by server",
    "Connection Error", JOptionPane.ERROR_MESSAGE);
    mv.addText("\nMessage not read.\n");
    The code above is the bot that screws it all up. mv is the other view that it is outputting the text to.
    Please help! I'm gonna fail my degree. :)

    you need to run your server connection part in another thread.

  • How do I get digital audio to output through my Audigy 2?, What hardware do I ne

    I play my 360 on my computer monitor and I have an Audigy 2 ZS sound card w/ Inspire p7800 7. speaker setup.
    My question is, if I have Dolby Digital 5. and DTS output through those speakers, what kind of hardware would I need to run the optical output from my 360 into the computer and get a digital signal through my speakers in 5. Is it possible? Thanks in advance.Message Edited by Reeg on -29-20072:0 PM

    you need to buy their i/o dri've that's mean for the audigy 2zs

  • Printing the Package output from Anonymous block

    Hi,
    I need to call the below package from anonymous block and get the output.
    Could you let me know.
    I tried using this, but i don't get data.
    ===========Anonymous Block=====================================================================
    declare
    var              xxdc.xxdc_sr_log_his_pkg.sr_tbl_type;
    l_sr_idx_bi  BINARY_INTEGER := 0;
    BEGIN
    xxdc.xxdc_sr_log_his_pkg.service_record('14040',var);
    dbms_output.put_line('CLAIM_CREDIT_OFFERS  :'||var(l_sr_idx_bi).qa_credit_offers(l_sr_idx_bi).character1 );
    end;
    =============================================================================================
    ============================================================================================
    Package Spec
    TYPE cr_offer_type IS TABLE OF apps.qa_results_v%ROWTYPE  
    INDEX BY BINARY_INTEGER;
    TYPE sr_rec_type IS RECORD
    (task_status                      apps.jtf_task_statuses_tl.name%TYPE
    ,task_type                        apps.jtf_task_types_tl.name%TYPE
    ,qa_credit_offers                 cr_offer_type
    TYPE sr_tbl_type IS TABLE OF sr_rec_type
    INDEX BY BINARY_INTEGER;
    PROCEDURE  service_record(p_service_req_num IN  VARCHAR2
                                               ,p_service_req_tbl OUT sr_tbl_type
    Package Body
           FOR emp_row_rec IN cur_credit_off
           LOOP
             l_sr_tbl(l_sr_idx_bi).qa_credit_offers(l_sr_idx_bi).character1 := emp_row_rec.character1;
             --dbms_output.put_line( l_sr_tbl(l_sr_idx_bi).qa_credit_offers(l_sr_idx_bi).character1);   --commenting for testing
              l_sr_idx_bi := l_sr_idx_bi + 1;
           END LOOP;
          p_service_req_tbl := l_sr_tbl;
    =============================================================================================
    Thank

    Hi,
    Did you issue the SQL*Plus command
    SET  SERVEROUTPUT  ON
    or, if you're using some other front end, its equivalent?
    Can you ever see output from dbms_output?  For example, what happens when you run this?
    SET  SERVEROUTPUT  ON
    BEGIN
        dbms_output.put_line ('Hello, world!');
    END;
    Since I don't have your tables, I can't actually run your code.  If you'd post CREATE TABLE and INSERT statements, or re-write the package to reference commonly available tables, such as those in the scott schema, then I could test it.

Maybe you are looking for