WINCC技巧

更新时间:2023-11-12 20:01:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

如何使用函数 \来读多个 WinCC 变量?

说明:

在WinCC全局C脚本中,有默认几个\函数,用于读取多个WinCC变量:

? ?

BOOL GetTagMultiWait(const char* pszFormat, const char* pszTag, void* pvValue, ...) BOOL GetTagMultiStateWait(DWORD* pdwState, const char* pszFormat, const* pszTag, void* pvValue, ...)

? BOOL GetTagMultiStateQCWait(DWORD* pdwState, DWORD* pdwQC, const char* pszFormat, const* pszTag, void* pvValue, ...)

这些函数统称为\函数,也就是直接从PLC读取变量值,而不通过WinCC数据管理器的画面。这些函数参数的数量是变化的;取决于读取变量的个数。 参数:

函数包含以下参数:

? DWORD* pdwState (仅用于GetTagMultiStateWait() and GetTagMultiStateQCWait()) 使用\函数必须有数组对应DWORD变量(缓存)。数据区域第一个元素的指针被传递到\函数。函数\连续将WinCC变量读取的变量状态写到传送地址中。

? DWORD* pdwQC (仅用于GetTagMultiStateQCWait())

使用\函数必须有数组对应DWORD变量(缓存)。数据区域第一个元素的指针被传递到\函数。函数\连续将WinCC变量读取的质量代码写到传送地址中。

? const char* pszFormat

使用\函数必需一个字符串变量(缓存)并用读取WinCC变量的格式信息对其初始化。字符串第一个元素的指针被传递到\函数。

1

? const char* pszTag

\是一个包含读取WinCC变量名的字符串里第一个元素的指针。 使用\函数必需为每一个读取的变量设定\字符串。

? void* pvValue

\是一个地址,是\函数保存读取WinCC变量目录的地址。 使用\函数必需为每一个读取的变量设定地址。

返回值:

当至少其中一个参数设定为\,函数\返回值为\,否则返回值为\。由于这个原因,不能使用返回值来检查读取WinCC变量是否成功。因此,需要使用\或\函数和变量状态、质量代码用于错误分析。

在WinCC帮助提供了WinCC变量质量的信息(变量状态和质量代码):

? ?

\通讯 > 通讯 - 诊断 > 变量质量> 变量状态\ \通讯 > 通讯 - 诊断> 变量质量> 变量质量代码\

在WinCC帮助提供了关于\函数例子的常规信息:

? \使用WinCC > 用于创建函数和动作的ANSI-C> ANSI-C function descriptions > Internal functions > tag > get > Functionality of the GetTag functions\

下表描述了格式行中可用的格式说明,可以与WinCC和C数据类型一起使用:

格式 WinCC 数据类型 C 数据类型 2

\ 整型WinCC 变量 32-位变量(4 字节) 格式说明 \用于将WinCC整型变量写入到C变量。不考虑WinCC变量的尺寸,必须要保留4字节存储空间,因为使用\格式时,函数GetTagMulti()是向目标地址写入32位 (4 字节) 值。条目 ID: 26710239 描述了如何确定 C变量存储尺寸。可用的数据类型包括: ? 二进制变量 ? 有符号8位数 ? 有符号8位数 ? ? ? ? BOOL DWORD int long ? 无符号8位数 ? 无符号16位数 ? 有符号32位数 例子: ? 无符号32位数 ? 为了读取WinCC无符号8位数值,可以创建C变量类型为DWORD,对于函数\传送变量地址。 ? 为了读取WinCC有符号8位数值,可以创建C变量类型为int 或 long,对于函数\传送变量地址。 警告! 在使用WinCC\无符号32位数\数据类型,对于最高位(31位), 函数GetTagMulti()生成转换错误并返回0值。 \ 浮点型WinCC变\双精度型\变量 量 格式说明 \用于将WinCC浮点型变量写入到C变量。必须要保留8字节? 浮点数32存储空间,因为使用\格式时,函数GetTagMulti()是向目标地址写入64位 位IEEE (8 字节) 值。必须使用\双精度\数据类型。 3

754 ? 例子: 浮点数64为了读取WinCC浮点数32位IEEE754 数值,可以创建C变量类型为位IEEE 754 \,对于函数\传送变量地址。 \ 文本WinCC变量 \字符型变量 (字符指针) 格式说明\用于将WinCC文本或文本参考变量写入到C变量。必须要保留\指针存储,指针地址传送给函数GetTagMulti()。必须使用\双精度\数据类型。 函数GetTagMulti() 保留足够存储空间用于WinCC文本变量的? 文本变量8位字符集 ? 文本变量16位字符内容,在保留的存储空间保存WinCC文本变量的内容,将传送地址写入预留集 ? 文本参考 例子: 为了读取WinCC文本值,可以创建C变量类型为\ (指针),对于函数\传送变量地址(一个指针接一个指针传送)。 存储地址。 配置出错情况下的现象:

以下描述了选择配置错误情况下的现象:

? 访问在WinCC变量管理中没有创建的变量

如果使用\或\函数访问在WinCC变量管理中没有创建的变量,则会在全局脚本诊断窗口或\输出窗口出现错误消息

\未知变量, 超时或访问失败 - 没有找到变量\。变量状态和质量代码包含了发生访问错误的信息。 警告!

在这种情况下,函数\不会在全局脚本诊断窗口或\输出窗口产生

4

\错误消息。 ?

使用C数据类型\读取WinCC浮点数

如果WinCC浮点数32位IEEE754类型变量写入C语言\型变量,函数\返回浮点数\。函数\不会在全局脚本诊断窗口或\输出窗口产生错误消息。变量状态和质量代码不包含产生错误的访问信息。 ?

使用C小于4个存储字节的数据类型读取WinCC整数

如果使用占用小于4字节 (如 BYTE, WORD, char 或short)的C 变量来读取WinCC整数,会导致未定义的系统动作,因为在这种情况下,不支持函数GetTagMulti()写入存储区。 ?

访问无符号32-位WinCC值,其最高位(Bit 31)被设定

如果WinCC无符号32位数(\类型变量写入C语言\型变量,函数\返回整数值\十六进制0x00000000)。在全局脚本诊断窗口或\输出窗口出现错误消息\未知变量, 超时或访问失败 - OLE访问失败\。然而,变量状态和质量代码不包含了发生访问错误的信息。 纠正:

o 如果可能,确保不要设置WinCC无符号32位数的第31位。

o 如果32-位WinCC变量是外部变量,则在WinCC变量管理器可配置的上限为:

2147483648 (十六进制0x80000000)。

5

本文来源:https://www.bwwdw.com/article/mplv.html

Top