I'm not sure if this would help but I would look at what Scott Laird has
done with the Hal Ethercat driver recently
https://github.com/linuxcnc-ethercat/linuxcnc-ethercat
I would try and use a similar XML to what is used for Ethercat. eg Look at
his CIA402 driver and its settings.
And of course, you will probably find that all the hard stuff is already
done to support Canopen over Ethercat.
Note this repo has a buildbot that sends the debs to the
etherlabmaster repository where the Ethercat master is distributed from.
And this repo is already set up in the LinuxCNC 2.9.2 ISO so its a very
quick process to get a working ethercat build.
Scotts a great guy and will be only too happy to help if you raise an issue
there.


Rod Webster
*1300 896 832*
+61 435 765 611
Vehicle Modifications Network
www.vehiclemods.net.au


On Thu, 13 Jun 2024 at 06:38, Nicklas SB Karlsson <n...@nksb.eu> wrote:

> Are currently trying to use CANopen with a device and have done some
> development. Have until now run hard coded mappings
> but now reached a point there configuration is needed. Implement graphical
> configuration and store configuration in
> binary format would of course be one option but have chosen a text file
> possible to edit manually. Use maps like below.
>
>
> map={.cobId=181h, .name="encoder.cnt", .dir=HAL_OUT, .type=HAL_S32,
> .bitlen=32, .bitpos=32, .name_scaled="encoder.pos",
> .name_gain="encoder.pos.scale", .gain=0.13}
> map={.cobId=201h, .name="pos.cnt", .dir=HAL_IN, .type=HAL_S32, .bitlen=32,
> .bitpos=0}
>
>
> First field is message "identifier" for the messages on the network.
> Second is name of hal pin. Third is hal direction.
> Fourth is hal datatype. Fifth is length of number in message which may be
> one for a single bit. Sixth to eigth is
> optional, if availabe it is name of hal pin for scaled value. Seventh if
> available is name of hal parameter for scaling
> gain. Eigth if available is gain default value. There is probably a need
> to add one parameter before the first to
> identify network in case several are available.
>
> This should work for CANopen both over CAN networks but also over Ethercat
> but are a little bit unsure about how to
> identify the message if used over Ethercat. CAN network use rather small
> messages 8 bytes maximum for ordinary CAN and
> some order of magnitude larger for CAN FD, all variables in same message
> same direction. Ethercat use much larger
> messages and may have both inputs and outputs in "same" message, message
> is sent in a ring similar principle as cascaded
> shift register so outputs is written in message before sent while inputs
> are read from message then it arrive back. Need
> for mapping is same so should hovewer be possible to use same syntax in
> configuration file.
>
> Syntax in configuration file is currently more or less as an array in C as
> I copied the hard coded mappings from C to
> configuration file. Have a simple first far from perfect implementation or
> hack that read the mappings from the
> configuration file. Anybody have any suggestions about the syntax for the
> configuration file? There is some more or less
> standard to write down these kind of mappings for CANopen I have missed?
> Any parser in Linuxcnc which may be reused to
> read this configuration file possible with other syntax?
>
>
> There is also sometimes a need for a "configuration script" before nodes
> enter mode of operation normal. First idea is
> to borrow the CANopen CiA309-3 standard and simply enter the command(s) in
> a file, possible same file as used for the
> mapping. Anybody have any other suggestion?
>
>
> Regards Nicklas Karlsson
>
>
>
> _______________________________________________
> Emc-developers mailing list
> Emc-developers@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/emc-developers
>

_______________________________________________
Emc-developers mailing list
Emc-developers@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-developers

Reply via email to