//定义速度曲线函数
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]