新版的EBproV6.01.02.146_20180911遇到的问题
触摸屏型号是MT6103IPPLC是松下XH-c60
我之前用的旧版本EBPro写的程序,触摸屏运行一直正常
后来升级成EBproV6.01.02.146_20180911,写入后就不正常了,是一个宏指令不正常
我这个宏指令是这样运行的:
1、读出触摸屏的时钟数据
2、在时钟等于0分0秒的时候,把PLC的自动运行时间清零,这样每个小时都会清空数据
宏设定成500ms执行一次
软件的下载日期
这是未升级软件之前的,每个小时都能正常清零
这是升级成最新版的,出现不能清零的情况
这是软件的BUG还是什么?
现在附上整个宏的源代码
macro_command main()
int ibasic=50000//宅基地
short rd_sdate//秒,分,时,日,月读出
bool rd_bclear//两个清零按钮读出,0:进料清零;1:出料清零
int rd_ifeedNew,ifeedOld//进料
int rd_iexportNew,iexportOld//出料
short rd_sAutoTime//自动运行时间,由PLC计算
short rd_sAlmTime//故障时间,由PLC计算
int iTimeOffset,iDateOffset,iOffset//时间偏移,日期偏移,每小时偏移
short wr_sbuf//写入报表的缓冲区
short soff=0
int ioff=0,a
bool boff=0
short sfeedNow//当前时间进料数
short sexportNow//当前时间出料数
bool bfirst,bfirst2//第1次
GetData(rd_sdate, "Local HMI", LW, 9017, 5)//秒,分,时,日,月读出
//GetData(rd_sdate, "Local HMI", LW, 10002, 2)
GetData(rd_ifeedNew, "Panasonic FP/KW", DT, 650, 1)//进料
GetData(rd_iexportNew, "Panasonic FP/KW", DT, 652, 1)//出料
GetData(rd_sAutoTime, "Panasonic FP/KW", DT, 654, 1)//自动运行时间
GetData(rd_sAlmTime, "Panasonic FP/KW", DT, 656, 1)//故障时间
GetData(rd_bclear, "Local HMI", LB, 350, 2)//两个清零按钮读出
//计算偏移
iTimeOffset=rd_sdate*20//时
iDateOffset=(rd_sdate-1)*500//日
iOffset=iTimeOffset+iDateOffset+ibasic
//0时,0分,1秒,清空当天数据,避免上月残留
//秒,分,时,日,月
if rd_sdate==0 and rd_sdate==0 and rd_sdate==1 and bfirst2==0 then
for a=0 to 499
SetData(ioff, "Local HMI", RW_A, iOffset+a, 1)
next
ifeedOld=0
iexportOld=0
SetData(ioff, "Panasonic FP/KW", DT, 650, 1)//进料总数
SetData(ioff, "Panasonic FP/KW", DT, 652, 1)//出料总数
bfirst2=1
end if
if rd_sdate==0 and rd_sdate==0 and rd_sdate==5 then
bfirst2=0
end if
//数据排序写入缓冲区
wr_sbuf=sfeedNow
wr_sbuf=sexportNow
wr_sbuf=rd_sAutoTime
wr_sbuf=rd_sAlmTime
SetData(wr_sbuf, "Local HMI", RW_A, iOffset, 4)
SetData(rd_sdate, "Local HMI", RW_A, iDateOffset+ibasic+480, 1)//月写入
SetData(rd_sdate, "Local HMI", RW_A, iDateOffset+ibasic+481, 1)//日写入
//TRACE("iTimeOffset=%d,iDateOffset=%d,iOffset=%d",iTimeOffset,iDateOffset,iOffset)
//旧数据只在00分00秒读出,新数据一直在读出,新数据-旧数据=当前时间的数量
//秒,分,时,日,月
if rd_sdate==0 and rd_sdate==0 and bfirst==0 then
ifeedOld=rd_ifeedNew
iexportOld=rd_iexportNew
SetData(soff, "Panasonic FP/KW", DT, 654, 1)//自动运行时间清零
SetData(soff, "Panasonic FP/KW", DT, 656, 1)//故障时间清零
bfirst=1
end if
//秒,分,时,日,月
if rd_sdate>0 then
sfeedNow=rd_ifeedNew - ifeedOld//进料数量计算
if rd_bclear==1 then//清零按钮
ifeedOld=(sfeedNow*(-1))
SetData(ioff, "Panasonic FP/KW", DT, 650, 1)//清零
SetData(boff, "Local HMI", LB, 350, 1)//关按钮
end if
sexportNow=rd_iexportNew-iexportOld//出料数量计算
if rd_bclear==1 then
iexportOld=(sexportNow*(-1))
SetData(ioff, "Panasonic FP/KW", DT, 652, 1)//清零
SetData(boff, "Local HMI", LB, 351, 1)//关按钮
end if
bfirst=0
end if
end macro_command
更新软件后,有时能清零,有时不能清零,运行时间大于60的就是不能清零的数据 首先抱歉的说一下,我也是个学习者。
看到上面的现象是特有同感,好多次同样的程序升级后就不能像以前一样好用了,有宏指令;也有其他功能。
但是上面的现象不知道把执行周期500ms改小,或者执行方式由plc的启动宏指令执行。理由如下:
可能低版本plc与触摸屏通信稳定且通迅时间小于500ms,但是升级后plc与触摸屏通信不稳定且通迅时间有时大于1000ms(1s);有几率造成在本次0分0秒执行宏指令;等宏指令执行完成时间已经是0分2秒了,再次执行已经错过了宏指令中的“if rd_sdate==0 and rd_sdate==0 and rd_sdate==1 and bfirst2==0 then”的条件而无法清零。
:handshake 文鸿旭 发表于 2018-11-24 17:17
首先抱歉的说一下,我也是个学习者。
看到上面的现象是特有同感,好多次同样的程序升级后就不能像以前一样 ...
因为同样的程序,在旧版本的软件就没有问题的,所以我怀疑新版的软件性能下降的不是一点半点
页:
[1]