OPENPLC中的标准功能类型(PLC编程基础类型)分析

版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/qq_37887537/article/details/81773788

TOF(断开延时定时器):

梯形图如上所示:

介绍:The off-delay timer can be used to delay setting an output false, for fixed period after input goes false.

     (关闭延迟计时器可用于延迟设置输出错误,在输入错误后的固定时间内)
 (BOOL:IN, TIME:PT) => (BOOL:Q, TIME:ET)

1.当IN为0时,输出Q为0;

2.当IN由0变为1时,输出Q由于0变为1,并开始保持Q输出为1;

3.当IN由1变为0时,捕获到下降沿,开始延迟关闭,输出Q保持为1,直到延迟关闭时间到,输出Q才变为0;ET在这个时候激活,用于显示延时还剩余的循环次数(PT次数慢慢到0,然后Q=0)。

TON(开启延时定时器)

若上,是TOF与TON两个模块简单的测试,由于TON从名字就可以看出与TOF的对应关系,这里就不再重复。该梯形图的实现效果是:

1.当button按下,lamp点亮,当button抬起,等到2s后,lamp熄灭。

2.当button1按下,lamp1等待2s后点亮,当button1松开,lamp1熄灭。

SR(置位优先触发器)与RS(复位优先触发器)

SR:The SR bistable is a latch where the Set dominates.(SR是一个置位占主导地位的触发器)

RS:The RS bistable is a latch where the Reset dominates.(SR是一个复位占主导地位的触发器)

直接看源码简化后的比较,真的很巧妙啊

SR: Q1 = (S1 || (!R && Q1);
RS: Q1 = !R1 && (S || Q1)

SR:

S1 = 0, R = 0, Q1不变

S1 = 0, R = 1, Q1 = 0

S1 = 1, R= 0, Q1 = 1

S1 = 1, R= 1, Q1 = 1

RS:

S = 0, R1 = 0, Q1不变

S = 1, R1 = 0, Q1 = 1

S = 0, R1 = 1, Q1 = 0

S = 1, R1 = 1, Q1 = 0

TP(生成脉冲定时器)

The pulse timer can be used to generate output pulses of a given time duration.(脉冲定时器可以用来产生给定时间段的输出脉冲。)

实现代码比较长,这里一句话概括其效果:
当给IN一个上升沿,Q直接点亮PT设置的时间,期间IN产生其他上升沿会忽略。

R_TRIG(上升沿触发器)与F_TRIG(下降沿触发器)

R : The output produces a single pulse when a rising edge is detected.当检测到上升沿生成一个脉冲

F: The output produces a single pulse when a falling edge is detected.当检测到下降沿生成一个脉冲

#R_TRIG:
Q = CLK && !M
M = CLK
#F_TRIG:
Q = !CLK && !M
M = !CLK
注意:M是变量,默认值为1

由伪代码可以得到其效果:

R_TRIG:当CLK为0时,Q为0,M=0;当CLK第一次为1(上升沿),Q为1,M=1;当CLK继续为1,Q为0,M=1;接着就循环了。

F_TRIG:当CLK为0时,Q为0,M=1;当CLK第一次为1(上升沿),Q为0,M=0;当CLK继续为1,Q为0,M=0;当CLK第一次变为0时(下降沿),Q为1,M=1;当CLK持续为0,Q为0,M=1;接着循环。

 

SEMA(信号量)

The semaphore provides a mechanism to allow software elements mutually exclusive access to certain ressources.

信号量提供了一种允许软件元素互斥访问某些资源的机制

Q_INTERNAL = CLAIM || (Q_INTERNAL && !RELEASE)
BUSY = Q_INTERNAL

猜你喜欢

转载自blog.csdn.net/qq_37887537/article/details/81773788