I seem to be having a problem that I can't figure out . This is my first time using V2.3 with a target and CANOpen.
I have installed the Target and configured it like the screen shot.
I installed a node. The application compiles fine and downloads to the target. One thing that I am not sure of is once the node has been added the CoDeSys stack automatically assigns directly represented variables to the nodes I/O (PDO's) based on the nodes EDS file. These directly represented variables are then immediately available in my program. In other words they are considered global. Is there another step that I need to perform? My problem is I am not sending/receiving any PDO data. I look at the data with a CAN monitor and the data is changing ( I am toggling sensors on and off )on the buss but the directly represented values in CoDeSys never change like it isn't reading anything. It appears to me that maybe something isn't initialized. I configure the program to initialize the node by writing SDO information to the node. This works fine so I know the target is wired to the bus correctly. But if I try to force a PDO output by say changing it from false to true the target doesn't send any PDO. I have both the send and receive PDO's configured to be asynchronous. I am not using any type of guarding at this moment nor am I using the sync object. I don't think I have to add anything to the program to initialize the CANOpen? Any suggestions on this one?
I think I may have answered my own question but I still will need some clarity. It seems I have to map the variables defined in the PLC configuration to something in the Parameter manager? Because I happened apon this I don't have a good grasp of what is going on so can someone explain?
If I don't check the option in the Target Settings "Support Parameter Manager" then how is the CAN data linked to the variables in the PLC configuration? If I do select to use "Support Parameter Manager" I'm not sure how you use the sub index? I guess I am just confused and I read through the manual but found no example of how this all ties together. I did see a small note about enetering the values into the parameter manager which tipped me off. So if anyone can tell me how the data gets from the CAN buss to my variable that is used in a program would be extremely helpful.
I am doing my best to understand what is going on with this parameter manager but I am comming up empty especially for the CAN mapping of variables. I am very confused.
I am not understanding the relationship or the reason why I have to assign variables in the parameter manager in order to read CAN data? I am also guessing that data type has no relation to the Index and sub index just like in the CANOpen Object dictionary. It is only telling you where to find that data and the object dictionary defines the size of the data or data type. Maybe it's me but I feel the documentation doesn't seem to pull these points together. If any one can clarify it would be helpful.
Wondering if you are using straight CoDeSys or if not Who's hardware are you using? We use Moeller X-Soft here. I am also in the Chicago area.
No I am using "Straight" V2.3 CoDeSys. I think things are clear to me now but it took some time. I still don't have an explaination of why the CAN variables need to be called in your program in order to be updated. I would have guessed the RX/TX of messages was happening in it's own interuput passing the data back to the variables when ever updated. So the updated variables would change in the PLC configuration even if they were not called in the users program. So all is good here.
Log in to post a comment.