C#如何封装PLC的上升沿下降沿

做过PLC编程开发的工程师都知道,上升沿、下降沿在程序里面经常用。那么我们在C#上位机中怎么做上升沿呢?接下来我带大家用C#实现!

1.上升沿:从0变1的一瞬间,接通一个扫描周期

下降沿:从1变0的一瞬间,接通一个扫描周期

2.考虑到我们很多朋友是从PLC转型到上位机的,我用写PLC的形式,来帮大家梳理。

3.如下图我们看到,当我们从PLC拖一个R_TRIG上升沿指令,它会提示创建DB,或者背景数据块:

C#如何封装PLC的上升沿下降沿

创建需要分配DB

4.如图 _bool_in是我们要检测的输入变量,_bool_out填上升沿结果:

C#如何封装PLC的上升沿下降沿

PLC的上升沿

5.C#实现我们创建一个类,名称为R_TRIG。

C#如何封装PLC的上升沿下降沿

6.并且写检测上升沿代码:

C#如何封装PLC的上升沿下降沿

上升沿代码

namespace WDBasePLCHelper

{

/// <summary>

/// 上升沿

/// </summary>

public class R_TRIG

{

/// <summary>

/// 这个属性存储上一次的bool状态,get;private set;这个写法相当于PLC的 Output接口

/// </summary>

public bool Last { get;private set; }

/// <summary>

/// 这个属性填被检测的bool量,set;相当于PLC的Input接口

/// </summary>

public bool CLK

{

set

{

Q = value && !Last;//我们知道上升沿是从0变1的一瞬间,所以本次扫描为真上次为假时就产生了上升沿

Last = value;//每个扫描周期刷新参考位

}

}

/// <summary>

/// 这个就是检测的状态,外部获取这个变量就知道上升沿有没有产生

/// 相当于PLC的 Output接口

/// </summary>

public bool Q { get;private set; }

}

}

7.下降沿同理我把代码贴出来:

C#如何封装PLC的上升沿下降沿

namespace WDBasePLCHelper

{

/// <summary>

/// 下降沿

/// </summary>

public class F_TRIG

{

public bool Last { get; private set; }

public bool CLK

{

set

{

Q = !value && Last;//1变0 上次为真本次为假

Last = value;

}

}

public bool Q { get; private set; }

}

}

8.在winform界面测试放置相应控件。

C#如何封装PLC的上升沿下降沿

9.我们创建成员变量 new个对象。

C#如何封装PLC的上升沿下降沿

10.构造函数 实例化相当于PLC分配DB多重背景块:

C#如何封装PLC的上升沿下降沿

11.button按钮点击事件对输入变量进行赋值:

C#如何封装PLC的上升沿下降沿

12.写刷新UI代码:

C#如何封装PLC的上升沿下降沿

13.效果图如下动图:

C#如何封装PLC的上升沿下降沿

14.为了大家看的清楚,上图我用鼠标点击刷新输入状态。

上升沿分析:当第一次按下1时为true,第二次则为false;也就是0变1。

下升沿分析:先按1,再按0,则为true,再任意按变0;也就是1变0。

15.实际使用中,检测I点的上升沿,我们把检测代码写入死循环中,就可以模拟PLC用上升沿指令了。需要多少new多少即可!

end

.NET上位机C#、主流PLC、电气、物联网、STM32、自动化 选型开发、终身学习欢迎交流。

如果对您有帮助,欢迎关注,点赞转发。

您的支持,是我创作的动力!