• «
  • 1
  • 2
  • »
  • Pages: 1/2     Go
worker02
级别: 略有小成
精华主题: 0
发帖数量: 115 个
工控威望: 294 点
下载积分: 723 分
在线时间: 280(小时)
注册时间: 2008-08-01
最后登录: 2024-11-20
查看worker02的 主题 / 回贴
楼主  发表于: 2018-05-10 11:47
图片:
实例为 6台穿梭小车(穿梭车台数可以实际情况增减),其中5台设为目标,一台为本地穿梭车。功能块有分别输出有:警告启动、减速启动、停车启动、两车间隙值等。
源代码如下:
FUNCTION_BLOCK FB1026
VAR_INPUT
   CarData1:DINT;//目标穿梭车1位置值
   CarData2:DINT;//目标穿梭车2位置值
   CarData3:DINT;//目标穿梭车3位置值
   CarData4:DINT;//目标穿梭车4位置值
   CarData5:DINT;//目标穿梭车5位置值
   CarLocaL:DINT;//本地穿梭车位置值
   Warning_JL1:DINT;//警告距离1设定
   Warning_JL2:DINT;//警告距离2设定
   Decelerate_JL1:DINT;//减速距离1设定
   Decelerate_JL2:DINT;//减速距离2设定
   StopCar_JL1:DINT;//停车距离1设定
   StopCar_JL2:DINT;//停车距离2设定
  
END_VAR  
VAR
    I:INT;
    InData:ARRAY[1..5] OF DINT;
END_VAR
VAR_OUTPUT
Out_Warning:BOOL;//警告启动
Out_Decelerate:BOOL;//减速启动
Out_Stop:BOOL;//停车启动
D_Value:DINT;//两车之间值
END_VAR;
   InData[1]:=CarData1;
   InData[2]:=CarData2;
   InData[3]:=CarData3;
   InData[4]:=CarData4;
   InData[5]:=CarData5;
    FOR I:= 1 TO 5 BY 1 DO
        IF (InData[I]>0)AND(((CarLocaL-InData[I]<0)AND(CarLocaL-InData[I]>=Warning_JL1))OR( CarLocaL-InData[I]>=Warning_JL2))THEN//判定是否已到警告距离
           Out_Warning:=1;//警告启动
           D_Value:=CarLocaL-InData[I];
           ELSE
           Out_Warning:=0;
           Out_decelerate:=0;
           Out_Stop:=0;
           D_Value:=0;
    END_IF;
        IF OUT_Warning THEN  
       IF ((CarLocaL-InData[I]<0)AND(CarLocaL-InData[I]>=Decelerate_JL1))OR( CarLocaL-InData[I]>=Decelerate_JL2)THEN//判定是否已到减速距离
         Out_decelerate:=1;//减速启动
    ELSE
         Out_decelerate:=0;
    END_IF;
        IF((CarLocaL-InData[I]<0)AND(CarLocaL-InData[I]>=StopCar_JL1))OR( CarLocaL-InData[I]>=StopCar_JL2)THEN//判定是否已到停车距离
         Out_Stop:=1;//停车启动
    ELSE
        Out_Stop:=0;
    END_IF;
    EXIT;
    END_IF;
          END_FOR;
    
END_FUNCTION_BLOCK

xingyu002
级别: 略有小成
精华主题: 0
发帖数量: 115 个
工控威望: 209 点
下载积分: 853 分
在线时间: 97(小时)
注册时间: 2014-10-30
最后登录: 2019-03-30
查看xingyu002的 主题 / 回贴
1楼  发表于: 2018-05-10 13:34
牛,谢谢
ranbin
学无止境!
级别: 略有小成
精华主题: 0
发帖数量: 326 个
工控威望: 449 点
下载积分: 6547 分
在线时间: 44(小时)
注册时间: 2018-04-04
最后登录: 2020-10-22
查看ranbin的 主题 / 回贴
2楼  发表于: 2018-05-10 13:36
引用
引用楼主worker02于2018-05-10 11:47发表的 西门子PLC多台环循穿梭车防撞及排队算法 :
实例为 6台穿梭小车(穿梭车台数可以实际情况增减),其中5台设为目标,一台为本地穿梭车。功能块有分别输出有:警告启动、减速启动、停车启动、两车间隙值等。
源代码如下:
FUNCTION_BLOCK FB1026
VAR_INPUT
   CarData1:DINT;//目标穿梭车1位置值
.......



路过看看,坐坐沙发!既然写最好把相关工艺流程一并写来。
ranbin
学无止境!
级别: 略有小成
精华主题: 0
发帖数量: 326 个
工控威望: 449 点
下载积分: 6547 分
在线时间: 44(小时)
注册时间: 2018-04-04
最后登录: 2020-10-22
查看ranbin的 主题 / 回贴
3楼  发表于: 2018-05-10 13:42
沙发坐空了!

FUNCTION_BLOCK FB1026

VAR_INPUT
   CarData1:DINT;//目标穿梭车1位置值
   CarData2:DINT;//目标穿梭车2位置值
   CarData3:DINT;//目标穿梭车3位置值
   CarData4:DINT;//目标穿梭车4位置值
   CarData5:DINT;//目标穿梭车5位置值
   CarLocaL:DINT;//本地穿梭车位置值
   Warning_JL1:DINT;//警告距离1设定
   Warning_JL2:DINT;//警告距离2设定
   Decelerate_JL1:DINT;//减速距离1设定
   Decelerate_JL2:DINT;//减速距离2设定
   StopCar_JL1:DINT;//停车距离1设定
   StopCar_JL2:DINT;//停车距离2设定  
END_VAR  

VAR
    I:INT;
    InData:ARRAY[1..5] OF DINT;
END_VAR

VAR_OUTPUT
Out_Warning:BOOL;//警告启动
Out_Decelerate:BOOL;//减速启动
Out_Stop:BOOL;//停车启动
D_Value:DINT;//两车之间值
END_VAR;


   InData[1]:=CarData1;
   InData[2]:=CarData2;
   InData[3]:=CarData3;
   InData[4]:=CarData4;
   InData[5]:=CarData5;

    FOR I:= 1 TO 5 BY 1 DO
        IF (InData[I]>0)
             AND(((CarLocaL-InData[I]<0)
                  AND(CarLocaL-InData[I]>=Warning_JL1))
                     OR( CarLocaL-InData[I]>=Warning_JL2))THEN//判定是否已到警告距离

               Out_Warning:=1;//警告启动
           D_Value:=CarLocaL-InData[I];

           ELSE

           Out_Warning:=0;
           Out_decelerate:=0;
           Out_Stop:=0;
           D_Value:=0;

    END_IF;

        IF OUT_Warning THEN  

        IF ((CarLocaL-InData[I]<0)
            AND(CarLocaL-InData[I]>=Decelerate_JL1))
                  OR( CarLocaL-InData[I]>=Decelerate_JL2)THEN//判定是否已到减速距离
         Out_decelerate:=1;//减速启动
    ELSE
         Out_decelerate:=0;
    END_IF;
        IF((CarLocaL-InData[I]<0)
             AND(CarLocaL-InData[I]>=StopCar_JL1))
                OR( CarLocaL-InData[I]>=StopCar_JL2)THEN//判定是否已到停车距离
          Out_Stop:=1;//停车启动
    ELSE
        Out_Stop:=0;
    END_IF;
    EXIT;
    END_IF;
          END_FOR;
    
END_FUNCTION_BLOCK


这样看起来舒服些-------
yiyang1
级别: 略有小成
精华主题: 0
发帖数量: 305 个
工控威望: 445 点
下载积分: 1168 分
在线时间: 388(小时)
注册时间: 2012-11-11
最后登录: 2024-11-22
查看yiyang1的 主题 / 回贴
4楼  发表于: 2018-05-10 20:15
支持共享支持共享
1336547704
级别: 略有小成
精华主题: 0
发帖数量: 86 个
工控威望: 205 点
下载积分: 31495 分
在线时间: 344(小时)
注册时间: 2017-03-31
最后登录: 2024-07-29
查看1336547704的 主题 / 回贴
5楼  发表于: 2018-05-11 09:27
警告距离1设定和警告2设定对的区别是什么呀
worker02
级别: 略有小成
精华主题: 0
发帖数量: 115 个
工控威望: 294 点
下载积分: 723 分
在线时间: 280(小时)
注册时间: 2008-08-01
最后登录: 2024-11-20
查看worker02的 主题 / 回贴
6楼  发表于: 2018-05-11 11:34
图片:
5楼的朋友你看看这张图就应该明的为何都要设定2种距离了。
shanyao0028
专业电镀编程
级别: 略有小成
精华主题: 0
发帖数量: 79 个
工控威望: 363 点
下载积分: 2313 分
在线时间: 85(小时)
注册时间: 2017-03-20
最后登录: 2024-09-22
查看shanyao0028的 主题 / 回贴
7楼  发表于: 2018-07-29 22:41
虽然看不懂西门子的,还是很牛啊。三菱能实现不?对我们很有用啊,一直想研究这方面的,如果可以的话,可以合作!
专业电镀编程,13921525199
langui
级别: 论坛先锋
精华主题: 0
发帖数量: 1538 个
工控威望: 1761 点
下载积分: 6246 分
在线时间: 640(小时)
注册时间: 2014-06-16
最后登录: 2024-10-10
查看langui的 主题 / 回贴
8楼  发表于: 2018-07-30 08:00
都是汇编语言高手。只能用一个字形容,牛
wangnaizhi
级别: 论坛先锋
精华主题: 0
发帖数量: 1273 个
工控威望: 1449 点
下载积分: 5484 分
在线时间: 896(小时)
注册时间: 2015-08-31
最后登录: 2024-11-19
查看wangnaizhi的 主题 / 回贴
9楼  发表于: 2018-07-30 08:31
能讲一下工艺吗  是不是穿梭车在另外5辆车运动的过程中穿梭?
泰山之石
A
级别: 工控侠客
精华主题: 0
发帖数量: 2229 个
工控威望: 2459 点
下载积分: 11626 分
在线时间: 913(小时)
注册时间: 2008-11-12
最后登录: 2024-11-22
查看泰山之石的 主题 / 回贴
10楼  发表于: 2018-07-30 08:38
西门子的PLC的程序看样子不是一般人会的啊
工控菜鸟
菜鸟一只
级别: 论坛先锋
精华主题: 0
发帖数量: 951 个
工控威望: 1127 点
下载积分: 13852 分
在线时间: 294(小时)
注册时间: 2017-04-12
最后登录: 2024-11-19
查看工控菜鸟的 主题 / 回贴
11楼  发表于: 2018-07-30 09:19
水平有限看的一脸懵逼
  • «
  • 1
  • 2
  • »
  • Pages: 1/2     Go