有80多个同样的皮带设备,每台设备要统计其累计运行时间,我编写了一个FC块调用程序,因为不想用FB块,也不想用定时器编号。只想在块左侧输入运行信号和复位信号,右侧输出累计时间。
但是一条皮带调用时没问题,两台就不行了,程序中(P)这个地方出问题了,不知道什么原因,哪位帮看看,改下方法。
问题补充:
昨天发的程序图片,不知道为什么不显示,追问还追问不了
P确实用TMEP做的。我确实不想在外面做运算。只想在块里面做,M27.5为PLC一秒脉冲。程序就写前面几段,后面一样,就是60秒一分,秒清零,分加一,60分一小时,分清零,小时加一。
感觉就第一个脉冲那出问题,因为M27.5导通大概是0.5秒,后面的脉冲前面变量都是一闪而过,好像可以不加,不知道行不行。(如果后面的不加,我可以把P放外面,但是如果都要加,就不想放外面,那就得换种方式编写了)
A#STAT
AM27.5
FP#MIAO_PUSE
JNB_001
L#MIAO
L1
+I
T#MIAO
_001:NOP 0
L#MIAO
L60
>=
=#MIAO_REST
A(
O #MIAO_REST
O#RESTAT)
JNB_002
L 0
T#MIAO
_002:NOP 0
A#MIAO_REST
FP#FEN_PUSE
JNB _003
L#FEN
L1
+I
T#FEN
_003:NOP 0
最佳答案
FC里面使用上升沿的话,需要把地址使用INOUT类型以形参的形式输入才行,用临时变量不可以的
参考:
热线故事:关于在FC块中使用--(P )RLO上升沿检测指令的一个小故事
http://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=1173434&b_id=25&s_id=0&num=0#anch
补充:
沿指令不能在FC里面使用temp指令的,或者您用INOUT把上升沿那个点引出来
或者您用FB在STAT里面创建一个静态变量,也是可以的
temp变量每次扫描初始值不一定,根据内存变化的,上升沿指令是根据上个扫描周期的状态和这个扫描周期输入点的状态判断再输出的,沿指令上面的地址就是用来存储上个扫描周期的状态的
提问者对于答案的评价:
感谢所有各位
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc142519.html