A)主程序段2中的:【VD0 为小时,VD4 为分钟】以及段6中的【VD16 为小时,VD20 为分钟】是不是设定时间?【VD12为显示秒数】,【VD28为显示秒数】则为剩余时间?
如果是设定时间:乘法运算转为秒的积,就不能再用VD0、VD4(VD16、VD20)了,由于这两个【积】是数学运算的中间值,即:计算过程的临时变量,可以用AC或LD;
B)Time0820(SBR1)是:可以重复调用的带参数子程序。
1、内秒、内分、内时,为当前计时值吧?数据的 变量类型不能用TEMP,应采用IN_OUT 变量类型,并在掉电保持的V区分配相应地址;子程序调用时:先将保存在V区的历史数据读入子程序,子程序执行结束后,再将新值传送出来保存。多次调用时,每个调用均有其当前计时数据值的专用保存地址(V区),不相互影响。
2、Time0820(SBR1)的输入脚【条件】是用于【复位】当前计时值的 内时、内分、内秒的吧?
其实,没必要复位 内分转秒、内时转秒、内时分转秒和、内总秒和。只需将程序段2的计算条件,由【启动】改为SM0.0即可。
3)Time0820(SBR1)子程序中,不要使用沿指令。可重复多次调用的子程序中,不要使用沿指令。可在主程序中增加一个程序段,用沿指令获得秒脉冲,在子程序中直接使用该秒脉冲(如:M31.0)即可。
如M31.0为秒脉冲:
LD SM0.5
EU
= M31.0