技术论坛

常开、常闭状态的保持

作者 主题
至圣

经验值: 20129
发帖数: 2777
精华帖: 23
主题:【分享】常开、常闭状态的保持
推荐帖


只看楼主 只看精华 楼主 2018-01-04 15:00:43

闲翻代码,发现有这么几行:

 ON    #Allways_ON

      O     #Allways_OFF

      S     #Allways_ON

      R     #Allways_OFF

其中#Always_ON和#Always_OFF都是BOOL类型的TEMP变量,感觉有点儿意思。

你们怎么看?不知道你们是如何实现这个功能的?


Less is more……
以下网友喜欢您的帖子:

  
重要声明:

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

帖子链接:https://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=1452122&b_id=4&s_id=0&num=30

至圣

经验值: 24889
发帖数: 4534
精华帖: 10
回复:常开、常闭状态的保持
推荐帖


只看楼主 只看精华 1楼 2018-01-04 15:26:16

 太高深了,没看出个所以然来。


别人在休息的时候,我往前走。
以下网友喜欢您的帖子:

  
侠圣

经验值: 3596
发帖数: 303
精华帖: 2
回复:常开、常闭状态的保持
推荐帖


只看楼主 只看精华 2楼 2018-01-04 16:13:49

放到循环组织块,如OB35,可以当脉冲用,我就这么干过


只为成功找方法,不为失败找借口!
以下网友喜欢您的帖子:

  
奇侠

经验值: 9240
发帖数: 1414
精华帖: 1
回复:常开、常闭状态的保持
推荐帖


只看楼主 只看精华 3楼 2018-01-04 16:45:09

 就是定义常开常闭两个变量,在程序块内使用


认真学习,努力工作
以下网友喜欢您的帖子:

  
侠士

经验值: 1154
发帖数: 232
精华帖: 0
回复:常开、常闭状态的保持
推荐帖


只看楼主 只看精华 4楼 2018-01-04 22:37:18

正好看到一个:


方法应该还有很多吧


雨过分洼种瓜,旱时饮水浇麻。
以下网友喜欢您的帖子:

  
至圣

经验值: 67542
发帖数: 14782
精华帖: 100
回复:常开、常闭状态的保持
推荐帖


只看楼主 只看精华 5楼 2018-01-04 23:10:35

好像没有脉冲这回事啊?

通常都不执行。一但有意外,就会执行一下,扶正。

是不是这个理解?

跟下面那个梯形图也不是一回事(虽然效果一样,但你可以把梯形图写得更贴切的)。楼主的是没事就过,歪了就扶一下。下面的就是有事没事都扶着。

其实把中间两行换位,是不是也可以?


 
以下网友喜欢您的帖子:

  
至圣

经验值: 11495
发帖数: 1028
精华帖: 39
回复:常开、常闭状态的保持
精华帖精华帖星级1级 推荐帖


只看楼主 只看精华 6楼 2018-01-05 00:56:18
AN pulse
= pulse
就会产生脉冲,在ob35
 
以下网友喜欢您的帖子:

  
至圣

经验值: 24889
发帖数: 4534
精华帖: 10
回复:常开、常闭状态的保持
推荐帖


只看楼主 只看精华 7楼 2018-01-05 10:26:30

 专家们一提醒,我想起我上次做个功能块:

FUNCTION_BLOCK FB2050

TITLE = 'Pulse'
//
// Block Comment...
//
VERSION: '1.0'
AUTHOR: Author
NAME: HSC
FAMILY: Pulse

VAR_INPUT
    // Input Parameters

END_VAR

VAR_IN_OUT
    // I/O Parameters
END_VAR

VAR_OUTPUT
   PulseOut : BOOL := False ;

END_VAR

VAR_TEMP
   
END_VAR
VAR
   PulseIn : BOOL := False;
END_VAR

    PulseIn := (PulseIn OR NOT PulseIn ) AND  NOT PulseIn;
    PulseOut := PulseIn;

END_FUNCTION_BLOCK

可以在OB1中调用,也可以在循环中断中调用,目的就是产生一个周期脉冲。

放在OB1中,由于受CPU的扫描时间影响,周期可能有变化。如果需要比较精准的定时,必须放在循环中断中调用。


别人在休息的时候,我往前走。
以下网友喜欢您的帖子:

  
奇侠

经验值: 5622
发帖数: 541
精华帖: 3
回复:常开、常闭状态的保持
推荐帖


只看楼主 只看精华 8楼 2018-01-05 21:52:51


谢谢楼主分享


学无止境
以下网友喜欢您的帖子:

  
侠圣

经验值: 2075
发帖数: 147
精华帖: 1
回复:常开、常闭状态的保持
推荐帖


只看楼主 只看精华 9楼 2018-01-05 22:09:31

我一般这么写的

SET

= Allways_ON

CLR

= Allways_OFF


大神求带
以下网友喜欢您的帖子:

  
至圣

经验值: 12543
发帖数: 1843
精华帖: 0
回复:常开、常闭状态的保持
推荐帖


只看楼主 只看精华 10楼 2018-01-06 08:39:27
以下是引用铁面判官在2018-01-04 16:13:49的发言 >2楼

放到循环组织块,如OB35,可以当脉冲用,我就这么干过

对,产生脉冲


邮箱 yongquancun@126.com
以下网友喜欢您的帖子:

  
奇侠

经验值: 5889
发帖数: 796
精华帖: 1
回复:常开、常闭状态的保持


只看楼主 只看精华 11楼 2018-01-06 09:16:36

这是产生常1和常0信号,用在需要调试等的时候,比较方便。


 
以下网友喜欢您的帖子:

  
奇侠

经验值: 5470
发帖数: 634
精华帖: 0
回复:常开、常闭状态的保持


只看楼主 只看精华 12楼 2018-01-06 09:36:48

我们也用过这个功能!比较方便的一个功能!


干就完了!
以下网友喜欢您的帖子:

  
侠士

经验值: 1851
发帖数: 82
精华帖: 1
回复:常开、常闭状态的保持


只看楼主 只看精华 13楼 2018-01-06 10:28:55
以下是引用你以为你是谁在2018-01-05 10:26:30的发言 >7楼

 专家们一提醒,我想起我上次做个功能块:

FUNCTION_BLOCK FB2050

TITLE = 'Pulse'
//
// Block Comment...
//
VERSION: '1.0'
AUTHOR: Author
NAME: HSC
FAMILY: Pulse

VAR_INPUT
    // Input Parameters

END_VAR

VAR_IN_OUT
    // I/O Parameters
END_VAR

VAR_OUTPUT
   PulseOut : BOOL := False ;

END_VAR

VAR_TEMP
   
END_VAR
VAR
   PulseIn : BOOL := False;
END_VAR

    PulseIn := (PulseIn OR NOT PulseIn ) AND  NOT PulseIn;
    PulseOut := PulseIn;

END_FUNCTION_BLOCK

可以在OB1中调用,也可以在循环中断中调用,目的就是产生一个周期脉冲。

放在OB1中,由于受CPU的扫描时间影响,周期可能有变化。如果需要比较精准的定时,必须放在循环中断中调用。

你这就是一个上升沿功能块,和R_TRIG一样


 
以下网友喜欢您的帖子:

  
至圣

经验值: 24889
发帖数: 4534
精华帖: 10
回复:常开、常闭状态的保持


只看楼主 只看精华 14楼 2018-01-06 10:31:15
以下是引用tangying在2018-01-06 10:28:55的发言 >13楼

你这就是一个上升沿功能块,和R_TRIG一样

以下是引用你以为你是谁在2018-01-05 10:26:30的发言 >7楼: 专家们一提醒,我...

引用7楼详细内容:

 专家们一提醒,我想起我上次做个功能块:

FUNCTION_BLOCK FB2050

TITLE = 'Pulse'
//
// Block Comment...
//
VERSION: '1.0'
AUTHOR: Author
NAME: HSC
FAMILY: Pulse

VAR_INPUT
    // Input Parameters

END_VAR

VAR_IN_OUT
    // I/O Parameters
END_VAR

VAR_OUTPUT
   PulseOut : BOOL := False ;

END_VAR

VAR_TEMP
   
END_VAR
VAR
   PulseIn : BOOL := False;
END_VAR

    PulseIn := (PulseIn OR NOT PulseIn ) AND  NOT PulseIn;
    PulseOut := PulseIn;

END_FUNCTION_BLOCK

可以在OB1中调用,也可以在循环中断中调用,目的就是产生一个周期脉冲。

放在OB1中,由于受CPU的扫描时间影响,周期可能有变化。如果需要比较精准的定时,必须放在循环中断中调用。

对的,就是一个上升沿,但是做成功能块以后,调用方便。


别人在休息的时候,我往前走。
以下网友喜欢您的帖子:

  
至圣

经验值: 24889
发帖数: 4534
精华帖: 10
回复:常开、常闭状态的保持


只看楼主 只看精华 15楼 2018-01-06 10:34:22
以下是引用你以为你是谁在2018-01-06 10:31:15的发言 >14楼

对的,就是一个上升沿,但是做成功能块以后,调用方便。

以下是引用tangying在2018-01-06 10:28:55的发言 >13楼:你这就是一个上升沿...

引用13楼详细内容:

你这就是一个上升沿功能块,和R_TRIG一样

以下是引用你以为你是谁在2018-01-05 10:26:30的发言 >7楼: 专家们一提醒,我...

引用7楼详细内容:

 专家们一提醒,我想起我上次做个功能块:

FUNCTION_BLOCK FB2050

TITLE = 'Pulse'
//
// Block Comment...
//
VERSION: '1.0'
AUTHOR: Author
NAME: HSC
FAMILY: Pulse

VAR_INPUT
    // Input Parameters

END_VAR

VAR_IN_OUT
    // I/O Parameters
END_VAR

VAR_OUTPUT
   PulseOut : BOOL := False ;

END_VAR

VAR_TEMP
   
END_VAR
VAR
   PulseIn : BOOL := False;
END_VAR

    PulseIn := (PulseIn OR NOT PulseIn ) AND  NOT PulseIn;
    PulseOut := PulseIn;

END_FUNCTION_BLOCK

可以在OB1中调用,也可以在循环中断中调用,目的就是产生一个周期脉冲。

放在OB1中,由于受CPU的扫描时间影响,周期可能有变化。如果需要比较精准的定时,必须放在循环中断中调用。

在CFC中调用,马达故障时间监测。

 


别人在休息的时候,我往前走。
以下网友喜欢您的帖子:

  
侠圣

经验值: 4161
发帖数: 474
精华帖: 4
回复:常开、常闭状态的保持


只看楼主 只看精华 16楼 2018-01-06 11:38:03



这几个确实很常用,尤其是需要一个程序段并联很多指令时


 
以下网友喜欢您的帖子:

  
至圣

经验值: 18407
发帖数: 2409
精华帖: 1
回复:常开、常闭状态的保持


只看楼主 只看精华 17楼 2018-01-06 19:05:07


真心,不错!


 
以下网友喜欢您的帖子:

  
至圣

经验值: 11066
发帖数: 1222
精华帖: 35
回复:常开、常闭状态的保持
推荐帖


只看楼主 只看精华 18楼 2018-01-07 22:49:02

 我一般都是用M点来做,写在OB1的第一个网络断和OB100,OB101中

A M0.0

AN M0.0

= M0.0   // 常开


O M0.1

AN M0.1

= M0.1  //党闭


Keep calm and carry on!!!
以下网友喜欢您的帖子:

  
侠圣

经验值: 3723
发帖数: 486
精华帖: 1
回复:常开、常闭状态的保持


只看楼主 只看精华 19楼 2018-01-27 11:53:24
以下是引用YiMoon在2018-01-07 22:49:02的发言 >18楼

 我一般都是用M点来做,写在OB1的第一个网络断和OB100,OB101中

A M0.0

AN M0.0

= M0.0   // 常开


O M0.1

AN M0.1

= M0.1  //党闭

这种用过。


永无止境!
以下网友喜欢您的帖子:

  
收起
常开、常闭状态的保持
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。