作者 | 主题 |
---|---|
萌新一号 游侠 经验值: 389 发帖数: 55 精华帖: 0 |
楼主 2020-05-03 20:06:17
主题:看了yzs贴后 ,探讨以下300PLC的 SD 指令奇怪现象 今天下午参考了一下 yzs 的帖子,是关于PLC的常见编程问题的总结,收益颇丰,感谢这位坛友以下是链接 http://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=1610509&b_id=4 其中有一条我不是很理解,就一直在做实验 图中提到了是扫描程序顺序对逻辑结果的影响,但我的理解是按照扫描周期来说,我的经验是自上到下,扫描完整个周期再正式执行入plc(说的有些糙了,希望各位能指点),按道理来说,如果T1接通,那么定时器应该断电,且后面的程序也会收到T1定时器的影响,为此我自己用博图做了一些仿真。 我选择了单次扫描周期来做这个实验,PLC的仿真也是10ms一次,方便观察,也将定时器调整为10ms。 开始执行程序,执行了N次,结果也如yzs所给,下边的计数器只会执行以此后无效 这种情况我越发迷惑,我改变了运行的方法 , 以下是我执行的几种情况 ,供各位参考 第一种 :只要是和计时器在同一个逻辑支路就会正常计数,但是在下面就不行 第二种方法 : 指令位于计时器的上面也有效 , 这让我更加有些迷茫 , 难道定时器指令只有半个有效周期吗,哈哈哈哈 我换成其他指令都是正常的扫描周期执行指令 , 只有定时器SD会出现奇怪的现象 我的猜疑是 定时器单位 T n ,存如内存映射映像区和其他的不一样 , 但是又说不上那不一样;以上是我一名初学者的疑惑,还望各位前辈能探讨一番 , 给我解惑解惑 , 这个问题困惑了我一整天 |
zhangli0 至圣 经验值: 42492 发帖数: 15620 精华帖: 60 |
1楼 2020-05-04 11:12:17
主题:回复:看了yzs贴后 ,探讨以下300PLC的 SD 指令奇怪现象 只有io映像区是扫描结束后刷新的,其他的都是立即生效的。
活到老,学到老!为了生活学习吧!
|
萌新一号 游侠 经验值: 389 发帖数: 55 精华帖: 0 |
2楼 2020-05-05 16:25:11
主题:回复:看了yzs贴后 ,探讨以下300PLC的 SD 指令奇怪现象 了解了以下好像是异步扫描的原因,有吧友对这个了解吗 |
Zane 至圣 经验值: 75765 发帖数: 19245 精华帖: 376 |
3楼 2020-05-05 16:33:10
主题:回复:看了yzs贴后 ,探讨以下300PLC的 SD 指令奇怪现象 这个问题的实质就是对PLC逻辑运算寄存器RLO及其堆栈的理解的问题,以及定时器访问的一般逻辑问题。因此,我在原贴中就留下了是否有“放之四海而皆准”的编程方法的提问,可惜应者寥寥,而原贴楼主持否定建议。 原想在我的一个编程专题中说一下的,但楼主既已提出了,我就提前就这部分内容答复一下。 计数器C的计数条件是输入条件的的上升沿变化 上图逻辑,C1的逻辑条件是定时器T1保存在RLO堆栈中的值,所以C1能检测到输入值的变化,从而正常工作。 C2的逻辑条件是T1的实时状态值,因为上图的逻辑,C2是只能检测到一次输入值的变化,定时器的T1的上电后首次出发,以后就再也无法检测到输入值的上升沿变化了。 从上面的分析看出,只有在RLO堆栈中才能检测到T1的状态变化,在正常OB1扫描中是无法检测到T1的状态变化的,这就给编程带来的诸多不便。 因此,使用定时器状态去复位定时器的做法本身就是一种不可取的编程方法,我认为是编程上的一些陋习,其根本原因就是不愿意多使用中间标志位,一个字“懒”!
Zane
注册自动化系统工程师
Always save before download
|
Zane 至圣 经验值: 75765 发帖数: 19245 精华帖: 376 |
4楼 2020-05-05 17:09:34
主题:回复:看了yzs贴后 ,探讨以下300PLC的 SD 指令奇怪现象 我不止一次讲过,PLC编程就是八股文,就是套路,所以本例的逻辑亦是如此,有固定的编程方法(套路),而且是放之四海而皆准的,与品牌系列亦无关! 其核心意义就是,OB1扫描的逻辑程序,要检测任何标志位的逻辑状态变化,至少要2个扫描周期。 大道至简,掌握了这些道理,还用担心自己的程序会不可靠吗?
Zane
注册自动化系统工程师
Always save before download
|
yzs 侠圣 经验值: 3409 发帖数: 435 精华帖: 6 |
5楼 2020-05-05 19:17:35
主题:回复:看了yzs贴后 ,探讨以下300PLC的 SD 指令奇怪现象 正是因为西门子定时器的异步更新及本身的一些特性导致其使用并不是太方便,因此才有了型型式式自编写定时器。 此例子本来用于说明程序执行的先后顺序并不是太妥,但有很强的迷惑性和代表性,充分说明了程序的执行先后顺序并不是表面上所看的那样就行了。 在我个人的编程过程中现在已经极少使用到西门子自带的定时器了,都是使用自编写的FC定时器。正如Zane版所说的,放之四海而皆准的,与品牌系列亦无关,建议使用我的FC定时器,此定时器可用于1200-400的所有西门子中型PLC中,200和200SMART也可以类似使用,真乃居家必备之良品 http://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=1565521&b_id=4&s_id=23&num=47#anch |
Zane 至圣 经验值: 75765 发帖数: 19245 精华帖: 376 |
6楼 2020-05-06 01:07:16
主题:回复:看了yzs贴后 ,探讨以下300PLC的 SD 指令奇怪现象 呃,不是所有的人都能掌握和使用yzs侠的FC定时器的。 其他品牌的PLC也能这么做吗?也不见得。 所以,充分利用已有资源,是不是更加的节能环保一些呀?
Zane
注册自动化系统工程师
Always save before download
|
一串奇怪的数字 侠士 经验值: 1325 发帖数: 114 精华帖: 4 |
15楼 2020-07-07 11:09:51
主题:回复:看了yzs贴后 ,探讨以下300PLC的 SD 指令奇怪现象
人生没有边界,一切皆有可能。
|