UNPKG

s7-server

Version:
163 lines 4.33 kB
/** * Enhanced S7 PLC Server * Production-ready implementation with proper protocol handling */ import { EventEmitter } from 'events'; import { Buffer } from 'buffer'; import { S7Protocol } from '../protocol/s7-protocol'; import { MemoryManager } from '../memory/memory-manager'; import { S7Area, ServerStatus, CpuStatus, ServerParam, S7ServerEvent, RWAreaCallback } from '../types/s7-types'; export interface ServerConfig { localPort: number; workInterval: number; pduRequest: number; maxClients: number; resourceless: boolean; eventMask: number; } export declare class S7Server extends EventEmitter { private protocol; private memoryManager; private config; private cpuStatus; private _serverStatus; private _lastError; private resourceless; private rwCallback?; private eventMask; constructor(config?: Partial<ServerConfig>); /** * Setup protocol event handlers */ private setupProtocolHandlers; /** * Setup memory manager event handlers */ private setupMemoryHandlers; /** * Start the server */ start(): Promise<boolean>; /** * Start the server on specific address */ startTo(_address: string): Promise<boolean>; /** * Stop the server */ stop(): Promise<boolean>; /** * Set resourceless mode */ setResourceless(value: boolean): boolean; /** * Get server parameter */ getParam(paramNumber: ServerParam): number | false; /** * Set server parameter */ setParam(paramNumber: ServerParam, value: number): boolean; /** * Register memory area */ registerArea(areaCode: S7Area, index: number, buffer: Buffer): Promise<boolean>; /** * Unregister memory area */ unregisterArea(areaCode: S7Area, index: number): Promise<boolean>; /** * Get area content */ getArea(areaCode: S7Area, index: number): Promise<Buffer | null>; /** * Set area content */ setArea(areaCode: S7Area, index: number, buffer: Buffer): Promise<boolean>; /** * Lock area */ lockArea(areaCode: S7Area, index: number): Promise<boolean>; /** * Unlock area */ unlockArea(areaCode: S7Area, index: number): Promise<boolean>; /** * Get server status */ serverStatus(): ServerStatus; /** * Get clients count */ clientsCount(): number; /** * Get CPU status */ getCpuStatus(): CpuStatus; /** * Set CPU status */ setCpuStatus(status: CpuStatus): boolean; /** * Get last error */ lastError(): number; /** * Get event mask */ getEventsMask(): number; /** * Set event mask */ setEventsMask(mask: number): void; /** * Handle read request */ private handleReadRequest; /** * Handle write request */ private handleWriteRequest; /** * Emit event if mask allows */ private emitEvent; /** * Set read/write callback for resourceless mode */ setRWAreaCallback(callback: RWAreaCallback): void; /** * Get error code from string */ private getErrorCode; /** * Get error text */ static errorText(errorCode: number): string; /** * Get event text */ static eventText(event: S7ServerEvent): string; /** * Get server statistics */ getStatistics(): { server: ReturnType<S7Protocol['getStatistics']>; memory: ReturnType<MemoryManager['getStatistics']>; }; /** * Cleanup inactive connections */ cleanupInactiveConnections(timeoutMs?: number): void; /** * Read value from memory using S7 address format * @param address S7 address string supporting full S7 addressing: * - DB addresses: "DB1", "DB5,X0.1", "DB23,B1", "DB42,I3", "DB57,W4", "DB13,DI5", "DB19,DW6", "DB21,R7" * - Bit addresses: "I1.0", "Q2.1", "M3.2", "X0.0" * - Word addresses: "II10", "QI12", "MI14", "IW16", "QW18", "MW20", "MR38" * - Byte addresses: "IB0", "QB1", "MB2", "XB2" * @returns Promise resolving to the value or null if not found */ read(address: string): Promise<boolean | number | Buffer | null>; } //# sourceMappingURL=s7-server.d.ts.map