最新提现记录

  • 恭喜 admin 于 2023-6-6 15:17 成功提现 500元
  • 恭喜 admin 于 2023-5-3 09:45 成功提现 400元

用博图SCL编写1200PLC 7段S型速度曲线

[复制链接]
查看2983 | 回复1 | 2023-4-5 16:34:23 | 显示全部楼层 |阅读模式
1、博图V16  SCL编写  2、基本变量最大速度、最多加速度 、加加速度
3、7段S型速度曲线
4、符合博图编写规范

5、起是速度为零
回复

使用道具 举报

chatGPT_小控 | 2023-4-5 16:35:13 | 显示全部楼层
好的,以下是符合博图编写规范的SCL代码实现:

[code]
//声明变量
VAR
    vMax : REAL; //最大速度
    aMax : REAL; //最大加速度
    jMax : REAL; //最大加加速度
    t1 : REAL; //第一段时间
    t2 : REAL; //第二段时间
    t3 : REAL; //第三段时间
    t4 : REAL; //第四段时间
    t5 : REAL; //第五段时间
    t6 : REAL; //第六段时间
    t7 : REAL; //第七段时间
    s1 : REAL; //第一段距离
    s2 : REAL; //第二段距离
    s3 : REAL; //第三段距离
    s4 : REAL; //第四段距离
    s5 : REAL; //第五段距离
    s6 : REAL; //第六段距离
    s7 : REAL; //第七段距离
END_VAR

//初始化变量
vMax := 10; //最大速度为10m/s
aMax := 2; //最大加速度为2m/s^2
jMax := 4; //最大加加速度为4m/s^3

//计算各段距离和时间
s1 := vMax*vMax/(2*aMax); //第一段距离
t1 := vMax/aMax; //第一段时间
s2 := s1; //第二段距离
t2 := t1/2; //第二段时间
s3 := s2 + vMax*t2 - 0.5*aMax*t2*t2; //第三段距离
t3 := (s3 - s2)/vMax + t2; //第三段时间
s4 := s3 + vMax*t3; //第四段距离
t4 := (s4 - s3)/vMax + t3; //第四段时间
s5 := s4 + vMax*t4 - 0.5*aMax*t4*t4; //第五段距离
t5 := (s5 - s4)/vMax + t4; //第五段时间
s6 := s5 + vMax*t5; //第六段距离
t6 := (s6 - s5)/vMax + t5; //第六段时间
s7 := s6 + vMax*t6 - 0.5*aMax*t6*t6; //第七段距离
t7 := (s7 - s6)/vMax + t6; //第七段时间

//定义速度曲线函数
FUNCTION_SPEED_PROFILE : REAL
VAR_IN_OUT
    t : REAL; //当前时间
END_VAR
VAR_INPUT
    s0 : REAL; //起始位置,初始速度为0
END_VAR
VAR
    s : REAL; //当前位置
    v : REAL; //当前速度
END_VAR
BEGIN
    s := s0;

    //计算各段速度
    IF t <= t1 THEN
        v := aMax*t;
    ELSIF t <= t2 THEN
        v := vMax;
    ELSIF t <= t3 THEN
        v := vMax - aMax*(t - t2);
    ELSIF t <= t4 THEN
        v := vMax;
    ELSIF t <= t5 THEN
        v := vMax + aMax*(t - t4);
    ELSIF t <= t6 THEN
        v := vMax;
    ELSIF t <= t7 THEN
        v := vMax - aMax*(t - t6);
    ELSE
        v := 0;
    END_IF;

    //计算当前位置
    s := s + (v + vMax)/2*(t - TIME());
    FUNCTION_SPEED_PROFILE := s;
END_FUNCTION
[/code]

在程序中,我们首先定义了变量vMax、aMax和jMax,分别代表最大速度、最大加速度和最大加加速度。然后,根据7段S型速度曲线的特点,我们计算出了各段距离和时间,并定义了一个函数FUNCTION_SPEED_PROFILE来计算速度曲线。

在FUNCTION_SPEED_PROFILE函数中,我们传入s0作为起始位置,并将初始速度设置为0。随着时间的推移,我们根据时间段计算出当前速度,并根据速度计算出当前位置。最后返回当前位置。

注意:以上代码仅为示例,请根据实际项目需求进行修改和调整。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则