您现在所在的是:

人机界面

回帖:2个,阅读:3503 [上一页] [1] [下一页]
12456
蛇会大学
文章数:4613
年度积分:782
历史总积分:12456
注册时间:2015/12/14
发站内信
2018论坛分享达人
发表于:2018/11/24 13:55:11
#0楼
触摸屏型号是MT6103IP
PLC是松下XH-c60

我之前用的旧版本EBPro写的程序,触摸屏运行一直正常

后来升级成EBproV6.01.02.146_20180911,写入后就不正常了,是一个宏指令不正常

我这个宏指令是这样运行的:


1、读出触摸屏的时钟数据
2、在时钟等于0分0秒的时候,把PLC的自动运行时间清零,这样每个小时都会清空数据

宏设定成500ms执行一次

 
附件 1.jpg
附件 2.jpg




软件的下载日期
 
附件 下载时间.jpg


这是未升级软件之前的,每个小时都能正常清零

附件 2018-10-09_0002.jpg

附件 2018-10-09_0003.jpg


这是升级成最新版的,出现不能清零的情况

附件 2018-10-20_0001.jpg

附件 2018-10-20_0002.jpg


这是软件的BUG还是什么?
更新软件后,有时能清零,有时不能清零,运行时间大于60的就是不能清零的数据


现在附上整个宏的源代码
macro_command main()

int ibasic=50000//宅基地
short rd_sdate[5]//[0]秒,[1]分,[2]时,[3]日,[4]月读出
bool rd_bclear[2]//两个清零按钮读出,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[4]//写入报表的缓冲区
short soff=0
int ioff=0,a
bool boff=0

short sfeedNow//当前时间进料数
short sexportNow//当前时间出料数

bool bfirst,bfirst2//第1次

GetData(rd_sdate[0], "Local HMI", LW, 9017, 5)//[0]秒,[1]分,[2]时,[3]日,[4]月读出
//GetData(rd_sdate[0], "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[0], "Local HMI", LB, 350, 2)//两个清零按钮读出

//计算偏移
iTimeOffset=rd_sdate[2]*20//时
iDateOffset=(rd_sdate[3]-1)*500//日
iOffset=iTimeOffset+iDateOffset+ibasic

//0时,0分,1秒,清空当天数据,避免上月残留
//[0]秒,[1]分,[2]时,[3]日,[4]月
if rd_sdate[2]==0 and rd_sdate[1]==0 and rd_sdate[0]==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[2]==0 and rd_sdate[1]==0 and rd_sdate[0]==5 then

       bfirst2=0
end if

//数据排序写入缓冲区
wr_sbuf[0]=sfeedNow
wr_sbuf[1]=sexportNow
wr_sbuf[2]=rd_sAutoTime
wr_sbuf[3]=rd_sAlmTime

SetData(wr_sbuf[0], "Local HMI", RW_A, iOffset, 4)
SetData(rd_sdate[4], "Local HMI", RW_A, iDateOffset+ibasic+480, 1)//月写入
SetData(rd_sdate[3], "Local HMI", RW_A, iDateOffset+ibasic+481, 1)//日写入
//TRACE("iTimeOffset=%d,iDateOffset=%d,iOffset=%d",iTimeOffset,iDateOffset,iOffset)

//旧数据只在00分00秒读出,新数据一直在读出,新数据-旧数据=当前时间的数量
//[0]秒,[1]分,[2]时,[3]日,[4]月
if rd_sdate[1]==0 and rd_sdate[0]==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
//[0]秒,[1]分,[2]时,[3]日,[4]月
if rd_sdate[0]>0 then

       sfeedNow=rd_ifeedNew - ifeedOld//进料数量计算
               if rd_bclear[0]==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]==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
[此贴子已经被作者于2018/11/24 13:59:04编辑过]
18711
fsjnzhouyan
文章数:4895
年度积分:1013
历史总积分:18711
注册时间:2008/7/22
发站内信
发表于:2018/11/25 19:26:31
#1楼
EBproV6.01.02.146版有宏指令错误,目前EBproV60102276版本修复了之前版本宏指令错误。
附件 1.jpg
4918
MIC小赖
文章数:1582
年度积分:56
历史总积分:4918
注册时间:2015/9/16
发站内信
发表于:2018/11/26 17:12:12
#2楼
确实是版本问题,我这很多比较“追新”的客户已经有出现,参考楼上下载2276版本就好了

关于我们 | 联系我们 | 广告服务 | 本站动态 | 友情链接 | 法律声明 | 非法和不良信息举报

工控网客服热线:0755-86369299
版权所有 工控网 Copyright©2024 Gkong.com, All Rights Reserved

46.8003