找答案的高端用户(找答案钻石及双钻级别的用户)将尽可能从此问题下的所有回
答中,为您推荐最佳答案。届时您可以根据推荐数采纳答案。
如果自提问时间起7天内您仍无法选出最佳答案,您可以选择“无满意答案”关闭此问题。
精简变量历史数据,条数限制不能改,历史数据不会丢失
http://www.ad.siemens.com.cn/productportal/Prods/HMI/2ndBasicPanel/Q7_configuration/FAQ8_2ndBasicpanel_taglog.html
二代精简(2nd Basic)屏能保存多长时间历史数据
http://www.ad.siemens.com.cn/productportal/prods/hmi/2ndbasicpanel/Q7_configuration/FAQ10_2ndBasicpanel_logging.html
精智面板变量历史数据
http://www.ad.siemens.com.cn/productportal/prods/hmi/comfortpanel/q7_configuration/FAQ9_Comfortpanel_taglog.html
精智屏能保存多长时间历史数据
http://www.ad.siemens.com.cn/productportal/prods/hmi/comfortpanel/Q7_configuration/FAQ11_Comfortpanel_logging.html
Smart屏组态历史数据
https://www.ad.siemens.com.cn/productportal/prods/hmi/smartlinesv3faq/list_q9.html
显示报警历史数据:
CONST
load_cout:= 10; //读取时间总计10次 你可以根据你的情况增加
END_CONST
VAR_INPUT
WriteReq:BOOL; // 写请求
ReadReq :BOOL; // 读请求
MODE:BOOL; //= false FIFO = true LIFO
clear:BOOL; //数据清理
END_VAR
VAR_IN_OUT
Last_WriteReq:BOOL;
Last_ReadReq:BOOL;
END_VAR
VAR_OUTPUT
Index :INT; // 压入数据的个数记录
stop_write:BOOL; // 停止写入
stop_read:BOOL; // 停止读取
year:INT; //年
month:INT; //月
day:INT; //日
hour:INT; //时
mins:INT; //分
second:INT; //秒
week:INT; //日期
END_VAR
VAR
read_status:INT;
read_time:DT; // 读取出来的数据
WriteReq_P:BOOL; // 写请求上升沿
store:ARRAY[0..load_cout-1 ] OF DT;
ReadReq_P :BOOL; // 读请求上升沿
num:INT;
//
write_time:DT;
copy_status1:INT;
//
act_time:ARRAY[0..8] OF BYTE;
TS:WORD;
week_no:INT;
END_VAR
//压栈处理
//当堆栈指针<= 数组上限值(本例位10 个数据) ,则在写入数据请求满足是,对数据进行压栈处理.
read_status:= READ_CLK(CDT := read_time //连续读取系统时间
); // 读取系统时间
WriteReq_P:= WriteReq AND NOT Last_WriteReq; //当需要存储时,将系统时间存储
Last_WriteReq:= WriteReq;
IF Index >= load_cout THEN
stop_write:= true;
ELSE
stop_write:= false;
END_IF;
IF NOT stop_write THEN
IF WriteReq_P THEN
store[Index]:= read_time;
Index := Index + 1;
END_IF;
END_IF;
//出栈处理
//在读出数据请求满足是, 判断堆栈指针是否大于数组下限值,
//当大于下限值,对数据进行出栈处理.
ReadReq_P:= ReadReq AND NOT Last_ReadReq; //读取系统时间
Last_ReadReq:= ReadReq;
IF Index <= 0 THEN
stop_read:=true;
ELSE
stop_read:=false;
END_IF;
IF NOT stop_read THEN
IF ReadReq_P THEN
IF NOT MODE THEN
write_time:= store[load_cout-Index]; //FIFO
ELSIF MODE THEN
write_time:= store[Index]; //LIFO
END_IF;
Index:= Index -1 ;
END_IF;
END_IF;
IF clear THEN
FOR num:= 0 TO load_cout-1 BY 1 DO
store[num]:= dt#2000-01-01-00:00:00;
write_time:= store[num];
END_FOR;
END_IF;
copy_status1:= BLKMOV(SRCBLK := write_time
,DSTBLK := act_time
); //转化当前时间,并显示时间。
首次回答问题,获得
双倍西币积分!
立即成为技术知识分享的一员!
找答案微信小程序
提问
搜索
欢迎您访问支持中心!
丰富的视频,全方位的文档,大量的网友交流精华……
为了更好的完善这些内容,我们诚邀您在浏览结束后,花20秒左右的时间,完成一个用户在线调查!
感谢您的支持!