双变量实现动态平衡控制方法【悬赏】

1、问题遇到的现象和发生背景

单片机串口通信,使用串口通信控制设备,pc端界面使用javafx开发,后台使用java语言开发,使用java语言通过串口通信控制单片机外围设备,
控制的设备是气体流量控制器,气体流量控制器排气量,根据压力传感器返回的压力值控制气体流量控制器排气量,能够实现压力值稳定到配置的压力
值左右,通过调节气体流量控制器的排气量实现实验舱内压力稳定在配置的压力值附近。目前现象是压力值和排气量比例关系不确定。

2、用代码块功能插入代码,请勿粘贴截图
        @Override
        public void serialEvent(SerialPortEvent event) {
            if (event.getEventType() != SerialPort.LISTENING_EVENT_DATA_AVAILABLE) {
                return;
            }
            byte[] newData = new byte[serialPort.bytesAvailable()];
            if (newData.length < 9) {
                logger.info("receive package error! length little 9 " + ProtoUtil.hex(newData));
                return;
            }
            serialPort.readBytes(newData, newData.length);// 读取串口的数据
            //检查数据的起始标记,俩个字节
            if ((byte) 0xad == newData[0] && (byte) 0xba == newData[1]) {
                //第4个字节是命令编码el
                if ("e1".equals(String.format("%2x", newData[3]))) {
                    //只保留完整的数据,就是31个字节
                    if (newData.length == 31) {
                        //保存从串口读取的数据到队列里
                        communicationService.getReceiveQueue().add(newData);
                    }
                } else {
                    //保存从串口读取的数据到队列里
                    communicationService.getReceiveQueue().add(newData);
                }
            }
            commlogger.info("RECEIVE: " + ProtoUtil.hex(newData));
            // msgListener.processMessage(newData);
        }
    });

} else {
    //未打开串口,添加心跳检测定时任务
    isConnected = false;
    logger.info("Failed connect port: " + portName);
    commlogger.info("Failed connect port:" + portName);
    //添加心跳监控
    serialPortHeartBeat(portName);
}
//添加心跳监控
// serialPortHeartBeat(portName);

}

3、运行结果及报错内容

有一些数据对应的效果,不能实现预期。

4、我的解答思路和尝试过的方法

压力差使用分段法,分段控制压力对应的排气量。

5、我想要达到的结果

类似PID算法达到的效果,实际值会接近目标值,开始的时候实际值会快速的接近目标值,到达目标值后实际值就会等于目标值。