Problem in combining two sensor PMS 5003

Hi guys,so i want to combine the 2 sensor of PMS 5003 and i encountered some problems. The value of my sumb=0 , but the sum is normal. I will attach the photo and my code.

// On Leonardo/Micro or others with hardware serial, use those!
// uncomment this line:
// #define pmsSerial Serial
// cari indicator semisal sensornya nyala, cek tegangan nang 5v sensor. Lek uwes lek onok tegangan cek komdat.
// Coba pakai TX RX sensor.

// For UNO and others without hardware serial, we must use software serial...
// pin #2 is IN from sensor (TX pin on sensor), leave pin #3 disconnected
// comment these two lines if using hardware serial
#include <SoftwareSerial.h>
#include <Wire.h>
#include <hd44780.h>
#include <hd44780ioClass/hd44780_I2Cexp.h>
hd44780_I2Cexp lcd;
const int LCD_COLS = 20;
const int LCD_ROWS = 4;
int status;
int sum;
int sumb;


void getText(); void updateLCD();
unsigned char line1[20]; unsigned char line2[20];
unsigned char line3[20]; unsigned char line4[20];
SoftwareSerial pmsSerial(10, 3); // outlet
SoftwareSerial pmsSerial2(11, 3); // inlet

void setup() {
  // our debugging output
  Serial.begin(115200);
  lcd.begin(20, 4);

  // sensor baud rate is 9600
  pmsSerial.begin(9600);
  int sum();
  int sumb();
}

struct pms5003data {
  uint16_t framelen;
  uint16_t pm10_standard, pm25_standard, pm100_standard;
  uint16_t pm10_env, pm25_env, pm100_env;
  uint16_t particles_03um, particles_05um, particles_10um, particles_25um, particles_50um, particles_100um;
  uint16_t unused;
  uint16_t checksum;

  uint16_t framelenb;
  uint16_t pm10_standardb, pm25_standardb, pm100_standardb;
  uint16_t pm10_envb, pm25_envb, pm100_envb;
  uint16_t particles_03umb, particles_05umb, particles_10umb, particles_25umb, particles_50umb, particles_100umb;
  uint16_t unusedb;
  uint16_t checksumb;
};

struct pms5003data data;


void loop() {
  if (readPMSdata(&pmsSerial)||readPMSdata(&pmsSerial2)) {
    // reading data was successful
    // Coba pakai serial print bisa bisa untuk menguji if nya apakah terpenuhi atau ngak
    sum = data.particles_03um + data.particles_05um + data.particles_10um + data.particles_25um + data.particles_50um + data.particles_100um;
    sumb = data.particles_03umb + data.particles_05umb + data.particles_10umb + data.particles_25umb + data.particles_50umb + data.particles_100umb;
    Serial.print("Sum"); Serial.println(sum);
    Serial.print("Sumb"); Serial.println(sumb);
    
    lcd.clear();
    lcd.setCursor(0, 1); //First line
    lcd.print("After ESP = ");
    lcd.print(sum);
    //lcd.setCursor(0, 3); //Second line
    //lcd.print("Before ESP= ");
    //lcd.print(sumb);

  }
}

boolean readPMSdata(Stream *s) {
  if (! s->available()) {
    return false;
  }

  // Read a byte at a time until we get to the special '0x42' start-byte
  if (s->peek() != 0x42) {
    s->read();
    return false;
  }

  // Now read all 32 bytes
  if (s->available() < 32) {
     return false;
  }

  uint8_t buffer[32];
  uint16_t sum = 0;
  uint16_t sumb = 0;
  s->readBytes(buffer, 32);

  // get checksum ready
  for (uint8_t i = 0; i < 30; i++) {
    sum += buffer[i];
    sumb += buffer[i];
  }

  /* debugging
    for (uint8_t i=2; i<32; i++) {
    Serial.print("0x"); Serial.print(buffer[i], HEX); Serial.print(", ");
    }
    Serial.println();
  */

  // The data comes in endian'd, this solves it so it works on all platforms
  uint16_t buffer_u16[15];
  for (uint8_t i = 0; i < 15; i++) {
    buffer_u16[i] = buffer[2 + i * 2 + 1];
    buffer_u16[i] += (buffer[2 + i * 2] << 8);
  }

  // put it into a nice struct :)
  memcpy((void *)&data, (void *)buffer_u16, 30);

  if (sum != data.checksum) {
    lcd.print("Checksum failure ");
    return false;
  }
  return true;

}