Unidrive SP CANOpen PDO

Hello, 
I am currently working to control
a Control Techniques Drive system via LabView and CanOpen, such that the drive
system acts as a vehicle emulator. So far I’ve been able to read and write
different parameters from LabView to the Control Techniques Drive system
through Service Data Object (SDO) Protocol. However, I would like to
communicate to the test rig using Process Data Object (PDO) Protocol. If I
manually configure the PDO1 from the drive, I can read values stored in it
without a problem, however when it comes to using PDO Write, I don’t get any
error, but I also don’t get any response. One of the default values for the
RxPDO1 includes setting the speed of the motor, so if I want to access that
parameter to write a desired speed in percentage,
What is the format of the value that LabView needs
to convert to CanOpen format?
What needs to be connected to CanOpen data in?
How can I write to different channels stored in one
PDO?
As I go through the CT CanOpen
manual, there seems to be a gap in how to do the mapping for the different
PDOs, and how to access the specific menu and parameter. If I want to configure
different PDO objects beside the first one that can be configured manually, I
have to follow a series of steps which begin by writing enable to the address
of the PDO object i.e. TxPDOB 0x1A01, sub-index 0.
Is enable in this case a zero value that I need to
write through SDO to this sub-index?
When setting up a PDO (master-required) do
communication parameters need to be written before enabling that PDO?
Frames for PDO contain a control bit, is it in this
case parameter 6.43?
I’m attaching what I’ve been
working on so far, plus the CT CanOpen datasheet, and I hope you can point me
in the right direction. To make things a bit easier, I'm also attaching a slight modified
version of the Analogue Output VI (Untitled2.vi), that's found in the CANopen examples
folder. In the drive, there are 4 PDOs, each with 4 TxPDO and 4 RxPDO
channels. The first PDO can be configured directly from the drive, and
that's how I've been able to read parameteres. However, when it comes
to write, that's when the problem comes. With this VI, the first RxPDO
channel is configured to set the speed of the motor (directly
configured in the drive), but I'm not getting any response.
Thanks for your help,
Enrico 
Attachments:
CTCanOpen359-555.pdf ‏1905 KB
PDO_Write.zip ‏162 KB
PDO_Test.vi ‏54 KB

Hey George,
Thanks for your reply. I'm currently using LabVIEW version 8.5.
To communicate with the drive I'm using CANopen, NI-PCI-CAN Software version 1.1.1
I have attached now the SubVI's that were missing, I apologize for that. As for the control bit, there is a parameter in the drive that controls the motor 6.43, called 'control word enable' that sets that specific bit to 1. I've done it before the PDO configuration, but I still have the same issue, unless it has to be set at another point.
To make things a bit easier, I'm attaching a slight modified version of the Analogue Output VI, that's found in the CANopen examples folder. In the drive, there are 4 PDOs, each with 4 TxPDO and 4 RxPDO channels. The first PDO can be configured directly from the drive, and that's how I've been able to read parameteres. However, when it comes to write, that's when the problem comes. With this VI, the first RxPDO channel is configured to set the speed of the motor (directly configured in the drive), but I'm not getting any response.
Thanks again,
Enrico 
Attachments:
PDO_Write.zip ‏125 KB
Untitled 2.vi ‏61 KB

Similar Messages

  • Warning 1073094668

    Hello,
    After building two industrial applications with success, I am working on a third one using LabView 7.1, PCMCIA CAN series 2 board, CANOpen library and a few CANOpen nodes.
    Time to time, I get the following warning message when I restart my program :
    Warning 1073094668 occurred at CANopen NMT Send.vi
    Possible reason(s):
    NI-CAN:  (Hex 0x3FF6200C) CAN transceiver warning, typically indicated by the NERR signal.
    A fault exists on the bus, but communication continues.
    Solution: Verify that cabling is correct.
    Consequence of this, is that I lost the TPDO reception of one node on the network. Okay I said, as recommended, I checked the cabling and restarted. After cable check, I restarted the application and got same warning but I lost the TPDO of a second node in addition of the first one.
    If I continue to stop/start application the problem gets worth...
    I monitored the network activity with another CAN board (not NI, sorry...) and I was suprised that the corresponding TPDO were still emitted with no error detected on the bus.
    In my VI, I use the CANOpen PDO Wait and this function always timeout, of course, returning no data even the TPDO is emitted regurlarly on the bus.
    Ultimate solution is to reboot the PC itself and things come back to normal. I tried on another PC, same story after a number of start/restart. Resetting the board with MAX does not solve the problem when it appeared.
    I will continue to investigate the problem but I post this message just in case.
    Thanks in advance for your comments, remarks or questions.

    Hi Balaboum,
    Normally the reason why you have this error code is due to lack of proper termination of your CAN bus. Terminating resistors are required to ensure proper communication on the CAN bus. The Knowledge Bases linked below contain more information about termination requirements for both High and Low-Speed CAN and CAN Bus Manual.
    http://digital.ni.com/public.nsf/websearch/BBA68A3DBD76EFF786256E69000B6E27?OpenDocument
    http://digital.ni.com/public.nsf/websearch/28201E5E78F6E9E0862569E7006C33A9?OpenDocument
    http://www.ni.com/pdf/manuals/370289j.pdf
    You also have some information on others posts linked below:
    http://forums.ni.com/ni/board/message?board.id=30&message.id=2354&requireLogin=False
    http://forums.ni.com/ni/board/message?board.id=30&thread.id=2084&view=by_date_ascending&page=1
    Benjamin R.
    R&D Software Development Manager
    http://www.fluigent.com/

  • How do I use more than four PDOs when working with NI-Industr​ial Communicat​ions for CANopen?

    When I call CANopen TPDO Create.vi to create TPDO objects I can only input PDO1 through PDO4. How do I work with more than four PDOs?
    I see the other forum thread using an older version of CANopen, but it does not appear to directly translate into the newer NI-Industrial Communications for CANopen.
    http://forums.ni.com/t5/Automotive-and-Embedded-Ne​tworks/PDOs-on-a-CANopen-network/m-p/405001?requir​...

    Hi wireman,
    A good resource for CANopen is available here.  That page explains that typically in the CANopen standard, there are only 4 predefined PDOs in each direction (transmit and receive).  To use extra PDOs, additional configuration is required.  The configuration of the predefined PDO Channels refers to the COB-ID that they are linked to by default.
    According to the LabVIEW help files, the COB-ID is 'calculated' by adding the value of the PDO Channel and the Node ID, if the COB-ID is zero.  However, if the COB-ID is explicitly defined, then LabVIEW will ignore the calculation provided by the Node ID and PDO Channel.  So, if you need more than the four PDOs, you'll need to use the COB-ID input to differentiate which channel is being referenced.
    I hope this clears some things up, and please don't hesitate to ask for more advice.
    Regards,
    -Dave C
    Applications Engineer
    National Instruments

  • Motor Controller communication via PDO CANopen

    I am using a Mattkeg Servo position Controller (MDR2300) to control a PMSM via Speed and Position control. The motor controller uses the CANopen protocol to receive commands from the NI Realtime Controller. In order to send the speed, position, velocity, etc commands, I am currently using the SDO method of communication. But I want to use the PDO method in order to do the same.
    I am using the 'NI-Industrial Communications for CANopen 1.0.3' library. The examples given by NI regarding PDO, transmit/receive 64bit word. But the way I understand it, the Objects can be mapped to the 4 transmit and 4 receive PDO's so that I can send, for example object values for target_position, profile_velocity, profile_acceleration, and polarity in one PDO msg. I managed to do the PDO mapping using the LabVIEW Batch SDO process. But I don't know how to use it further in my Program. I have attached the current program I have that uses SDO. I wish to accomplish the same using PDO. Has anyone managed to do this?
    Thanks a lot for your help..
    Attachments:
    Position_Control.png ‏115 KB
    Speed_Control.png ‏103 KB

    the more appropriate NI forum http://forums.ni.com/t5/Automotive-and-Embedded-Networks/bd-p/30

  • CANOpen Library - Limited number of PDOs ?

    Hello,
    Here's my story :
            I have a CAN network grouping 13 CANOpen nodes ( motors, I/Os, pneumatic valves ) and a NI pcmcia adapter in my PC. I use LV 7.1 and the CANOpen library to build a nice application to automate all this.
            For each of 10 of this nodes, I declared ( and I need ) 2 RXPDOs and 3 TXPDOs.
            Actually, I am facing an error message ( PDO create from CANOpen library ) saying that I've reached the software/firmware memory limit ( of the pcmcia board I suppose ) and that I should reduce the size of the PDO queues or reduce the number of CANOpen objects... For each PDO, I set the buffer size at 2 frames which is not a lot in my point of view. I cannot reduce the number of CANOpen objects because I need them...
            What is the exact limit with my hardware ?
            Can my configuration handle 4 TPDOs and 4 RPDOs for each node ( in case I'd like to ) ?
    Another question :
             In my LV code, I created a cluster for each node storing a SDO handle ( CANOpen object ), 4 RPDO handles and 4 TPDO handles. I initialize them calling "create SDO" and "create PDO" at start up if I need them otherwise I let them to a default value (0). What do you think about this ? Can this be the source of the error message ?
    Thanks in advance for your answer

    Hi,
    The CANopen Library is based on the NI CAN driver. Because of the tight timing needs for SDO communication and the need to send periodic frames some library functions are using objects for communication. Objects are able run directly on the hardware, thus they can meet these strict timing issues. The bad thing is, they are limited in number to 50 per NI CAN device. That includes one per Port configuration, thus for a 2 port board , if you configure both ports there are 48 objects left for both ports together.
    The second limitation applies to the shared memory between board and driver. The driver can configure approx. 300 messages for queues for the board, shared between 2 ports if available.
    Now if you know this you can calculate the number of SDOs and PDOs you can configure until the mentioned error occurs.
    Ok , you are right, we need to know how many messages the particular functions configure for queues.
    Thats something we find from the NI SPY. The Tool gets installed with NI CAN and allows you to log all API Calls to certain drivers including NI CAN.
    The configuration api call tells us from the buffer page the size for Read and Write Queue configured with property 80000013 and 80000014. If you switch to AttrPtr. you can see the qeuesizes in hex at the same location.
    Now you can see that the CANopen Interface Create allocates 100 frames for the read Queue and 10 Frames for the Write Queue. This numbers are used to read all incoming frames and write all nonperiodic frames which are not configured with objects, like the NMT commands or RX PDOs.
    The SDO create takes internally 10 frames for the Read Queue only, because it needs to buffer the answers only.
    The TX PDO is created as an object but does per default not use any queue internally . But as you mentioned, you can configure a buffer size, which is the same queue.
    That means it is highly recommended to use one port devices or one port only for a 2 port device only, because you need 110 messages for the port configuration already.
    For SDOs i would recommend to close the handle if you have used the SDO and do not need it anymore. That frees the memory (10 messages ) for other operations.
    For PDOs i would recommend to use buffer size 0. That means you allways read the most recent value. I never needed a queue for my applications, but thats somewhat your decision. Within the configuration cluster you find the rx or tx PDO List control. This List triggers internally the COB ID you are using for the PDO. We configured four in each direction because it is likely that you canopen node uses these IDs which often are mapped by default.
    But if you need more then 4 PDOs you can use tx PDO 1 for example more then once, but you have to enter a valid COB ID by your own. That overwrites the default COB ID.
    See the attached example for LabVIEW, for details.
    But back to your problem: Lets calculate, which limit you reached first. 10 nodes with  3 Tx PDOs and 1 SDO. Here are the numbers: 60 messages and 30 Objects for the PDOs 100 messages and 10 objects for the SDOs and the Port configuration with 110 messages and 1 object.
    Thus you have 270 messages queue size and 41 objects.
    Thats not really the limity but it is near the limit and likely to cause the error with the next configuration step.
    I would  recommend the following:
    1. use one port only.
    2. close SDO handles after using them.
    3. use PDO buffer 0.
    Or use multiple boards . ;-)
    Hope that helps
    DirkW
    Attachments:
    Write and Read PDO Network Mapping71.llb ‏447 KB

  • Write Control word, read status word Unidrive SP

    All,
    I have a cRIO-9024 with an NI 9853 and I'm trying to configure and control an Emerson Unidrive SP using CAN port 0. I have the Indsutrial Communication for CANOpen 1.0.1 driver installed (on PC and cRIO) and I've been able to successfully read certain registers on the drive using SDOs.
    I'm still confused as to the configuration and use of SDOs and PDOs (learning a lot, though), but what I want to do at the moment is be able to write to the drive control word (parameter 1.42) and read the status word (parameter 10.40). I have been doing a LOT of digging through manuals and LV CANOpen examples, and I think that the addresses that I need to use for these two values are 0x2001, sub-index 2A for the control word and 0x200A, sub-index 28 for the status word.
    I've had no luck in running the CANopencRIOPDODemo VI (from the cRIOCANopenbasic example project), it causes a CANopen module error and kicks the cRIO offline, I end up having to reboot it to restore communication between it and my laptop.
    At any rate, any light anyone can shed on this particular issue, as well as configuring and using SDOs/PDOs in general would be GREATLY appreciated.
    Thanks!

    I can't find the page at the moment. I've been through so many of them it may just be that I'm thinking of the fact that a few places (this one, for instance: http://zone.ni.com/devzone/cda/epd/p/id/5474) state that the 9853 works with CANopen. Now, it indeed does work with CANopen, but it's not a CANopen module, it's a CAN module. The way it works (specifically with FPGA) is to simply use two FPGA I/O nodes (1 read, 1 write) with the default NI CAN frame array of 6 U32 controls. This leads one to the LabVIEW CANopen library, which doesn't work with my cRIO for some reason (confrmed by Richard Van De Graaf at NI). I then ended up attempting to use the Ind. Com. driver, which only supports true CANopen modules like the 9881.
    At this point I've removed all the references to CAN1 from my FPGA VI and I'm having some degree of success. The engineers at NI I've spoken with (Larry Hawkins most recently, and someone named Julianne, through Larry) feel that somehow my network or node is seeing the presense of the two CAN ports as two masters. I've no idea how this is possible as I never once have called CAN1, only CAN0. I/O nodes connected to CAN1 existed in my FPGA VI existed, and that's it.
    There's really no point in me uploading the latest version of my FPGA VI (sorry you couldn't view it, no idea what happened there), as I've changed it back to the same structure as that of the FPGA VI in the CANopen Basics for cRIO example project. I just gave the controls and indicators descriptive names.
    I can now only successfully read index 0x1009, which is the manufacturer hardware version register. I was able to read 0x1008 and 0x100A, but now they just give me back ASCII gibberish. Not sure why, especially since 0x1009 works. I suspect that it's drive-specific.
    The other issue I'm having now is that as soon as I powered the system up this morning, I tried to read 0x1009 and right after the WriteSDO VI wrote the frame to initiate the SDO upload protocol, the following SDO Read kept returning an ID value of 0x701, which is a response to a Node Guard status request. This puzzled me because I don't have any code that requests that status. I hacked in a couple of calls to the NMT VI to stop the node, reset it, the set it to the pre-operational state again. This has cleared the 0x701 response issue, but now only the first read I try to do (I'm just testing SDO reads and writes right now) returns any data to my top-level RT VI. If I stop it and read a different index, I'll get the expected response, but only that one, the others still won't return data.
    I can post my code a bit later if you like, I'm going to go see if any of the default values in the drive have changed somehow.
    Thanks!

  • CANOpen Communication NI cRIO 9022 (9853 CAN module) - MAXON EPOS2

    I'm implementing a velocity control loop on two Maxon EPOS2 70/10 control units,  interfacing them with a NI cRIO 9022 (CAN module 9853). To this aim, I'm using the libraries from NI and they work quite well: for each EPOS2 I can read current, position and velocity using 2 PDO messages and set a desired velocity using 1 PDO message, all in a single timed loop on Labview Real-Time. My VI is based on a NI example included in the mentioned library. Even though the sampling time of the loop is set to 10 ms (as in the example file), I verified that all the operations were executed in about 30 ms.
    My target is 1 ms sample time and I'd like to know if there is any chance to get this; are there some limitations in the software/communication protocol I'm using or is it possible to achieve 1 kHz control frequency? Based on the documentation, the EPOS2 CANopen driver is split as follows:
    1.      Hardware Layer: VIs which interact with the CAN hardware (FPGA Interface folder).
    2.      CAN Layer: VIs which construct/deconstruct CAN packets and handle communication between the Hardware Layer and the top level application (CAN folder).
    3.      CANOpen Layer: Low level VIs which simplify the generation of the SDOs and PDOs used to communicate over the CAN bus (CANopen folder).
    4.      EPOS2 Driver Layer: High level wrappers over the CANOpen Layer simplifying the control of EPOS2 drives (main folder).
    It seems that the Layer that construct/deconstruct CAN packets is impelemented on the RT level. Is it correct? Do I need to move it to the FPGA level to improve performances?
    I look forward to hearing any suggestions from you.
    Best,
    Nevio

    Hi Nevio, 
    I am trying to simply read encoder values from my EPOS2 24/2 control units into Lavbiew. I have been through all the documentation however I am unable to establish communication between the EPOS2 and labview.
    I am connecting the two using a USB connection. I can connect to and control the motors in EPOS Studio, but nothing in labview.
    I am very new to Labview so I am probably not putting the correct blocks down for initialization.
    Could you please help me by suggesting some good examples to look at or linking me to labview sample of initializing communication with the EPOS2 units. 
    Any help is greatly appreciated
    Regards,
    Kris

  • CANopen troubles

    I'm having trouble communicating with a CANopen module (Selectron AIC711) I have here. I doesn't seem to respond to any message I send to it, and I'm starting to wonder if it has a malfunction (or if I've misunderstood the CANopen concept completely...). I'm using the Frame API in Labwindows/CVI. Is there any message I can send that should give a response no matter what? Would be nice to have the exact data bytes and arbitration ID (the module has ID == 2).
    Any other enlightening or possibly useful comments regarding CANopen and/or the described problem is also appreciated.
    Best regards,
    Halvor Lund

    Hi Halvor,
    Attached you will find an EXE file for a LabVIEW program which reads the manufacturer device name (1008h) using CANopen SDO transfer.
    Adjust the Node ID and the CAN Port to fit your needs and run the program. If it works , then your device should be ok if not contact the device support.
    What the program does is : 1. Initializing every device in the network to the NMT preoperational state to use PDO communication. (COB ID = 0, First Byte = 128, Sec. Byte = 0)
    2. Write the SDO Request ( SDO tx =601h + node ID, First Byte = 40h, Sec. Byte = 8h, Third Byte = 10h, Fourth Byte = 0)
    3. Wait for Transmit success
    4. Read the SDO Answer (SDO Rx = 581h + node ID, the answer comes in Hex values and can be translated to ascii strings)
    5. Stop the Communication using the NMT Stop Command. (COB ID = 0, First Byte = 2, Sec. Byte = 0)
    Hope that helps.
    Attachments:
    Read SDO Data.zip ‏48 KB

  • Are CANOpen cycle-time​s required for SDO communicat​ion?

    Hi All,
    In order to perform a particular action (Home stages) I send a sequence of 3 SDO commands to a positioning stage. These stages are using a FOR loop to a series of 15 stages. I am using a high-speed card with 125000 baud rate.
    When sending this sequence of commands some of the stages (one or two randomly) will not respond. On other occasions all of the stages will respond first time. I do not have any time delays between the sequence of 3 commands I send or between the loops of the FOR structure.
    All other commands (move stage, change velocity etc) are sent as single objects (rather than a sequence of 3 objects) and there is usually a large time-delay between commands (due to the process I am programming rather than any intentional wait functions in the code). These commands work perfectly every time.
    This 15-axis system is an expansion of a 13-axis system I was working with previously. The 13-axis systems responded to the homing sequence consistently and reliably every-day for 6-months or so.
    The manufacturer works only with PDO comms and has no experience using SDO communication. They believe I may have to re-write my code to implement PDO style 'cycles' to buffer the speed I send commands to the stages. However I am a bit skeptical of this as I believe SDO comms means that each command is acknowledged before the next command is sent (I am open to correction on this as I have very little experience with CANOpen). This makes me think communication in cycles (for SDO) would be of no advantage.
    Before I try this quite major re-write of my code can anyone advise if this cycle-based communication model might help or is it only applicable to the PDO protocol?
    Kind regards and thanks,
    Dave

    Hi Dave
    I have read up on your question and I believe that some type of producer/consumer architecture is needed. The reason for the non response of some of the commands is that no time delay is available between the sequence of commands you are trying to process. By having the producer/consumer architecture you are ensuring there is a wait between the stages in the sequence. And that the next command in the sequence will not execute until the last command has executed successfully. So in other words a PDO system would be implemented here. A producer/consumer would be a solid program architecture for ensuring reliable PDO communcation in CANOpen.
    Please read the following
    http://www.eetimes.com/design/industrial-control/4​017924/CANopen-An-Introduction
    Here are some other options to consider
    http://search.ni.com/nisearch/app/main/p/bot/no/ap​/tech/lang/en/pg/1/ps/10/sn/ssnav:dzn/q/CANOpen/se​...
    I hope this helps
    Kindest Regards
    Ben Hartrick BEng (Hons) MIET
    Applications Engineer

  • CANOpen-Message with NI-USB-847x

    Hi,
    i trying to build up a communication between LabVIEW and a Festo-Tool. The Festo-Tool accept only CANOpen-Message-Protokoll. I've got only the NI-USB-8472. I need to send only 2 commands: "go in Operational-Mode" and "open or close a valve". Not more. Some people say that's possible with my hardware. But how? Please give me a feedback and/or an example. Thanx!
    Hallo,
    ich versuche eine Kommunikation zwischen  LabVIEW und einer Festo-Ventil-Insel aufzubauen. Leider nutzt Festo das CANOpen-Protokoll und ich habe nur die NI-USB-8472 - Box. Ich muß nur zwei Befehle senden: "gehe in Operational Mode" und "öffne oder schliesse ein Ventil". Mehr nicht! Einige meinten das ginge auch mit dieser Hardware, aber wie? Kann mir jemand ein Beispiel geben? Danke!
    Jens G.

    Hello there,
    I am new to CAN, and I am trying to implement another Festo
    tool (an AC motor controller) which accepts CANopen protocol. I have a USB-8473 to communicate with the controller by using
    Labview program. I downloaded two SDO (read only) and PDO (read and write) examples
    available on the following link from the NI website.
    http://zone.ni.com/devzone/cda/epd/p/id/5873
    The problem is I can just use the SDO example to read some parameters
    from the controller, and I do not know how I can implant the PDO example to
    change controller’s parameter. This code use T-PDO (Index: 0x1800 and 0x1801)
    to read and write data. But I do not know how I can first insert a data and
    then transfer it to a specific object like “controlword” (Index: 0x6040 sub:0x00)
    in order to enable the controller.
    I hope you can help me.
    TIA,
    Roozbeh

  • How does NI support CANopen devices?

    In what way does NI CAN card support CANopen architecture?How do i implement CANopen architecture using available NI CAN cards?
    Kindly give me some suggestions!

    It´s relatively simple to build your own CANopen VI`s based on the NI CAN driver from NI.  Attached you will find two examples to communicate with CANoppen devices. The first example (CANopen Demo.llb) shows how to build a COB ID and using this ID to communicate with SDO and PDO messages. The second example (CANopen-Sensor.llb) communicates with a single device using  a special command message  to trigger the data transfer from the device.
    Hope that helps.
    Attachments:
    CANopen_LabVIEW.zip ‏206 KB

  • NI CAN + CanOpen Library limitations (same as Copley?) - explanation?

    I've been reading that LabVIEW CANOpen Library and NI CAN cards have a 50-object limit and up to 300 can message buffer limit, in which if these limits are reached, error messages will insue.
    Does this hold true for using the Copley CMO?  Instead of creating my own PDOs and transmitting SDOs, Copley offers an object library which does many of these thinigs for you while the user picks actions from a drop down menu (relative move, absolute move, etc). 
    Does the above limitation hold true for ANY Can hardware used by LabVIEW?  If we do not use Labview's CANOpen Library but use a different vendor CANOpen library (but a Ni CAN card), do we still see these limitations?
    Also, I had a chance to create 50 nodes (objects) and was able to repleatedly send commands to about 6 simultaneously with an issue.  Would I have not reached my object limit in this case? 

    These two limitations apply whenever you use NI-CAN boards with the NI CAnopen Library. But it sounds worse then it actually is.
    You can use the NI Spy to see when the Library uses an object. It configures something like CANX:TDY where X is the CANport number and Y is the ID.
    The library uses objects for all periodic or unique tasks, like NMT(one Object), RTR PDOs(one object per PDO), SDO(two objects), Error management(one object per option), Sync(one object).  The 300 messages issue only applies if you use the PDO buffer which is not often the case because most of the time you want to have the most recent data and therefore you would use the queue size 0.
    DirkW
    Message Edited by DirkW on 01-08-2008 08:08 AM

  • What is ths maximum PDO read buffer size using the Series 2 CAN cards?

    Does anyone know the maximum size for the PDO read buffer when using a Series 2 PCI NI-CAN card?

    Hi
    The maximum size for a single PDO does not depent on the series of your board it is depending on what else you are doing with the CANopen Library.
    The board uses a specific shared memory to transfer messages between driver and hardware. The size of this memory fits nearly 350 messages.
    The CANopen Config takes 100 messages for different services like NMT. That means the maximum size for a single PDO would be approx. 250 messages.
    Or for 5 different PDOs 50 each. But normaly you can leave the buffer size to zero, thus the PDO Read would allways read the newest data.
    This calculation is true for the board. That means you have 350 messages per board and 2 ports whould need to share the memory.
    DirkW

  • Error -1074388947 with CANOpen Emergency Create

    Hi All,
    I am attempting to control 15 positioning stages using CANOpen. The newest feature intend to add is to add emergency monitoring to handle errors etc. I have tested this with one stage and all seems to be functioning. I am using the CANOpen library functions.
    Unfortunately when I expand to monitoring all 15 stages I get the following error stating that I have exceeded resource memory:
    Error -1074388947 occurred at CANopen Emergency Create.vi
    Possible reason(s):
    NI-CAN:  (Hex 0xBFF6202D) Exceeded resource limit for queues in shared memory between firmware/driver. The ncReadMult function is not allowed. Solutions: Decrease queue lengths in objects; Set read queue length to at least 2; Decrease number of CAN Objects.
    I have attached a VI snippet which shows the process I am using to control the stages. Essentially I am creating a reference to each node (both for SDO and Emergency - I am not using PDO) and then am passing this through my code to refer to the correct stage. I have included a VI snippet to show how I am creating by references.
    In the snippet the 4th element (index 3) in Array 3 shows this error as do all the following arrays in this index. If I change the order of creation - create Emergency loop before SDO create - the error occurs in the same place so the order does not seem to matter.
    Is there anything I can change in the way I initialise my code - or indeed my whole architecture - which could improve this? My hardware is a PCI CAN2 Series2 (legacy board). My application does not require me to monitor all stages separately - is there a way I could monitor them all using just one reference/object? I tried Node 0 but this gave an error.
    Regards and thanks,
    Dave

    Hi Dave,
    It does sound like a similar problem to what Tom linked to, I was going to point to the same resource. I would suggest checking that you're not exceeding the limit; and this KB is also helpful in determining the upper limit: How Large Can I Make the Read and Write Queues for NI-CAN?
    Regards,
    Imtiaz Chowdhury
    Head of Digital Technologies
    Brand786

  • Examples for canopen library

    Im new to the canopen and even can.
    I have purchased a NI high speed xnet card and the canopen libarary and installed them with xnet 1.
    Ive struggled with this so far and believe a better background might help.
    I cant seem to find any examples to run for canopen, or even a general guide for CAN.
    Generally NI is really good at giving basic tutorials to read and hello world type examples.
    Even an example i cant run, but shows what the parameters are being passed for and why would be great.
    The goal is to be able to send a command to get a position of an amplifer, and then read it back.
    Preferibly with PDO as there are timing constraints.
    I did find a few examples in the userforum, in llb format, but they were just sub sections of program.
    I really need to see the entire working program, even if it does smething very simple.
    thanks
    Message Edited by jimmyinct3 on 11-01-2009 03:06 PM

    Jimmy,
    The NI-CAN Hardware and Software Manual gives a comprehensive overview of the CAN protocol and how to interface with NI hardware using the NI-CAN API.
    This KnowledgeBase article describes where to find the examples that ship with the CANOpen LabVIEW Library.
    To clarify your interface options, keep in mind that you are using the newer XNET hardware. This means that to use your card, you have the choice of using either the:
    1. new NI-XNET drivers and API
    2. or the NI-CAN drivers + NI-CAN Compatibility Layer + NI-XNET drivers
    Since you wish to use the CANOpen LabVIEW Library, you are using the second option as it is built on the NI-CAN interface. This means you need to ensure you have the latest NI-XNET drivers and NI-CAN drivers in order to work with the CANOpen LabVIEW Library for your device.
    Peter Flores
    Applications Engineer

Maybe you are looking for

  • How can I transfer songs from one computer to another

    How can I transfer songs from one computer to another

  • Generic 60W power adapter

    My daughter broke her AC Power adapter that came with her MacBook. Went to my local apple store and they want $79.00 plus tax for a new one. Anyone out there have any luck buying a generic brand. I'm always a little bit nervous about this. Don't want

  • Creating and selecting from a dynamic table

    Hi, Iam trying to create a table dynamically and selecting from it in same plsql block, but am getting "table doesnot exist" error. however if i just create a table dynamically and then do a select on it seperately it works.. below is sample code for

  • Vendor Put on SPL block after PO

    I have a doubt , during the PO creation in R/3 and the custom doc creation in GTS vendor is not blocked but during the GR the business moves the Vendor to blocked list. In this during GR will there be a SPL screening happening, for this do we need to

  • Select Options: How to preallocate the select options values?

    Hi All, I have been trying to preallocate my select options. I want to read all values a user is authorized for and set them in the range of the select options fields (before the are actually shown to the user). However, I wasn't able to.. Does anybo