回复:自制一个上升、下降沿触发器

已锁定

S_automation

西门子1847工业学习平台

  • 帖子

    1169
  • 精华

    17
  • 被关注

    341

论坛等级:奇侠

注册时间:2013-06-23

钻石 钻石 如何晋级?

发布于 2024-08-22 14:31:21

19楼

展开查看
以下是引用1Shadow1在2024-08-21 14:49:27的发言 >16楼

是你在死盯着bool ,类型,我用的是BYTE,也可以用INT,DINT;

你用脑子思考过改个数据类型,一个状态能就产生几十个沿?

以下是引用yming在2024-08-21 12:13:28的发言 >14楼:你为啥死盯着Bool数...

引用14楼详细内容:

你为啥死盯着Bool数据类型呢?

同样是ZANE那个两条指令,只要换成字串逻辑(Byte,Word、DWord),那么一次就产生8、16、32个沿。

不是么?

以下是引用1Shadow1在2024-08-21 11:38:05的发言 >13楼:@Zane  xOuput...

引用13楼详细内容:

@Zane  xOuputEdge := (xInputState XOR xLastState) AND( (xInputState  AND xR/F_TriggerType=1) OR (NOT xInputState  AND xR/F_TriggerType=2) OR  xR/F_TriggerType=3 );

xLastState := xInputState ;

修改xR/F_TriggerType 类型为byte; 定义1:=上升沿,2:=下降沿;3,双沿;

但是个人还是觉得单沿满足大多数情况,并且用FC 足够简洁,尤其是面对多个,比如20个沿的使用情况;

     你看一下  “乐工” 以前的帖子中的回复,看他是怎么通过改数据类型,做到多个沿。


重点看下面则这个scl语言上升沿写法链接,直接点击进去就可以看到 “乐工” 以前的帖子中的回复:

          scl语言上升沿写法



下面这段内容是引用  “乐工” 以前的帖子中的回复


此外,当需要检测的信号组成字节、字或双字时,同样的上述语句,一次就可完成8个或16个、32个信号的上升沿检测。


edgeStaWord := sinInWord AND ( edgeStaLastWord XOR trueWord ) ;  // trueWord =全为1的常数

edgeStaLastWord := edgeStaWord ; //<- 有指令分解成位数组

(字符串逻辑运算有NOT就用NOT;没有就用 XOR,一样的。)


评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-1500系列

共有11113条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
X 图片
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。