CAN Object Transmits Waveform on RTSI

I have a question to the above mentioned VI. The ncWriteObj.vi is placed in a For loop here. Does this mean that the For loop is executed once every time an RTSI event occurs???

Hi SVJ,
the For loop in the mentioned example is executed 8 times before the CAN object is started. Since there is a 8 element queue configured in the ncConfigCANObjRTSI.vi these 8 CAN frames are transmitted after starting the communication using ncAction. After 8 RTSI pulses when the queue is empty the object repeats the last frame until new frames are written into the queue using ncWriteObj (within the while loop).
If you encounter queue overflow problems please refer to the following knowledgebase:
http://digital.ni.com/public.nsf/allkb/862567530005F0A186256A3F005FAB83?OpenDocument
or the "NI CAN Hard- and Software manual" p. 10-150 ncWriteObj.
Message Edited by AndreasS on 11-10-2008 08:57 AM
Andreas S
Systems Engineer

Similar Messages

  • Send CAN remote frames periodic on RTSI pulse

    Hi. I'm trying to send a remote frame (with the RTR bit set) on receipt of a RTSI pulse from a PXI 6602 timer card. I then need to receive CAN data frames at the CAN card from the instruments with the arbitration ID of the remote frame sent.
    I can do this using CAN object transmits period using RTSI example vi and Cont pulse train vi to provide the RTSI pulse. However this can only send CAN data frames, not remote frames. Grateful for any help on this.
    VIV

    Hi VIV
    Instead of using a CAN Object you can use a Network Interface Object for that. There is already an example that just needs minimal modification.
    If you are using LabVIEW:
    Open the NI ExampleFinder and navigate to the Network Interface transmits CAN frame on RTSI example (Hardware Input and Output » CAN » Frame API » Synchronizing CAN with DAQ » DAQ Card Controls RTSI » Network Interface Objects). Modify the example by wiring a '1' (numeric value) to the currently open 'IsRemote' terminal of the ncWriteNet.vi.
    If you are using C:
    Navigate to the …\National Instruments\NI-CAN\MS Visual C\Frame API examples folder and open the Network Interface transmits CAN frame on RTSI example. Locate the line
    Transmit.IsRemote=NC_FALSE;
    And change it to
    Transmit.IsRemote=1;
    Now, you’re transmitting a remote frame with every RTSI pulse.
    -B2k

  • Why do I get an error of B2010002, when I open an NI-CAN object?

    I am using the configuration of the property page to setup the PCI-CAN card. I am using Extended Arbitration Number of 0xFEF100. My code is in VB 5.0. The code works with a number less than 0xFFFFF. The B201002 is an Implentation-specific error in NI-CAN driver. As soon as I try to open the CAN object this error is generated.

    Hello-
    A Status code of hex ....0002 tells us that it's a driver error (NC_ERR_DRIVER).
    Here's some solutions:
    -Be sure the card passes NI-CAN Diagnostics
    -Map Port1 to CAN0 and Port2 (if exists) to CAN1. This is done in the NI-CAN configuration utility in Win NT/2000 or through Device Manager in Win 9X/ME.
    -We have a limit of 50 CAN objects and 150 frames in the queues of these objects. It may be necessary to readjust these settings.
    Kim L.
    Applications Engineer
    National Instruments

  • Using ncAction to Start & Stop CAN objects

    Hello,
    I have to start and stop CAN Objects and I have unexpected results : if
    I set NC_ATTR_START_ON_OPEN to NC_TRUE in the interface configuration,
    everything works properly. Then if I set NC_ATTR_START_ON_OPEN to
    NC_FALSE, ncAction function does not work properly.
    I'm using NI-CAN v2.3.
    Here is a sample of my code.
    Any suggestion about that problem ?
    Attachments:
    CAN_ncAction.c ‏5 KB

    Hi JCX,
    I can reproduce your Problem. It seems that there is something wrong with the handles. We work to get it fixed, but it can take a little while.
    For the moment the workaround is to start the second Object (ncAction) before you try to Stop it. The new Start will fix  a kind of a handle problem, so you should be able to Stop the Object then.
    It should look like this then:
     // Start the network interface and CAN objects
      NiCANErrChkMsgPopup(ncAction (PortHandle, NC_OP_START, 0));  
      // Stop the Second Frame
      NiCANErrChkMsgPopup(ncAction (HdleSTD301, NC_OP_STOP, 0)); 
    // Start the  CAN object
      NiCANErrChkMsgPopup(ncAction (HdleSTD1495, NC_OP_START, 0));  
      // Stop the First Frame
      NiCANErrChkMsgPopup(ncAction (HdleSTD1495, NC_OP_STOP, 0));
    because the Stop cleanes the message queues, you have to write a new message to the write queue before any restart.
    hope that helps
    DirkW

  • 6i can't find waveform peak detection vi. Load error code 20

    6i can't find waveform peak detection vi. Load error code 20

    The waveform peak detection VI is found only in the Full and Professional development systems. Do you have the base package?

  • Maximum number of NI-CAN Objects

    Hello Folks,
    What is the maximum number of Ni-CAN objects supported by Ni - CAN boards ?
    What is the maximum size of the write queue buffer supported by the boards ?
    It seems there is a problem.
    I am not able to open more than 32 CAN objects, with a write Queue length of 60 arbitration IDs
    Note: I don´t what to use Frames !!!

    I could be thinking of something else here, but it seems the maximum number of Objects is dependent on timing of the writing.
    I think there needs to be a 2ms 'pause' between writes according to the CAN spec. So you could have 1 Object writing ever 2ms, 20 Objects writing every 10ms, 32 Objects every 16ms...
    I couldn't find anything in the documentation to support this, so I may be totally off base.
    On the ncConfigCANObj.vi, the Write Queue Length control has a maximum value of 1000 set in it's properties, so I would think that's the max write queue buffer.
    Hope this helps.
    Ed
    Ed Dickens - Certified LabVIEW Architect - DISTek Integration, Inc. - NI Certified Alliance Partner
    Using the Abort button to stop your VI is like using a tree to stop your car. It works, but there may be consequences.

  • Can objects be passed between Applets and JSP?

    Can objects be passed between Applets and JSP? If so how? Thanks in advance.
    Scott

    see if this helps,
    http://forum.java.sun.com/thread.jsp?forum=54&thread=136847

  • Modifying CAN Signal Output Waveform.vi

    I have been working with the CAN Signal Output Waveform.vi trying to get data from my analogue input moduel (NI 9205) onto a CAN bus via my NI 9862.
    I started off by working with the example VI; CAN Signal Output Waveform.vi (attached at the bottom of this post) and that worked fine, I could clearly see the data coming over the CAN bus into my analysis tool in real-time. To modify the vi I removed the Signal Generation components and added DAQmx Read blocks (again attached at the bottom of this post). When viewing the Waveform Chart window the changes I make to the input is reflected in the Waveform Chart window in real-time; however the data on the CAN bus is delayed by around 1 - 2 seconds. I am using the same XNET database in each setup so that isn't causing the issue.
    The NI modules are housed inside a cDAQ-9178.
    Thanks.
    Richard
    Attachments:
    CAN Signal Output Waveform._4vi.vi ‏26 KB
    2 channel analogue.vi ‏26 KB

    Sorry, I meant do you have any other VIs that operate after this VI?
    I think you answered my question though, you are just running this VI alone, right? If this is the only subVI that's being run then when it stops, the LabVIEW environment stops as well, which means your DAQmx tasks are no longer running. You need to make an application structure that allows for LabVIEW to continue running after this VI is called. Use this subVI in your initialization step and then have a user interface of some sort that continues operation. You can't just run this subVI and expect all of the DAQmx tasks and operations to continue if LabVIEW isn't running.

  • Can objects returned from web services be cast to strongly typed objects?

    Can objects returned from web services be cast to strongly
    typed objects?
    Last I tried this was with one of the beta of Flex2 and it
    did not work. You had to use ObjectProxy or something like that...
    Thanks

    Please post this question in the CRM On Demand Integration Development forum.

  • Using CAN-Objects

    Hi, I have started  to learn LabVIEW and NI-CAN. Im using version 8.2.
    I
    have modified an example; now I have two transmit CAN-Objects and one receive CAN-Object.
    I use the following configuration:
    ncConfigCANNet->ncConfigCANObj
    -> ncOpen -> ncWriteObj -> ncClose...    I get the Error (Hex 0x8ff6211d) behind the second ncOpen, which states that there is no Network-Interface-Object- or CAN-Object -Configuration and I already closed the object, which i wanted to open. But I doesn't.
    can someone please tell me what am I doing wrong?
    thanks a lot
    Attachments:
    test1.vi ‏37 KB

    Hi,
    The problem is the close behind the first object. It closes the Network Interface as well because no other object is open, thus there is no port configuration for the next two objects.
    You have three options:  1. Close the first object with the next two objects together. See your modified VI.
    2. Open the Network Interface handle and close it in the end.
    3. Configure and open all objects together after the Port configuration.
    Hope that helps.
    DirkW
    Attachments:
    test_new.vi ‏40 KB

  • NI-CAN Frame API: Variable Periodic CAN Object

    Hi,
    I am developing an application that send CAN messages with NI-CAN Frame API.
    Some of my messages have specification of variable periodic where
    - On idle, NI-CAN will periodically send the message at 100ms period of last message
    - On a user input, it will send at period of 10ms for short period (200ms) and back to idle.
    In CAN Object Configuration, as I put period to 100ms, The idle data is correct but when I need to send the user input, the data is sent using the period of 100ms as well. If I put period to 10ms, even during idle data, the message are sent every 10ms.
    If I configure the CAN Object's communication type to transmit data by call, the data is only sent once and not periodic.
    Does the NI-CAN Frame API supports variable periodic CAN Object?
    Is there suggested way to have such a message?
    - Meadow -
    LabVIEW 7.0 - 2011, Vision, RT, FPGA
    TestStand 3.0 - 4.5

    Hello,
    In general, a clear function will flush all data associated to a task. Have you tried using nctClear()? Although this is a legacy driver so that may not be the case…I found this article that explains how to reset the device (same functions are available in the C API, see manual) which can help but according to this thread is not a 100% effective due to its limitations. Nevertheless, is better than nothing.
    I hope this helps
    Alejandro | Academic Program Engineer | National Instruments

  • How can i add waveform datasaving functions to 2 channels oscillosco​pe demo

    How can I add waveform datasaving options to my .vi for example Oscar Gomez Fuentes 2channel oscilloscope demo, So that i can later on read the data and print graph.
    Mikko

    Look at the example Export Waveforms to Spreadsheet File Example.vi that ships with LabView 6 or 7. For your purposes, look at the first two file operations, Write Waveforms to File.vi and Read Waveform from File.vi. You can wire the output of Read Waveform from File.vi directly to a waveform graph. For your application, you don't actually need to call Export Waveforms to Spreadsheet File.vi (unless you're planning on using Excel to manipulate the data).

  • Synchronisierung von DAQ (als Waveform) und CAN Daten mit Hilfe des RTSI Buses

    An einem unserer Prüfstände erfolgt die Datenerfassung über eine DAQ und zweier CAN Karten. Die Syncronisierung der Daten (DAQ als Waveform)soll jetzt über den RTSI Bus erfolgen.
    Dafür habe ich das Beispiel "DAQ-AI CAN-Receive Example.vi" modifiziert, indem ich das VI "AI Read (scaled array).vi" gegen das VI "AI Read (waveform).vi" getauscht habe.
    Leider erhalte ich von den DAQ Daten keinen Timestamp. Wie muss man das Beispiel modifizieren, damit auch einen Timestamp von den DAQ Daten erhalte ?

    Wenn das AI Read VI auf Waveform Output geschaltet wird, ist der Timestamp automatisch dabei. Der Waveform Datentyp ist ein Cluster bestehend aus t0, dt und ein messwert Array. Um den Passenden Zeitstempel zu den Messwert zu extrahieren, muß programmatisch hervorgegangen werden: Array Index 0 hat Zeitstempel = t0, Index 1 hat t0 + dt, Index 2 hat to + 2*dt, Index 3 hat t0 + 3*dt, ... mit dem VI Get Waveform Components, kann man die einzelnen Komponenten extrahieren. Bitte daran denken das AI read ein Array von Waveform ausgibt, also ist eine Indizierung (index Array) in voraus notwendig um einzelne Elemente aus diesem array zu extrahieren.
    hoffe das hilft weiter

  • Open Vi object reference waveform chart

    Hi, I'd like change a property of an indicator in a VI from another VI (In particular i want to clear a Waveform Chart) I used Open VI Object Reference but i am not able to access to History Data. How can I do?
    Solved!
    Go to Solution.
    Attachments:
    ClearChart.vi ‏7 KB
    test.vi ‏12 KB

    Sorry, I made what you have told me:
    now i have this error:
     why? If you have implemented a correct Vi can you give me it please?
    Thanks!
    Attachments:
    ClearChart.vi ‏14 KB
    test.vi ‏12 KB

  • Digital waveform on rtsi

    Hi,
    I have programmed a digtal waveform which I can send out via a
    Multifunction Card. This waveform is clocked by the clock on the card.
    Is it possible to get this waveform on an RTSI line? I can't find any
    exmples...
    Thanks
    Tim

    Thanks for the answer,
    I have found a solution:
    I gave the digital output to the PFI0 port of my PXI5404 signal
    generator card and routed it from there with the NI Fgen route signal
    out.vi to the rtsi0-line.
    Thanks anyway
    Tim

Maybe you are looking for