I am working on a project that uses the CANopen protocol. I have a problem with understanding the use of TPDO and RPDO. In some articles, RPDO is described as a request calling TPDO from another node, and in others as a contract to handle the received TPDO. The free canopen-stack and CanOpenNode libraries use the second approach to RPDO, it is not possible to send an RPDO 'request'. But I am not able to understand why TPDO and RPDO, according to the recommendations of the standard, have different COB-IDs (CAN message identifier). The COB-ID for TPDO1 has the range 0x181-0x1FF (0x180 + node_id) and the RPDO1 range is 0x201-0x27F (0x200 + node_id).
Example:
Node_1 - node id = 1 TPDO1 (COB ID = 0x181)
Node_2 - node_id = 2 RPDO1 (COB_ID = 0x201)
In the example above, I am unable to receive the data because the COB-IDs are not equal. To receive TPDO1 from Node_1 it is necessary to configure RPDO1 in Node_2 to COB-ID equal to TPDO1 Node_1. My conclusions are that e.g. TPDO1 address (0x181) is RPDO1 for another node with id different from 1. Am I correct? So why are there two address pools, TPDO and RPDO. Or did these libraries apply their implementation of this case?
ANSWER TO @Lundin: