【factoryio】使用SCL编写 <机械手控制> 程序

这篇具有很好参考价值的文章主要介绍了【factoryio】使用SCL编写 <机械手控制> 程序。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

使用虚拟工厂软件和博图联合仿真来编写【scl】机械手控制程序

文章目录

目录

文章目录

 前言

二、程序编写

1.机械手运行部分

2.启动停止部分

3.急停复位部分

 三、完整代码

总结


 前言

在前面我们一起写过了许多案例控制的编写,在这一章我们一起来编写一下一个仿真机械手程序(用SCL),这是一个大的加工中心其中一部分,完整的是:两个机械手完成进料和放托盘,经过传送带后可以进行升降或者进入仓储部分来存放,这里我们先完成第1个机械手控制部分,它的主要工作是完成取料和放料。


一、控制要求

程序要求: 

1.按下启动按钮,出料,传送带A启动,当S传感器检测到物体时,传送带A停止运行,1s后机械手左转,在左转到位后停1s,吸盘得电0.5s后,机械手下降,当抓取到物体1s后机械手上升,上升到位后延时1s右转,右转到位后1s,机械手下降,下降到位后延时0.5s,吸盘失电,同时机械手上升,当料到位传感器检测到物体时 得电,B传送带运行,运行3s后,同时机械臂左转回到原位,3s时间到后,B传动带停止,机械手进入下一循环,继续取料上料。


2.在程序运行时如果按下停止按钮,程序会在循环完一次后回到原位停止操作,并且可以再次启动运行。

3.在程序运行时如果按下急停按钮,程序动作立即停止,当按下复位按钮后程序才能继续运行,在急停期间其他按钮无效。

factoryio(虚拟工厂)参考图:

factory io,factoryio(虚拟工厂),经验分享,其他,学习,windows

 到这里看过控制要求和场景后,大家可以自己试着用SCL编写一下,控制要求是参考前面机械手改进的,大家也可以自己写一下控制要求来编写。




 I/O分配:

 I/O分配一定要在题目要求中找到并判断是输入还是输出,这里我写出来了。下面5个指示灯是代表机械手的个个动作,加不加都可以。

输入 输出
名称 作用 地址 名称 作用 地址
SB1 启动 I0.0 A传送带 传送带 Q0.0
SB2 停止 I0.1 B传送带 传送带 Q0.1
SB3 急停按钮 I0.2 吸盘 Q0.2
SB4 复位按钮 I0.3 机械手 Q0.3
S传感器 传感器 I0.4 机械臂右转 Q0.4
SQ1下降上升到位 传感器 I0.5 机械臂左转 Q0.5
SQ5左右转到位 传感器 I0.6 L1灯 指示灯 Q0.6
SQ3抓起到位 传感器 I0.7 L2灯 指示灯 Q0.7
SQ2料到位 传感器 I1.0 L3灯 指示灯 Q1.0
L4灯 指示灯 Q1.1
L5灯 指示灯 Q1.2

 布置场景:

 场景这里自己建一下就可以了,要注意:虚拟工厂变量名和I/O分配一定要和博图中变量和名称的相同。建立好分配好后,就可以和博图仿真连接上了,注意要在主程序带上一个仿真驱动块,要不然连接不上。(如果没有的话可以在博主资源里面下载,然后导入进去就好啦!)

factory io,factoryio(虚拟工厂),经验分享,其他,学习,windows

factory io,factoryio(虚拟工厂),经验分享,其他,学习,windows 




二、程序编写

 这里程序的控制可以分3个部分:机械手运行,启动停止,急停复位。

到这里我们其实可以知道要用什么语句来编写!case !对!机械手运行要一步一步来嘛,那case语句就比较合适啦!

1.机械手运行部分

好的,我们来开始这一部分的编写:

按下启动按钮,出料,传送带A启动,当S传感器检测到物体时,传送带A停止运行,1s后机械手左转,在左转到位后停1s,吸盘得电0.5s后,机械手下降,当抓取到物体1s后机械手上升,上升到位后延时1s右转,右转到位后1s,机械手下降,下降到位后延时0.5s,吸盘失电,同时机械手上升,当料到位传感器检测到物体时 得电,B传送带运行,运行3s后,同时机械臂左转回到原位,3s时间到后,B传动带停止,机械手进入下一循环,继续取料上料。

 这里我们一步一步走,按下启动后,传送带A启动,然后等待料到达传感器,到达后进行下一步,2,3,4,5,6,7,8,9就这样就将机械手部分大概完成了。到第10步时将中继复位然后进入一个循环就好了。 

T[0].TON(IN := #ZJ1,
          PT := T#0.5s);
#T[1].TON(IN := #ZJ2,
          PT := T#0.5s);
#T[2].TON(IN := #ZJ3,
          PT := T#0.5s);
#T[3].TON(IN := #ZJ4,
          PT := T#1s);
#T[4].TON(IN := #ZJ5,
          PT := T#1s);
#T[5].TON(IN := #ZJ6,
          PT := T#1s);
#T[6].TON(IN := #ZJ7,
          PT := T#0.5s);
#T[7].TON(IN := #ZJ8,
          PT := T#1s);
#T[8].TON(IN := #ZJ9,
          PT := T#0.5s);

CASE #M OF
    0:
        IF "启动" THEN
            "A传送带" := 1;          
            #M := 1;
        END_IF;
        
    1:
        IF "S传感器" THEN
            "A传送带" := 0;
            "B传送带" := 0;
            #ZJ1 := 1;
        END_IF;
        IF #T[0].Q THEN
            #M := 2;
        END_IF;
    2:
        "机械臂左转" := 1;
        IF "SQ5左右转到位" THEN
            #ZJ2 := 1;
        END_IF;
        IF #T[1].Q THEN
            "机械臂左转" := 0;
            #M := 3;
        END_IF;
    3:
        "吸盘" := 1;
        "机械手" := 1;
        IF "SQ1下降上升到位" & "SQ3抓起到位" THEN
            #ZJ3 := 1;
        END_IF;
        IF #T[2].Q THEN
            #M := 4;
        END_IF;
    4:
        "机械手" := 0;
        #ZJ4 := 1;
        IF #T[3].Q THEN
            "机械臂右转" := 1;
            #ZJ5 := 1;
        END_IF;
        IF #T[4].Q THEN
            "机械臂右转" := 0;
            #M := 5;
        END_IF;
    5:
        "机械臂右转" := 1;
        #ZJ6 := 1;
        IF #T[5].Q THEN
            #M := 6;
        END_IF;
    6:
        "机械臂右转" := 0;
        "机械手" := 1;
        IF "SQ1下降上升到位" & "吸盘" THEN
            #ZJ7 := 1;
        END_IF;
        IF #T[6].Q THEN
            "吸盘" := 0;
            
            #M := 7;
        END_IF;
    7:
        
        IF "SQ1下降上升到位" THEN
            
            "机械手" := 0;
            #ZJ8 := 1;
            #M := 8;
        END_IF;
    8:
        IF #T[7].Q  THEN
            "机械臂左转" := 1;
            #ZJ9 := 1;
            #M := 9;
        END_IF;       
    9:
        IF "SQ2料到位" THEN
            "B传送带" := 1;
        END_IF;
        
        IF #T[8].Q THEN
            "机械臂左转" := 0;
            "A传送带" := 1;           
            #M := 10;
        END_IF;
 10:
    
        "机械臂左转" := 0;
        #ZJ1 := 0;
        #ZJ2 := 0;
        #ZJ3 := 0;
        #ZJ4 := 0;
        #ZJ5:= 0;
        #ZJ6 := 0;
        #ZJ7 := 0;
        #ZJ8 := 0;
        #ZJ9 := 0;
        #M := 1;

当然这里还有一点小问题,我们先看过程序运行效果!

factory io,factoryio(虚拟工厂),经验分享,其他,学习,windows

这里我们可以发现在上料时,是每过一个循环后上料,速度可能会稍慢一些!

我们改进一下,将上料的部分放在case语句外面,这样只要机械手拿走料,就会自动补齐! 

代码如下:按下启动按钮后接通一个标志位,用if 语句来判断S传感器当前的状态然后取反就可以实现啦!例:S传感器为0是,取反赋值给A传送带,A传送带为1,开始进料;当S传感器为1时,取反变为0然后赋值给A传送带,A传送带就停止了! 

 //启动按钮
    IF "启动" THEN
        #标志1 := 1;
        #M := 1;
    END_IF;
    IF #标志1 THEN
        "A传送带" :=NOT "S传感器";
    END_IF;

 传送带部分提出来后,后面的程序代码要稍微修改一下!

代码如下:

 有一些地方重新修改了一下。

 CASE #M OF
            
        1:
            IF "S传感器" THEN
                "B传送带" := 0;
                #M := 2;
            END_IF;
        2:
            #ZJ1 := 1;
            IF #T[0].Q THEN
                #M := 3;
            END_IF;
        3:
            "机械臂左转" := 1;
            //"L5灯" := 1;
            IF "SQ5左右转到位" THEN
                #ZJ2 := 1;
            END_IF;
            IF #T[1].Q THEN
                "机械臂左转" := 0;
                // "L5灯" := 0;
                #M := 4;
            END_IF;
        4:
            "吸盘" := 1;
            //"L3灯" := 1;
            #ZJ3 := 1;
            IF #T[2].Q THEN
                // "L1灯" := 1;
                "机械手" := 1;
            END_IF;
            IF "SQ1下降上升到位" & "SQ3抓起到位" THEN
                #ZJ4 := 1;
                // "L1灯" := 0;
            END_IF;
            IF #T[3].Q THEN
                //"L2灯" := 1;
                "机械手" := 0;
                #M := 5;
            END_IF;
        5:
            IF "SQ1下降上升到位" & "SQ3抓起到位" THEN
                #ZJ5 := 1;
                // "L2灯" := 0;
            END_IF;
            IF #T[4].Q THEN
                "机械臂右转" := 1;
                #ZJ6 := 1;
                
            END_IF;
            IF #T[5].Q THEN
                "机械臂右转" := 0;
                #M := 6;
            END_IF;
        6:
            "机械臂右转" := 1;
            #ZJ7 := 1;
            IF #T[6].Q THEN
                #M := 7;
            END_IF;
        7:
            "机械臂右转" := 0;
            #ZJ8 := 1;
            IF "吸盘" THEN
                IF #T[7].Q THEN
                    "机械手" := 1;
                    #ZJ9 := 1;
                    #M := 8;
                END_IF;
            END_IF;
        8:
            IF #T[8].Q THEN
                "吸盘" := 0;
                "机械手" := 0;
                #ZJ10 := 1;
            END_IF;
            IF #T[9].Q THEN
                #M := 9;
            END_IF;
        9:
            IF "SQ2料到位" THEN
                "B传送带" := 1;
                "机械臂左转" := 1;
                #ZJ11 := 1;
                #M := 10;
            END_IF;
        10:
            IF #T[10].Q THEN
                "机械臂左转" := 0;
                #ZJ12 := 1;
                #M := 11;
            END_IF;
        11:
            
            IF #T[11].Q  THEN
                #ZJ1 := 0;
                #ZJ2 := 0;
                #ZJ3 := 0;
                #ZJ4 := 0;
                #ZJ5 := 0;
                #ZJ6 := 0;
                #ZJ7 := 0;
                #ZJ8 := 0;
                #ZJ9 := 0;
                #ZJ10 := 0;
                #ZJ11 := 0;
                #ZJ12 := 0;
                #M := 1;
            END_IF;
            
    END_CASE;

 好的,现在我们再来看效果是否可以!

factory io,factoryio(虚拟工厂),经验分享,其他,学习,windows

这里我们可以看到,效果实现了! 

 


 

2.启动停止部分

好的!主要控制我们已经完成,下面就是启动停止部分!

 2.在程序运行时如果按下停止按钮,程序会在循环完一次后回到原位停止操作,并且可以再次启动运行。

 这里它要求,按下后运行一次后停止!到这里大家可以想一想要如何实现这个功能(实现方法可以放在评论区,大家一起讨论)

这里我用的是一个if 判断,在运行到最后一步的时候我们判断是否按下了停止按钮,如果按下就停止,没有按下就继续循环。

按下后再判断系统是否在运行,代码如下:按下后如果成立就将w赋值为1。

//停止按钮
IF "停止" THEN
    IF #标志1 & "A传送带" OR #标志1 & "B传送带" OR #标志1 & "机械臂左转" OR #标志1 & "机械臂右转" OR #标志1 & "机械手" OR #标志1 & "吸盘" OR #标志1 & "SQ1下降上升到位" OR
        #标志1 & "SQ2料到位" OR #标志1 & "SQ3抓起到位" OR #标志1 & "SQ5左右转到位" OR #标志1 & "S传感器" THEN
        #W := 1;
    END_IF;
END_IF;

程序在运行到最后一步时,来判断w是否是1,是1就停止,等待下次启动被按下;不是1就继续循环。

 //判断是否按下停止
11:
            
            IF #T[11].Q & #W = 1 THEN
                "B传送带" := 0;
                #ZJ1 := 0;
                #ZJ2 := 0;
                #ZJ3 := 0;
                #ZJ4 := 0;
                #ZJ5 := 0;
                #ZJ6 := 0;
                #ZJ7 := 0;
                #ZJ8 := 0;
                #ZJ9 := 0;
                #ZJ10 := 0;
                #ZJ11 := 0;
                #ZJ12 := 0;
                #M := 0;
                #标志1 := 0;
            END_IF;
            IF #T[11].Q & #W = 0 THEN
                #ZJ1 := 0;
                #ZJ2 := 0;
                #ZJ3 := 0;
                #ZJ4 := 0;
                #ZJ5 := 0;
                #ZJ6 := 0;
                #ZJ7 := 0;
                #ZJ8 := 0;
                #ZJ9 := 0;
                #ZJ10 := 0;
                #ZJ11 := 0;
                #ZJ12 := 0;
                #M := 1;
            END_IF;

这里我们也来试一下效果:

factory io,factoryio(虚拟工厂),经验分享,其他,学习,windows

 


3.急停复位部分

最后的最后就是我们的急停复位部分啦!在实际生成中如果出现紧急情况,急停按钮非常非常的重要!这里我们就来编写一下!(大家如果有好的想法和思路可以在评论区讨论哦!) 

 3.在程序运行时如果按下急停按钮,程序动作立即停止,当按下复位按钮后程序才能继续运行,在急停期间其他按钮无效。

 这里我写的是将机械手运行那部分断开(和开路差不多),按下复位后再闭合,程序还可以继续运行!代码如下:

按下后标志2得电,将机械手部分断开!

//急停按钮
IF "急停按钮" THEN
    #标志2 := 1;
    "A传送带" := 0;
    
END_IF;
IF NOT #标志2 THEN

case  of

               //在case外面加一个标志2的取反
end_case;

end_if;

 复位的时候再闭合就可以了!(这里因为A传送带不在case里面,所以放在这里进行停止了)

//复位按钮
IF "复位按钮" THEN
    #标志2 := 0;
    "A传送带" := 1;
   
END_IF;

 好的!我们看下效果如何:

      可以完成急停要求!

factory io,factoryio(虚拟工厂),经验分享,其他,学习,windows


 三、完整代码

 

//停止按钮
IF "停止" THEN
    IF #标志1 & "A传送带" OR #标志1 & "B传送带" OR #标志1 & "机械臂左转" OR #标志1 & "机械臂右转" OR #标志1 & "机械手" OR #标志1 & "吸盘" OR #标志1 & "SQ1下降上升到位" OR
        #标志1 & "SQ2料到位" OR #标志1 & "SQ3抓起到位" OR #标志1 & "SQ5左右转到位" OR #标志1 & "S传感器" THEN
        #W := 1;
    END_IF;
END_IF;


//急停按钮
IF "急停按钮" THEN
    #标志2 := 1;
    "A传送带" := 0;
    
END_IF;

//复位按钮
IF "复位按钮" THEN
    #标志2 := 0;
    //"B传送带" := 1;
    "A传送带" := 1;
   
END_IF;

//接通延时定时器部分
#RTRIG[0](CLK := "S传感器");
#T[0].TON(IN := #ZJ1,
          PT := T#0.5s);
#T[1].TON(IN := #ZJ2,
          PT := T#0.5s);
#T[2].TON(IN := #ZJ3,
          PT := T#0.5s);
#T[3].TON(IN := #ZJ4,
          PT := T#0.5s);
#T[4].TON(IN := #ZJ5,
          PT := T#1s);
#T[5].TON(IN := #ZJ6,
          PT := T#1s);
#T[6].TON(IN := #ZJ7,
          PT := T#0.5s);
#T[7].TON(IN := #ZJ8,
          PT := T#0.5s);
#T[8].TON(IN := #ZJ9,
          PT := T#1s);
#T[9].TON(IN := #ZJ10,
          PT := T#1s);
#T[10].TON(IN := #ZJ11,
           PT := T#1s);
#T[11].TON(IN := #ZJ12,
           PT := T#2s);
IF NOT #标志2 THEN
    //启动按钮
    IF "启动" THEN
        #标志1 := 1;
        #W := 0;
        #M := 1;
    END_IF;
    IF #标志1 THEN
        "A传送带" :=NOT "S传感器";
    END_IF;
    
    //指示灯部分
    IF #标志1 THEN
        IF "机械手" THEN
            "L1灯" := 1;
            "L2灯" := 0;
        ELSE
            "L2灯" := 1;
            "L1灯" := 0;
        END_IF;
    END_IF;
    IF "吸盘" THEN
        "L3灯" := 1;
    ELSE
        "L3灯" := 0;
    END_IF;
    IF "机械臂左转" THEN
        "L5灯" := 1;
    ELSE
        "L5灯" := 0;
    END_IF;
    IF "机械臂右转" THEN
        "L4灯" := 1;
    ELSE
        "L4灯" := 0;
    END_IF;
END_IF;
//机械手执行动作部分
IF NOT #标志2 THEN
    CASE #M OF
            
        1:
            IF "S传感器" THEN
                "B传送带" := 0;
                #M := 2;
            END_IF;
        2:
            #ZJ1 := 1;
            IF #T[0].Q THEN
                #M := 3;
            END_IF;
        3:
            "机械臂左转" := 1;
            //"L5灯" := 1;
            IF "SQ5左右转到位" THEN
                #ZJ2 := 1;
            END_IF;
            IF #T[1].Q THEN
                "机械臂左转" := 0;
                // "L5灯" := 0;
                #M := 4;
            END_IF;
        4:
            "吸盘" := 1;
            //"L3灯" := 1;
            #ZJ3 := 1;
            IF #T[2].Q THEN
                // "L1灯" := 1;
                "机械手" := 1;
            END_IF;
            IF "SQ1下降上升到位" & "SQ3抓起到位" THEN
                #ZJ4 := 1;
                // "L1灯" := 0;
            END_IF;
            IF #T[3].Q THEN
                //"L2灯" := 1;
                "机械手" := 0;
                #M := 5;
            END_IF;
        5:
            IF "SQ1下降上升到位" & "SQ3抓起到位" THEN
                #ZJ5 := 1;
                // "L2灯" := 0;
            END_IF;
            IF #T[4].Q THEN
                "机械臂右转" := 1;
                #ZJ6 := 1;
                
            END_IF;
            IF #T[5].Q THEN
                "机械臂右转" := 0;
                #M := 6;
            END_IF;
        6:
            "机械臂右转" := 1;
            #ZJ7 := 1;
            IF #T[6].Q THEN
                #M := 7;
            END_IF;
        7:
            "机械臂右转" := 0;
            #ZJ8 := 1;
            IF "吸盘" THEN
                IF #T[7].Q THEN
                    "机械手" := 1;
                    #ZJ9 := 1;
                    #M := 8;
                END_IF;
            END_IF;
        8:
            IF #T[8].Q THEN
                "吸盘" := 0;
                "机械手" := 0;
                #ZJ10 := 1;
            END_IF;
            IF #T[9].Q THEN
                #M := 9;
            END_IF;
        9:
            IF "SQ2料到位" THEN
                "B传送带" := 1;
                "机械臂左转" := 1;
                #ZJ11 := 1;
                #M := 10;
            END_IF;
        10:
            IF #T[10].Q THEN
                "机械臂左转" := 0;
                #ZJ12 := 1;
                #M := 11;
            END_IF;
        11:
            
            IF #T[11].Q & #W = 1 THEN
                "B传送带" := 0;
                #ZJ1 := 0;
                #ZJ2 := 0;
                #ZJ3 := 0;
                #ZJ4 := 0;
                #ZJ5 := 0;
                #ZJ6 := 0;
                #ZJ7 := 0;
                #ZJ8 := 0;
                #ZJ9 := 0;
                #ZJ10 := 0;
                #ZJ11 := 0;
                #ZJ12 := 0;
                #M := 0;
                #标志1 := 0;
            END_IF;
            IF #T[11].Q & #W = 0 THEN
                #ZJ1 := 0;
                #ZJ2 := 0;
                #ZJ3 := 0;
                #ZJ4 := 0;
                #ZJ5 := 0;
                #ZJ6 := 0;
                #ZJ7 := 0;
                #ZJ8 := 0;
                #ZJ9 := 0;
                #ZJ10 := 0;
                #ZJ11 := 0;
                #ZJ12 := 0;
                #M := 1;
            END_IF;
            
    END_CASE;
    
END_IF;

 



 

总结

以上就是本篇文章的内容啦!我们一起编写了机械手的控制部分,停止部分和急停部分!感谢大家的观看,谢谢!文章来源地址https://www.toymoban.com/news/detail-769923.html

到了这里,关于【factoryio】使用SCL编写 <机械手控制> 程序的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 78、基于STM32单片机学习型搬运机器人四自由度机械臂机械手遥感控制设计

    毕设帮助、开题指导、技术解答(有偿)见文末。 目录 摘要 一、硬件方案 二、设计功能 三、实物图 四、原理图 五、PCB图  六、程序源码 七、资料包括  在当今大规模制造业中,企业为提高生产效率,保障产品质量,普遍重视生产过程的自动化程度,工业机器人作为自动

    2024年02月09日
    浏览(43)
  • 6轴关节机械手仿真和控制QtQuick3D 和 CodeSys Robotics

    本工程利用QtQuick3D做上位机 ,基于CodeSys的控制器,使用 Robotics的库,进行6轴垂直机械手仿真和控制。 2.1.1程序组织 2.1.2代码 2.1.2.1 pro文件 2.1.2.2 armgeometry.h 2.1.2.3 armgeometry.cpp 2.1.2.4 plccomm.h 2.1.2.5 plccomm.cpp 2.1.2.6 main.cpp 2.1.2.7 main.qml 2.2.1 程序组织 2.2.2 程序代码 2.2.2.1 KinGroup 2.2

    2024年02月08日
    浏览(57)
  • 点云从入门到精通技术详解100篇-基于 3D 视觉信息的机械手抓取机械零部件

    目录 前言 相关技术的国内外发展现状 点云配准 点云分割 点云位姿估计

    2024年02月06日
    浏览(39)
  • FANUC机器人SRVO-300机械手断裂故障报警原因分析及处理办法

    首先,我们查看报警说明书上的介绍: 总结:即在机械手断裂设置为无效时,机器人检测出了机械手断裂信号(不该有的信号,现在检测到了,所以报警) 使机械手断裂设定为无效/有效的具体方法:  按下示教器的MENU菜单键,  选择下一页,  选择系统  按下F1 类型

    2024年02月14日
    浏览(262)
  • keil5使用c++编写stm32控制程序

    想着搞个新奇的玩意玩一玩来着,想用c++编写代码来控制stm32,结果在keil5中,把踩给我踩闷了,这里简单记录一下。注意一定要按照如下流程进行操作,一步都不要跟丢了。 所需要的一些文件放在百度网盘了。 先把最新的库函数和CMSIS安装好。 我这里为了方便就直接安装在

    2023年04月25日
    浏览(54)
  • 西门子SCL常用控制语句解析

    SCL作为一种编程语言,可以实现LAD/FBD所有的功能,大多数的指令与LAD/FBD都是相同的,只是在编辑器中的外形不同。只有一些指令使用是不太一样的甚至LAD/FBD没有的,这里只介绍这些不同的 。 SCL特殊的指令有以下几种,如图1-3红框中的指令: 图1 读/写存储器 图2 转换操作中的

    2024年02月16日
    浏览(32)
  • 【SCL】for循环指令的应用&三层电梯模拟控制

    使用scl编写三层电梯模拟控制,并学习for循环指令的应用。 文章目录 目录 文章目录 前言 1.指令学习  2.循环传值 3.嵌套调用 4.冒泡排序 1.排序  2.优化 二、三层电梯模拟控制 1.控制要求 2.编写思路 3.功能块部分编程 1.开门关门块  2.去1层2层3层的块  3.主程序部分 4.for循环部

    2024年02月15日
    浏览(33)
  • S速度曲线轨迹规划(普通变频位置闭环控制算法详细介绍+SCL代码)

    位置控制用PD控制器,详细内容介绍请查看下面博客文章: PD控制器算法详细解读_RXXW_Dor的博客-CSDN博客 鉴于积分和微分在工程上的大量应用,这篇博文主要讲解工程上的如何求导f\\\'(x),导数反映的是函数(信号)的变化率,牛顿也是在研究运动的时候提出了微积分的概念,我

    2024年02月12日
    浏览(35)
  • 一文学会使用键盘控制moveit2机械臂模型

    在之前文章的基础上相信大家已经学会了如何搭建一个机械臂模型,那么我们如何对其进行控制呢,上网检索了一下没找到能清晰指导实现整套流程的文章,所以自己摸索着写了一篇希望能帮到大家 这篇文章会分享记录如何实现用键盘控制之前我们建立的gp110机械臂的全套流

    2024年02月11日
    浏览(31)
  • 使用Actor-Critic的DDPG强化学习算法控制双关节机械臂

    在本文中,我们将介绍在 Reacher 环境中训练智能代理控制双关节机械臂,这是一种使用 Unity ML-Agents 工具包开发的基于 Unity 的模拟程序。 我们的目标是高精度的到达目标位置,所以这里我们可以使用专为连续状态和动作空间设计的最先进的Deep Deterministic Policy Gradient (DDPG) 算法

    2024年02月05日
    浏览(58)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包