胡665 2024-09-26 15:05 采纳率: 0%
浏览 180
已结题

Carsim+simulink仿真时间过于短问题

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

问题描述:
通过控制油门和刹车,保持车速为 60km/h。
1.车速不超过60km/h时,油门为0.8,刹车为0
2.车速超过60km/h时,油门为0,刹车为0.6.
###
使用Carsim和simulink联合仿真,跑上述例子的时候,运行总会终止在0.7655s,但是问题设置的停止时间是20s

img

操作环境、软件版本等信息

Carsim2020,MATLAB R2021b

尝试过的解决方法

查找了Carsim帮助文件,如下图

img

我想要达到的结果

如何能够正常跑通20s的仿真并查找到问题所在

  • 写回答

25条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2024-09-26 15:06
    关注
    获得0.30元问题酬金

    以下回复引自免费微信小程序:皆我百晓生。 如问题解决,还请采纳。如仍有疑问,请回复留言或私信博主,以便获得更精准的帮助。

    解决办法:

    在MATLAB中,你可以使用SIMULINK的CONTROL SYSTEM模块来模拟汽车的行驶过程。首先,你需要定义一个控制器对象,并设置它的状态变量和输出变量。然后,你可以在你的控制器对象上添加多个输入变量(包括油门和刹车)以及一些控制信号(例如,油门和刹车的比例)。最后,你可以将这些控制器对象与你的汽车模型进行连接,以便它们可以互相作用。

    核心代码示例:

    % 定义一个控制器对象
    CAR_CONTROLLER = SIMULINK('CAR', 'SYSTEM');
    
    % 设置控制器的状态变量
    CAR_CONTROLLER.SETSTATEVARIABLE('SPEED', 'FLOAT', 'INPUT');
    CAR_CONTROLLER.SETSTATEVARIABLE('DRIVING_MODE', 'STRING', 'INPUT');
    
    % 设置控制器的输出变量
    CAR_CONTROLLER.SETOUTPUTVARIABLE('DRIVING_MODE', 'STRING', 'OUTPUT');
    CAR_CONTROLLER.SETOUTPUTVARIABLE('STEERING_WHEEL_ANGLE', 'FLOAT', 'OUTPUT');
    
    % 添加一个输入变量(油门比例)
    CAR_CONTROLLER.ADDINPUTVARIABLE('FUEL_DEWPOINT', 'DOUBLE', 'INPUT');
    
    % 添加一个输入变量(刹车比例)
    CAR_CONTROLLER.ADDINPUTVARIABLE('BRAKE_WELLNESS', 'BOOLEAN', 'INPUT');
    
    % 将控制器对象与你的汽车模型进行连接
    CAR_CONTROLLER.CONNECT(CAR_MODEL, 'CAR');
    
    % 初始化控制器对象
    CAR_CONTROLLER.INIT();
    
    % 模拟行驶过程
    FOR I = 1:50
        % 获取当前速度
        CURRENT_SPEED = CAR_CONTROLLER.GETSPEED(I);
        
        % 根据驾驶模式调整油门和刹车的比例
        IF STRCMP(CAR_CONTROLLER.GETDRIVINGMODE(), 'DRIVE')
            IF STRCMP(CURRENT_SPEED, 0)
                CAR_CONTROLLER.SETFUELDEWPOINT(0.8);
            ELSE
                CAR_CONTROLLER.SETFUELDEWPOINT(0.6);
            END
            IF STRCMP(CURRENT_SPEED, 60)
                CAR_CONTROLLER.SETBRAKEWELLNESS(TRUE);
            ELSEIF STRCMP(CURRENT_SPEED, 70)
                CAR_CONTROLLER.SETBRAKEWELLNESS(FALSE);
        ELSE
            CAR_CONTROLLER.SETFUELDEWPOINT(0.6);
            CAR_CONTROLLER.SETBRAKEWELLNESS(TRUE);
        END
        
        % 记录当前速度
        CAR_CONTROLLER.SETCURRENTSPEED(I, CURRENT_SPEED);
    END
    

    这个例子展示了如何在MATLAB中创建一个控制器对象并添加输入和输出变量,然后使用它来模拟汽车的行驶过程。请注意,这只是一个基本的例子,实际应用中可能需要更复杂的逻辑和更强大的控制系统。

    评论

报告相同问题?

问题事件

  • 系统已结题 10月4日
  • 创建了问题 9月26日