|ID (11 bit)|Control Fields (7 bit)|Payload (64 bit)|… How can i assign 10 ids of CAN in 64 bits of payload
Why would you want that? The ID isn't part of the payload.
|ID (11 bit)|Control Fields (7 bit)|Payload (64 bit)|…
Use only one ID, All information about the sign should be in the payload every bit represents one sign ->this means in total you can have 64 signs
You can not assign any CAN ID in the payload - the CAN hardware will not look at the contents of the payload. All CAN filtering is performed on the header bits of the CAN frame.
On the other hand, you can store arbitrary data in the payload. And 64 bits is most definitely not limited to identifying 64 signs. 64 bits when used as a single number represents 18 446 744 073 709 551 616 combinations. So an identity stored in the playload can span billions of times more signs than you can physically manage to connect to a single CAN bus. If 2 of the 8 payload bytes are used to store a serial number, then you can handle 65536 signs and still have 6 bytes for other data. With three bytes for a serial number you can handle 16 million signs with 5 bytes left for other data. With 4 bytes for a sign serial number you can have 4 billion signs and 4 bytes left for other data.
Obviously, the disadvantage with using the payload for the sign identity is that all CAN messages will be broadcast to all signs, that then have to manually filter out information to them. And it isn't possible to listen to responses from a single sign without picking up all messages to manually filter out the sender.
So why not use the 11 bit or 29 bit ID field of the CAN frame and leave the payload field for actual payload?
I have ten triangle signs and i should assign one bit to one sign that should store in payload and for all that ten signs i should declare one id.
And why do that? Then you have no space for any payload and must always stream any payload as following frames using another ID.
I can't really see that you have such extreme needs to be able to send a single broadcast where you must be able to address a completely arbitrary set of the 64 signs.
And why even start this thread if you already know you are going to use the payload bytes as a 64-bit bitmap?
A piece of information is used in payload .not can ids declaration in payload 1 bit is used for different signs and only one id is taken .May i know different ways to how to assign each bit for each sign .May i know priority of ids taken to create id . Thank you for reply.
Priority is bit by bit in transmit order where dominant bits win, i.e. have higher priority. The priority is normally intended to happen on the frame ID. It's mightly late to detect a collission and worry about priority when reaching the payload bits.
It's 100% up to you to figure out how you want to make use of the 64 bits of the payload. There is an almost infinite number of ways you can select to allocate the bits.
You are the architect. So make up your design. But make sure you have a good reason for basically ignoring the existence of the frame ID - it's intended for priority and to allow hardware filtering of received frames.