Reading Digital lines on 7037-D using 7001 mainframe

We are using a 7037-D single pole relay and digital I/O card for both switching
and reading digital lines through signals DIG IN 1..10. We are using labview
driver to control the relay channels, which works great. The problem is reading
the digital lines. How to read the digital lines? The 7001 switch puts out a
matrix on the display. But, when we connect a 5V to the DIG IN 1 line, nothing
happens on the display. When I scan the channel, I don't see anything
happening.
I couldn't find anywhere, how to read the digital lines
through 7001 GPIB commands.
Help!

Greetings,
Are you talking about a Keithly 7001? Do you have a programmer's guide from them? or really any sort of document detailing what commands it can receive?
Thanks,
James Duvall
Product Support Engineer
National Instruments

Similar Messages

  • Reading Multiple lines in a file Using File Adapter

    Hi All,
    Iam new to this technology.How to read multiple lines in a file using file adapter.Brief me with the methodology.

    I didn't look at anything else but if you want to write more than one line ever to your file you should change this
    out = new FileOutputStream("Calculation.log");to this...
    out = new FileOutputStream("Calculation.log",true);A quick look at the API reveals the follow constructor FileOutputStream(File file, boolean append) append means should I add on the end of the file or over-write what is there.
    By default you over-write. So in our case we say true instead which says add on to what is there.
    At the end of that little snippet you shoudl be closing that stream as well.
    So where you have
    p.close();You should have
    p.close();
    out.close();

  • Read digital line e series

    Hi,
    This has got to be the simplest question, but how do I read the line state of the PFI lines on my 6024E board?  The 'digital channel' 0 is the only port I can access but I'm using those.  If I set the channel to '1' there's an error.
    How do you get at those other bits?

    A window pops up that says:
    Error - 10007 occurred at DIO Port Config
    Possible reason(s):
    NI-DAQ LV: A channel, port, or counter is out of range for the device type or device configuration; or the combnation of channel is not allowed; or the scan order must be reversed (0 last)
    Can someone walk me through how to configure the digital i/o pins, and how to read individual pin states?
    Thanks much!

  • Reading digital line and local variable

    I am using digital lines in my program to start and stop "Flat Sequence Structures"
    like time measurement ( 4 sequence, start and stop time with "Tick Count" )
    Is it good behaviour if i use once "Read from Digital Line.vi" and other starts and stops etc. with Local variables?
    Or can i just use "Read from Digital Line.vi" many times in my VI? (same line)

    Most experienced LV programmers try to avoid both sequence structures and local (and global) variables. The state machine architecture is often preferred. Look at the examples with LV and search for "State machine" on this site.
    I would probably use one read line or read port VI in a loop and pass the data to other, independent loops for processing (the timing) via queues.
    Lynn

  • How to read some lines from a text file using java.

    hi,
    i m new to java and i want to read some lines from a text file based on some string occurrence in the file. This file to be read in steps.
    we only want to read the file upto the first Occurrence of "TEXT" string.
    How to do it ,,,
    Kinldy give the code
    Regards,
    Sagar
    this is the text file
    dfgjdjj
    sfjhjkd
    ghjkdg
    hjkdgh TEXT
    ikeyt
    ujt
    jk
    tyk TEXT
    rukl
    r

    Hendawy wrote:
    Since the word "TEXT" is formed of 4 letters, you would read the text file 4 bytes by four bytes. Wrong on two counts. First, the file may not be encoded 1 byte per character. It could be utf-16 in which case it would be two byte per character. Second, even if it were 1 byte per character, the string "Text" may not start on a 4 byte boundary.
    Consider a FileInputStream object "fis" that points to your text file. use fis.read(byte[] array, int offset, int len) to read every four bytes. Convert the "TEXT" String into a byte array "TEXT".getBytes(), and yous the Arrays class to compare the equality of the read bytes with your "TEXT".getBytes()Wrong since it relies on my second point and will fail when fis.read(byte[] array, int offset, int len) does not read 4 bytes (as is no guaranteed to). Check the Javadoc. Also, the file may not be encoded with the default character encoding.
    The problem is easily solved by reading a line at a time using a BufferedReader wrapping an InputStreamReader wrapping a FileInputStream and specifying the correct character encoding.
    Edited by: sabre150 on Apr 29, 2009 2:13 PM

  • Write to digital line and wait 20 mico sec and aquisition

    i have DIO-32HS and PCI-6036E. i want to select a port by writing to digital port or line and then wait for 20 micro sec after thar i have to aquire data from AI.my problem is waiting 20 microseconds how i can achieve this?E-mail id:[email protected]

    Here is what I suggest. I'm assuming you will use the DIO-32HS for writing to the digital line. You could use that digital line as a trigger for a counter on the PCI-6036E. When the counter is triggered, it could generate a single pulse with a delay of 20 microseconds and that pulse could be used as a trigger for analog input on the PCI-6036E.
    There are LabVIEW shipping examples that will illustrate how to setup triggered counter and analog input applications. I hope this helps.
    Regards,
    Todd D.
    Applications Engineer
    National Instruments

  • Dumb question: Difference between Digital Port versus a Digital Line?!

    Hello All,
    PLEASE excuse my numbskull question, but I can't find an answer to this question. What is the difference between a digital port and a digital line? I need to control some relay modules in our 2345 box. This works with digital line output, but I can also trip the relays using a Port write.
    Any recommendations?
    Thanks for all your input.
    Max

    Hello,
    There are a few different ways that you can control your digital lines.  You can use the DAQ Assistant or you can program by using the DAQmx VIs that the DAQ Assistant uses to generate its code.
    Either way you will need to write to a digital line so your lines will need to be configured as digital outputs.  There are a few good examples that you can use that are installed with LabVIEW.  You can find these examples by opening up the Example Finder (Help>>Find Examples) and then browsing to Hardware Input and Output>>DAQmx>>Digital Generation.>>Write Dig Chan.vi.  This example shows how to write the different lines on a port.  You can also choose to write just one sample instead of N Samples.  Depending on your situation you can change the polymorphic instance of the DAQmx Write VI and also change the line grouping constant from "one channel for all lines" to "one channel for each line" if you want to write in a different way.  But you can at least start with this example and make any changes you like down the road.
    Have a good day,
    Brian P.
    Applications Engineer

  • PCI 6602:How can I use the digital lines of the board and in the same time to generate pulse train using a counter?

    Hello!
    My problem appeared when I tried to update my code from Traditional NI-DAQ Legacy to DAQmx.
    I am using 2 counters (counter 5 and counter 7)  from PCI-6602, to generate pulse train, and also the Digital I/O lines of the port 0 (the lines form 0 to 7). What I do in my application is that I am starting to generate the pulse train on the output of the 2 counters, and after that I am playing with the state of the digital lines.
    In traditional there was no problem using the counters and the digital lines in the same time, everything was going perfectly, but in DAQmx this is not possible.
    What happens: I start to generate pulse train on the output of the counters,  no errors encountered, but when I try to modify the state of one line of the digital port the generation of the pulse train is stopped. This is happening when I start the task associated to the digital port.
    My question is: it is possible to create a channel on the digital lines without altered the channels created for the counters?
    Another thing what I manage to see using the  "Measurement & Automation Explorer" and Test panels for PCI-6602, basically is the same thing, I generate pulse train on the output of the counter 7 and try to start a task on the digital line, but I get one error :
    "Error -200022 occurred at Test Panel
    Possible Reason(s):
    Measurements: Resource requested by this task has already been reserved by a different task.
    Device: Dev4
    Terminal: PFI8"
    Instead if I use the counter 0 or counter 1 to generate pulse train I don't encounter the same problem.
    Which resources are used by the counters 2 to 7 from the PCI-6602 board and the counters 0 and 1 do not use?
    Thank in advance for any replies!
    Ciprian
    Solved!
    Go to Solution.

    Hello Jordan, thank you for your reply.
    I am sorry but I can not see or run your example, I don't use LabView, I use Visual C++ for developing.
    Here is the code for generating the pulse train:
    GeneratePulseTrain(unsigned long ulCount1, unsigned long ulCount2)
        short nStatus = 0;
        nStatus = DAQmxCreateTask("",&m_taskHandle);
        nStatus = DAQmxCreateCOPulseChanTicks (m_taskHandle, "Dev4/count5", "", NULL, DAQmx_Val_Low, 0.0, ulCount1,ulCount2);
        if( bTriggerMode == true) // if hardware trigger is enabled
            nStatus = DAQmxSetTrigAttribute (m_taskHandle, DAQmx_ArmStartTrig_Type, DAQmx_Val_DigEdge);
            nStatus = DAQmxSetTrigAttribute (m_taskHandle, DAQmx_DigEdge_ArmStartTrig_Edge, DAQmx_Val_Rising);
            nStatus = DAQmxSetTrigAttribute (m_taskHandle, DAQmx_DigEdge_ArmStartTrig_Src,"Dev4/PFI17" );
        //set the internal timebase
        nStatus = DAQmxSetCOCtrTimebaseSrc(m_taskHandle,"Dev4/count5","20MHzTimeBase" );
        nStatus = DAQmxStartTask(m_taskHandle);
        return nStatus;
    And the code where I try to set the digital line:
    SetChannelState(short nState)
        short nStatus = 0;
        uInt8 wrtBuf0[1]={0};
        nStatus = DAQmxCreateTask("",&m_taskHandle);
        // Configure line as output 
        nStatus = DAQmxCreateDOChan (m_taskHandle, "Dev4/port0/line0", "", DAQmx_Val_ChanPerLine);
        nStatus = DAQmxStartTask(m_taskHandle);
        wrtBuf0[0] = nState;
        nStatus =DAQmxWriteDigitalLines (m_taskHandle, 1, 0, 0, DAQmx_Val_GroupByScanNumber , wrtBuf0, NULL, NULL);
        nStatus = DAQmxWaitUntilTaskDone(m_taskHandle,10);
        nStatus = DAQmxStopTask(m_taskHandle);
        nStatus = DAQmxClearTask(m_taskHandle);
        m_taskHandle = 0;
        return nStatus;      

  • Multiple VI's using different digital lines in one VI.

    I have created multiple vi's, each of which require either reading or wroting to a different digital line on the CB-68LP board. I need to put them all in one individual vi so that I can see everything on the front panel. When I have tried this the vi seems to send a confused signal and operate things which it shouldn't.
    Is it even possible to try and do what I am doing? If not, any ideas what I can do? Thanks.

    Multiple VIs are usually the better approach. What I would suggest is parallel loops. These are loops which do not have any data dependency on each other. One handles the User Interface - the front panel where you "see everything." Another which reads and writes from/to the digital lines. Maybe even a third which processes the data. Exchange data among the loops with queues or functional globals.
    Keep a record of the state of all the digital lines. When something is to be written to certain lines, use either a Write Line.VI ( I don't recall the exact name) or use AND and OR functions with masks to protect the states of line you do not want to change.
    BTW, the CB-68LP is merely a connection interface, not the digital I/O baord itself.
    Lynn

  • Help: Can you use software trigger on a digital line.

    Hi:
    We have a legacy DAQCARDard 700 which does not support hardware triggering.
    We have a trigger from our instrument that is 5 V+ and we would like to
    trigger when it drops to 0 V. We have several questions.
    1. Do we need to invert the signal in MAX or is that only for V that are
    negative?
    2. Is there a good example in the examples where the state of this digital
    line is used to trigger an analog acquisition? When we tried using the
    digital trigger examples, we had an error saying that the hardware did not
    support that mode.
    3. We have an analog software trigger mode (based on the Analog Software
    Trigger example) working which we would like to modify over to read the
    digital line, but we have done very little wi
    th digital I/O.
    4. The digital trigger has been assigned a virtual channel of dtrg.
    Any help would be much appreciated.
    Thanks in advance,
    Pete

    Thanks Doug,
    If we read the digital line instead of as an analog line would it improve
    the accuracy of the triggering. Everything works now except we have a
    little bit of timing jitter within about 1 data point scanning at 50 kHz.
    However, I've never done any digital i/o with LabView, but may I should work
    through some of the tutorials. If you thought that this might solve the
    jitter problem. Would checking the state of the digital line allow a faster
    response with softtrig, I guess is my question?
    Pete
    "Doug Norman" wrote in message
    news:[email protected]..
    > Hello Pete,
    >
    > You are correct that the DAQCard-700 has no digital (or analog)
    > hardware trigger. The analog trigger example t
    hat is working for you
    > is using conditional retrieval. This is where data is always being
    > acquired and the driver looks at the values to determine when to
    > "trigger" and read the data into LabVIEW. To answer your questions:
    > 1. I don't think you need to invert the signal. This is for when you
    > want a digital low (below 0.8 volts) to show up as a digital high, and
    > a high (above 2.0 volts) to be read as a low.
    > 2. I don't know of a good example. You would basically have to
    > monitor the digital line. When it goes from high to low you would
    > then start your analog acquisition.
    > 3. I think this could be your best bet. If you have enough analog
    > input lines, why not just connect this digital signal as one of your
    > analog inputs. Then use this example to trigger when the 5 volts
    > drops to 0. It won't hurt to acquire your digital signal on an anlog
    > input along with your other data.
    > 4. I don't understand this question.
    >
    > Best Regards,
    >
    > Doug Norman

  • Reading/writing digital lines without external hardware (besides daq device)

    Hi,
    I have a USB-6259 (mass termination).  I don't have any additional hardware, just the USB device.  I  am trying to use the MAX utility (4.2.1) with NIDAQmx (8.5).  I eventually want to program digital lines (read and write them) using the NIDAQmx API.  I ran some of the VB6 samples.  I thought how it works is that I could run the WriteDigChan VB code to set line(s) on or off, then use the ReadDigChan VB code to read those lines I changed.  However that did not work so I started created some tasks using MAX however that does not work either.  I hope this is not too stupid a question but I am not too familiar with the hardware.  Do I need some additional hardware connected to my 6259 to keep those digital lines in one state or another?
    thanks, David

    Without regard to using it in VB, I am trying to understand the operation in MAX.  I am attaching two screenshots of 2 tasks that I am using.
    thanks for replying, David
    Attachments:
    ScreenHunter_004.jpg ‏180 KB
    ScreenHunter_005.jpg ‏233 KB

  • 32 Digital lines read simultaneously

    I have a following question:
    A this time i can read one single port of NI6507 configured as input, enough faster
    for my input signal (I read up to 10 Khz TTL square wave on single line), with the following
    instruction DIO_err = DIG_In_Port(1, 0, a%). But unfortunately i must read 32
    digital lines simultaneously whose maximum frequency is 2.5 KHz.
    I need some instruction that it allows me to read 32 inputs simultaneously,
    because i have seen in some experiments that if i use the instruction DIG_In_Port
    i can't read the 2, 3 and 4 ports at the same time of the 1 port.
    My sytem is configured as below:
    Pentium 3
    Windows NT os
    NI6507
    I drive the ni6507 with Visual Basic 6.0 and daq32.dll.
    Thanks.

    Hi Ron, unfortunately I have previously did that You say, in my program I have already used DIG_Prt_Config
    I have put this instruction (for each port obvious)
    in the "form load sub" (I use Visual Basic) and I use DIG_In_Prt for read the state of each port (I have put this instruction in one command button).
    Say You that I must repeat all instruction (DIG_Prt_Config + DIG_In_Prt) for each read-cycle?
    Say me more.
    Now i have found one example program named DIsingleBufHandshake8255.
    Because the nunmber of event that i need to capture are 4096 and I have a strobe signal I have used this example.
    I have configured the card as follow: iStatus% = DIG_SCAN_Setup(1, 1, 4, 0, 0) (where 4 is the groupsize) but I have seen that the groupsize is maximum = 2
    , if I put one number > of 2 one error was generated despite the help about this instruction say:
    "groupSize selects the number of 8-bit ports in the group.
    Range: 0 through 2 for most devices.
    0 through 8 for the DIO-96."
    at the end I are able to read only two ports simultaneously. ( i need to read 4 ports simultaneously= 32 bit)
    Can You help me?
    Thanks

  • How to read multiple lines using 'REUSE_ALV_GRID_DISPLAY'

    Hi,
    In ALV report the FM 'REUSE_ALV_GRID_DISPLAY' used.
    EXPORTING
    I_CALLBACK_PROGRAM = W_REPID
    I_CALLBACK_PF_STATUS_SET = 'PF_STATUS'
    I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
    How to read multiple lines in the following dynamic subroutine ?
    I am able to read single value through p_selfld.
    Nut the requirement is to change the values in more than 1 row for a fld (edit mode)
    FORM USER_COMMAND USING P_UCOMM TYPE SY-UCOMM
    P_SELFLD TYPE SLIS_SELFIELD.
    endform
    Thanks in advance

    You can get the reference by a dirty assign, but this is not offcially supported...
    But if you have some limitations.
    FORM user_command  USING fuw_ucomm LIKE sy-ucomm
                                       fuw_selfield TYPE slis_selfield.
      FIELD-SYMBOLS: <lfs_grid>  type ref to cl_gui_alv_grid,
                                   <lfs_row> type LVC_S_ROW.
      data: li_rows type lvc_t_row.
          assign ('(SAPLSLVC_FULLSCREEN)GT_GRID-GRID') to <lfs_grid>.
          check sy-subrc is initial.
          call method <lfs_grid>->get_selected_rows
            IMPORTING
              et_index_rows = li_rows.
    endform.                    "user_command

  • Reading a line from a third party software using call dll function.

    Hi,
    I am using a third party software in Lab VIEW.
    I am having trouble using one of the functions defined in the dll.
    I have the VI attached here, As u can see in the VI I am not sure how to use the function
    LCOM_MasterGetLine in the fourth sequence.....
    This has three parameters and they are
    (int ID,char*Buffer,int Length)
    What basically happens with this function is this...
    /* ROUTINE LCOM_MasterGetLine
    It Reads line of maximally Length characters from Slave ID into Buffer and the parameters are
    * ARGUMENT(S) ID ... Slaves ID
    * Buffer ... Where do you want chars (at least Length+1 in size)
    *Length ... How many at most (should be less than LCOM_MAXLEN)
    Can
    any one help me how to define the input parameters for this function, for example in the fourth part of the Vi attached here.
    What I understand from the function is that, the third party software when it sends a line, that line is stored in the input parameter...buffer ...that is defined to the dll.
    Can any one help me how to then read what line has been sent from the third party software.
    I am including the dll file and also the header file here.
    Thanks a lot,
    Ajit
    Attachments:
    New_Folder.zip ‏30 KB

    One problems with your solution:
    LCOM_MasterGetLine(int ID,char*Buffer,int Length)
    You should allocate a buffer large enough in LabVIEW and pass it to the Call Library Node. The dll function needs som space to actually scribble in whatever it wants to do.
    Check out the attachement this should more or less be what you will need.
    Rolf Kalbermatter
    CIT Engineering Netherlands
    a division of Test & Measurement Solutions
    Attachments:
    ex.vi ‏45 KB

  • Findind out the number of lines within a string - using buffered reader

    Hi All,
    Want to know the number of lines within a string..Sample code is there for reference..could u help me out how to have the number of lines in a string without java comments (i.e string within /**------*/ and // should be eliminated)
    public class ReadLines {
         public static void main(String[] args) throws Exception{
              ReadLines rl = new ReadLines();
              rl.readLines();
         void readLines() throws Exception{
              String str = "/** This is a test message\n"+
                   "* for testing\n"+
                   "*/\n"+
                   "import java.io.*\n"+
                   "// this is again comment\n"+
                   "public class ReadLines {\n"+
              BufferedReader reader = new BufferedReader(new StringReader(str));
              String line = "";
              int count = 0;
              while ((line = reader.readLine())!= null )
                   //line = reader.readLine();
                   count++;
              System.out.println(count);
    }Thanks
    MK

    Hi
    What you need to do is parse the file in such a way that you read /*, */ and // as tokens. By that I mean rather than read a line at a time (although I'm sure you could), read it character by character. So every time you reach a new line character then increment the counter. But there are two casaes when you don increment the counter they are:
    If you encounter a / followed by * then keep reading but if you encounter a newline character then DONT increment the counter ONLY continue counting when you read a * followed by a / (as this is the end of the comment)
    If you encounter / followed by another / then do not count that particular line and go to the next line and continue counting from there.
    Where I've written 'continue counting' this is subject to the lines that follow not conforming to the above two cases.
    I hope this helps.

Maybe you are looking for

  • Transaction Isolation Level to Read UnCommited in Non OLTP Database

    HI, We are having a database which for NOT OLTP process. That is OLAP DB. Operation on that DB is only Select and (Incremental Insert - FOR DWH ) not Update/Delete and we are performing ROLAP operations in that DB. By Default SQL Server DB isolation

  • How do I get my photo's from my mac to my ipad.

    I just got a new Ipad for Christmas.  Very cool, but I am having a difficult time getting my data that is on my Mac (which doesn't have Icloud) to the ipad.  If I buy Iphoto - will I be able to log in to my macs Iphoto and and drag and drop the pictu

  • Extended Receiver Determination

    Hi I have scenario like this. Sending order file into SAP through XI If the order is there in SAP it needs to be send mail along with details of order else if this is new order then it needs to posted into SAP and create IDOC .I need to use RFC funct

  • Auditing in oracle 10g database and oracle 10g application server

    Dear friends, We have oracle 10g application server and oracle 10g database server in place.My criteria is to audit users connected using oracle application user credentials to the database. Can you please tell me how can i do it. Thanks & regards,

  • J1iin is utilizing immediatly required is monthly utilization

    Dear SAP Guru's Please help me I am unable to do the monthly utilization by J2iun for local excise invoice. 1) The series is maintained for no immediate utilization( check is un ticked) for immediate utilization for local excise. 2) for Export excise