ncWriteDnetIO (Write DeviceNet I/O)

NI-DNET Programmer

ncWriteDnetIO (Write DeviceNet I/O)

Purpose

Write output data to an I/O Object.

Format

LabVIEW

C

NCTYPE_STATUS
ncWriteDnetIO(	NCTYPE_OBJH	ObjHandle,
		NCTYPE_UINT32	SizeofData,
		NCTYPE_ANY_P	Data);

Input

ObjHandle Object handle of an open I/O Object
SizeofData Size of Data buffer in bytes (C only)
Data Output data

Output

None

Function Description

ncWriteDnetIO writes output data to an NI-DNET I/O Object.

Since each I/O Object continuously produces output data onto the DeviceNet network at a specified rate, calling ncWriteDnetIO multiple times for each output message is redundant and can often waste valuable processor time. To synchronize calls to ncWriteDnetIO with each output message, you can wait for input data (see ncReadDnetIO), or if no input data exists for the device, you can use an idle wait (such as wait for 10 ms).

The output data bytes passed to ncWriteDnetIO are normally sent to the output assembly of a remote DeviceNet slave device. The format of this output assembly is normally documented either by the device vendor or within the DeviceNet Specification itself.

The bytes of a device's output assembly often consist of multiple data members rather than a single value. For C, you can often place each data member into the output bytes by using typecasting. For LabVIEW, you can often place each data member into the output bytes using the ncConvertForDnetWrite function. For more information on output assemblies and how to place individual data members into the output bytes, refer to the NI-DNET User Manual.

Parameter Descriptions

ObjHandle

Description ObjHandle must contain an object handle returned from ncOpenDnetIO. In LabVIEW, ObjHandle passes through the VI as an output so that it can be used for subsequent function calls for the object.
Values The encoding of ObjHandle is internal to NI-DNET.

SizeofData

Description For C, SizeofData is the size of the buffer referenced by Data. It is used to verify that the Data buffer is large enough to hold the output bytes. This size is normally obtained using the C language sizeof function and has no direct relation to the number of bytes produced on the network.

For LabVIEW, since Data is obtained directly as an input, this size is not needed.

The actual number of bytes produced on the I/O connection is determined by the OutputLength parameter of ncOpenDnetIO and not this size.
Values sizeof (buffer referenced by Data)

Data

Description Output data. The format of these output bytes is specific to your DeviceNet device.
Values Output data bytes

Examples

LabVIEW

Write 4 output bytes to an I/O Object.

C

Write 10 output bytes to the I/O Object referenced by objh.

NCTYPE_STATUS	status;
NCTYPE_OBJH	objh;
NCTYPE_UINT8	output[10];
status = ncWriteDnetIO(objh, 10, output);