问题出在主程序的网络8和网络9上,在线监控时温度传感器1:VD0的数值是31.5,低温设置点:VD364为15,高温设置点:VD368为45,但是网络8和网络9同时输出报警,温度1低:V244.1和温度1高:V243.1同时为1,也就是说温度传感器1:VD0即大于45又小于15,我也没有检查出程序哪里有错误,就向各位大大请教了。
在线监控时,有的触点变为蓝色,中间有蓝色的方块;还有的左边变成蓝色,右边变成银灰色,请问这代表什么意思啊?而SM0.0的开点和闭点竟然同时为1,这是不是也不合常理啊?
主程序
Network 1 //温度传感器1低温报警// 网络注释
LD SM0.0
= L60.0
LD SM0.0
= L63.7
LD L60.0
CALL AI_alarm:SBR7, L63.7, 温度传感器1:VD0, 低温设置点:VD364, 2.0, 温度1低:V244.1
Network 2 //温度传感器1高温报警// 网络注释
= L60.0
LDN SM0.0
= L63.7
LD L60.0
CALL AI_alarm:SBR7, L63.7, 温度传感器1:VD0, 高温设置点:VD368, 2.0, 温度1高:V243.1
子程序变量IN:
L0.0:ALARM_L_LL
LD1:PV
LD5:Set_point
LD9:Set_point
变量OUT:
L13.0:Alarm_Out
变量TEMP:
L13.1:Alarm_Threshold_Latch
L13.2:Alarm_Done
L13.3:Reset_Alarm_Done
LD14:Reset_Set_point
子程序AI_alarm:
Network 1 // 高位报警复位阈值为报警点减去死区
// 网络注释
LDN L0.0
MOVR LD5, LD14
-R LD9, LD14
Network 2 // 低位报警复位阈值为报警点加上死区
LD L0.0
MOVR LD5, LD14
+R LD9, LD14
Network 3 // 报警误差带设置:从高设置点到高点减死区,都是高报警的范围;
从低设置点到低点加死区,都是低报警的范围。
LD L0.0
LDR<= LD1, LD5
LD L13.1
AR< LD1, LD14
OLD
ALD
LDN L0.0
LDR>= LD1, LD5
LD L13.1
AR> LD1, LD14
OLD
ALD
OLD
= L13.1
Network 4 // 报警复位使能延迟1秒
LDN SM0.1
AN L13.1
TON T40, 10
Network 5 // 报警置位使能延迟1秒
LDN SM0.1
A L13.1
TON T41, 10
Network 6 // 报警状态置位
LD T41
= L13.2
S L13.0, 1
Network 7
LD T40
= L13.3
Network 8
LDN L13.2
A L13.3
A M0.2
R L13.0, 1
Network 9
Network 10
问题补充:
这个子程序的目的是14个模拟量在高位和低位时给出一个报警信号,ALARM_L_LL为1时输出为低位报警,ALARM_L_LL为0时输出为低位报警,以上面的例子为例,温度传感器VD0的数值是31.5,低温设置点VD364为15,那么,当VD0小于低温设置点时报警,大于低温设置点加死区时取消报警,也就是起到一个误差带的作用。
刚才一楼的大大说子程序使用了定时器,多次调用就不能正常运行了,请问这是为什么?
还有,在线监控时,而SM0.0的开点和闭点竟然同时显示为ON,这是不是故障了啊?
最佳答案
是主程序的网络1和2吧,你是在子程序里使用定时器,然后多次调用子程序,相当于同一个定时器被多次调用,你只需要把定时器从子程序挪到主程序里就可以了。
提问者对于答案的评价:
那子程序允许嵌套多少次啊
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc308288.html