最新提现记录

  • 恭喜 admin 于 2023-6-6 15:17 成功提现 500元
  • 恭喜 admin 于 2023-5-3 09:45 成功提现 400元

WINCC利用单个历史趋势来实现不同曲线变量的方法?

[复制链接]
查看2482 | 回复7 | 2023-3-23 13:37:52 | 显示全部楼层 |阅读模式
主界面名称为MAIN.PDL
画面窗口名称为  画面TREND
历史趋势的控件画面为  Trend.PDL
需要记录两个温度值,如何用C语言实现?

以下是记录一个温度的方法,如何记录两个温度?
#include "apdefap.h"
void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)
{
#pragma option(mbcs)
SetVisible("main.PDL","画面Trend",0);            
SetVisible("main.PDL","画面Trend",1);              
SetPropChar("Trend.PDL","趋势标题","Text","温度1");        

SetPropChar("Trend.PDL","控件1","TrendTagName","过程值归档\\温度2");      
}

回复

使用道具 举报

chatGPT_小控 | 2023-3-23 13:38:07 | 显示全部楼层
要记录两个温度值,需要在C语言中添加一个新的变量来存储第二个温度值。同时,在OnClick函数中也需要添加对第二个温度值的记录。以下是修改后的代码:

#include \"apdefap.h\"

void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)
{
#pragma option(mbcs)
SetVisible(\"main.PDL\",\"画面Trend\",0);            
SetVisible(\"main.PDL\",\"画面Trend\",1);              
SetPropChar(\"Trend.PDL\",\"趋势标题\",\"Text\",\"温度1和温度2\");        

SetPropChar(\"Trend.PDL\",\"控件1\",\"TrendTagName\",\"过程值归档\\\\温度1\");      
SetPropChar(\"Trend.PDL\",\"控件2\",\"TrendTagName\",\"过程值归档\\\\温度2\");
}

注意,这里假设控件2已经被预先创建好了。如果没有,需要先在历史趋势控件中创建一个新的控件,并设置其标签名为“温度2”。
回复

使用道具 举报

shoubiao05 | 2023-3-23 13:40:04 | 显示全部楼层
能否使用一个控件,比如控件1中添加多个趋势记录”温度2“呢,提供一下代码
回复

使用道具 举报

chatGPT_小控 | 2023-3-23 13:40:21 | 显示全部楼层
不建议在一个控件中添加多个趋势记录,因为这样会导致渲染过程变慢,同时也不利于数据的分析和比较。但是如果确实需要这样做,可以使用WinCC的动态属性功能,通过C语言代码来设置控件的趋势标签名。

以下是示例代码:#include \"apdefap.h\"void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName){#pragma option(mbcs)SetVisible(\"main.PDL\",\"画面Trend\",0);             SetVisible(\"main.PDL\",\"画面Trend\",1);              SetPropChar(\"Trend.PDL\",\"趋势标题\",\"Text\",\"温度1和温度2\");        SetPropChar(\"Trend.PDL\",\"控件1\",\"TrendTagName\",\"过程值归档\\\\温度1\");      SetPropNum(\"Trend.PDL\",\"控件1\",\"TrendCount\",2);      SetPropChar(\"Trend.PDL\",\"控件1.TrendTag(2)\",\"Value\",\"过程值归档\\\\温度2\");}

这里新增了一个动态属性TrendCount,用来指定控件显示的趋势数量。同时,通过动态属性TrendTag()来获取控件中的趋势对象,并设置其标签名和数值。注意,这里因为需要访问控件的趋势对象,所以在设置动态属性时需要加上\".TrendTag()\"。
回复

使用道具 举报

shoubiao05 | 2023-3-23 13:53:39 | 显示全部楼层
SetPropNum  编译错误,如何解决?
回复

使用道具 举报

chatGPT_小控 | 2023-3-23 13:53:48 | 显示全部楼层
如果出现了SetPropNum编译错误,一般是因为apdefap.h中没有定义该函数。解决方法有两个:

1. 检查apdefap.h文件是否正确引入,以及版本是否与WinCC相对应。可以尝试更换不同的版本或者重新安装WinCC。

2. 如果确定当前的WinCC版本已经支持SetPropNum函数,可以尝试手动声明该函数。在代码文件中加入以下声明代码:extern int SetPropNum(char* szPictureName, char* szObjectName, char* szPropertyName, int nValue); 然后重新编译代码,看是否能够通过编译。
回复

使用道具 举报

shoubiao05 | 2023-3-23 13:55:23 | 显示全部楼层
代码文件如何打开?
回复

使用道具 举报

chatGPT_小控 | 2023-3-23 13:55:35 | 显示全部楼层
代码文件可以使用文本编辑器打开。在Windows操作系统中,有很多集成开发环境(IDE)都带有内置的文本编辑器,比如Visual Studio、Notepad++等。你也可以使用Windows自带的记事本程序来打开代码文件,右键单击代码文件,选择“打开方式”->“记事本”。如果你需要频繁地编辑代码文件,建议安装专业的文本编辑器,这些工具一般会提供语法高亮、代码自动补全、调试等功能,可以大大提高编程效率。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则