declarations
Version:
[](https://www.npmjs.com/package/declarations)
665 lines (578 loc) • 31.2 kB
TypeScript
// Type definitions for node-snap7 0.2.2
// Project: https://github.com/mathiask88/node-snap7
// Definitions by: Heilingbrunner <https://github.com/heilingbrunner>
// Definitions: https://github.com/borisyankov/DefinitelyTyped
// see: https://www.npmjs.com/package/node-snap7#api
/// <reference path="../node/node.d.ts" />
declare module "node-snap7" {
export enum ConnectionType {
CONNTYPE_PG = 0x01,
CONNTYPE_OP = 0x02,
CONNTYPE_BASIC = 0x03
}
export enum ParamNumber {
RemotePort = 2,
PingTimeout = 3,
SendTimeout = 4,
RecvTimeout = 5,
SrcRef = 7,
DstRef = 8,
SrcTSap = 9,
PDURequest = 10
}
export enum Area {
S7AreaPE = 0x81,
S7AreaPA = 0x82,
S7AreaMK = 0x83,
S7AreaDB = 0x84,
S7AreaCT = 0x1C,
S7AreaTM = 0x1D
}
export enum WordLen {
S7WLBit = 0x01,
S7WLByte = 0x02,
S7WLWord = 0x04,
S7WLDWord = 0x06,
S7WLReal = 0x08,
S7WLCounter = 0x1C,
S7WLTimer = 0x1D
}
export enum BlockType {
Block_OB = 0x38,
Block_DB = 0x41,
Block_SDB = 0x42,
Block_FC = 0x43,
Block_SFC = 0x44,
Block_FB = 0x45,
Block_SFB = 0x46
}
export enum SubBlockType {
SubBlk_OB = 0x08,
SubBlk_DB = 0x0A,
SubBlk_SDB = 0x0B,
SubBlk_FC = 0x0C,
SubBlk_SFC = 0x0D,
SubBlk_FB = 0x0E,
SubBlk_SFB = 0x0F
}
export enum LangType {
BlockLangAWL = 0x01,
BlockLangKOP = 0x02,
BlockLangFUP = 0x03,
BlockLangSCL = 0x04,
BlockLangDB = 0x05,
BlockLangGRAPH = 0x06
}
export enum Status {
S7CpuStatusUnknown = 0x00,
S7CpuStatusRun = 0x08,
S7CpuStatusStop = 0x04
}
interface MultiVarRead{
Area: Area;
WordLen: WordLen;
DBNumber?: number;
Start: number;
Amount: number;
}
interface MultiVarWrite{
Area: Area;
WordLen: WordLen;
DBNumber?: number;
Start: number;
Amount: number;
Data: Buffer;
}
interface MultiVarsReadResult{
Result: number; //Error Code
Data: Buffer;
}
interface MultiVarsWriteResult{
Result: number; //Error Code
}
interface S7Client_Static {
new(): S7Client;
//Static members here ...
}
interface S7Client {
//Instance members here
//API - Control functions
/**
* Connects the client to the PLC with the parameters specified in the previous call of ConnectTo() or SetConnectionParams().
* - cb: The optional callback parameter will be executed after connection attempt
* If callback is not set the function is blocking and returns true on success or false on error.
* If callback is set the function is non-blocking and an error argument is given to the callback.
*/
Connect(callback?: (err: any) => void): boolean;
/**
* Connects the client to the hardware at ip, rack, slot coordinates.
* - ip: PLC/Equipment IPV4 Address ex. “192.168.1.12”
* - rack: PLC Rack number
* - slot: PLC Slot number
* - cb: The optional callback parameter will be executed after connection attempt
* If callback is not set the function is blocking and returns true on success or false on error.
* If callback is set the function is non-blocking and an error argument is given to the callback.
*/
ConnectTo(ip: string, rack: number, slot: number, callback?: (err: any) => void): boolean;
/**
* Sets internally ip, localTSAP, remoteTSAP coordinates.
* - ip PLC/Equipment IPv4 address ex. “192.168.1.12”
* - localTSAP Local TSAP (PC TSAP)
* - remoteTSAP Remote TSAP (PLC TSAP)
* Returns true on success or false on error.
*/
SetConnectionParams(ip: string, localTSAP: any, remoteTSAP: any): boolean;
/**
* Sets the connection resource type, i.e the way in which the Clients connects to a PLC.
*/
SetConnectionType(connectionType: ConnectionType): void;
/**
* Disconnects “gracefully” the Client from the PLC.
* Returns true on success or false on error.
*/
Disconnect(): void;
/**
* Reads an internal Client object parameter.
* Returns the parameter value on success or false on error.
*/
GetParam(paramNumber: ParamNumber): any;
/**
* Sets an internal Client object parameter.
* paramNumber One from the parameter list above
* value New parameter value
* Returns true on success or false on error.
*/
SetParam(paramNumber: ParamNumber, value: any): boolean;
//API - Data I/O functions
/**
* This is the main function to read data from a PLC. With it you can read DB, Inputs, Outputs, Merkers, Timers and Counters.
* - area Area identifier (see table below)
* - dbNumber DB number if area = S7AreaDB, otherwise ignored
* - start Offset to start
* - amount Amount of words to read
* - wordLen Word size (see table below)
* The optional callback parameter will be executed after read
* If callback is not set the function is blocking and returns a buffer object on success or false on error.
* If callback is set the function is non-blocking and an error and result argument is given to the callback.
*/
ReadArea(area: Area, dbNumber: number, start: number, amount: number, wordLen: WordLen, callback?: (err: any, data: Buffer) => void): Buffer|boolean;
/**
* This is the main function to write data into a PLC.
* - area Area identifier (see table below)
* - dbNumber DB number if area = S7AreaDB, otherwise ignored
* - start Offset to start
* - amount Amount of words to read
* - wordLen Word size (see table below)
* - buffer User buffer
* - The optional callback parameter will be executed after write
* If callback is not set the function is blocking and returns true on success or false on error.
* If callback is set the function is non-blocking and an error argument is given to the callback.
*/
WriteArea(area: Area, dbNumber: number, start: number, amount: number, wordLen: WordLen, buffer: Buffer, callback?: (err: any) => void): boolean;
/**
* This is a lean function of ReadArea() to read PLC DB.
* It simply internally calls ReadArea() with area = S7Client.S7AreaDB and wordLen = s7client.S7WLByte.
* - dbNumber DB number
* - start Offset to start
* - size Size to read (bytes)
* - The optional callback parameter will be executed after read
* If callback is not set the function is blocking and returns a buffer object on success or false on error.
* If callback is set the function is non-blocking and an error and result argument is given to the callback.
*/
DBRead(dbNumber: number, start: number, size: number, callback?: (err: any, data: any) => void): Buffer|boolean;
/**
* This is a lean function of WriteArea() to write PLC DB.
* It simply internally calls WriteArea() with area = S7Client.S7AreaDB and wordLen = s7client.S7WLByte.
* - dbNumber DB number
* - start Offset to start
* - size Size to write (bytes)
* - buffer User buffer
* - The optional callback parameter will be executed after write
* If callback is not set the function is blocking and returns true on success or false on error.
* If callback is set the function is non-blocking and an error argument is given to the callback.
*/
DBWrite(dbNumber: number, start: number, size: number, buffer: Buffer, callback?: (err: any) => void): boolean;
/**
* This is a lean function of ReadArea() to read PLC process outputs.
* It simply internally calls ReadArea() with area = S7Client.S7AreaPA and wordLen = s7client.S7WLByte.
* - start Offset to start
* - size Size to read (bytes)
* - The optional callback parameter will be executed after read
* If callback is not set the function is blocking and returns a buffer object on success or false on error.
* If callback is set the function is non-blocking and an error and result argument is given to the callback.
*/
ABRead(start: number, size: number, callback?: (err: any, data: Buffer) => void): Buffer|boolean;
/**
* This is a lean function of WriteArea() to write PLC process outputs.
* It simply internally calls WriteArea() with area = S7Client.S7AreaPA and wordLen = s7client.S7WLByte.
* - start Offset to start
* - size Size to write (bytes)
* - buffer User buffer
* - The optional callback parameter will be executed after write
* If callback is not set the function is blocking and returns true on success or false on error.
* If callback is set the function is non-blocking and an error argument is given to the callback.
*/
ABWrite(start: number, size: number, buffer: Buffer, callback?: (err: any) => void): boolean;
/**
* This is a lean function of ReadArea() to read PLC process inputs.
* It simply internally calls ReadArea() with area = S7Client.S7AreaPE and wordLen = s7client.S7WLByte.
* - start Offset to start
* - size Size to read (bytes)
* - The optional callback parameter will be executed after read
* If callback is not set the function is blocking and returns a buffer object on success or false on error.
* If callback is set the function is non-blocking and an error and result argument is given to the callback.
*/
EBRead(start: number, size: number, callback?: (err: any, data: Buffer) => void): Buffer|boolean;
/**
* This is a lean function of WriteArea() to write PLC process inputs.
* It simply internally calls WriteArea() with area = S7Client.S7AreaPE and wordLen = s7client.S7WLByte.
* - start Offset to start
* - size Size to write (bytes)
* - buffer User buffer
* - The optional callback parameter will be executed after write
* If callback is not set the function is blocking and returns true on success or false on error.
* If callback is set the function is non-blocking and an error argument is given to the callback.
*/
EBWrite(start: number, size: number, buffer: Buffer, callback?: (err: any) => void): boolean;
/**
* This is a lean function of ReadArea() to read PLC Merkers.
* It simply internally calls ReadArea() with area = S7Client.S7AreaMK and wordLen = s7client.S7WLByte.
* - start Offset to start
* - size Size to read (bytes)
* - The optional callback parameter will be executed after read
* If callback is not set the function is blocking and returns a buffer object on success or false on error.
* If callback is set the function is non-blocking and an error and result argument is given to the callback.
*/
MBRead(start: number, size: number, callback?: (err: any, data: Buffer) => void): Buffer|boolean;
/**
* This is a lean function of WriteArea() to write PLC Merkers.
* It simply internally calls WriteArea() with area = S7Client.S7AreaMK and wordLen = s7client.S7WLByte.
* - start Offset to start
* - size Size to write (bytes)
* - buffer User buffer
* - The optional callback parameter will be executed after write
* If callback is not set the function is blocking and returns true on success or false on error.
* If callback is set the function is non-blocking and an error argument is given to the callback.
*/
MBWrite(start: number, size: number, buffer: Buffer, callback?: (err: any) => void): boolean;
/**
* This is a lean function of ReadArea() to read PLC Timers.
* It simply internally calls ReadArea() with area = S7Client.S7AreaTM and wordLen = S7Client.S7WLTimer.
* - start Offset to start
* - amount Number of timers
* - The optional callback parameter will be executed after read
* If callback is not set the function is blocking and returns a buffer object on success or false on error.
* If callback is set the function is non-blocking and an error and result argument is given to the callback.
*/
TMRead(start: number, size: number, callback?: (err: any, data: Buffer) => void): Buffer|boolean;
/**
* This is a lean function of WriteArea() to write PLC Timers.
* It simply internally calls WriteArea() with area = S7Client.S7AreaTM and wordLen = S7Client.S7WLTimer.
* - start Offset to start
* - amount Number of timers
* - buffer User buffer
* - The optional callback parameter will be executed after write
* If callback is not set the function is blocking and returns true on success or false on error.
* If callback is set the function is non-blocking and an error argument is given to the callback.
*/
TMWrite(start: number, size: number, buffer: Buffer, callback?: (err: any) => void): boolean;
/**
* This is a lean function of ReadArea() to read PLC Counters.
* It simply internally calls ReadArea() with area = S7Client.S7AreaCT and wordLen = S7Client.S7WLCounter.
* - start Offset to start
* - amount Number of counters
* - The optional callback parameter will be executed after read
* If callback is not set the function is blocking and returns a buffer object on success or false on error.
* If callback is set the function is non-blocking and an error and result argument is given to the callback.
*/
CTRead(start: number, size: number, callback?: (err: any, data: Buffer) => void): Buffer|boolean;
/**
* This is a lean function of WriteArea() to write PLC Counters.
* It simply internally calls WriteArea() with area = S7Client.S7AreaCT and wordLen = S7Client.S7WLCounter.
* - start Offset to start
* - amount Number of counters
* - buffer User buffer
* - The optional callback parameter will be executed after write
* If callback is not set the function is blocking and returns true on success or false on error.
* If callback is set the function is non-blocking and an error argument is given to the callback.
*/
CTWrite(start: number, size: number, buffer: Buffer, callback?: (err: any) => void): boolean;
/**
* This is function allows to read different kind of variables from a PLC in a single call. With it you can read DB,
* Inputs, Outputs, Merkers, Timers and Counters.
* - multiVars Array of objects with read information (see structure below)
* - The optional callback parameter will be executed after read
* If callback is not set the function is blocking and returns an array on success or false on error.
* If callback is set the function is non-blocking and an error and result argument is given to the callback.
*/
ReadMultiVars(multiVars: MultiVarRead[], callback?: (err: any, data: MultiVarsReadResult[]) => void): MultiVarsReadResult[]|boolean;
/**
* This is function allows to write different kind of variables into a PLC in a single call. With it you can write DB,
* Inputs, Outputs, Merkers, Timers and Counters.
* - multiVars Array of objects with write information (see structure below)
* - The optional callback parameter will be executed after write
* If callback is not set the function is blocking and returns an array on success or false on error.
* If callback is set the function is non-blocking and an error and result argument is given to the callback.
*/
WriteMultiVars(multiVars: MultiVarWrite[], callback?: (err: any, data: MultiVarsWriteResult[]) => void): MultiVarsWriteResult[]|boolean;
//API - Directory functions
/**
* This function returns an object of the AG blocks amount divided by type.
* - The optional callback parameter will be executed after completion
* If callback is not set the function is blocking and returns an object (see below) on success or false on error.
* If callback is set the function is non-blocking and an error and result argument is given to the callback.
*/
ListBlocks(callback?: (err: any, data: Object) => void): Object|boolean;
/**
* This function returns an array of the AG list of a specified block type.
* - blockType Type of block (see table below)
* - The optional callback parameter will be executed after completion
* If callback is not set the function is blocking and returns an array on success or false on error.
* If callback is set the function is non-blocking and an error and result argument is given to the callback.
*/
ListBlocksOfType(blockType: BlockType, callback?: (err: any, data: any) => void): any|boolean;
/**
* Returns an object with detailed information about a given AG block. This function is very useful if you need to read or write
* data in a DB which you do not know the size in advance (see MC7Size field)
* - blockType Type of block (see table above)
* - blockNum Number of block
* - The optional callback parameter will be executed after completion
* If callback is not set the function is blocking and returns an object (see below) on success or false on error.
* If callback is set the function is non-blocking and an error and result argument is given to the callback.
*/
GetAgBlockInfo(blockType: BlockType, blockNum: number, callback?: (err: any, data: any) => void): any|boolean;
/**
* Returns detailed information about a block present in a user buffer. This function is usually used in conjunction with FullUpload().
* An uploaded block saved to disk, could be loaded in a user buffer and checked with this function.
* - buffer User buffer
* Returns an object (see example above) on success or false on error.
*/
GetPgBlockInfo(buffer: Buffer): Object|boolean;
//API - Block oriented functions
/**
* Uploads a block from AG. The whole block (including header and footer) is copied into the user buffer.
* - blockType Type of block (see table above)
* - blockNum Number of block
* - The optional callback parameter will be executed after completion
* If callback is not set the function is blocking and returns a Buffer object on success or false on error.
* If callback is set the function is non-blocking and an error and result argument is given to the callback.
*/
FullUpload(blockType: BlockType, blockNum: number, callback?: (err: any, data: Object) => void): Object|boolean;
/**
* Uploads a block body from AG. Only the block body (but header and footer) is copied into the user buffer.
* - blockType Type of block (see table above)
* - blockNum Number of block
* - The optional callback parameter will be executed after completion
* If callback is not set the function is blocking and returns a Buffer object on success or false on error.
* If callback is set the function is non-blocking and an error and result argument is given to the callback.
*/
Upload(blockType: BlockType, blockNum: number, callback?: (err: any, data: Object) => void): Object|boolean;
/**
* Downloads a block into AG. A whole block (including header and footer) must be available into the user buffer.
* - blockNum Number of block
* - buffer User buffer
* - The optional callback parameter will be executed after completion
* If callback is not set the function is blocking and returns true on success or false on error.
* If callback is set the function is non-blocking and an error argument is given to the callback.
* If the parameter blockNum is -1, the block number is not changed else the block is downloaded with the provided number (just like a “Download As…”).
*/
Download(blockNum: number, buffer: Buffer, callback?: (err: any) => void): boolean;
/**
* Deletes a block into AG.
* !!! There is no undo function available !!!
* - blockType Type of block (see table above)
* - blockNum Number of block
* - The optional callback parameter will be executed after completion
* If callback is not set the function is blocking and returns true on success or false on error.
* If callback is set the function is non-blocking and an error argument is given to the callback.
*/
Delete(blockType: BlockType, blockNum: number, callback?: (err: any) => void): boolean;
/**
* Uploads a DB from AG. This function is equivalent to Upload() with BlockType = Block_DB but it uses a different approach
* so it’s not subject to the security level set.
* Only data is uploaded.
* - dbNumber DB number
* - The optional callback parameter will be executed after completion
* If callback is not set the function is blocking and returns a Buffer object on success or false on error.
* If callback is set the function is non-blocking and an error and result argument is given to the callback.
* This function first gathers the DB size via GetAgBlockInfo() then calls DBRead().
*/
DBGet(dbNumber: number, callback?: (err: any, data: Buffer) => void): Buffer|boolean;
/**
* Fills a DB in AG with a given byte without the need of specifying its size.
* - dbNumber DB number
* - fillChar char or char code
* - The optional callback parameter will be executed after completion
* If callback is not set the function is blocking and returns true on success or false on error.
* If callback is set the function is non-blocking and an error argument is given to the callback.
*/
DBFill(dbNumber: number, fillChar: string, callback?: (err: any) => void): boolean;
//API - Date/Time functions
/**
* Reads PLC date and time.
* - The optional callback parameter will be executed after completion
* If callback is not set the function is blocking and returns a javascript Date() object on success or false on error.
* If callback is set the function is non-blocking and an error and result argument is given to the callback.
*/
GetPlcDateTime(callback?: (err: any, data: any) => void): any|boolean;
/**
* Sets the PLC date and time.
* - dateTime
* - The optional callback parameter will be executed after completion
* The dateTime argument can be a javascript Date() object or an object with the structure below.
* {
* "year": 2015, // year
* "month": 4, // months since January 0-11
* "day": 3, // day of the month 1-31
* "hours": 19, // hours since midnight 0-23
* "minutes": 37, // minutes after the hour 0-59
* "seconds": 0 // seconds after the minute 0-59
* }
* If callback is not set the function is blocking and returns a true on success or false on error.
* If callback is set the function is non-blocking and an error argument is given to the callback.
*/
SetPlcDateTime(dateTime: Date, callback?: (err: any) => void): boolean;
/**
* Sets the PLC date and time in accord to the PC system Date/Time.
* - The optional callback parameter will be executed after completion
* If callback is not set the function is blocking and returns true on success or false on error.
* If callback is set the function is non-blocking and an error argument is given to the callback.
*/
SetPlcSystemDateTime(callback?: (err: any) => void): boolean;
//API - System info functions
/**
* Reads a partial list of given idand index.
* - The optional callback parameter will be executed after completion
* If callback is not set the function is blocking and returns a buffer on success or false on error.
* If callback is set the function is non-blocking and an error and result argument is given to the callback.
*/
ReadSZL(id: number, index: number, callback?: (err: any, data: any) => void): Buffer|boolean;
/**
* Reads the directory of the partial lists.
* - The optional callback parameter will be executed after completion
* If callback is not set the function is blocking and returns an array on success or false on error.
* If callback is set the function is non-blocking and an error and result argument is given to the callback.
*/
ReadSZLList(callback?: (err: any, data: any) => void): any|boolean;
/**
* Gets CPU order code and version info.
* - The optional callback parameter will be executed after completion
* If callback is not set the function is blocking and returns an object on success or false on error.
* If callback is set the function is non-blocking and an error and result argument is given to the callback.
*/
GetOrderCode(callback?: (err: any, data: any) => void): any|boolean;
/**
* Gets CPU module name, serial number and other info.
* - The optional callback parameter will be executed after completion
* If callback is not set the function is blocking and returns an object on success or false on error.
* If callback is set the function is non-blocking and an error and result argument is given to the callback.
*/
GetCpuInfo(callback?: (err: any, data: any) => void): any|boolean;
/**
* Gets CP (communication processor) info.
* - The optional callback parameter will be executed after completion
* If callback is not set the function is blocking and returns an object on success or false on error.
* If callback is set the function is non-blocking and an error and result argument is given to the callback.
*/
GetCpInfo(callback?: (err: any, data: any) => void): any|boolean;
//API - PLC control functions
/**
* Puts the CPU in RUN mode performing an HOT START.
* - The optional callback parameter will be executed after completion
* If callback is not set the function is blocking and returns true on success or false on error.
* If callback is set the function is non-blocking and an error argument is given to the callback.
*/
PlcHotStart(callback?: (err: any) => void): boolean;
/**
* Puts the CPU in RUN mode performing a COLD START.
* - The optional callback parameter will be executed after completion
* If callback is not set the function is blocking and returns true on success or false on error.
* If callback is set the function is non-blocking and an error argument is given to the callback.
*/
PlcColdStart(callback?: (err: any) => void): boolean;
/**
* Puts the CPU in STOP mode.
* - The optional callback parameter will be executed after completion
* If callback is not set the function is blocking and returns true on success or false on error.
* If callback is set the function is non-blocking and an error argument is given to the callback.
*/
PlcStop(callback?: (err: any) => void): boolean;
/**
* Performs the Copy Ram to Rom action.
* - timeout Maximum time expected to complete the operation (ms)
* - The optional callback parameter will be executed after completion or on timeout
* If callback is not set the function is blocking and returns true on success or false on error.
* If callback is set the function is non-blocking and an error argument is given to the callback.
* Not all CPUs support this operation. The CPU must be in STOP mode.
*/
CopyRamToRom(timeout: number, callback?: (err: any) => void): boolean;
/**
* Performs the Memory compress action.
* - timeout Maximum time expected to complete the operation (ms)
* - The optional callback parameter will be executed after completion or on timeout
* If callback is not set the function is blocking and returns true on success or false on error.
* If callback is set the function is non-blocking and an error argument is given to the callback.
*/
Compress(timeout: number, callback?: (err: any) => void): boolean;
//API - Security functions
/**
* Send the password to the PLC to meet its security level.
* - password Password
* - The optional callback parameter will be executed after completion
* If callback is not set the function is blocking and returns true on success or false on error.
* If callback is set the function is non-blocking and an error argument is given to the callback.
* A password accepted by a PLC is an 8 chars string, a longer password will be trimmed, and a shorter one will be "right space padded".
*/
SetSessionPassword(password: string, callback?: (err: any) => void): boolean;
/**
* Clears the password set for the current session (logout).
* - The optional callback parameter will be executed after completion
* If callback is not set the function is blocking and returns true on success or false on error.
* If callback is set the function is non-blocking and an error argument is given to the callback.
*/
ClearSessionPassword(callback?: (err: any) => void): boolean;
/**
* Gets the CPU protection level info.
* - The optional callback parameter will be executed after completion
* If callback is not set the function is blocking and returns the protection object on success or false on error.
* If callback is set the function is non-blocking and an error and result argument is given to the callback.
*/
GetProtection(callback?: (err: any, data: any) => void): any|boolean;
//API - Properties
/**
* Returns the last job execution time in milliseconds or false on error.
*/
ExecTime(): number|boolean;
/**
* Returns the last job result.
*/
LastError(): any;
/**
* Returns the PDU length requested by the client or false on error. The requested PDU length can be modified with SetParam().
*/
PduRequested(): number|boolean;
/**
* Returns the PDU length negotiated between the client and the PLC during the connection or false on error.
* It’s useful to know the PDU negotiated when we need to call ReadMultivar() or WriteMultiVar().
* All other data transfer functions handle this information by themselves and split the telegrams automatically if needed.
*/
PduLength(): number|boolean;
/**
* Returns the CPU status (running/stopped).
* The optional callback parameter will be executed after completion
* If callback is not set the function is blocking and returns the CPU status on success or false on error.
* If callback is set the function is non-blocking and an error and result argument is given to the callback.
*/
PlcStatus(callback?: (err: any, data: Status) => void): Status|boolean;
/**
* Returns the connection status.
*/
Connected(): any;
/**
* Returns a textual explanation of a given error number.
* - errNum Error number
*/
ErrorText(err: number): string;
}
export var S7Client :S7Client_Static;
}