您的位置:控制工程论坛网论坛 » 技术争鸣 » 高手看看,给个最佳思路,谢谢!

hylotus

hylotus   |   当前状态:离线

总积分:5168  2024年可用积分:0

注册时间: 2009-08-20

最后登录时间: 2012-08-16

空间 发短消息加为好友

高手看看,给个最佳思路,谢谢!

hylotus  发表于 2009/11/6 8:09:58    精华  1534 查看 9 回复  [上一主题]  [下一主题]

手机阅读

在程序中编制报警部分内容,涉及到如何判断一个32位变量(或64位)中任意一位从0到1的变化,当有变化时,说明有报警产生,设备需要做相应的动作,如塔灯红灯亮起、蜂鸣器开响,设备停止运行等。各位高手给个思路,谢谢!

再表述一遍这个问题:

即任意一位从0变到1时,输出一个二进制值(变为1),而从1到0的变化却不输出?

本文被马军成版主评为精华  理由--能够深入讨论实质技术问题

1楼 0 0 回复
  • goldjack

    goldjack   |   当前状态:在线

    总积分:3142  2024年可用积分:0

    注册时间: 2007-01-15

    最后登录时间: 2023-12-26

    空间 发短消息加为好友

    goldjack   发表于 2009/10/29 13:42:38

    存储该变量的上一个值,然后读取新值。接下来做新值和旧值的逐位运算,旧值逐位取补(即0、1置换),然后和新值逐位相与,所得就是你要的结果。

    2楼 回复本楼

    引用 goldjack 2009/10/29 13:42:38 发表于2楼的内容

  • yanjunan

    yanjunan   |   当前状态:在线

    总积分:2156  2024年可用积分:0

    注册时间: 2008-09-11

    最后登录时间: 2015-01-05

    空间 发短消息加为好友

    yanjunan   发表于 2009/10/29 15:50:59

    3楼 回复本楼

    引用 yanjunan 2009/10/29 15:50:59 发表于3楼的内容

  • hylotus

    hylotus   |   当前状态:离线

    总积分:5168  2024年可用积分:0

    注册时间: 2009-08-20

    最后登录时间: 2012-08-16

    空间 发短消息加为好友

    hylotus   发表于 2009/10/29 16:02:14

    我先试试二楼的思路,对于3#的我觉得如果按位处理是不是比较繁琐,如何上升沿触发?可不可以说的详细点,谢谢!!
    4楼 回复本楼

    引用 hylotus 2009/10/29 16:02:14 发表于4楼的内容

  • hylotus

    hylotus   |   当前状态:离线

    总积分:5168  2024年可用积分:0

    注册时间: 2009-08-20

    最后登录时间: 2012-08-16

    空间 发短消息加为好友

    hylotus   发表于 2009/10/29 16:16:34

    L  MD4    //上一周期的值 

    INVD     //取反,则上一周期为0的,取反后为1 

    L  MD0  //和当前周期的值 

    AND       //做与 

    L  L#0    //如果ACC1不为0,则表示至少有一位 

    <>D      //在上一个周期为0,当前周期为1 

    = Q0.0 


    L  MD0


    T  MD4


    2#的看看对不对,谢谢!

    5楼 回复本楼

    引用 hylotus 2009/10/29 16:16:34 发表于5楼的内容

  • goldjack

    goldjack   |   当前状态:在线

    总积分:3142  2024年可用积分:0

    注册时间: 2007-01-15

    最后登录时间: 2023-12-26

    空间 发短消息加为好友

    goldjack   发表于 2009/10/29 16:47:34

    不太熟悉你用的语言,但从逻辑上看流程是对的。


    二三步之间要保证新旧值不丢。


    你可以自己输入几个变量模拟测一下结果。:-)

    6楼 回复本楼

    引用 goldjack 2009/10/29 16:47:34 发表于6楼的内容

  • goldjack

    goldjack   |   当前状态:在线

    总积分:3142  2024年可用积分:0

    注册时间: 2007-01-15

    最后登录时间: 2023-12-26

    空间 发短消息加为好友

    goldjack   发表于 2009/10/29 16:56:26

    可以用上升沿触发的硬件直接得到输出,或配合程序实现。
    7楼 回复本楼

    引用 goldjack 2009/10/29 16:56:26 发表于7楼的内容

  • hylotus

    hylotus   |   当前状态:离线

    总积分:5168  2024年可用积分:0

    注册时间: 2009-08-20

    最后登录时间: 2012-08-16

    空间 发短消息加为好友

    hylotus   发表于 2009/10/30 14:55:10

    3#的同仁,我编程采用的是STL语言,也是 PLC一种基本编程语言,不过忘了告诉你是针对Siemens S7系列PLC的!我通过模拟软件是了一下,完全可以实现要求的功能,谢了!!! 
    8楼 回复本楼

    引用 hylotus 2009/10/30 14:55:10 发表于8楼的内容

  • 马军成

    马军成   |   当前状态:在线

    总积分:13914  2024年可用积分:0

    注册时间: 2006-12-01

    最后登录时间: 2022-06-28

    空间 发短消息加为好友

    马军成   发表于 2009/11/4 14:58:48

    希望你能保持并深入讨论技术问题。
    9楼 回复本楼

    引用 马军成 2009/11/4 14:58:48 发表于9楼的内容

  • xujun_127

    xujun_127   |   当前状态:在线

    总积分:2761  2024年可用积分:0

    注册时间: 2008-10-04

    最后登录时间: 2019-07-16

    空间 发短消息加为好友

    xujun_127   发表于 2009/11/6 8:09:58

    好思路啊
    10楼 回复本楼

    引用 xujun_127 2009/11/6 8:09:58 发表于10楼的内容

总共 , 当前 /