Need for help: XL430 and XM430 cannot be read at the same time by one controller

Hi, I met a problem when I connected both 12 XL430 motors and 6 XM430 motors to one controller (OpenCR). I find that I can use syncWrite() to send positions to all motors. However, when I tried to use syncRead() or bulkRead() to get the positions of the motors, I found that I can only read the positions of 12 XL430 motors. I searched the web and someone told the problem was caused by the TTL and RS485. But I did not find a visible solution. Anyone can help?

My code is put below:
#include <Dynamixel2Arduino.h>

#define DXL_SERIAL Serial3
#define DEBUG_SERIAL Serial

const int DXL_DIR_PIN = 84; // OpenCR Board’s DIR PIN
const uint8_t BROADCAST_ID = 254;
const float DYNAMIXEL_PROTOCOL_VERSION = 2.0;
const uint8_t GP_DXL_ID_CNT = 18;
const uint8_t GP_DXL_ID_LIST[GP_DXL_ID_CNT] = {1,2,3,4,5,6,7,8,9,11,12,13,14,15,16,17,18,19};
// Starting address of the Data to read; Present Position = 132
const uint16_t ADDR_X_PRESENT_POSITION = 132;
// Length of the Data to read; Length of Position data of X series is 4 byte
const uint16_t LEN_X_PRESENT_POSITION = 4;
// Starting address of the Data to write; Goal Position = 116
const uint16_t ADDR_X_GOAL_POSITION = 116;
// Length of the Data to write; Length of Position data of X series is 4 byte
const uint16_t LEN_X_GOAL_POSITION = 4;
// Starting address of the Data to write; Goal Velocity = 104
const uint16_t ADDR_X_GOAL_VELOCITY = 104;
// Length of the Data to write; Length of Velocity data of X series is 4 byte
const uint16_t LEN_X_GOAL_VELOCITY = 4;

Dynamixel2Arduino dxl(DXL_SERIAL, DXL_DIR_PIN);

//This namespace is required to use DYNAMIXEL Control table item name definitions
using namespace ControlTableItem;

ParamForBulkReadInst_t bulk_read_param;
RecvInfoFromStatusInst_t read_result;

void setup() {
//arduino uno’s serial port
Serial1.begin(115200);
Serial1.flush();
DEBUG_SERIAL.println(“Initial Setup & Test”);
// put your setup code here, to run once:
uint8_t i;
dxl.begin(57600);
dxl.setPortProtocolVersion(DYNAMIXEL_PROTOCOL_VERSION);
dxl.scan();

// fill the members of structure for bulkRead
bulk_read_param.xel[0].id = 1; //1,3,4,6,7,9,11,13,14,16,17,19 are the IDs of 12 XL430 motors
bulk_read_param.xel[0].addr = 132; //Present Position on X serise
bulk_read_param.xel[0].length = 4;
bulk_read_param.xel[1].id = 5; // 2,5,8,12,15,18 are the IDs of 6 XM430 motors
bulk_read_param.xel[1].addr = 132; //Present Velocity on X serise
bulk_read_param.xel[1].length = 4;
bulk_read_param.id_count = 8;

dxl.torqueOff(1);
dxl.setOperatingMode(1, OP_POSITION);
dxl.torqueOn(1);

dxl.torqueOff(2);
dxl.setOperatingMode(2, OP_POSITION);
dxl.torqueOn(2);
}

void loop() {
// put your main code here, to run repeatedly:
static int32_t position = 0;
int32_t recv_position = 0;
int32_t recv_position2 = 0;

// Print the read data using bulkRead
dxl.bulkRead(bulk_read_param, read_result);
Serial.println(F(“======= Bulk Read ========”));
memcpy(&recv_position, read_result.xel[0].data, read_result.xel[0].length);
memcpy(&recv_position2, read_result.xel[1].data, read_result.xel[1].length);

Serial.print(F("ID: “)); Serial.print(read_result.xel[0].id); Serial.print(” “);
Serial.print(F(”, Present Position: “)); Serial.print(recv_position); Serial.print(” “);
Serial.print(F(”, Packet Error: “)); Serial.print(read_result.xel[0].error); Serial.print(” “);
Serial.print(F(”, Param Length: “)); Serial.print(read_result.xel[0].length); Serial.print(” ");
Serial.println();
Serial.print(F("ID: “)); Serial.print(read_result.xel[1].id); Serial.print(” “);
Serial.print(F(”, Present Position: “)); Serial.print(recv_position2); Serial.print(” “);
Serial.print(F(”, Packet Error: “)); Serial.print(read_result.xel[1].error); Serial.print(” “);
Serial.print(F(”, Param Length: “)); Serial.print(read_result.xel[1].length); Serial.print(” ");
Serial.println();

//delay(100);

}