Triggers ST PLC编程:检测上升沿并记住其值

Triggers ST PLC编程:检测上升沿并记住其值,triggers,persistent,plc,retain,st,Triggers,Persistent,Plc,Retain,St,我最近开始从事PLC结构化文本编程。请原谅我的问题,但我如何才能保持上升沿探测器值 我在想某种RS触发器。 我使用的是codesys v2.3,有一个功能块(R_TRIG)用于检测信号从假变真。但是,来自功能块的输出信号持续约1秒(无论循环时间->我已经尝试了非常高的值) 我已尝试使用一个简单的if来保留该值: IF Rtrigger.Q = true THEN Triggermemory := true; 但是,新变量(Triggermemory)遵循边缘触发器输出值(当然) 有没有办法保留

我最近开始从事PLC结构化文本编程。请原谅我的问题,但我如何才能保持上升沿探测器值

我在想某种RS触发器。 我使用的是codesys v2.3,有一个功能块(R_TRIG)用于检测信号从假变真。但是,来自功能块的输出信号持续约1秒(无论循环时间->我已经尝试了非常高的值)

我已尝试使用一个简单的if来保留该值:

IF Rtrigger.Q = true THEN Triggermemory := true;
但是,新变量(
Triggermemory
)遵循边缘触发器输出值(当然)

有没有办法保留来自边缘检测器的一次真实信号?? 我尝试过使用retain和persistent全局变量(没有成功),但我认为真正的问题是我需要以某种方式将这个真值存储在某个地方。

根据您的代码,“Triggermemory”不应该跟在边缘触发器输出变量后面

仅当您在此处输入的升高条件存在时,才应设置该值。

如果Rtrigger.Q=true,则
Triggermemory:=真;
结束(如有)

此代码是否在函数、函数块或程序中? 如果在函数中声明了RTrigger,则每次进入函数时它都会被“创建”,每次退出函数时它都会被“销毁”。所以装配工不会像你期望的那样工作

如果此代码处于函数中,您可能需要考虑将其创建为全局变量。 但是 如果你想做的是检查一个变量是否变成真的,你是否考虑使用双稳态SR?如果变量在任何一点变为真,则这将变为真。即使变量返回为false,它也将保持TRUE

然后,您可以使用“重置”输入强制将其返回到重置位置(错误)

关于“持久性全局变量”,当您希望变量在重置后仍然有效时,这些变量非常有用

根据您的代码,“Triggermemory”不应跟随edge trigger输出变量

仅当您在此处输入的升高条件存在时,才应设置该值。

如果Rtrigger.Q=true,则
Triggermemory:=真;
结束(如有)

此代码是否在函数、函数块或程序中? 如果在函数中声明了RTrigger,则每次进入函数时它都会被“创建”,每次退出函数时它都会被“销毁”。所以装配工不会像你期望的那样工作

如果此代码处于函数中,您可能需要考虑将其创建为全局变量。 但是 如果你想做的是检查一个变量是否变成真的,你是否考虑使用双稳态SR?如果变量在任何一点变为真,则这将变为真。即使变量返回为false,它也将保持TRUE

然后,您可以使用“重置”输入强制将其返回到重置位置(错误)


关于“持久性全局变量”,当您希望变量在重置后仍然有效时,这些变量非常有用

你在哪里把它设为假的<代码>Triggermemory:=false在代码中的什么位置?实际上,它应该自动保留
TRUE
,直到您将其设置为
false
。除非此代码是函数的一部分。在哪里将其设置为false<代码>Triggermemory:=false在代码中的什么位置?实际上,它应该自动保留
TRUE
,直到您将其设置为
false
。除非此代码是函数的一部分。感谢您的澄清,因为您,我已经能够找到函数块SR,这就是我一直在寻找的。这个R_trig在一个程序中,我想在程序开始时,在设置好的情况下,将它的值重置为false。虽然代码不是很完美,但它们被设置为false并定期返回。谢谢你有用的回答!:)谢谢你的澄清,因为你,我已经能够找到功能块SR,这就是我一直在寻找的。这个R_trig在一个程序中,我想在程序开始时,在设置好的情况下,将它的值重置为false。虽然代码不是很完美,但它们被设置为false并定期返回。谢谢你有用的回答!:)