diff --git a/Modbus/MakeConfig.cfg b/Modbus/MakeConfig.cfg index 022c23e..26df13e 100644 --- a/Modbus/MakeConfig.cfg +++ b/Modbus/MakeConfig.cfg @@ -1,4 +1,4 @@ -;CANoe Version |4|7|1|52133 MakeConfig +;CANoe Version |4|7|1|35748 MakeConfig Version: 8.2.40 Build 40 32 PRO 5 @@ -2933,7 +2933,7 @@ End_Of_Object VGrMnBox 3 VDOLocalInfoStruct 3 Begin_Of_Object 3 1 -74 +77 VDAOBus 4 Begin_Of_Object 1 1 @@ -3063,7 +3063,7 @@ VSimulinkModelViewerConfiguration 7 Begin_Of_Object End_Of_Object VSimulinkModelViewerConfiguration 7 1 0 -3737284963 +566845561 0 NodeSignalPanelBustypeCount 0 End_Of_Object VSimulationNode 6 @@ -3101,7 +3101,7 @@ NULL End_Of_Object VDOLocalInfoStruct 3 0.000000 0 0 -1 1 0 59420 1 233 1 2882400001 98 331 309 611 2882400002 0 0 0 0 0 0 1 2882400001 1270 1270 311 311 2882400002 0 0 0 526434840 0 526135044 3 +1 1 0 59420 1 233 1 2882400001 98 331 309 611 2882400002 0 0 0 0 0 0 1 2882400001 1270 1270 311 311 2882400002 0 0 0 528538608 0 526135044 3 SS_BEGIN_COMMON_INFO 1 0 @@ -3113,7 +3113,7 @@ Ethernet 11 1 1 -345908232 1 0 1 0 0 1 0 0 0 2000 1 +345965688 1 0 1 0 0 1 0 0 0 2000 1 SS_BEGIN_COMMON_INFO 1 3 @@ -3224,7 +3224,7 @@ End_Of_Serialized_Data 2 End_Of_Object VWriteBox 2 VWinStore 2 Begin_Of_Object 1 -22 2 3 -1 -1 -1 -1 -10088 -10000 -9070 -9233 +22 2 3 -32088 -32000 -1 -1 0 0 930 767 End_Of_Child_List End_Of_Object VWinStore 2 VWinStore 2 Begin_Of_Object diff --git a/Modbus/include/CAPL/MakeConfig.can b/Modbus/include/CAPL/MakeConfig.can index faa819a..f2c2d2d 100644 --- a/Modbus/include/CAPL/MakeConfig.can +++ b/Modbus/include/CAPL/MakeConfig.can @@ -48,7 +48,7 @@ on preStart // Scan a range of IPs for devices. Start and Stop go here // Please note: Currelty .255 will be skipped! - strncpy(gScanFirstIp, "192.168.1.1", 16); + strncpy(gScanFirstIp, "192.168.1.2", 16); strncpy(gScanLastIp, "192.168.1.10", 16); // Name of the project @@ -56,6 +56,8 @@ on preStart // Paths to the generated files relative to .cfg strncpy(fnSysvar, "include/SysVars/generated.vsysvar", elCount(fnSysvar)); strncpy(fnDbc, "include/DBC/generated.dbc", elCount(fnDbc)); + + OutputDebugLevel = Error; } on start @@ -96,6 +98,7 @@ void DetectDevices() write("Scanning from %s to %s with timeout of %d ms", gScanFirstIp, gScanLastIp, @sysvar::Config::Modbus::RequestTimeout); gScanFirst = ipGetAddressAsNumber(gScanFirstIp); gScanLast = ipGetAddressAsNumber(gScanLastIp); + write("%d.%d.%d.%d ", gScanFirst & 0xFF, (gScanFirst >> 8) & 0xFF, (gScanFirst >> 16) & 0xFF, gScanFirst >> 24); ModbusConnectTo(gScanFirst, @sysvar::Config::Modbus::Port); ModbusReadBits(0, 1); } @@ -133,7 +136,7 @@ void DetectDevicesNext() MakeIpNets(); return; } - writeEx(0, 1, "."); + writeEx(1, 1, "."); gRemoteIP = gScanFirst; // Don't open new socket, it takes too much time. ModbusReadBits(0, 1); } @@ -143,7 +146,7 @@ void OnModbusReadBitsFailed(enum ModbusRequestError error, enum ModbusException DetectDevicesNext(); } /// -void OnModbusReadBitsSuccess(struct ModbusResReceiveBits mbr, byte bitStatus[], word numBits) +void OnModbusReadBitsSuccess(struct ModbusResReceiveBits mbres, byte bitStatus[], struct ModbusReqRead mbreq) { ipGetAddressAsString(gScanFirst, gIps[gScanFirst], 16); DetectDevicesNext(); @@ -245,33 +248,27 @@ void OnModbusReadRegistersFailed(enum ModbusRequestError error, enum ModbusExcep } /// -void OnModbusReadRegistersSuccess(struct ModbusResReceiveRegisters mbr, word numRegs) +void OnModbusReadRegistersSuccess(struct ModbusResReceiveRegisters mbres, struct ModbusReqRead mbreq) { byte i; - struct ModbusReqRead mbrq; - if (!gQueueAck.ContainsKey(mbr.Header.TxID)) - return; - - memcpy_n2h(mbrq, gQueueAck[mbr.Header.TxID].Buffer); - - switch (mbrq.Address) + switch (mbreq.Address) { case 0x2011: - gIpsSorted[ips[ADi]].serialCode = mbr.Data[0]; + gIpsSorted[ips[ADi]].serialCode = mbres.Data[0]; break; case 0x2012: - gIpsSorted[ips[ADi]].deviceCode = mbr.Data[0]; + gIpsSorted[ips[ADi]].deviceCode = mbres.Data[0]; break; case 0x2030: case 0x2031: case 0x2032: case 0x2033: - for (i = 0; i < 65; i++) + for (i = 0; i < mbreq.Count; i++) { - if (mbr.Data[i] == 0x0000) + if (mbres.Data[i] == 0x0000) break; - ParseDeviceCode(mbr.Data[i], gIpsSorted[ips[ADi]].Vendor, gIpsSorted[ips[ADi]].DeviceIOs); + ParseDeviceCode(mbres.Data[i], gIpsSorted[ips[ADi]].Vendor, gIpsSorted[ips[ADi]].DeviceIOs); } break; } @@ -493,6 +490,21 @@ void GenDbc() + +/// +void OnModbusClientPanics(enum FatalErrors reason) +{ + writeLineEx(0, 4, "<%NODE_NAME%> FATAL! %d", reason); + switch(reason) + { + case ParsingBuffer: + case ModbusPackageWasSplit: + case DeviceCodeUnknown: + case VendorIdUnknown: + case ConnectionError: + break; + } +} /// void OnModbusWriteBitFailed(enum ModbusRequestError error, enum ModbusException ex, struct ModbusApHeader mbap){} /// diff --git a/Modbus/include/CAPL/include/Common.cin b/Modbus/include/CAPL/include/Common.cin index 9c6b7f1..8c51bc9 100644 --- a/Modbus/include/CAPL/include/Common.cin +++ b/Modbus/include/CAPL/include/Common.cin @@ -46,7 +46,7 @@ void writeDbg(enum DebugLvl lvl, char format[]) lVl = (byte)lvl >> 4; writeDbgFormat(lVl, msg, format); - writeLineEx(0, lVl, msg); + writeLineEx(1, lVl, msg); } /// void writeDbg(enum DebugLvl lvl, char format[], char string[]) @@ -59,7 +59,7 @@ void writeDbg(enum DebugLvl lvl, char format[], char string[]) lVl = (byte)lvl >> 4; writeDbgFormat(lVl, msg, format); - writeLineEx(0, lVl, msg, string); + writeLineEx(1, lVl, msg, string); } /// void writeDbg(enum DebugLvl lvl, char format[], char string1[], char string2[]) @@ -72,7 +72,7 @@ void writeDbg(enum DebugLvl lvl, char format[], char string1[], char string2[]) lVl = (byte)lvl >> 4; writeDbgFormat(lVl, msg, format); - writeLineEx(0, lVl, msg, string1, string2); + writeLineEx(1, lVl, msg, string1, string2); } /// void writeDbg(enum DebugLvl lvl, char format[], long num, char string[]) @@ -85,7 +85,7 @@ void writeDbg(enum DebugLvl lvl, char format[], long num, char string[]) lVl = (byte)lvl >> 4; writeDbgFormat(lVl, msg, format); - writeLineEx(0, lVl, msg, num, string); + writeLineEx(1, lVl, msg, num, string); } /// void writeDbg(enum DebugLvl lvl, char format[], char string[], long num) @@ -98,7 +98,7 @@ void writeDbg(enum DebugLvl lvl, char format[], char string[], long num) lVl = (byte)lvl >> 4; writeDbgFormat(lVl, msg, format); - writeLineEx(0, lVl, msg, string, num); + writeLineEx(1, lVl, msg, string, num); } /// void writeDbg(enum DebugLvl lvl, char format[], long num1) @@ -111,7 +111,7 @@ void writeDbg(enum DebugLvl lvl, char format[], long num1) lVl = (byte)lvl >> 4; writeDbgFormat(lVl, msg, format); - writeLineEx(0, lVl, msg, num1); + writeLineEx(1, lVl, msg, num1); } /// void writeDbg(enum DebugLvl lvl, char format[], long num1, long num2, char string[]) @@ -124,7 +124,7 @@ void writeDbg(enum DebugLvl lvl, char format[], long num1, long num2, char strin lVl = (byte)lvl >> 4; writeDbgFormat(lVl, msg, format); - writeLineEx(0, lVl, msg, num1, num2, string); + writeLineEx(1, lVl, msg, num1, num2, string); } /// void writeDbg(enum DebugLvl lvl, char format[], long num1, long num2) @@ -137,7 +137,7 @@ void writeDbg(enum DebugLvl lvl, char format[], long num1, long num2) lVl = (byte)lvl >> 4; writeDbgFormat(lVl, msg, format); - writeLineEx(0, lVl, msg, num1, num2); + writeLineEx(1, lVl, msg, num1, num2); } /// void writeDbg(enum DebugLvl lvl, char format[], long num1, long num2, long num3) @@ -150,7 +150,7 @@ void writeDbg(enum DebugLvl lvl, char format[], long num1, long num2, long num3) lVl = (byte)lvl >> 4; writeDbgFormat(lVl, msg, format); - writeLineEx(0, lVl, msg, num1, num2, num3); + writeLineEx(1, lVl, msg, num1, num2, num3); } /// void writeDbg(enum DebugLvl lvl, char format[], long num1, long num2, long num3, long num4) @@ -163,7 +163,7 @@ void writeDbg(enum DebugLvl lvl, char format[], long num1, long num2, long num3, lVl = (byte)lvl >> 4; writeDbgFormat(lVl, msg, format); - writeLineEx(0, lVl, msg, num1, num2, num3, num4); + writeLineEx(1, lVl, msg, num1, num2, num3, num4); } /// void writeDbg(enum DebugLvl lvl, char format[], long num1, long num2, long num3, long num4, long num5, long num6) @@ -176,7 +176,7 @@ void writeDbg(enum DebugLvl lvl, char format[], long num1, long num2, long num3, lVl = (byte)lvl >> 4; writeDbgFormat(lVl, msg, format); - writeLineEx(0, lVl, msg, num1, num2, num3, num4, num5, num6); + writeLineEx(1, lVl, msg, num1, num2, num3, num4, num5, num6); } diff --git a/Modbus/include/CAPL/include/ModbusClientCommon.cin b/Modbus/include/CAPL/include/ModbusClientCommon.cin index 6d85baf..74f2e7c 100644 --- a/Modbus/include/CAPL/include/ModbusClientCommon.cin +++ b/Modbus/include/CAPL/include/ModbusClientCommon.cin @@ -3,7 +3,6 @@ includes { #include "ModbusCommonStructs.cin" - #include "Common.cin" } variables diff --git a/Modbus/include/CAPL/include/UdpCommon.cin b/Modbus/include/CAPL/include/UdpCommon.cin index b691796..712f545 100644 --- a/Modbus/include/CAPL/include/UdpCommon.cin +++ b/Modbus/include/CAPL/include/UdpCommon.cin @@ -111,7 +111,7 @@ void UdpRecv() if (gIpLastErr != WSA_IO_PENDING) // Calling OnUdpReceive otherwise { gSocket.GetLastSocketErrorAsString(gIpLastErrStr, elCount(gIpLastErrStr)); - writeDbg(ConnError, "UdpReceiveFrom Error (%d): %s", gIpLastErr, gIpLastErrStr); + writeDbg(ConnError, "UdpReceiveFrom: (%d) %s", gIpLastErr, gIpLastErrStr); UdpDisconnect(); } }