Activity for CANopenNode

  • Janez Janez posted a comment on discussion Open Discussion

    Maybe you can check: https://github.com/CANopenNode/CANopenDemo/blob/master/tutorial/README.md Or some other documentation about CANopen SDO.

  • Marco Brischetto Marco Brischetto posted a comment on discussion Open Discussion

    Hi, i've been trying to write complete records and arrays to another device at once using SDOs with no success. I was expecting the stack to segment the data and maybe send it in blocks. I'm using the implementation presented in this documentation https://canopennode.github.io/CANopenNode/group__CO__SDOclient.html although i'm using an older version of the stack. I was wondering if this is possible to achieve or should i just write every index of the record individually? Thanks in advance Brisch

  • Janez Janez posted a comment on discussion Open Discussion

    I didn't try, but it should be possible. See CO_ODinterface(). The only function which uses object dictionary is OD_find(). It returns pointer to OD_entry_t object, if found. Please note, entries must be ordered by index for this function to work. Files CANopen.c and CANopen.h are complex because of flexibility and ability to integrate OD.h and OD.c files. For most custom solution you could also write own CANopen.h/c files and generate object dictionary dynamically without OD.h/.c files.

  • Maciej Andrzejewski Maciej Andrzejewski posted a comment on discussion Open Discussion

    In my project there is a Master node which is always present and multiple hot-plugged Slave nodes. I use LSS and NMT to control the joining process of the Slaves. After a Slave join the network the Master will scan their TPDO and RPDO objects using the SDO and should create corresponding Slave's shadow SDO objects in its own Object Dictionary and create coresponding TPDO and RPDO. I'm using MULTIPLE_OD flag so the data is already stored on the heap and initiated using the static OD helper function....

  • john kelan john kelan posted a comment on discussion Open Discussion

    Hello Janez, Thank you for your reply. As far as i understand, the two links above are for CANopenLinux and CANopenDemos. What i need however is CANopenNode, the tool with which i can write c/c++ code to continously get the data of a TPDO of some sensor in a real CANopen network and print it for example on a linux terminal. This tool or library is the CANopenNode as i understood and so i want to install it. I am sorry if my question sound naive, but as i understood CANopenLinux and CANopenDemos are...

  • Janez Janez posted a comment on discussion Open Discussion

    This is an old page, don't know, why it is still there. Please see: https://canopennode.github.io/ https://canopennode.github.io/CANopenLinux/index.html

  • john kelan john kelan posted a comment on discussion Open Discussion

    Hello everybody, Thank you for creating such a great community. I have a can open network with a PC running Ubuntu 20 and some motors and sensors. My question is: I tried to install CANopenNode following the instructions here: https://canopennode.github.io/CANopenSocket/md_doc_gettingStarted.html by cloning the git repository and then using the make command, but after cloning the repository i could not see any Makefile, so using the command make inside the CANopenNode directory yields an error :...

  • Oldevg Oldevg posted a comment on discussion Open Discussion

    Hi, have you a response or have u done a canopen project with F28069 ?

  • Oldevg Oldevg posted a comment on discussion Open Discussion

    Hi, I am beginner on CANOPEN stack. Does it exist an example to begin a skeleton for slave IO ? Thanks in advance, BR Olivier

  • Kelan Kelan posted a comment on discussion Open Discussion

    I was able to resolve it by following these steps in the readme in the CANopenLinux repository level.

  • Kelan Kelan posted a comment on discussion Open Discussion

    Dear all, I hope I post this in the right spot. When I try to follow the https://canopennode.github.io/CANopenSocket/md_doc_gettingStarted.html tutorial but I fail to startup the canopend without the error message. I set up the virtual can and canopenend takes -s with an attribute but it does not offer -a as attribute and I wonder if this is the problem. -a is not listed as flag in the canopend --help list. What am I doing wrong? I assume the -a is not up-to-date anymore. Sincerely, Kelan

  • Abdullah Wasif Abdullah Wasif posted a comment on discussion Open Discussion

    Thank you Martin and Janez.

  • Janez Janez posted a comment on discussion Open Discussion

    https://github.com/CANopenNode/CANopenLinux#can-interfaces

  • Martin Hollenweger Martin Hollenweger posted a comment on discussion Open Discussion

    sorry, i don't have the time to do the research for you (this is part of the work you have to do) if you think to use Linux as OS you will fine a lot of documentation on the net. ( SocketCAN)

  • Abdullah Wasif Abdullah Wasif posted a comment on discussion Open Discussion

    Hi Martin, The PCAN-USB dongle is not available in Pakistan and importing it is going to cost me 600 euros. That is quite a large sum as I am currently an undergrad student. I was thinking of using less costly coverters screenshots of which i have attached. Can you kindly tell me whether it will get the job done or not? Thanks in advance

  • Martin Hollenweger Martin Hollenweger posted a comment on discussion Open Discussion

    Hi Abdullah, OK, i think what You need is a CAN-USB dongle, this dongles normaly have there on SDK to integrate in your PC application. I'm normaly using the PEAK-USB dongle (https://www.peak-system.com/PCAN-USB.199.0.html?&L=1) they have a free SDK with examples in different programming languages.

  • Abdullah Wasif Abdullah Wasif posted a comment on discussion Open Discussion

    Thank you for the reply Martin. I am basically new to the concept of CAN and CANopen. Basically what i have to do for my Final Year Project is I have an aircraft panel which has some buttons and knobs. Those buttons and knobs are connected to the CANopen Chip F40. I have to develop a data acquisition application which will read the states of the buttons and knobs and display it on a GUI. I have to develop this application on C, C++ or labview. I thought this CANopen stack was a good place to start....

  • Martin Hollenweger Martin Hollenweger posted a comment on discussion Open Discussion

    sorry, i don't understand for what you need Canopennode if the chip you are using has a integrated Canopen stack. Martin

  • Abdullah Wasif Abdullah Wasif posted a comment on discussion Open Discussion

    I need to know whether the stack will work with the CANopen chip F40. I have the CANopen Chip F40 but i still need to decide which CAN-USB converter i need to use. Thanks.

  • Abdullah Wasif Abdullah Wasif posted a comment on discussion Open Discussion

    Hi, I'm new to the CANopen protocol. I am currently working on my Bachelor's project which is based on the CANopen protocol. I have a CANopen Chip F40 which has the CANopen firmware preprogrammed and i need to acquire data from a panel which has push buttons, knobs etc. I have studied the CANopen protocol but need someone to point me in the right direction. I have no idea where to start. Any help would be appreciated.

  • Dave Shapiro Dave Shapiro posted a comment on discussion Open Discussion

    Hi, I'm trying to compile the example project for CANopenPIC but I'm getting a multitude of errors during compilation. - mainly referring to variables in main_dsPIC33F.c main_dsPIC33F.c:94:5: error: 'OD_CANNodeID' undeclared (first use in this function) main_dsPIC33F.c:94:5: note: each undeclared identifier is reported only once for each function it appears in main_dsPIC33F.c:95:5: error: 'OD_CANBitRate' undeclared (first use in this function) I've basically cloned the project and tried to compile...

  • TrojanObelix TrojanObelix posted a comment on discussion Open Discussion

    Okay, I got it: The XC16 compiler V2.00 is buggy. Runs like clockwork with V2.10.

  • TrojanObelix TrojanObelix posted a comment on discussion Open Discussion

    I use the Master V1.3 on a PIC24 If I define a node as HB consumer (Obj 1016h), with a consumer time of 5 s, nothing happens at first (standard conform). According to the standard, monitoring starts with the first heartbeat. However, when the first heartbeat is sent by the monitored node, I receive an emergency and a bootup from the monitoring node when the consumer time expires. At least near the time, does not seem to be exactly this time. What's going wrong? Is thee a known bug in the V1.3 master...

  • Peiter Djaja Peiter Djaja posted a comment on discussion Open Discussion

    Hello there, Do you know if CANOpennode will work with dsPIC33CH128MP508? Any modifications that are needed to be made for it to work? Thank you, Pete

  • Jiří Hegr Jiří Hegr posted a comment on discussion Open Discussion

    Thank you! Your answer is sufficient for me.

  • Janez Janez posted a comment on discussion Open Discussion

    It is CAN FD ready to some degree. I don't know, if somebody implemented driver for CAN FD support. PDO is CAN FD ready, but not tested. USDO is not implemented. See also here: https://github.com/CANopenNode/CANopenNode/issues/342

  • Jiří Hegr Jiří Hegr posted a comment on discussion Open Discussion

    Hello, I'm sorry for the silly question, but I was not able to find a clear answer. Does the CANopenNode support CAN FD (i.e., transfer up to 64 bytes in one message)? I've just found that this feature was in development in 2015.

  • Janez Janez modified a comment on discussion Open Discussion

    This is from ChatGPT: what is simple bootup in canopen In CANopen, the "boot-up" process refers to the initialization process that takes place when a node is powered on or reset. During this process, the node runs through a series of checks and configurations to ensure that it is operating correctly and can communicate with other nodes on the network. The "simple boot-up" process in CANopen is a simplified version of the boot-up process that can be used in certain applications where a more comprehensive...

  • Janez Janez posted a comment on discussion Open Discussion

    This is from ChatGPT: In CANopen, the "boot-up" process refers to the initialization process that takes place when a node is powered on or reset. During this process, the node runs through a series of checks and configurations to ensure that it is operating correctly and can communicate with other nodes on the network. The "simple boot-up" process in CANopen is a simplified version of the boot-up process that can be used in certain applications where a more comprehensive initialization process is...

  • TrojanObelix TrojanObelix posted a comment on discussion Open Discussion

    Thanks Janez, I know the 0x1F80 and I use it with V1.3 of the CanOpenNode. I didn't think it had anything to do with the SimpleBootUp.

  • Janez Janez posted a comment on discussion Open Discussion

    Hi, As I know, something like this is specified in standard CiA302, object 0x1F80 - NMT Startup. Here is an excerpt: bit 0: 0(1) - device is not (is) NMT master bit 1: 0(1) - if bit3=0, start explicitly assigned (all) nodes bit 2: 0(1) - automaticaly enter (DO NOT automaticaly enter) the operational state on bootup bit 3: 0(1) - NMT master may (may not) start nodes automatically bit 4: 0(1) - if monitored node fails heartbeat handle that (all) node(s) bit 5: 0(1) - flying master process not (yes)...

  • TrojanObelix TrojanObelix posted a comment on discussion Open Discussion

    Hi, I am trying to find out what effect the EDS entries SimpleBootUp (Master/Slave) have on the node and the communication. In general, what the standard intends to do with them and whether these entries have an effect in the CanOpenNode. The CanOpenEditor only passes them through during import/export. DSP 306 does not provide much information on this: SimpleBootUpMaster simple boot-up master functionality (Boolean, 0 = not supported, 1 = supported), SimpleBootUpSlave simple boot-up slave functionality...

  • Janez Janez posted a comment on discussion Open Discussion

    I think, there is no problem, if you add the define in the CanopenEditor.

  • TrojanObelix TrojanObelix modified a comment on discussion Open Discussion

    I use the defines intensively in applications. I have already had a few use cases where the index would have been very helpful. In contrast, it seems to me that #define OD_1000_deviceType 0x1000 contains redundant information. #define OD_deviceType_idx 0x1000 seems to make more sense to me Maybe I'll add the define in the CanopenEditor. Doesn't bother, or does it lead to a workflow that bypasses the API?

  • TrojanObelix TrojanObelix posted a comment on discussion Open Discussion

    I use the defines intensively in applications. I have already had a few use cases where the index would have been very helpful. In contrast, it seems to me #define OD_1000_deviceType 0x1000 seems to contain redundant information. #define OD_deviceType_idx 0x1000 seems to make more sense to me Maybe I'll add the define in the CanopenEditor. Doesn't bother, or does it lead to a workflow that bypasses the API?

  • Janez Janez posted a comment on discussion Open Discussion

    I used those defines mostly in application programs. But I'm afraid, there is missing information about index. I actually never needed that information.

  • TrojanObelix TrojanObelix modified a comment on discussion Open Discussion

    Is it possible to get the index of an OD entry? Seems to be an easy question, but did not find anything E.g.: what is the index/subindex of OD_istWerteProzesskuehlkreis1[ODA_istWerteProzesskuehlkreis1_temperaturT1ProzessmittelVL] which is defined as /*2000, Data Type: INTEGER16, Array[14] */ #define OD_istWerteProzesskuehlkreis1 CO_OD_RAM.istWerteProzesskuehlkreis1 #define ODL_istWerteProzesskuehlkreis1_arrayLength 14 #define ODA_istWerteProzesskuehlkreis1_temperaturT1ProzessmittelVL 0 #define ODA_istWerteProzesskuehlkreis1_temperaturT1ProzessmittelRL...

  • TrojanObelix TrojanObelix modified a comment on discussion Open Discussion

    Is it possible to get the index of an OD entry? Seems to be an easy question, but did not find anything E.g.: what is the index/subindex of OD_istWerteProzesskuehlkreis1[ODA_istWerteProzesskuehlkreis1_temperaturT1ProzessmittelVL] which is defined as /*2000, Data Type: INTEGER16, Array[14] */ #define OD_istWerteProzesskuehlkreis1 CO_OD_RAM.istWerteProzesskuehlkreis1 #define ODL_istWerteProzesskuehlkreis1_arrayLength 14 #define ODA_istWerteProzesskuehlkreis1_temperaturT1ProzessmittelVL 0 #define ODA_istWerteProzesskuehlkreis1_temperaturT1ProzessmittelRL...

  • TrojanObelix TrojanObelix posted a comment on discussion Open Discussion

    Is it possible to get the index of an OD entry? Seems to be an easy question, but did not find anything E.g.: what is the index/subindex of OD_istWerteProzesskuehlkreis1[ODA_istWerteProzesskuehlkreis1_temperaturT1ProzessmittelVL] which is defined as /*2000, Data Type: INTEGER16, Array[14] */ #define OD_istWerteProzesskuehlkreis1 CO_OD_RAM.istWerteProzesskuehlkreis1 #define ODL_istWerteProzesskuehlkreis1_arrayLength 14 #define ODA_istWerteProzesskuehlkreis1_temperaturT1ProzessmittelVL 0 #define ODA_istWerteProzesskuehlkreis1_temperaturT1ProzessmittelRL...

  • Janez Janez posted a comment on discussion Open Discussion

    Hi Janez, is there any way to send you a PN? You mean private note? I think, it is possible on Sourceforge, but you can also send email directly (available from my commits)

  • TrojanObelix TrojanObelix posted a comment on discussion Open Discussion

    Thank you, Martin for this information. I think I need to discuss it with my customer to find the best way in their use case.

  • Martin Wagner Martin Wagner posted a comment on discussion Open Discussion

    There is no recommendation because there is no universal solution to this problem. Depending on your use case you can do a few different things. The only "fixed" thing is the maximum of 2x4x127=1016 PDO COB IDs with standard CANopen. fully dynamic assignment, thereby make use of all available COB IDs reduce address space to e.g. 63 and use now unused pre-defined set of those. "Multiplex PDO", gives you unlimited number of PDOs using 29 Bit extended CAN header, gives you more COB IDs using CANopen...

  • TrojanObelix TrojanObelix posted a comment on discussion Open Discussion

    Hi Janez, is there any way to send you a PN? I'm not that familiar with it on github and sourceforge

  • Janez Janez posted a comment on discussion Open Discussion

    I think, there is no special rule about that. COB_IDs for first 4 PDOs are just pre-defined. System integrator is responsible to configure PDO communication correctly. I think, it is no problem to use COB_IDs of another node-id, just make sure your devices won't collide.

  • TrojanObelix TrojanObelix modified a comment on discussion Open Discussion

    I have no experience with the use of more than the standard defined PDOs. Surprisingly, I could not find any recommendations regarding the COB_ID in DS301 or via an internet search. The IDs assigned via the stack create a COB_ID with an identifier of the next node. 1. 0x180 + nodeID ... 4. 0x480 + nodeID 5. 0x180 + nodeID + 1 ... 8. 0x480 + nodeID + 1 9. 0x180 + nodeID + 2 ... 12. 0x480 + nodeID + 2 Does this mean that you have to reserve several nodeIDs for the physical node in the network/network...

  • TrojanObelix TrojanObelix modified a comment on discussion Open Discussion

    COB_ID of PDOs when using more than the four standard PDOS defined in DS301. I have no experience with the use of more than the standard defined PDOs. Surprisingly, I could not find any recommendations regarding the COB_ID in DS301 or via an internet search. The IDs assigned via the stack create a COB_ID with an identifier of the next node. 1. 0x180 + nodeID ... 4. 0x480 + nodeID 5. 0x180 + nodeID + 1 ... 8. 0x480 + nodeID + 1 9. 0x180 + nodeID + 2 ... 12. 0x480 + nodeID + 2 Does this mean that you...

  • TrojanObelix TrojanObelix posted a comment on discussion Open Discussion

    COB_ID of PDOs when using more than the four standard PDOS defined in DS301. I have no experience with the use of more than the standard defined PDOs. Surprisingly, I could not find any recommendations regarding the COB_ID in DS301 or via an internet search. The IDs assigned via the stack create a COB_ID with an identifier of the next node. 0x180 + nodeID ... 0x480 + nodeID 0x180 + nodeID + 1 ... 0x480 + nodeID + 1 0x180 + nodeID + 2 ... 0x480 + nodeID + 2 Does this mean that you have to reserve...

  • Janez Janez posted a comment on discussion Open Discussion

    I agree. Maybe "TX PDO Mapping" and "TX PDO Mapping" tabs could just be temporary disabled, to avoid confusion. For now, I don't think, it is necessary to make deeper changes. The program works quite well for my case (new version). I think some minor fixes and updates are enough. I will try to be online on https://github.com/CANopenNode/CANopenEditor/issues for questions from now on. I sent you the invite from Github. Thank you.

  • TrojanObelix TrojanObelix posted a comment on discussion Open Discussion

    Hi Janez, I have already contributed some changes to the CANopenEditor project when Robin was still actively maintaining it. But I don't have a complete overview. As you already stated: It is complex. The "TX PDO Mapping" and "TX PDO Mapping" tabs are currently unusable: They destroy the mapping. I have already written issue reports about this, but currently no maintainer is active to solve this. I tried to do it, but I didn't find a solution in the time available. You are welcome to give me more...

  • Janez Janez posted a comment on discussion Open Discussion

    Hello, it seems, I totally missed the CANopenEditor project. Sorry for that. I turned on watch on the project now. If I understand it correctly it is checked if e.g. CO_TPDOMapPar_t have the same size as OD_TPDOMappingParameter_t. Or in other words: If the number of mapped objects in the object directory corresponds to the number of mapped objects in the stack. You are correct. V1.3 has those limitations. It is very important, Object dictionary is specified correctly. I'm not sure about the fix from...

  • TrojanObelix TrojanObelix modified a comment on discussion Open Discussion

    I think the code to auto generate the struct based on the largest possible set comes with. #220 from Robin.

  • TrojanObelix TrojanObelix posted a comment on discussion Open Discussion

    I think the code to auto generate the struct based on the largest possible set comes with. #220 from Robin.

  • TrojanObelix TrojanObelix modified a comment on discussion Open Discussion

    Hello Janez, I have a problem with the comparison of TPDO/RPDO mapping structures in canopen.c. If I understand it correctly it is checked if e.g. CO_TPDOMapPar_t have the same size as OD_TPDOMappingParameter_t. Or in other words: If the number of mapped objects in the object directory corresponds to the number of mapped objects in the stack. But the number of mapped objects is created individually in CO_OD by the CANopennodeEditor, while CO_TPDOMapPar_t in CO_PDO.h defines fixed 8 mapped objects...

  • TrojanObelix TrojanObelix posted a comment on discussion Open Discussion

    Hello Janez, I have a problem with the comparison of TPDO/RPDO mapping structures in canopen.c. If I understand it correctly it is checked if e.g. CO_TPDOMapPar_t have the same size as OD_TPDOMappingParameter_t. Or in other words: If the number of mapped objects in the object directory corresponds to the number of mapped objects in the stack. But the number of mapped objects is created individually in CO_OD by the CANopennodeEditor, while CO_TPDOMapPar_t in CO_PDO.h defines fixed 8 mapped objects...

  • John Kirkpatrick John Kirkpatrick posted a comment on discussion Open Discussion

    Ok, I have figured out my problem. I see now that I was misunderstanding the concept of the multiple OD. I thought multiple OD would be stored in one CAN Open object. After reconfiguring to have 2 CAN Open objects each with their own OD, I am able to move forward with what I was trying to accomplish.

  • John Kirkpatrick John Kirkpatrick posted a comment on discussion Open Discussion

    So I have found some documentation here and there on how to set up using multiple ODs, but I feel like I keep running into walls and unknowns as I try to piece it all together given the main_blank.c example. First of all, it took me forever to realize that when exporting the .h/.c files from the OD GUI that you have to rename the file at that stage for the new name to get incorporated into the generated file. I was certain I was missing a field that needed to be filled out in the GUI. But ok, I have...

  • subir subir modified a comment on discussion Open Discussion

    Hi. I have a STM32F429 Nucleo-144 board connected to a Trinamic PD60-4H-1378 stepper motor loaded with CANOpen firmware. I have adapted the CANOpen code from Jexbat which compiles well. I am very new to the subject of CANOpen and am not able to figure out how to talk to the stepper motor. For a start, i don't know what the NodeID of the motor is, nor the bit rate. All i see on the DSO is a signal, which seems to be a heartbeat signal from the motor (see pic). I get this even when STM32 is disconnected....

  • subir subir posted a comment on discussion Open Discussion

    Hi. I have a STM32F429 Nucleo-144 board connected to a Trinamic PD60-4H-1378 stepper motor loaded with CANOpen firmware. I have adapted the CANOpen code from Jexbat which compiles well. I am very new to the subject of CANOpen and am not able to figure out how to talk to the stepper motor. For a start, i don't know what the NodeID of the motor is, nor the bit rate. All i see on the DSO is a signal, which seems to be a heartbeat signal from the motor (see pic). I get this even when STM32 is disconnected....

  • ivz ivz posted a comment on discussion Open Discussion

    Hi all! I am sorry for having to ask such noob questions, but maybe somebody can give some good hint and reduce time spent. Currently not familiar with CANopenNode nor CANopen as well. I want to communicate with motor driver which is CANopen compliant according to manufacturer. I am basing on https://github.com/CANopenNode/CanOpenSTM32 and have the same supported kit https://www.st.com/en/evaluation-tools/stm32h735g-dk.html To stop some desperation I would like to start receiving heartbeat signals...

  • Nils Ossenbrink Nils Ossenbrink posted a comment on discussion Open Discussion

    Hello, first of all thanks for the great library. After some initial difficulties to get everything up I am really happy to use it… In my setup I have implemented a Master on a linux system which has to communicate to two devices with the same nodeIds on two different CAN-Busses (my device is a kind of gateway). Is it possible to use the multi interface feature to archive that? If yes, how can I tell the stack to send SDO-Data through a dedicated CAN-Interface? I.e.(Pseudocode) sendSDO(nodeId=10,...

  • Ashwik Ashwik posted a comment on discussion Open Discussion

    Hi, I use STM32 microcontroller and CANOpen to read a CAN module. The CAN module sends TPDO message. What is the function available in CANOpen library to read the TPDO message? Thanks,

  • Thu Jones Thu Jones posted a comment on discussion Open Discussion

    Sorry, I whined too fast - I've been having trouble keeping track of the different components and directories as well. You said: You can also create own CANopen Linux device and add own program as demonstrated in https://github.com/CANopenNode/CANopenDemo/tree/master/demo I'll try implementing from this, it looks like it should be enough to get me moving. I'm not sure if I can do everything I need with PDOs, but it's at least a good start. Thanks yet again!

  • Thu Jones Thu Jones posted a comment on discussion Open Discussion

    Thanks for the prompt reply! You said "CANopenLinux/canopend may be a good starting point". Is there a better starting point that might be closer to what I'm trying to do? One of my sources of constant confusion trying to work this out has been the use of the terms 'device' and 'driver'. I think of a 'device' as something that (generally) has control over a piece of hardware and speaks CANopen, allowing a piece of software on the other end of the CAN bus to control the hardware. In my case this is...

  • Janez Janez posted a comment on discussion Open Discussion

    CANopenLinux/canopend may be a good starting point. Just compile and run it as described in https://github.com/CANopenNode/CANopenDemo/blob/master/tutorial/README.md You can use cocomm to read/write your controller: cocomm "<node-id-of-your-controller> read 0x1017 0 u16" You can write a bash script to configure all parameters, including PDO mapping and communication. You can also create own CANopen Linux device and add own program as demonstrated in https://github.com/CANopenNode/CANopenDemo/tree/master/demo...

  • Thu Jones Thu Jones posted a comment on discussion Open Discussion

    Hi all, I'm new to CANopen and I've got a couple of questions that might be really simple but also might be tragically misguided due to my lack of knowledge of CANopen. I'm reading through the book Embedded Networking with CAN and CANopen and am going through the various CANopenNODE related source trees (CANopenNode, CANopenLinux, CANopenDemo), but am still coming up short on some details. I feel like I've got at least a minimal grasp on CANopen, but I'm coming up short on the software end. I need...

  • Janez Janez posted a comment on discussion Open Discussion

    It seems driver on consumer works fine. Are you sure, your RPDO consumer is operational. Did you turn on heartbeat (object 1017)? You can disable eeprom and use latest version, it works fine on Max32.

  • Asma Asma posted a comment on discussion Open Discussion

    Hello Janez, I can't perform a test using the lastest canopen version since I do not have for the moment an eeprom . Howerver I am using canopen v 1.0 , for both the consumer and the producer. I simulated the same sketech ,that I expected to have using PDOs, by writting to the (6200,01) OD entry of the salve through an SDO command sent from the master and as a consequence the led was on and I had sdo request and response on candump terminal and also the value of that OD entry was changed to 0x08,...

  • Janez Janez posted a comment on discussion Open Discussion

    As you describe, everything is correct. Maybe is something wrong with the driver. Can you test with devices from https://github.com/CANopenNode/CANopenDemo ?

  • Asma Asma modified a comment on discussion Open Discussion

    I maybe misunderstood you. on candump I only have the TPDO (COBID = 0x181) from the producer , that is mapped to Read_digital_input8bit[0] . The Write_digital_output_8_bit[0] variable is always null, which is normal since the consumer is not receiving any PDO from the producer. Other thing, for the COBID of the RPDO it shoud be = (NODEID of the consumer = 0x30) +[ CANID (of the TPDO of the producer) = 0x181] , right? I aslo configured the RPDO , on the consumer side, to only see the data stored on...

  • Asma Asma posted a comment on discussion Open Discussion

    I maybe misunderstood you. on candump I only have the TPDO (COBID = 0x181) from the producer , that is mapped to Read_digital_input8bit[0] . The Write_digital_output_8_bit[0] variable is always null, which is normal since the consumer is not receiving any PDO from the producer. Other thing, for the COBID of the RPDO it shoud be = (NODEID of the consumer = 0x30) +[ CANID (of the TPDO of the producer) = 0x181] , right? I aslo configured the RPDO , on the consumer side, to only see the data stored on...

  • Janez Janez posted a comment on discussion Open Discussion

    The CAN message with ID=0x181 is a TPDO from the produces side. The same message is named RPDO from consumer side. In your case that PDO should be consumed by your "consumer" device. And the only thing visible on the consumer device is value of 'Write_digital_output_8_bit[0]'. And your "consumer" device must be operational, of course.

  • Asma Asma posted a comment on discussion Open Discussion

    Hello Janez, Thank you for the information. However, I still not have any RPDO on the consumer device side. The result of the simulation and the RPDO mapping configuration are attached.

  • Janez Janez posted a comment on discussion Open Discussion

    COBIDs are correct But your TPDO is two bytes long and your RPDO maps only one byte. You can use dummy mapping in RPDO. Set OD_Entry(1600,0x02) = 0x00020008 OD_Entry(1600,0x00) = 2

  • Asma Asma posted a comment on discussion Open Discussion

    Hi Janez, For the RPDO, I set its parameters as follows: For the OD_Entry= (0x1400,0x01) : COBID = 0x181 ( the NODEID of the producer = 0x01) For the OD_Entry=(1600,0x01) : COBID = 0x62000108

  • Janez Janez posted a comment on discussion Open Discussion

    PDO is producer - consumers, not master - slave. Can you show your RPDO configuration.

  • Asma Asma posted a comment on discussion Open Discussion

    Hello, I am using the CANopenPIC project to simulate a basic I/O profil device. I have two nodes : one master and the other is a slave. I can sent a PDO from the master (NODEID= 0x01) but this TPDO does not trigger the RPDO of the slave(NODEID= 0x30), as expected. I used the EDO to edit the RPDO1 parameter, for TPDO1 I am using the default settings. So (its COBID = 0x181) So for the RPDO, I set its COBID to 0x181 to match the TPDO of interest . the mapping parameters are as default. When I press...

  • Janez Janez posted a comment on discussion Open Discussion

    For PDO you have to configure TPDO on remote device and RPDO on your "master", for each remote TPDO. Dynamic PDO mapping enables this in run-time. See also https://canopennode.github.io/index.html

  • StormENT StormENT posted a comment on discussion Open Discussion

    Hi, I have a can network that contains a Master Node and a variable number of different devices. Neither the number of devices or the device types are known at boot. The master assigns Node IDs to any unconfigured devices via LSS and scans all Nodes via SDO to see if it recognises any of the devices. If it does recognise a device then it knows what it does/how many and what types of sensors it has/what TPDOs it contains etc.... I want to publish this data to an MQTT server, which is working fine...

  • Hans Bijlsma Hans Bijlsma posted a comment on discussion Open Discussion

    Hi Janez, We're using CANOpenNode and want to know when a RPDO is updated in the objectdictionary. I could not find a mechanism for this. Therefor I made a modification in CO_RPDO_process: void CO_RPDO_process(CO_RPDO_t RPDO, bool_t syncWas) while(CO_FLAG_READ(RPDO->CANrxNew[bufNo])){ int16_t i; uint8_t pPDOdataByte; uint8_t** ppODdataByte; i = RPDO->dataLength; pPDOdataByte = &RPDO->CANrxData[bufNo][0]; ppODdataByte = &RPDO->mapPointer[0]; /* Copy data to Object dictionary. If between the copy operation...

  • Janez Janez posted a comment on discussion Open Discussion

    SDO block transfer transfers data in multiple sub-blocks. Each sub-block is a sequence of several CAN messages and is confirmed. After confirmation new sub-block is started with sequence number 1. If there was error in previous sub-block, then part of data is re-transmitted in next sub-block, but sequence number always starts with 1. There already was some misunderstanding, see here: https://github.com/CANopenNode/CANopenNode/issues/205#issuecomment-652955017 As I know, SDO block transfer works correctly...

  • Vitalii Mironov Vitalii Mironov posted a comment on discussion Open Discussion

    Hi everyone. Sorry if the question stupid or if answer is somewhere here, i couldn't find it, also i couldn't understand this from documentation (DS301). I'm now implementing a CANOpen Node SDO server, and have a question. When transferring segmented data each segment has a number (from 1 to 127), and in the end client answers with the number of the last segment it received. Server then retransmits all segments discarded by the client. And here i have a question, CANOpen Node starts new transmission...

  • Vitalii Mironov Vitalii Mironov modified a comment on discussion Open Discussion

    Hi everyone. Sorry if the question stupid or if answer is somewhere here, i couldn't find it, also i couldn't understand this from documentation (DS301). I'm now implementing a CANOpen Node SDO server, and have a question. When transferring segmented data each segment has a number (from 1 to 127), and in the end client answers with the number of the last segment it received. Server then retransmits all segments discarded by the client. And here i have a question, CANOpen Node starts new transmission...

  • Vitalii Mironov Vitalii Mironov posted a comment on discussion Open Discussion

    Hi everyone. Sorry if the question stupid or if answer is somewhere here, i couldn't find it, also i couldn't understand this from documentation (DS301). I'm now implementing a CANOpen Node SDO server, and have a question. When transferring segmented data each segment has a number (from 1 to 127), and in the end client answers with the number of the last segment it received. Server then retransmits all segments discarded by the client. And here i have a question, CANOpen Node starts new transmission...

  • Noto Juan Valentin Noto Juan Valentin posted a comment on discussion Open Discussion

    Good Morning. I'm having the same problem. When I try to send more than 2 PDOs, the error CO_ERROR_TX_OVERFLOW starts. Could you tell me how you set the clock?

  • Carlos Duran Carlos Duran posted a comment on discussion Open Discussion

    I understand, thank you so much for your help!

  • Janez Janez posted a comment on discussion Open Discussion

    Would this be possible following the structure of "CO_driver_blank.c", but just adjusting it to STM32 using HAL Of course, it is possible. SDO client is advanced feature, it is hard. It may be better to use available tools. SDO server is part of the stack, it works without interaction of the application. SYNC is configurable by OD parameters. Application usually reads/writes to OD variables or provides read/write functions for them. SDO client (external device/tool/canopend-by-CANopenNode/CANopen-for-Phyton)...

  • Carlos Duran Carlos Duran modified a comment on discussion Open Discussion

    Supposing the application uses methods implemented within the driver to get values of the OD, and that the CANopen object uses the methods implemented in the driver (such as CAN send) for the communication, I understant that the following diagram would be more correct? (Attached)

  • Carlos Duran Carlos Duran posted a comment on discussion Open Discussion

    Supposing the application uses methods implemented within the driver to get values of the OD, and that the CANopen object is able to manage the communication autonomously, I understant that the following diagram would be more correct? (Attached)

  • Carlos Duran Carlos Duran posted a comment on discussion Open Discussion

    Thanks for your fast reply Janez, The thing is, I want the appplication through the driver to be able to initialize the stack, configure and so, and maybe send some frames on command (like trigger a SYNC, or send a SDO). Would this be possible following the structure of "CO_driver_blank.c", but just adjusting it to STM32 using HAL (Hardware Abstraction Layer from STM32)?

  • Janez Janez posted a comment on discussion Open Discussion

    Actually application does not need to communicate with the driver. It is enough, if it accesses variables from the object dictionary. CANopen has everything needed for exchanging variables from object dictionary between multiple devices in CANopen network. SDO or PDO communication.

  • Carlos Duran Carlos Duran posted a comment on discussion Open Discussion

    Good afternon, Firstly, I got to say I really apreciate the effort and work on this project. It is insane. I would like to ask if what I think its the behaviour of the CANopenNode stack is correct, once it is integrated in a project. I want to integrate it into a STM32L4 microntroller using HAL, and I am having some trouble trying to find out how does it work. Would the attached picture of the hierarchy diagram correct? Lets say for example, my app wants to let another node know the value of a sensor,...

  • Janez Janez posted a comment on discussion Open Discussion

    Please see here: https://github.com/CANopenNode/CANopenNode/issues/270

  • Noto Juan Valentin Noto Juan Valentin posted a comment on discussion Open Discussion

    I am trying to configure the object dictionary to be able to send a TPDO and I can't do it. Could you give me an example of the object dictionary configuration

  • Janez Janez posted a comment on discussion Open Discussion

    There is actually just a development in the last year. The newest is newOD, which was quite rewritten and will soon be finished. It is quite compatible with previous versions. It will become a master branch. Current master will be renamed to v2.0master and is rewritten to half (old object dictionary). v1.3 is previous version. For all new designs latest version is recommended. Older versions are still maintained to some degree for people, who still use them. Some information is in doc/CHANGELOG.md...

  • TrojanObelix TrojanObelix posted a comment on discussion Open Discussion

    Hi Janez, on Github there are three branches: NewOD, master and v1.3master. It is not clear for the user (read:me :-)) which one to use when. It might be good to make a statement about this in the read.me?

  • Asma Asma modified a comment on discussion Open Discussion

    Actually , a second auto setup solved the issue.

  • Asma Asma posted a comment on discussion Open Discussion

    Actually , a second auto setup solve the issue.

  • Asma Asma modified a comment on discussion Open Discussion

    Hi , I hope this post finds you well. I did many research before posting this thread, but I didn't find an answer although it seems quite trivial. Hope that someone could help me. I am trying to control a motor in the troque mode. For that I am using a PIC32 based master device and a provided drvier : cl4-E , from nanotec. For this driver to run the motor in the torque mode, bit 8 in the controlword should be set from "1" to "0". The close loop is enabled as well. Here is the OD entries required...

  • Asma Asma posted a comment on discussion Open Discussion

    Hi , I hope this post finds you well. I did many research before posting this thread, but I didn't find an answer although it seems quite trivial. Hope that someone could help me. I am trying to control a motor in the troque mode. For that I am using a PIC32 based master device and a provided drvier : cl4-E , from nanotec. For this driver to run the motor in the torque mode, bit 8 in the controlword should be set from "1" to "0". The close loop is enabled as well. Here is the OD entries required...

1 >