diff --git a/Modbus-CAPL/include/CAPL/include/DeviceInformation.cin b/Modbus-CAPL/include/CAPL/include/DeviceInformation.cin index e178a84..a1d916e 100644 --- a/Modbus-CAPL/include/CAPL/include/DeviceInformation.cin +++ b/Modbus-CAPL/include/CAPL/include/DeviceInformation.cin @@ -2,18 +2,18 @@ // This file shall contain all information about device specific parameters. /// The aim of this file is to centralize this device specific information so that new Vendors can be added easily -/// Currently supported are Wago 750-881 and B&R X20BC0087. +/// Currently supported are Wago 750-881 and B&R X20BC0087 hopefully only the vendors have to be distinguished /// The Modbus specification leaves room for several parameters than can vary from vendor to vendor (and perhaps also from device to device). These parameters are: /// - Start addresses for reading input bits/registers /// - Start addresses for reading output bits/registers /// - Start addresses for writing input bits/registers /// - Start addresses for writing output bits/registers /// - Maximum number of connected IO (bits and registers) -/// - Size of the receive window (how many telegrams can be processed at the same time) -/// This file is used at two position: The majority of the functions are used to analyze devices when making the config. The minority has to be called when initiating a Modbus client so it knows about the addresses and window size. +/// - Size of the receive window (how many requests can be received and buffered) +/// This file is used at two positions: The majority of the functions are used to analyze devices when making the config. The minority has to be called when initiating a Modbus client so it knows about the addresses and window size. variables { - // This structure is used by the Modbus Client. + // This structure is used by the Modbus Client. It describes the device struct { struct // Start addresses @@ -36,31 +36,31 @@ variables byte ReceiveWindow; } thisDev; - enum Vendor // The Vendor enum. All Vendors have to listed here and all listed vendors have to be implemented in this file + enum Vendor // The Vendor enum. All Vendors have to listed here and all listed vendors have to be implemented in this file { All = 0xFF, - Wago = 23, // Wago - BuR = 2 // B&R + Wago = 23, // Wago + BuR = 2 // B&R }; - struct deviceIOs // A structure which contains quantity information about connected IO. Used in MakeConfig. These info will be written into the SysVars + struct deviceIOs // A structure which contains quantity information about connected IO. Used in MakeConfig. These info will be written into the SysVars { - byte InputRegisters; // Count of AI - word InputBits; // Count of DI - byte OutputRegisters; // Count of AO - word OutputBits; // Count of DO - char Modules[1024]; // A string representing the connected modules + byte InputRegisters; // Count of AI + word InputBits; // Count of DI + byte OutputRegisters; // Count of AO + word OutputBits; // Count of DO + char Modules[1024]; // A string representing the connected modules }; - struct device // A structure that contains information about an Modbus device. Used in MakeConfig. + struct device // A structure that contains information about an Modbus device. Used in MakeConfig. { - char Ip[16]; // String: The IP address - char Ip4[4]; // String: The last byte of the IP address. - char Ip3[4]; // String: The third byte of the IP. - char Ip2[4]; // String: The second byte of the IP. - char Ip1[4]; // String: Thefirst byte of the IP. - enum Vendor Vendor; // The Vendor (Wago / B&R) - word SerialCode; // Serial Code - word DeviceCode; // Device Code - struct deviceIOs DeviceIOs; // A structure with more information about IOs + char Ip[16]; // String: The IP address + char Ip4[4]; // String: The last byte of the IP address. + char Ip3[4]; // String: The third byte of the IP. + char Ip2[4]; // String: The second byte of the IP. + char Ip1[4]; // String: Thefirst byte of the IP. + enum Vendor Vendor; // The Vendor (Wago / B&R) + word SerialCode; // Serial Code + word DeviceCode; // Device Code + struct deviceIOs DeviceIOs; // A structure with more information about IOs }; } @@ -113,8 +113,8 @@ void DeviceInit(byte vendor) /// void _DeviceParseCode(word dev, enum Vendor vendor, struct deviceIOs dios) { - byte input; - byte numChannels; + byte input; // Yes: INPUT module; No: OUTPUT module + byte numChannels; // Quantity of channels char module[10]; strncpy(module, "..%d,", elCount(module)); @@ -247,14 +247,14 @@ byte _DeviceGetInformation(enum Vendor vendor) ModbusReadRegisters(0x2031, 64); // Connected IO 2 ModbusReadRegisters(0x2032, 64); // Connected IO 3 ModbusReadRegisters(0x2033, 63); // Connected IO 4 - return 10; + return 10; // 10 is the number of lines above (number of responses that we expect) case BuR: ModbusReadRegisters(0x1083, 1); // Product Code ModbusReadRegisters(0x1101, 1); // Number of AIs ModbusReadRegisters(0x1103, 1); // Number of AOs ModbusReadRegisters(0x1105, 1); // Number of DIs ModbusReadRegisters(0x1107, 1); // Number of DOs - return 5; + return 5; // 5 is the number of lines above (number of responses that we expect) default: writeDbg(AlgoError, "DeviceGetInformation: Unknown vendor id: %d", vendor); OnModbusClientPanics(VendorIdUnknown); diff --git a/Modbus-CAPL/include/CAPL/include/TcpUdpEilCommon.cin b/Modbus-CAPL/include/CAPL/include/TcpUdpEilCommon.cin index bb97eb0..630edec 100644 --- a/Modbus-CAPL/include/CAPL/include/TcpUdpEilCommon.cin +++ b/Modbus-CAPL/include/CAPL/include/TcpUdpEilCommon.cin @@ -5,7 +5,7 @@ variables // Some constants const long WSA_IO_PENDING = 997; const long WSAEWOULDBLOCK = 10035; - const dword INVALID_IP = 0xffffffff; + const dword INVALID_IP = 0xFFFFFFFF; long gIpLastErr = 0; char gIpLastErrStr[512] = ""; @@ -17,7 +17,6 @@ variables dword gRemoteIP = INVALID_IP; word gRemotePort = 0; - // The buffer where to received telegrams are put + // The buffer in which received telegrams are saved byte gRxBuffer[8192]; } -