NOR-DNET Eurotherm Mini8 output buffer

Hello

I'm working on an application in LabVIEW with a card OR-DNET and EuroTherm Mini8 controller, who interviewed 80 bytes and output of 48 bytes input.

I have everything started with EasyIOConfig (feeding it the right size of I/O), indexed management device, passed between them in a While loop.  Inside the While loop, I have reading DeviceNet i/oand Write DeviceNet of e/sand their diet with Convert of DeviceNet readand convert to DeviceNet write, respectively, with desired for the specified byte offsets.

Reading works perfectly.  I ache to write to an output.  I wired a pointer to the data line goes to Write DeviceNet of e/s, (which should give me a read buffer of output, right?).  I have the first 8 bytes of address.  Outputs in the 8 first bytes work, 8 bytes and are gray and do not meet the entry.  Entry for Byte 42, writes data on 4 bytes for a reason any.

I played with him for a while, tweaking of different things.  At one point, I was able to address the first 14 bytes, but the shift did not do anything - he just put data I16 entry sequentially in the output buffer.  Tried to use different types of data to set the offset, reload the drivers or DNET, no dice.

I build the EXE from a PC running LabVIEW 8.6 (no card DNET) and it works on another PC with card DNET and the installed hardware, if that makes a difference.

Any ideas?

Solved by sending an empty array of 48 bytes to the first convert to DeviceNet write.

Tags: NI Software

Similar Questions

  • How to clear the output buffer, possibly resize and burn again, before you begin the task of output

    I use PyDAQmx with a USB-6363, but I think the question is generic to DAQmx.

    I have an output buffer that I want to be able to (re) write to without starting the task output.

    More specifically, I have a graphical interface and a few sliders, the user can move.  Whenever the slider changes, a new set of values is loaded into the buffer output through DAQmxWriteAnalogF64.  After you set the value, the user can click on a button and start the task output.

    In some cases the change in cursor does not require a change in buffer size, only a change in the data.  In this case, I get the compalint following DAQmx as they tried writing:

    The generation is not yet started, and not enough space is available in the buffer.

    Set a larger buffer, or start the generation before writing data more than content in the buffer.
    Property: DAQmx_Write_RelativeTo
    Value: DAQmx_Val_CurrWritePos
    Property: DAQmx_Write_Offset
    Corresponding value: 0
    Property: DAQmx_Buf_Output_BufSize
    Corresponding value: 92

    In other cases the change in cursor requires both change in the size of the buffer and data modification.  In this case, I get the following, but only after that do a few times each time increase the size of the writing.

    DAQmx writing failed because a previous writing DAQmx configured automatically the size of output buffer. The size of the buffer is equal the number of samples written by channel, so no additional data can be written before the original task.

    Start the generation of before the second writing DAQmx or set true in all instances of writing DAQmx Auto Start. To gradually write to the buffer before starting the task, call DAQmx Configure an output buffer before the first writing DAQmx.
    Task name: _unnamedTask<0>

    State code:-200547
    function DAQmxWriteAnalogF64

    I tried to configure the output via DAQmxCfgOutputBuffer buffer (in some cases, by setting it to zero or a samples, then save again, in an attempt to clear it) but that doesn't seem to do the trick.

    Of course, I can work around the problem by loading data only when the user clicks the end button, but not what I'm asking here.

    Is it possible to "remake" the writing of output before you begin the task?

    Thank you

    Michael

    Today I have no material practical to validate, but try unreserving task before writing the new buffer:

    DAQmxTaskControl (taskHandle, DAQmx_Val_Task_Unreserve);

    With a simulated device, he made the error go away in case the buffer is the same size.  You will need to validate if the data are in fact correct, but I think it should be (unreserving I would say reset the write pointer so the old buffer are replaced with the new data).

    I always get errors when you try to change the size of buffer if (on my 6351 simulated).  I posted some similar mistakes about the reconfiguration of the tasks here, I guess it is possible that this issue has also been set at 9.8 (I always use 9.7.5 on this computer).  If the behavior is still present in the new driver, and also appears on real hardware (not just simulated), then it seems that this is a bug of DAQmx someone at OR should be considered.

    I wrote a simple LabVIEW VI that captures the error in order to help people to NOT reproduce it:

    The best solution at the moment would be likely to re-create the task if you need to change the size of the buffer (or avoid writing data until you are sure what will be the size of buffer).

    Best regards

  • Support of NOR-DNET for LabVIEW 2013

    We currently use OR DNET 1.6.6 with LabVIEW 2011. I installed LabVIEW 2013 now also on my computer and tried to synchronize all of the drivers with my installation of LabVIEW 2011.

    Well, it seems that NEITHER-DNET does not support LabVIEW 2013, at least officially. compatibility of Version of LabVIEW and NOR-DNET indicates that NEITHER-DNET 1.6.6 supports 2011 NOR-DNET 1.6.7 2012 LabVIEW and LabVIEW.

    The list NOR system driver November 2013 set OR DNET 1.6.7 defined pilot. When I try to install it, there is no support for LabVIEW 2013.

    My question is, if there is a plan to include support OR DNET for LabVIEW 2013 or later in the game to pilot?

    I copied the directories vi.lib\DeviceNet and vi.lib\nidnet of LabVIEW 2011-2013 and I can load my programs without any problems. I always did not build an executable and does not run on the test set-up, but projects can be loaded in LabVIEW 2013 without any screws of brocken. should I expect any problems running LabVIEW 2013 with the NOR-DNET to 1.6.6 and 1.6.7 driver?

    Nick

    There should not be problems but it is a former pilot, we will not be updated for the future version of labview.

  • Using PCI-8532 with NOR-DNET 1.6.6 / NOR-DNET 2.0.2

    I have a PC with the following configuration test set-up:

    • Card PCI-8532 DeviceNet

    • Windows 7 Enterprise, SP 1

    • LabVIEW 2010 Runtime

    • NOR-DNET 1.6.6 with MAX 5.0

    • No environment of LabVIEW Development

    • PCI-8532 isn't available in MAX and Windows Device Manager indicates the card as "PCI Device" with an exclamation mark.

    Here is a screenshot of Windows and MAX Device Manager:

    I can't install the NOR-Industrial communications for DeviceNet 2.0.2 on this computer because I get the following error:

    Well, I have two questions

    1. How can I install and use the PCI-8532 and see with NOR-DNET 1.6.6? If this is not possible:

    2. How can I create an executable file on my system (portable) development with LabVIEW 2010 or 2011 LabVIEW and run this executable on the test set-up. I currently have on my development system:

      • Professional 2010 LabVIEW and LabVIEW 2011

      • NOR-DNET 1.6.6

      • No hardware OR at all

      • I have to install the NOR-Industrial Communications for DeviceNet 2.0.2 on my laptop (my development system)

      • This will interfere with my current NOR-DNET 1.6.6 and then I select which driver to use at compile time

    Thank you

    Nick

    Nick HY,

    No, it is defenitely not a replacement yet and I will work with our Web Department who make clearer on our web page.

    The development of the new API is pretty well done, but based on your feedback, we are planning to improve compatibility, so you can for example use the old APi 1.6.x and the new APi of 8532 on the same machine, so you can use the old and the new material on this same machine. Which would be important for you?

    For the moment we intend not to allow only one type of material on the same machine to save you development time. Let me know what you think.

    To clarify the situation today: The InCOM for Devicenet component is not part of LabVIEW. It's just a very simple means of communication with the I/o variables and blocks of function for the MS. The driver should install fine even without installed LV. The error message is quite a Bug on our side, and the solution would be to use the Builder installer LV to create a new installer that can install 2.0.x Incom Dnet driver without having installed Lv.

    And today, you should be able to have the 1.6.x both pilot 2.0.x in parallel and use the API 1.6.x with old boards yonce and the variable approach of IO 2.0.x with your new Board of Directors.

    I'll keep this post updated as soon as we have a stable Beta available I'll post something.

    DirkW

  • What happens when you replace samples in mode analog output buffer?

    I have a sequence of output voltages that I need to update all the 1/60th of a second.  Each sequence must remain synchronized to a trigger external and controlled by an external clock.  The program is in c ++.

    These are my steps to configure the task:

    (1) DAQmxCreateAOVoltageChan

    (2) DAQmxSetWriteAttribute: DAQmx_Val_DoNotAllowRegen

    (3) DAQmxCfgSampClkTiming: DAQmx_Val_FiniteSamp (and fix the external clock signal)

    (4) DAQmxCfgDigEdgeStartTrig: The front of my external trigger

    (5) DAQmxSetTrigAttribute: DAQmx_StartTrig_Retriggerable

    If I write too slow samples, I get the following message:

    "The production has stopped to prevent the regeneration of old samples. Your application could not write samples in the back buffer fast enough to prevent the former samples of regenerated. »

    I understand this message and this is the behavior I want.

    My question is: what happens if I write the new samples to fast, i.e. before the previous one, who have been posted on the output channel?  This will give me an error or software allows me to crush the samples in my output buffer?

    I'll echo what others have said here.  DAQmx won't let you write samples in the buffer until there are enough empty space to make it--and that's why the entry on the function DAQmx Write time-out.

    There are two ways to go about writing only when the buffer is ready for the next set of data:

    1. Use the timeout to write DAQmx directly.  Do not forget that this blocks however.

    2. Use the DAQmx software event "Every N samples transferred from the buffer".  This tutorial gives a good introduction to the DAQmx software events and this forum thread goes through a few considerations to keep in mind.

    PS - If you use the C API, use the DAQmxRegisterEveryNSamplesEvent function to register this callback.

  • in the output buffer 9402

    I have a task to output a very long sequence with very precise timings, that is to say, I have to use the buffering. But the sequence can be of length for a few days, and we know exactly how much (until the user stops), so that the preform the entire buffer is unrealistic.
    Also, I have no device and work on the Simulator.
    NEITHER 9402, cDAQ-9188
    My VI:

    generate the table is simple, now, it doesn't matter.
    In the simulation, I see dt = 500 ms, so I conclude that the write function DAQmx is waiting until the free space appears in the buffer.
    Customer launch VI to the device real and dt<70 ms,="" ie="" waiting="" is="" not="">
    When a mistake, how to integrate the wait?
    "standby mode" is not like the decision, as all cases are pending, with just another use of the CPU.

    I send the my code snippet in the first message.
    Now, I have changed it like that, it works. Output buffer must be reserved by 'output buffer conf' vi.

    Inside of a loop that is really not necessary.

    As for your idea of book dummy table, it is very strange. The experience may be longer than the week. And for a week, I need 800,000 points (1 kHz) 604. Impossible book this buffer.

  • size of the output buffer

    I update an old VI (LV7.1) which produces a waveform that can be modified by the user in the amplitude and time using DAQ traditional. I used Config.vi to buffer AO (traditional DAQ) to force the buffer to be the same length that the waveform asked so there is no point of excess data that fill all extra buffer space or the required wave form has not been truncated by a short buffer. If I want to perform this action in DAQmx, is there a DAQmx VI to do this, or should I just use the traditional buffer Config.vi AO? Thanks to a highly esteemed experts for any direction I take to do this.

    Hi released,

    You can explicitly set the buffer using the DAQmx Configure output Buffer.vi.  Alternatively, you can leave DAQmx automatically configures your buffer based on the amount of data that you write before you begin the task.  You cannot mix and match functions DAQmx and traditional DAQ on the same device, so using the traditional buffer Config.vi AO is not an option if you want to use DAQmx on your Board.

    Here's a screenshot of the DAQmx help that explains how the size of the buffer is determined by DAQmx:

    I hope this helps!

    Best regards

    John

  • NOR-DNET parser problem

    I use a card PCMCIA-CAN, series 1, first with NOR-DNET 1.6.2 and 1.6.3 now and I monitor traffic between an Allen Bradley SLC 5/04 with a scanner of DeviceNet 1747 - SDN.  The scanner MACID is 62, and the unit is MACID 1.  When I start it, I get normal Dest. Fields of MAC and the Description, as shown here:

    If I click on the Red Square button 'stop', and then the green "run" button, I get the following results, with dashes in the two fields MACID if the source is 62 and go always in the Dest. field.  The description always says 'unknown '.  The PLC device and e/s continue to communicate normally during this period.

    To clear this point-, I unplug the cable DeviceNet controller and plug in again - this always clears the problem and it starts showing the right data again.   Clues about what is happening?

    This is an expected behavior in monitor OR DNET.

    DeviceNet is a basic state machine Protocol. The parser need the message of setting up connection to know what a CAN ID is linked to a connection of IO.

    Figure 1 works well because the parser also captures the message of establishment of connection and the following messages of e/s or EM. So, it can analyze a package type and detailed information.

    Figure 2a of many "unknown" because the Analyzer only captures the following messages of e/s or EM without the connection message. (Notice: parser won't 'remember' the last message of setting up connection after a new 'start capture'.) It ensures that the state machine is supervised in a State of cleanliness).

    The key to this question is always to capture the packets including the wiring diagram. The safest way so start to capture before your scanner DeviceNet starts to work.

    NOR-DNET Analyzer supports the logging of large file. You can connect a large file and analyze the messages by filtration or research.

  • How to replace the output buffer?

    I'm a generation of finite signals 2 lanes on a0 and a1. I want to change one or the other of the waveforms at various times during the program and sometimes I have to be able to overwrite the contents of the buffer with a new set of data until the generation has run. Should be easy, but so far I have not figured out how do.

    When I try, the first attempt to crush the buffer I get error-200547 occurred .vi DAQmx Write (analog 2D NChan DBL NSamp) that says full buffer, cannot write more data until the task has been executed.

    How to clear the contents of the buffer or make it possible to replace the buffer?

    I found the solution, systematically through the palette DAQmx looking probable functions.

    Simply insert a DAQmx controls Task.vi before the write.vi DAQmx, with set to cancel the Action. You can write new data to the buffer.

    I knew there must be possible!

  • Analog output of access on fly buffer

    Hi all

    I have a X Series DAQ and made many analog inputs and output tasks. My question is that can an analog output buffer be accessed or modified during execution of the task? I have a redeclenchables analog output task, and I want to replace the buffer after a trigger is done before the next coming. Is this possible? Or put it in general, how can access us the buffer without re - create the task?

    Any comment is welcome. Thank you.

    Hi Skuo1008,

    Which development environment you use to write this code? You mentioned a textual DAQmx function above in this post. Using LabWindows/CVI or ANSI C?

    Take a look at these examples:

    Generation of analog waveform with update with DAQmx output buffer
    http://www.NI.com/example/25039/en/

    I have also attached to this answer

  • Using the output with 6009 or 6216 possible buffer?

    Hello

    I have a USB6009 and a USB6216. I need to generate a signal by using the analog output and I would use the output buffer. My questions are:

    -The USB6009 has an output buffer? I always get an error, but I know from experience that this device is very limited, so I wonder if they have not only an output buffer... (Programs in input buffer are not a problem at all).

    -J' took the USB6216 and I tried the example WfmGenUp.c downloaded from somewhere in the area of the developer (sorry I lost the link but fix the code) but I am not all analog output signals and after you press ENTER to stop the program (depending on the show) I get this error message:

    NO MORTALS RUN - TIME ERROR: 'WfmGenUp.c', line 113, col 9, id thread 0x0000088C: DAQmxStopTask function: (is-200016 return value [0xfffcf2b0]). Measurements: On-board memory precision passing. Due to the limitations of system and/or the bandwidth of the bus, the driver could not write data to the device fast enough to track the rate of output of the device.  Reduce your sampling rate, change the method of transfer of data (from interruptions on DMA), use a product with more on-board memory or reduce the number of programs that your computer runs simultaneously. Task name: _unnamedTask<0> Code of State:-200016

    I don't know if the problem is just that the 6216 does not support the output buffering or the other...

    -So, if the output control is not supported by 6009 or 6216 what would be the best way to constantly generate signals to 100 s/s?

    Thank you very much

    Kristel

    Hi Ryan,

    the USB-6009 case has 150 s/s softwaretimed AO, so you won´t be able to use AO stamped with the module.

    The USB-6216 supported in the analog output buffer, just follow the recommendations that the driver gives you,

    for example by reducing the sampling frequency, if there is an overflow memory due to the limitations of system and/or the bandwidth of the bus.

    Experiment with the parameters and the basic to see in what range of sampling it works.

    You can find appropriate examples

    ANSI C:

    C:\Dokumente und All Anwendungsdaten Users\Dokumente\National Instruments\NI - DAQ\Beispiele\DAQmx C\Analog Out\Generate Voltage\Cont Gen Volt Wfm - Int Clk ANSI

    LabWindows CVI:

    C:\Dokumente und Users\Dokumente\National Instruments\CVI\samples\DAQmx\Analog Out\Generate Voltage\Cont Gen Volt Wfm - Int Clk Anwendungsdaten All

  • Bad analog output help Every_N_Samples-NI-9263 cDAQ-9172 chassis (works with cDAQ-9178 chassis)

    Hello

    The NOR-9263 analog output voltage geberation works correctly with the cDAQ-9178 chassis but gives wrong result using the chassis NOR cDAQ-9172.

    In the attached code example, a single cycle of a sine wave is composed of 40000 samples and came out in the background using Every_N_Samples at a rate of production of 5000 samples per second.

    The output buffer size is set to 10000 samples.

    Prepare us the buffer writing 10000 samples 1, then write the remaining data in the background using the Every_N_Samples callback.
     
    Bug: Using the cDAQ-9172 chassis, to the 5000 s/s sampling rate with the help of an external field (or through closure to another HAVE), we observed that 1 10000 samples came out twice, followed by the rest of the waveform. The last 10000 samples are never exits. If you are working properly, we would expect to see 1 full cycle of a sine wave.

    The bug does not occur with the chassis NOR cDAQ-9178. I use the driver NIDAQmx v9.2.1f0 on Windows XP
    The bug does not happen with simulation devices, so you will need to use harwdare real to reproduce.

    Please find attached an example of code C based on the example program OR "ContGen - IntClk.c" to reproduce this bug.

    Thank you

    whemdan,

    The MathWorks

    Hi whemdan,

    By default, DAQmx regenerate old samples if no new data is available.  To give the correct behavior, you can:

    Use DAQmxSetWriteRegenMode to disable the regeneration (DAQmx_Val_DoNotAllowRegen).  In most cases, this is recommended if new data are written continuously in the buffer as the build is in progress.

    If you just need to generate 40 k samples, you can write them just all at once, rather than in 10 pieces of k (the code you attached probably is just an example, so I'll assume that you have a reason to write the data into segments in your actual code).

    I think the difference in behavior between 9172 and 9178 can if explained by the different way, buffering is set up on each product.  The 9172 uses a buffer of 8 k (on the STC2) in all cases (source).  The 9178 uses an 8 k of memory buffer (on the STC3) If you use regeneration shipped, but uses the 127 samples FIFO cartridge, if you use no on-board regeneration (source).

    Then... on the 9172 8191 samples are immediately transferred to the FIFO.  By default, the hardware is going to request new data when the FIFO is less to fill (this is configurable with DAQmxSetAODataXferReqCond).  I'm not sure what the transfer data request size is in your case (you can set the maximum value with DAQmxSetAOUsbXferReqSize), but obviously it is bigger than the other 1809 samples that you have not yet sent to the Board of Directors of your first entry.  At this point, the pilot will regenerate 10 existing k samples so that sufficient data will be available to meet the demand of data transfer.

    The 9178 however use the FIFO of 127 smaller samples so you will not have the same behavior in your case.

    In summary, the behavior is explainable by the difference of material.  If you want to avoid to regenerate old samples, you should ban the regeneration using DAQmxSetWriteRegenMode.

    Best regards

  • Time to update buffer PCI-6713

    Hello guys,.

    We use PCI-6317for 50 Hz generation of waveform of 3 phases for a quite a while using the library OR-DAQ traditional.

    We could not get a reliable update of a waveform with a single call to the WFM_DB_Transfer function and need to call double.
    Otherwise, we could sometimes get a signal consisting of the buffer past and present.

    For now, that's a good solution, but now we have different requirements.

    We went to NOR-DAQmx and surprisingly managed to update the PCI-6713 buffer with a single call to DAQmxWriteAnalogF64. But it seems that we can update the buffer only once per period of output signal.
    For our 50 Hz signal is 20mS. Function until the next blocks.

    That is the first question.
    Can we call DAQmxWriteAnalogF64 wave update more often than 50 times per second for the output 50 Hz signal?

    If the answer is positive, how can it be done?

    I have attached a LabWindows CVI 7.0 source code for an example of test (for 1 channel only) program we wrote specifically for this post.
    The waveform generation is started by calling ConfigureTask and StartTask reminders in this list.

    Could someone kindly tell me what changes to the code have to do to update the asynchronous output with output buffer?

    And another question.
    PCI6317 can generate signals with different frequencies (channel 1 said generates 50 Hz signal, channel 2-60 Hz, etc.)?

    Thank you very much for all supplied glue!

    Andriy

    The answer to this question is no.  It is not possible to dynamically change the environment buffer output.  You must wait until the buffer is exhausted, and then change the stamp on the next set of data.

    The only thing to do with your current hardware is to reduce the size of form of wave/buffer.  You must call the function write significantly more often, but you can change it to any of these points.

    Also, get a reliable 3ms response in your software feedback loop will be entirely dependent on the speed of your computer.  If Windows decides it must allocate resources elsewhere (automatic update check, MS Word being opened, Media Player, play music), then the program CVI can certainly lag.  That's why he could miss the update of buffer, which is probably the reason why you get the error 200290. The code cannot run fast enough for all process before the depleats buffer.

    The absolute best thing to use to control is one of the FPGA modules.  With them integrate you actually in the material you want your control algorithm to be.  This means that the control algorithm is all timed material, producing the best possible response times.

    What rate are you inputing to the sampling frequency?  In addition, in the code you sent that you send "fFrequency * SAMPS_PER_GRID_CHANNEL" to the DAQmxCfgClkTiming function.  I wonder why you're multiplying your frequency of SAMPS_PER_GRID_CHANNEL.  The rate input parameter must be just the frequency in Hz you want items to be generated at.

  • 1 sample both with NOR-4461

    I am currently conducting ejection of blood simple value in a loop with card PCI-NOR-4461.

    It seems to me that the simple way to this is the size of memory output buffer value 1 and map to wait for my program to generate the following value. But it turns out that this works, the size of the buffer has great impact on performance: if I set the sampling frequency to 204800 and small buffer size (2 samples) one of my CPU cores is loaded to 100%, when the buffer size is 200 CPU load is close to zero most of the time except periodic gusts (80-90 seconds). I would like to know what is happening and what is the right way to rerform task.

    If you set the size of the buffer to 2, only 2 samples that you wrote are repeated until you overwrite these values. Just take the measure with your 4461.

    To obtain accurate information on the analog output 4461, for example filter delay refer to the Manual of the Dynamic Signal Acquisition OR, pp. 2-12 ff.

    Kind regards

  • PXI-8532 DNET card is not detected in MAX

    Hi all

    I use NI PXI-1031(4 slot PXI chassis). I have the following cards in the respective locations
    Slot 1 = controller PXI-8106
    Slot 2 = PXI-6259 card (I)
    Location 3 = card(DI,DO) PXI-6509
    4 = Card (DNET) PXI-8532 accommodation

    Max (Measurement & Automation Explorer), I expect the cards above (PXI 6259, 6509 & 8532) to be detected under devices and Interfaces. But only cards and DIO are detected in MAX under deported systems > PXI > devices and Interfaces.
    PXI-6259 (PXI1 Slot2)
    PXI-6509 (PXI1 Slot3)

    The unit net card, PXI-8532 is not detected in Max MAX shows / detects the DNET card?

    In MAX, I chose the menu Tools > NOR-DNET > RT Hardware Configurations. Then a window prompt you for IP address of RT. After you enter the IP address, I pressed OK. A message appears that no device is found.

    Can someone help me how to detect card DNET in MAX and make the configuration of the port DNET?

    DNET - 1.6.4 driver version

    Thank you
    Raja

    I try to answer two questions:

    1. the new APUI is compatible with the former, but if you use screws with the old APi you need to replace the screws with the new. There is a white paper related to the download page and here it is again that explains how.

    2. the devicenet driver does not yet support the plugin for the view of the PXI chassis. It appears under devices and Interfaces, and the name is not editable either. Currently the driver uses the numbers in the order of detection if several cards are present.

    Two things will look in our next version before the end of this year.

    DirkW

Maybe you are looking for