单句柄系统的直接读取API
位数据
INT WINAPI ReadDeviceBit(LPCSTR sNodeName,LPCSTR sDeviceName,WORD* owData,WORD wCount);
16位数据
INT WINAPI ReadDevice16(LPCSTR sNodeName,LPCSTR sDeviceName,WORD* owData,WORD wCount);
32位数据
INT WINAPI ReadDevice32(LPCSTR sNodeName,LPCSTR sDeviceName,DWORD* odwData,WORD wCount);
16位BCD数据
INT WINAPI ReadDeviceBCD16(LPCSTR sNodeName,LPCSTR sDeviceName,WORD* owData,WORD wCount);
32位BCD数据
INT WINAPI ReadDeviceBCD32(LPCSTR sNodeName,LPCSTR sDeviceName,DWORD* odwData,WORD wCount);
单精度浮点型数据
INT WINAPI ReadDeviceFloat(LPCSTR sNodeName,LPCSTR sDeviceName,FLOAT* oflData,WORD wCount);
双精度浮点型数据
INT WINAPI ReadDeviceDouble(LPCSTR sNodeName,LPCSTR sDeviceName,DOUBLE* odbData,WORD wCount);
文本数据
INT WINAPI ReadDeviceStr(LPCSTR sNodeName,LPCSTR sDeviceName,LPSTR psData,WORD wCount);
通用数据
INT WINAPI ReadDevice(LPCSTR sNodeName,LPCSTR sDeviceName,LPVOID pData,WORD wCount,WORD wAppKind);
通用数据(Variant型)
INT WINAPI ReadDeviceVariant(LPCSTR sNodeName,LPCSTR sDeviceName,LPVARIANT pData,WORD wCount,WORD wAppKind);
单句柄系统API
位数据
INT WINAPI WriteDeviceBit(LPCSTR sNodeName,LPCSTR sDeviceName,WORD* pwData,WORD wCount);
16位数据
INT WINAPI WriteDevice16(LPCSTR sNodeName,LPCSTR sDeviceName,WORD* pwData,WORD wCount);
32位数据
INT WINAPI WriteDevice32(LPCSTR sNodeName,LPCSTR sDeviceName,DWORD* pdwData,WORD wCount);
16位BCD数据
INT WINAPI WriteDeviceBCD16(LPCSTR sNodeName,LPCSTR sDeviceName,WORD* pwData,WORD wCount);
32位BCD数据
INT WINAPI WriteDeviceBCD32(LPCSTR sNodeName,LPCSTR sDeviceName,DWORD* pdwData,WORD wCount);
单精度浮点型数据
INT WINAPI WriteDeviceFloat(LPCSTR sNodeName,LPCSTR sDeviceName,FLOAT* pflData,WORD wCount);
双精度浮点型数据
INT WINAPI WriteDeviceDouble(LPCSTR sNodeName,LPCSTR sDeviceName,DOUBLE* pdbData,WORD wCount);
文本数据
INT WINAPI WriteDeviceStr(LPCSTR sNodeName,LPCSTR sDeviceName,LPCSTR psData,WORD wCount);
通用数据
INT WINAPI WriteDevice(LPCSTR sNodeName,LPCSTR sDeviceName,LPVOID pData,WORD wCount,WORD wAppKind);
通用数据(Variant型)
INT WINAPI WriteDeviceVariant(LPCSTR sNodeName,LPCSTR sDeviceName,LPVARIANT pData,WORD wCount,WORD wAppKind);
单句柄组符号读取API
组符号
INT WINAPI ReadSymbol(LPCSTR sNodeName,LPCSTR sSymbolName,LPVOID oReadBufferData);
组符号(Variant型)
INT WINAPI ReadSymbolVariant(LPCSTR sNodeName,LPCSTR sSymbolName,LPVARIANT pData);
单句柄组符号写入API
组符号
INT WINAPI WriteSymbol(LPCSTR sNodeName,LPCSTR sSymbolName,LPVOID pWriteBufferData);
组符号(Variant型)
INT WINAPI WriteSymbolVariant(LPCSTR sNodeName,LPCSTR sSymbolName,LPVARIANT pData);
sNodeName:站点名称固定为#WinGP.
sDeviceName:直接描述GP-Pro EX中注册的符号名称和寄存器地址。
例如,使用符号
"SWITCH1"
例如,直接指定寄存器地址
"M100"
下表显示当在各种函数中使用符号时您可以指定的数据类型。
函数 |
符号数据类型 |
|||||||
---|---|---|---|---|---|---|---|---|
位 |
16位 |
32位 |
浮点 |
双精度 |
字符串 |
|||
带符号/无符号/十六进制 |
BCD |
带符号/无符号/十六进制 |
BCD |
|||||
XXXDeviceBit |
O |
- |
- |
- |
- |
- |
- |
- |
XXXDevice16 |
- |
O |
- |
- |
- |
- |
- |
- |
XXXDevice32 |
- |
- |
- |
O |
- |
- |
- |
- |
XXXDeviceBCD16 |
- |
- |
O |
- |
- |
- |
- |
- |
XXXDeviceBCD32 |
- |
- |
- |
- |
O |
- |
- |
- |
XXXDeviceFloat |
- |
- |
- |
- |
- |
O |
- |
- |
XXXDeviceDouble |
- |
- |
- |
- |
- |
- |
O |
- |
XXXDeviceStr |
- |
- |
- |
- |
- |
- |
- |
O |
XXXDevice |
O |
O |
O |
O |
O |
O |
O |
O |
pxxData:读/写数据的指针
为被读取或写入的值定义目标指针。对于各函数,请定义相应的数据格式指针。
访问的数据类型 |
参数类型 |
---|---|
位数据 |
WORD * pwData |
16位数据 |
WORD * pwData |
32位数据 |
DWORD * pdwData |
16位BCD数据 |
WORD * pwData |
32位BCD数据 |
DWORD * pdwData |
单精度浮点型数据 |
FLOAT * pflData |
双精度浮点型数据 |
DOUBLE * pdbData |
文本数据 |
LPTSTR psData |
通用数据 |
LPVOID pData |
通用数据(用于VB) |
LPVARIANT pData |
wCount:读取/写入数据数量
对于Read/WriteDeviceStr 函数,以单字节为单位表示文本数据量。如果符号指向16位寄存器,使用两个字符指定该数字。如果符号指向32位寄存器,则使用四个字符。
下表显示最大的读取/写入数据量。
访问的数据类型 |
读取/写入 |
---|---|
位数据 |
255 |
16位数据 |
1020 |
32位数据 |
510 |
16位BCD数据 |
1020 |
32位BCD数据 |
510 |
单精度浮点型数据 |
510 |
双精度浮点型数据 |
255 |
文本数据 |
1020个单字节字符 |
wAppKind:数据类型值
要指定数据类型值,您可以直接指定值,也可以用常量名指定。更多信息,请参阅下面的内容。
38.9.5.1 数据类型
Read/WriteDevice函数用参数指定数据类型。它允许您动态地更改数据类型。
返回值(NULL)
正常结束: 0
异常结束:错误代码
补充
当使用Read/WriteDeviceBit函数时
从D0位开始保存与wCount中的数据相同数量的数据。
例如,wCount = 20
|
F |
E |
D |
C |
B |
A |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
PwData |
16 |
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
PwData+1 |
* |
* |
* |
* |
* |
* |
* |
* |
* |
* |
* |
* |
20 |
19 |
18 |
17 |
处理多个连续位数据
使用Read/WriteDevice16和Read/WriteDevice32进行16/32位的操作比用Read/WriteDeviceBit效率更高。
「*"包含未定义的值。请使用应用程序屏蔽该值。
当使用Read/WriteDeviceBCD16/32函数时
使用这些函数在控制器/PLC内部处理BCD数据。注意,发送到/接收自该函数的数据(pxxData目录)是二进制数据,而不是BCD数据。
BCD转换在[WinGP SDK]中执行。不能处理负数。
函数名称 |
十进制符号 |
十六进制符号 |
---|---|---|
Read/WriteDeviceBCD16 |
0 ~ 9999 |
0000~270F |
Read/WriteDeviceBCD32 |
0 ~ 99999999 |
00000000~05F5E0FF |
当使用文本数据函数时
对于接收文本数据的变量,请留出足够的数据空间来接收数据。