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

TOF(断开延时定时器):

OPENPLC中的标准功能类型(PLC编程基础类型)分析_第1张图片

梯形图如上所示:

介绍: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(开启延时定时器)

OPENPLC中的标准功能类型(PLC编程基础类型)分析_第2张图片

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

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

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

 

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

OPENPLC中的标准功能类型(PLC编程基础类型)分析_第3张图片

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(生成脉冲定时器)

OPENPLC中的标准功能类型(PLC编程基础类型)分析_第4张图片

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

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

 

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

OPENPLC中的标准功能类型(PLC编程基础类型)分析_第5张图片

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是变量,默认值为0(这个值有疑问,你可以思考一下)

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

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

F_TRIG:当CLK为1时,Q为0,M=0;当CLK第一次为0(下降沿),Q为1,M=1;当CLK继续为0,Q为0,M=1;

 

SEMA(信号量)

OPENPLC中的标准功能类型(PLC编程基础类型)分析_第6张图片

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

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

init:Q_INTERNAL:FALSE

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

该功能块的使用:

CLAIM为资源调用请求,RELEASE为资源释放,输出为BUSY。该功能块获取到CLAIM为1,则设置BUSY为true,表示资源进入了繁忙状态,如果不将输入参数RELEASE赋值为1,则会一直处于繁忙状态,无论是否再次获取资源调用请求。将RELEASE设置为1,会将BUSY重新设置为0,才能获取下一个资源调用请求。

 

CTU(自加计数器)与 CTD(自减计数器)

OPENPLC中的标准功能类型(PLC编程基础类型)分析_第7张图片

自加计数器:

当计数到达最大值时,顺计时器给出信号。

这里代码比较简单,CU为输入信号, 每当信号由低变成变高,CV加一,直到CV==PV时,Q输出为TRUE,R为复位。

自减计数器:

CD为输入信号,LD为初始化信号,当LD为 TRUE时复位:将CV赋值为PV的值;

PV为输入的目标值,CV初始化时赋值为PV;

然后设置LD为False,每次CD进入一个上升沿CV减一,直到CV为0,Q输出为TRUE。再次设置LD为True,CV再次重新计数。

 

CTUD(顺逆计数器)

OPENPLC中的标准功能类型(PLC编程基础类型)分析_第8张图片

使用方法:

为上面自加与自减的合体。当R有一个信号,则CV会被初始化为0,当LD有信号,CV=PV,输出分别为QU,QD。

当CU上升沿触发,则CV加一,当CD为上升沿触发则CV减一。

如果CV为0,则QD为TRUE,如果CV为PV,则QU为TRUE。

CD_T,CU_T是检测自加与自减上升沿的反馈,例如CD_T.Q为1时表示CD为上升沿触发。

你可能感兴趣的:(PLC)