CLR
= #SMQ_1
= #SMQ_2
L #Istwert
L #GW_1
>=R
S #SMQ_1
JC M001
L #Hysterese
-R
L #Istwert
<R
A #Q_1
S #SMQ_1
M001: L #Istwert
L #GW_2
>=R
S #SMQ_2
JC M002
L #Hysterese
-R
L #Istwert
<R
A #Q_2
S #SMQ_2
M002: A #SMQ_1
= #Q_1
A #SMQ_2
= #Q_2
其中 Istwert GW_1 GW_2 Hysterese 这个4个参数是输入,Q_1 Q_2是输出参数 那么当Q_1和 Q_2分别是多少?
Istwert :=40 GW_1 :=25 GW_2 :=40 Hysterese:=2.000000e+000
Q_1和 Q_2分别是多少?
Q_1 :=""
Q_2 :=""
最佳答案
CLR
= #SMQ_1
= #SMQ_2 ------这三段是对临时变量的状态复位,即程序开始时状态为0
L #Istwert
L #GW_1
>=R ------当#Istwert的数值大于等于#GW_1的数值时,置位#SMQ_1
S #SMQ_1
JC M001 ------当#Istwert的数值大于等于#GW_1的数值时,程序跳转至M001处执行,下面的程序将被跳过,不执行;当#Istwert的数值小于#GW_1的数值时,继续执行下面程序
L #Hysterese
-R -------- #GW_1的数值减去#Hysterese的数值
L #Istwert
<R -------#GW_1减#Hysterese的差与#Istwert比较,小于且#Q_1为1时,置位#SMQ_1
A #Q_1
S #SMQ_1
M001: L #Istwert-----以下分析同上
L #GW_2
>=R
S #SMQ_2
JC M002
L #Hysterese
-R
L #Istwert
<R
A #Q_2
S #SMQ_2
M002: A #SMQ_1
= #Q_1
A #SMQ_2
= #Q_2
Istwert、GW_1、GW_2 的数值也应是实数类型的。按照上面的分析并带入你所给的数值,那#Q_1和#Q_2的结果都是1。
但你的程序有些问题,就是当#Q_1或#Q_2的结果有一次为1后,不论输入值怎样改变,其输出结果仍然为1。因为程序中A #Q_x S #SMQ_x 相当于自保电路了。
你可以在OB1调用这个块并赋值,在仿真器中测试看看结果。
提问者对于答案的评价:
谢谢
专家置评
已阅,最佳答案正确。
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc234527.html