博途的多步过程控制, 寄存器寻址

本文详细阐述了实际生产中如何处理短信号/脉冲,将设备反馈逻辑与Step变化逻辑分离,并利用定时器实现步进控制。讲解了IF-ELSIF结构的使用技巧,包括自锁与不自锁的区别,以及如何确保逻辑严谨,特别提到了FB与FC在模板程序中的选择依据。
摘要由CSDN通过智能技术生成

1,实际生产中,收到的开关信号往往是短信号/脉冲

2, Step 变化的逻辑和设备的逻辑分开。Step的变化逻辑在实际中往往是设备的反馈信号决定,在此处用定时器信号代替。定时器的触发用Step的状态触发,写在IF ELSIF 语句之外,用定时器(或设备反馈)的Q驱动Step的更新

3,IF ELSIF 之间是互斥事件

4, 如果只用IF ELSIF 而不用ELSE, 那么短信号的判断条件有效, 结果且带自锁

5, 如果用了IF ELSIF + ELSE,那么长信号的判断条件有效,结果且不带自锁, 短信号判断条件时效过后, 会自动跳至Else

6,如果使用IF ELSIF 语句,那么每条结果最好都写上所有OutPut的状态,例如这里的“电机正转”,“电机反转”,“指示灯闪烁”,这样逻辑更严谨

7,多个相同设备的模板程序,需要通过Input OutPut传入参数的程序需要用FB,而不是FC。因为FC中的InPut和OutPut没有分配内存,表现在程序中就是:通过FC块传入的Input变量在做If 条件时,判断的结果OutPut没有自锁功能

启动	Bool	false
停止	Bool	false
Output		
电机正转	Bool	false
电机反转	Bool	false
指示灯闪烁	Bool	false
InOut		
		
Static		
上升沿	Array[0..5] of Bool	
Step	Int	0
R_TRIG_Start	R_TRIG	
TON1	TON_TIME	
T1On	Bool	false
TON2	TON_TIME	
R_TRIG_Stop	R_TRIG	

REGION #启动和停止的触发
    #R_TRIG_Start(CLK := #启动,
                  Q => #上升沿[0]);
    
    #R_TRIG_Stop(CLK := #停止,
                 Q => #上升沿[1]);
    
END_REGION

REGION Step 顺序控制步数的更新
    IF #上升沿[0] THEN
        #Step := 1;
        ;
    ELSIF #TON1.Q THEN
        #Step := 2
        ;
    ELSIF #TON2.Q THEN
        #Step := 3
        ;
    ELSIF #上升沿[1] THEN
        #Step := 0
        ;
        
    END_IF;
    
END_REGION

REGION 根据Step的状态更新设备状态
    IF #Step = 1 THEN
        #电机正转 := TRUE;
        #电机反转 := FALSE;
        #指示灯闪烁 := FALSE;
        ;
    ELSIF #Step = 2 THEN
        #电机反转 := TRUE;
        #电机正转 := FALSE;
        #指示灯闪烁 := FALSE;
        ;
    ELSIF #Step = 3 THEN
        #电机反转 := FALSE;
        #电机正转 := FALSE;
        #指示灯闪烁 := FALSE;
    ELSIF #Step = 0 THEN
        #电机反转 := FALSE;
        #电机正转 := FALSE;
        #指示灯闪烁 := TRUE;
        ;
    END_IF;
    
END_REGION


REGION 根据Step更新定时器状态
    #TON1(IN := #Step = 1,
          PT := T#5S);
    
    #TON2(IN := #Step = 2,
          PT := T#5S);
END_REGION

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

潘诺西亚的火山

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值