codesys-client
Version:
Node.js Codesys client for reading and writing PLC data using network variable lists (NVL)
93 lines (92 loc) • 2.45 kB
TypeScript
/// <reference types="node" />
import { IecType } from "iec-61131-3/dist/types/types";
export interface ReceiverSettings {
/**
* UDP port to listen for incoming data
* Default is 1202
*/
ListeningPort?: number;
/**
* IP address of the network interface to use for listening
* Default: 127.0.0.1
*/
LocalAddress?: string;
}
/**
* A packet containing data for a list
*/
export interface Packet {
/**
* Packet header
*/
header: PacketHeader;
/**
* Packet payload
*/
payload: PacketData;
/**
* Raw data of the whole packet
*/
rawData: Buffer;
}
/**
* Received packet header
*/
export interface PacketHeader {
/** Raw header data */
rawData: Buffer;
/** Codesys header identity */
identity: Buffer;
/** Message type (0 = network variable) */
type: number;
/** Index - Network variable list ID (Listidentifier at PLC) */
index: number;
/** SubIndex - If multiple packets -> number of the packet */
subIndex: number;
/** Variable count - how many variables */
variableCount: number;
/** Byte length of the whole packet inc. header */
packetLength: number;
/** Increasing counter value*/
counter: number;
/** Flags */
flags: number;
/** Flags as string array */
flagsStr: string[];
/** Checksum of the variable definiton, changes only if variables added/removed (if sent, otherwise 0) */
checksum: number;
/** Length of the data payload (calculated by ourselves)*/
payloadLength: number;
}
export interface PacketData {
rawData: Buffer;
parsed: Record<string, unknown>;
}
export interface PacketBufferEntry {
handled: boolean;
counter: number;
packets: Packet[];
totalDataBytes: number;
}
export interface Listener {
listID: number;
dataType: IecType;
callback: (data: unknown, listener: Listener) => void;
}
export interface SenderSettings {
/**
* Target IP address / broadcast address to send data to
* Default is 255.255.255.255 (broadcast)
*/
targetAddress?: string;
/**
* UDP port to send outgoing data
* Default is 1202
*/
targetPort?: number;
/**
* Time delay (milliseconds) between packets sent
* Default is 5 ms
*/
delayBetweenPackets?: number;
}