首页 上一页 1 2 下一页 尾页

西门子PLC如何实现随机选择分支 点击:2661 | 回复:24



-听风-

    
  • 精华:0帖
  • 求助:1帖
  • 帖子:1帖 | 1回
  • 年度积分:36
  • 历史总积分:36
  • 注册:2023年3月11日
发表于:2023-03-11 19:55:06
楼主
求助帖30分-未结帖

想知道怎样实现两个分支前置条件同时满足,但是要随机运行每个分支,或者顺序运行,当I0.0满足,程序会一直到第10步去,但是我想要它偶尔去往第20步,让两个步骤随机运行,或者顺序运行,




-听风-

  • 精华:0帖
  • 求助:1帖
  • 帖子:1帖 | 1回
  • 年度积分:8
  • 历史总积分:44
  • 注册:2023年3月11日
发表于:2023-03-11 19:56:08
1楼

怎么图片传不上去啊。。。

121111115

  • [版主]
  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 456回
  • 年度积分:1512
  • 历史总积分:26745
  • 注册:2016年1月20日
发表于:2023-03-12 10:04:33
2楼

纳秒具有随机性,我记得以前弄过随机的这种,就是取得纳秒个位数,判断奇偶去执行不同的分支。

PLC拿不到纳秒数据的话你可以用毫秒或者秒来做同样的操作,当I0.0接通后读取时钟的毫秒或者秒,然后判断奇偶会得出两个结果,每个结果对应一个分支即可,奇偶不好判断你可以判断数据范围,比如读了毫秒你可以判断毫秒是大于500毫秒还是小于等于500毫秒的。

或者你可以写个随机函数。

agexjz

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 1回
  • 年度积分:0
  • 历史总积分:1
  • 注册:2011年8月12日
发表于:2023-03-12 14:41:22
3楼

SM0.6:扫描周期时钟,一个周期接通,下一个周期断开。


乖乖小笨熊

  • 精华:2帖
  • 求助:0帖
  • 帖子:1238帖 | 11371回
  • 年度积分:222
  • 历史总积分:63777
  • 注册:2006年8月05日
发表于:2023-03-13 09:03:20
4楼

随机的话简单啊,直接随机读取某个计时器的内容,如果为奇数执行原来分支,如果为偶数执行另外分支,还有就是一个计时器计时到1S重复计时,程序随机读取读取计时值,如果小于900mS执行原来分支,如果大于900mS执行另外分支......

这个基本满足你要求

天自

  • 精华:0帖
  • 求助:1帖
  • 帖子:4帖 | 59回
  • 年度积分:1
  • 历史总积分:1025
  • 注册:2022年5月09日
发表于:2023-03-16 13:00:45
5楼

上面大能提到了,读取PLC系统时间的MS。判断奇偶实现2中随机,判断余数实现多种随机。

天自

  • 精华:0帖
  • 求助:1帖
  • 帖子:4帖 | 59回
  • 年度积分:1
  • 历史总积分:1025
  • 注册:2022年5月09日
发表于:2023-03-16 13:00:49
6楼

上面大能提到了,读取PLC系统时间的MS。判断奇偶实现2中随机,判断余数实现多种随机。

wayne001

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 64回
  • 年度积分:2
  • 历史总积分:141
  • 注册:2021年5月05日
发表于:2023-03-19 16:08:59
7楼

依照随机数呢是否可行

lichanglo

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 19回
  • 年度积分:0
  • 历史总积分:26
  • 注册:2011年11月04日
发表于:2023-03-19 20:38:30
8楼

加一个判断信号  行不行 

CMD

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 42回
  • 年度积分:0
  • 历史总积分:333
  • 注册:2017年3月08日
发表于:2023-03-21 17:34:22
9楼

西门子PLC有生成随机数的函数     忘了哪个函数了   可以百度一下

yang20908

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 1373回
  • 年度积分:51
  • 历史总积分:8079
  • 注册:2010年4月06日
发表于:2023-04-05 18:00:12
10楼

"CMD" 的回复,发表在9楼
        对内容: 【西门子PLC有生成随机数的函数     忘了哪个函数了   可以百度一下...】进行回复:

        -----------------------------------------------------------------


有随机函数库

风中大鸟

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 6回
  • 年度积分:0
  • 历史总积分:267
  • 注册:2017年10月19日
发表于:2023-04-17 11:54:30
11楼

image.png

风中大鸟

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 6回
  • 年度积分:0
  • 历史总积分:267
  • 注册:2017年10月19日
发表于:2023-04-17 11:56:30
12楼

三楼的实现

卢国才

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 114回
  • 年度积分:100
  • 历史总积分:160
  • 注册:2022年3月02日
发表于:2023-05-05 10:55:59
13楼

这个不难实现

JSdanzi

  • 精华:0帖
  • 求助:0帖
  • 帖子:9帖 | 485回
  • 年度积分:62
  • 历史总积分:8502
  • 注册:2012年9月22日
发表于:2024-01-02 21:16:29
14楼

每一条分支上,增加你想要跳转的条件,满足后就跳转,不过要分好优先级

Icplayer

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 3回
  • 年度积分:3
  • 历史总积分:3
  • 注册:2020年6月09日
发表于:2024-01-04 09:48:52
15楼

方法1.使用博图V18自带的Ramdom指令


方法2.  V18版本以下可以自己写纳秒程序功能块

//读取系统时间

#tempstatus := RD_SYS_T(#"system time");

// 以系统时间的钠秒时间作为种子进行标准化

#tmep1 := NORM_X(MIN := 0, VALUE :=#"system time".NANOSECOND, MAX := 1000000000);


//在最大和最小之间进行缩放产生随机数据

#随机数据 := SCALE_X(MIN := #最小值, VALUE := #tmep1, MAX := #最大值);

企业微信截图_17043329471261.png



Icplayer

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 3回
  • 年度积分:3
  • 历史总积分:3
  • 注册:2020年6月09日
发表于:2024-01-04 09:49:55
16楼

新建功能块用SCL语言复制我的即可

Icplayer

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 3回
  • 年度积分:3
  • 历史总积分:3
  • 注册:2020年6月09日
发表于:2024-01-04 10:00:27
17楼

随机分支:在你的分支程序里再定义一个INT类型的静态变量,调用完上面的FB块后,把这个INT变量填入输出值,写下面的SCL语句:

if #随机数>=500 then

go to 10;

elsif #随机数<500 then

go to 20;

end if



插翅难飞

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 5回
  • 年度积分:2
  • 历史总积分:212
  • 注册:2016年7月05日
发表于:2024-01-27 15:30:52
18楼

引用 "121111115" 的回复,发表在2楼
        内容: 纳秒具有随机性,我记得以前弄过随机的这种,就是取得纳秒个位数,判断奇偶去执行不同的分支。PLC拿不到纳秒数据的话你可以用毫秒或者秒来做同样的操作,当I0.0接通后读取时钟的毫秒或者秒,然后判断奇偶会得...

学习了

manager852

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 4回
  • 年度积分:3
  • 历史总积分:105
  • 注册:2016年8月27日
发表于:2024-01-29 13:43:21
19楼

可以使用一个计时器(T)来控制两个分支的执行顺序。当I0.0满足时,启动计时器,并设置一个随机的时间间隔。在计时器的计时过程中,程序会等待,直到计时器到达设定的时间间隔。然后,根据计时器的当前值来决定执行哪个分支。如果计时器的值小于某个阈值,则执行第10步;否则执行第20步。

热带雨淋

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 3回
  • 年度积分:3
  • 历史总积分:3
  • 注册:2015年9月17日
发表于:2024-01-29 13:50:52
20楼

比如按固定的顺序执行两个分支,可以使用一个计数器(C)来实现。当I0.0满足时,将计数器加1,并根据计数器的值来决定执行哪个分支。例如,当计数器的值为奇数时,执行第10步;当计数器的值为偶数时,执行第20步。


热门招聘
相关主题

官方公众号

智造工程师
    首页 上一页 1 2 下一页 尾页