diff --git a/Modbus-CAPL/MakeConfig.cfg b/Modbus-CAPL/MakeConfig.cfg index 26df13e..c3ea76a 100644 --- a/Modbus-CAPL/MakeConfig.cfg +++ b/Modbus-CAPL/MakeConfig.cfg @@ -1,4 +1,4 @@ -;CANoe Version |4|7|1|35748 MakeConfig +;CANoe Version |4|7|1|35745 MakeConfig Version: 8.2.40 Build 40 32 PRO 5 @@ -1261,9 +1261,37 @@ Grafik-Fenster 237 0 0 +1 0 0 0 +-11 +0 +0 +0 +0 +0 +0 +0 +400 +0 +Tahoma +0 +1 +0 +0 +0 +-11 +0 +0 +0 +34 +0 +0 +0 +400 +0 +Tahoma 0 1 1 @@ -2933,7 +2961,7 @@ End_Of_Object VGrMnBox 3 VDOLocalInfoStruct 3 Begin_Of_Object 3 1 -77 +83 VDAOBus 4 Begin_Of_Object 1 1 @@ -2955,7 +2983,7 @@ VConfigurationRoot 8 Begin_Of_Object End_Of_Object VConfigurationRoot 8 1 "include\CAPL\MakeConfig.can" 1 -J:\HsKA\NB7\Bachelorthesis\CANoe\Modbus\include\CAPL\MakeConfig.cbf +J:\HsKA\NB7\Bachelorthesis\CANoe\Modbus-CAPL\include\CAPL\MakeConfig.cbf MakeConfig MakeConfig 5 @@ -3063,7 +3091,7 @@ VSimulinkModelViewerConfiguration 7 Begin_Of_Object End_Of_Object VSimulinkModelViewerConfiguration 7 1 0 -566845561 +3530245935 0 NodeSignalPanelBustypeCount 0 End_Of_Object VSimulationNode 6 @@ -3101,7 +3129,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 528538608 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 1664573080 0 0 3 SS_BEGIN_COMMON_INFO 1 0 @@ -3113,7 +3141,7 @@ Ethernet 11 1 1 -345965688 1 0 1 0 0 1 0 0 0 2000 1 +7573328 1 0 1 0 0 1 0 0 0 2000 1 SS_BEGIN_COMMON_INFO 1 3 @@ -3224,7 +3252,7 @@ End_Of_Serialized_Data 2 End_Of_Object VWriteBox 2 VWinStore 2 Begin_Of_Object 1 -22 2 3 -32088 -32000 -1 -1 0 0 930 767 +22 2 3 -32088 -32000 -1 -1 -10088 -10000 -9070 -9233 End_Of_Child_List End_Of_Object VWinStore 2 VWinStore 2 Begin_Of_Object diff --git a/Modbus-CAPL/ModbusNet.cfg b/Modbus-CAPL/ModbusNet.cfg index 05245c0..5be2b34 100644 --- a/Modbus-CAPL/ModbusNet.cfg +++ b/Modbus-CAPL/ModbusNet.cfg @@ -2,16 +2,16 @@ Version: 8.2.40 Build 40 32 PRO 10 -APPDIR Vector.CANoe.SignalGenerators.DLL -Vector.CANoe.SignalGenerators, Version=8.2.40.0, Culture=neutral, PublicKeyToken=null -Vector.CANoe.SignalGenerators.ComponentWrapper -1 -1.0.1 APPDIR Vector.CANoe.Debugger.DLL Vector.CANoe.Debugger, Version=8.2.40.0, Culture=neutral, PublicKeyToken=null Vector.CANoe.Debugger.DebuggerComponent -2 +1 1.0.0 +APPDIR Vector.CANoe.SignalGenerators.DLL +Vector.CANoe.SignalGenerators, Version=8.2.40.0, Culture=neutral, PublicKeyToken=null +Vector.CANoe.SignalGenerators.ComponentWrapper +2 +1.0.1 VGlobalConfiguration 1 Begin_Of_Object 17 VGlobalParameters 2 Begin_Of_Object @@ -67,7 +67,6 @@ DialogBegin 1 285 569 816 1103 SymbolExplorerDialogBegin - 1 HistoryBegin 1 0 @@ -79,7 +78,7 @@ Begin Bus statistic signals ( 1 ( 1 ( 0 ) 0 ) 0 ) Busstatistik Signale - ( 1 ( 1 ( 0 ) 0 ) 0 ) + ( 1 ( 0 ) 0 ) Modbus ( 2 ( 0 ) 0) TE0001 @@ -209,12 +208,12 @@ SymbSelHeaderMgrBegin SymbSelHeaderMgrEnd End Begin -3 0 16 +3 10 -1 2 Modbus Systemvariablen - ( 1 ( 0 ) 3 ( 1 ( 2 ( 1 ( 0 ) 2 ( 0 ) 0 ) 0 ) 0 ) 0 ) + ( 1 ( 0 ) 3 ( 2 ( 2 ( 1 ( 0 ) 0 ) 0 ) 0 ) 0 ) SymbSelHeaderMgrBegin 1 4 0 1 200 0 0 @@ -742,13 +741,13 @@ Begin_Of_Multi_Line_String Copyright (c) 2001-2006 Actipro Software LLC. All rights reserved. http://www.ActiproSoftware.com/Products/DotNet/ ---> +ock="Bottom" DockOperationType="TopOuter" IsTopMost="True" /> End_Of_Serialized_Data 3 End_Of_Object VDesktop 3 VDesktop 3 Begin_Of_Object @@ -1020,7 +1019,7 @@ VUniqueBox 16 Begin_Of_Object VBoxRoot 17 Begin_Of_Object 1 1 -1 0 0 1 -1 -1 -1 -1 0 0 776 389 +1 0 0 1 -1 -1 -1 -1 0 0 764 389 Graphic 1 @@ -1028,7 +1027,7 @@ MDI_DOCK_INFO_END 5 1 6 -0 1 -1 -1 -1 -1 0 0 776 389 +0 1 -1 -1 -1 -1 0 0 764 389 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 -1 32767 0 0 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 0 0 END_OF_DOCK_INFO 1 @@ -1037,7 +1036,7 @@ END_OF_DOCK_INFO 0 1 -1 -1 -1 -1 451 334 1045 683 0 1 -776 389 +764 389 END_OF_DESKTOP_DATA 6 0 1 -1 -1 -1 -1 1 375 779 615 @@ -1142,7 +1141,7 @@ TypeRef:2 --TextFormatter: End of Object-- VSignalObjectStreamer 14 Begin_Of_Object 1 -8 +9 VPredefinedSignalObject 15 Begin_Of_Object 1 VHostSignal 16 Begin_Of_Object @@ -1352,8 +1351,8 @@ VSysVarObject 15 Begin_Of_Object VHostSignal 16 Begin_Of_Object 2 3 -Ethernet1::Client_2::Data::InputBits [0] -0 +Client_2::InputBits_[0] +1 End_Of_Object VHostSignal 16 15 ValueObjectConfiguration::VConfiguredSysVar 16 Begin_Of_Object @@ -1379,15 +1378,15 @@ End_Of_Object ValueObjectConfiguration::VConfiguredSysVar 16 End_Of_Serialized_Data 15 End_Of_Object VSysVarObject 15 [MeasurementObject] -Ethernet1::Client_2::Data::InputBits [0] +Client_2::InputBits_[0] "" 223 b86b8 -1. 1. -100. 100. 1 0 0 0 36000000 1 1 0 0 VSysVarObject 15 Begin_Of_Object 1 VHostSignal 16 Begin_Of_Object 2 3 -Ethernet1::Client_2::Data::InputBits [1] -0 +Client_2::InputBits_[1] +1 End_Of_Object VHostSignal 16 15 ValueObjectConfiguration::VConfiguredSysVar 16 Begin_Of_Object @@ -1413,15 +1412,15 @@ End_Of_Object ValueObjectConfiguration::VConfiguredSysVar 16 End_Of_Serialized_Data 15 End_Of_Object VSysVarObject 15 [MeasurementObject] -Ethernet1::Client_2::Data::InputBits [1] +Client_2::InputBits_[1] "" 223 d7ff -1. 1. -100. 100. 1 0 0 0 36000000 1 1 0 0 VSysVarObject 15 Begin_Of_Object 1 VHostSignal 16 Begin_Of_Object 2 3 -Ethernet1::Client_2::Data::InputRegisters [0] -0 +Client_3::InputBits_[5] +1 End_Of_Object VHostSignal 16 15 ValueObjectConfiguration::VConfiguredSysVar 16 Begin_Of_Object @@ -1435,27 +1434,27 @@ VConfigSysVar 19 Begin_Of_Object VConfigEvent 20 Begin_Of_Object 1 End_Of_Object VConfigEvent 20 -Ethernet1::Client_2::Data -InputRegisters +Ethernet1::Client_3::Data +InputBits End_Of_Object VConfigSysVar 19 End_Of_Object ValueObjectConfiguration::Detail::AbstractConfiguredValueObject 18 End_Of_Object ValueObjectConfiguration::Detail::VConfiguredValueObjectBase 17 -0 +5 1 End_Of_Object ValueObjectConfiguration::VConfiguredSysVar 16 End_Of_Serialized_Data 15 End_Of_Object VSysVarObject 15 [MeasurementObject] -Ethernet1::Client_2::Data::InputRegisters [0] -"" 223 ff00 -1. 6071. -100. 100. 1000 0 0 0 36000000 1 1 0 0 +Client_3::InputBits_[5] +"" 223 9314ff 0. 1. -100. 100. 1 0 0 0 36000000 1 1 0 0 VSysVarObject 15 Begin_Of_Object 1 VHostSignal 16 Begin_Of_Object 2 3 -Ethernet1::Client_2::Data::InputRegisters [1] -0 +Client_2::InputRegisters_[0] +1 End_Of_Object VHostSignal 16 15 ValueObjectConfiguration::VConfiguredSysVar 16 Begin_Of_Object @@ -1474,17 +1473,51 @@ InputRegisters End_Of_Object VConfigSysVar 19 End_Of_Object ValueObjectConfiguration::Detail::AbstractConfiguredValueObject 18 End_Of_Object ValueObjectConfiguration::Detail::VConfiguredValueObjectBase 17 -1 +0 1 End_Of_Object ValueObjectConfiguration::VConfiguredSysVar 16 End_Of_Serialized_Data 15 End_Of_Object VSysVarObject 15 [MeasurementObject] -Ethernet1::Client_2::Data::InputRegisters [1] -"" 223 8000 0. 3. -100. 100. 1 0 0 0 36000000 0 1 0 0 +Client_2::InputRegisters_[0] +"" 223 ff00 2746. 6071. -100. 100. 500 0 0 0 36000000 1 1 0 0 +VSysVarObject 15 Begin_Of_Object +1 +VHostSignal 16 Begin_Of_Object +2 +3 +Client_3::InputRegisters_[3] +1 +End_Of_Object VHostSignal 16 +15 +ValueObjectConfiguration::VConfiguredSysVar 16 Begin_Of_Object +1 +ValueObjectConfiguration::Detail::VConfiguredValueObjectBase 17 Begin_Of_Object +1 +ValueObjectConfiguration::Detail::AbstractConfiguredValueObject 18 Begin_Of_Object +1 +VConfigSysVar 19 Begin_Of_Object +1 +VConfigEvent 20 Begin_Of_Object +1 +End_Of_Object VConfigEvent 20 +Ethernet1::Client_3::Data +InputRegisters +End_Of_Object VConfigSysVar 19 +End_Of_Object ValueObjectConfiguration::Detail::AbstractConfiguredValueObject 18 +End_Of_Object ValueObjectConfiguration::Detail::VConfiguredValueObjectBase 17 +3 +1 +End_Of_Object ValueObjectConfiguration::VConfiguredSysVar 16 + +End_Of_Serialized_Data 15 +End_Of_Object VSysVarObject 15 +[MeasurementObject] +Client_3::InputRegisters_[3] +"" 223 228b22 8987. 19894. -100. 100. 1000 0 0 0 36000000 1 1 0 0 [GraphWindow:x_x_x_x_x_x_WindowBk_Grid_AxisBk_XAxisFr_YAxisFr_x_x_x_x_x_x] -1349149.0723900001 2194997.2015200001 141905.54316 200000 36000000 1 ffffff b2b2b2 ffffff 0 0 0 0 1 1 1 0 +5210346.6428800002 5634098.14585 240215.71337000001 200000 36000000 1 ffffff b2b2b2 ffffff 0 0 0 0 1 1 1 0 0 30 5000 0 0 100 @@ -1495,7 +1528,7 @@ Ethernet1::Client_2::Data::InputRegisters [1] 0 1 41943040 -4 +8 1416 25200245 Grafik-Fenster 1 "" @@ -1569,7 +1602,7 @@ Tahoma 262 0 10 1 -6 +7 1 0 1 Eth 1::Bus load [%] @@ -1583,23 +1616,28 @@ Eth 1::Packet rate [pkt/s] 1 4 4 -Ethernet1::Client_2::Data::InputBits [0] +Client_2::InputBits_[0] 755384 0 1 5 5 -Ethernet1::Client_2::Data::InputBits [1] +Client_2::InputBits_[1] 55295 0 1 6 6 -Ethernet1::Client_2::Data::InputRegisters [0] -65280 0 +Client_3::InputBits_[5] +9639167 0 1 7 7 -Ethernet1::Client_2::Data::InputRegisters [1] -32768 0 +Client_2::InputRegisters_[0] +65280 0 +1 +8 8 + +Client_3::InputRegisters_[3] +2263842 0 0 1 "..\..\..\..\..\Public\Documents\Vector\CANwin\Public\Documents\demos\demo_can_cn\cansystemdemo\CANoe_Grafik_2.mdf" 0 0 0 0 0 0 0 0 @@ -1639,6 +1677,7 @@ Ethernet1::Client_2::Data::InputRegisters [1] 0 0 0 +0 1 12 1 1 1 0 0 0 0 0 0 0 0 0 0 1 2 -1 -1 -1 -1 -1 -1 -1 -1 -1 @@ -4044,7 +4083,7 @@ MDI_DOCK_INFO_END 1 6 0 1 -1 -1 -8 -30 -138 106 539 323 -6 1 0 0 0 0 0 0 677 213 0 0 1 8084 1904 0 0 0 0 0 0 0 0 -1 -1 32767 0 0 0 0 0 0 0 6 66 1 0 0 0 1 408 0 59420 1 +6 1 0 0 0 0 0 0 677 213 0 0 1 8084 1904 0 0 0 0 0 0 0 0 -1 -1 32767 0 0 0 0 0 0 0 6 66 1 0 0 0 1 420 0 59420 1 END_OF_DOCK_INFO 1 2 @@ -4074,7 +4113,7 @@ End_Of_Object VBoxRoot 15 End_Of_Object VDataBox 14 1 6 -15 +17 VSysVarObject 14 Begin_Of_Object 1 VHostSignal 15 Begin_Of_Object @@ -4431,7 +4470,7 @@ End_Of_Object ValueObjectConfiguration::VConfiguredSysVar 15 End_Of_Serialized_Data 14 End_Of_Object VSysVarObject 14 [Begin_of_Item] -2 15 +2 18 1 1 10 0 0 16777215 0 1000 0 0 [End_of_Item] @@ -4467,7 +4506,7 @@ End_Of_Object ValueObjectConfiguration::VConfiguredSysVar 15 End_Of_Serialized_Data 14 End_Of_Object VSysVarObject 14 [Begin_of_Item] -2 16 +2 19 1 1 2 0 0 16777215 0 1000 0 0 [End_of_Item] @@ -4500,42 +4539,6 @@ End_Of_Object ValueObjectConfiguration::Detail::VConfiguredValueObjectBase 16 Begin_Of_Object -1 -ValueObjectConfiguration::Detail::AbstractConfiguredValueObject 17 Begin_Of_Object -1 -VConfigSysVar 18 Begin_Of_Object -1 -VConfigEvent 19 Begin_Of_Object -1 -End_Of_Object VConfigEvent 19 -_Statistics::Eth1 -RxPacketRateAvg -End_Of_Object VConfigSysVar 18 -End_Of_Object ValueObjectConfiguration::Detail::AbstractConfiguredValueObject 17 -End_Of_Object ValueObjectConfiguration::Detail::VConfiguredValueObjectBase 16 --1 -2 -End_Of_Object ValueObjectConfiguration::VConfiguredSysVar 15 - End_Of_Serialized_Data 14 End_Of_Object VSysVarObject 14 [Begin_of_Item] @@ -4548,6 +4551,42 @@ VSysVarObject 14 Begin_Of_Object VHostSignal 15 Begin_Of_Object 2 3 +RxPacketRateAvg +0 +End_Of_Object VHostSignal 15 +14 +ValueObjectConfiguration::VConfiguredSysVar 15 Begin_Of_Object +1 +ValueObjectConfiguration::Detail::VConfiguredValueObjectBase 16 Begin_Of_Object +1 +ValueObjectConfiguration::Detail::AbstractConfiguredValueObject 17 Begin_Of_Object +1 +VConfigSysVar 18 Begin_Of_Object +1 +VConfigEvent 19 Begin_Of_Object +1 +End_Of_Object VConfigEvent 19 +_Statistics::Eth1 +RxPacketRateAvg +End_Of_Object VConfigSysVar 18 +End_Of_Object ValueObjectConfiguration::Detail::AbstractConfiguredValueObject 17 +End_Of_Object ValueObjectConfiguration::Detail::VConfiguredValueObjectBase 16 +-1 +2 +End_Of_Object ValueObjectConfiguration::VConfiguredSysVar 15 + +End_Of_Serialized_Data 14 +End_Of_Object VSysVarObject 14 +[Begin_of_Item] +2 20 +1 1 2 0 0 16777215 +0 1000 0 0 +[End_of_Item] +VSysVarObject 14 Begin_Of_Object +1 +VHostSignal 15 Begin_Of_Object +2 +3 Ethernet1::Client_2::Config::Interval 0 End_Of_Object VHostSignal 15 @@ -4615,7 +4654,79 @@ End_Of_Object VSysVarObject 14 1 1 2 0 0 16777215 -1000 1000 -1000 0 [End_of_Item] -34 219 16 152 75 75 44 156 191 100 1 +VSysVarObject 14 Begin_Of_Object +1 +VHostSignal 15 Begin_Of_Object +2 +3 +Ethernet1::Client_3::Data::InputBits +0 +End_Of_Object VHostSignal 15 +14 +ValueObjectConfiguration::VConfiguredSysVar 15 Begin_Of_Object +1 +ValueObjectConfiguration::Detail::VConfiguredValueObjectBase 16 Begin_Of_Object +1 +ValueObjectConfiguration::Detail::AbstractConfiguredValueObject 17 Begin_Of_Object +1 +VConfigSysVar 18 Begin_Of_Object +1 +VConfigEvent 19 Begin_Of_Object +1 +End_Of_Object VConfigEvent 19 +Ethernet1::Client_3::Data +InputBits +End_Of_Object VConfigSysVar 18 +End_Of_Object ValueObjectConfiguration::Detail::AbstractConfiguredValueObject 17 +End_Of_Object ValueObjectConfiguration::Detail::VConfiguredValueObjectBase 16 +-1 +2 +End_Of_Object ValueObjectConfiguration::VConfiguredSysVar 15 + +End_Of_Serialized_Data 14 +End_Of_Object VSysVarObject 14 +[Begin_of_Item] +2 14 +1 8 2 0 0 16777215 +4.94066e-321 1 4.94066e-321 0 +[End_of_Item] +VSysVarObject 14 Begin_Of_Object +1 +VHostSignal 15 Begin_Of_Object +2 +3 +Ethernet1::Client_3::Data::InputRegisters +0 +End_Of_Object VHostSignal 15 +14 +ValueObjectConfiguration::VConfiguredSysVar 15 Begin_Of_Object +1 +ValueObjectConfiguration::Detail::VConfiguredValueObjectBase 16 Begin_Of_Object +1 +ValueObjectConfiguration::Detail::AbstractConfiguredValueObject 17 Begin_Of_Object +1 +VConfigSysVar 18 Begin_Of_Object +1 +VConfigEvent 19 Begin_Of_Object +1 +End_Of_Object VConfigEvent 19 +Ethernet1::Client_3::Data +InputRegisters +End_Of_Object VConfigSysVar 18 +End_Of_Object ValueObjectConfiguration::Detail::AbstractConfiguredValueObject 17 +End_Of_Object ValueObjectConfiguration::Detail::VConfiguredValueObjectBase 16 +-1 +2 +End_Of_Object ValueObjectConfiguration::VConfiguredSysVar 15 + +End_Of_Serialized_Data 14 +End_Of_Object VSysVarObject 14 +[Begin_of_Item] +2 15 +1 8 2 0 0 16777215 +3.18299e-313 1 3.18299e-313 0 +[End_of_Item] +34 229 16 152 75 75 44 156 191 100 1 35 35 30 1 1 0 1 0 0 1 1 1 0 1 @@ -4768,7 +4879,7 @@ END_OF_DOCK_INFO 0 0 1 -0 1 -1 -1 -1 -1 172 222 1066 713 +0 1 -32088 -32000 -1 -1 147 402 1041 893 0 1 776 389 @@ -4822,11 +4933,11 @@ End_Of_Object VGrMnBox 3 VDOLocalInfoStruct 3 Begin_Of_Object 3 1 -203 +218 VDAOBus 4 Begin_Of_Object 1 1 -1 +2 VDAOGBFunctionBlock 5 Begin_Of_Object 1 46 @@ -4885,7 +4996,7 @@ EOF_ASSEMBLYDATA 1 "include\CAPL\ModbusClient.cbf" VIPBStackSetting 8 Begin_Of_Object 3 -0 +1 1 VIPBAdapterSetting 9 Begin_Of_Object 4 @@ -5298,7 +5409,142 @@ VSimulinkModelViewerConfiguration 7 Begin_Of_Object End_Of_Object VSimulinkModelViewerConfiguration 7 1 0 -1805777064 +3569770309 +0 +NodeSignalPanelBustypeCount 0 +End_Of_Object VSimulationNode 6 +NULL + +EndOfComment +0 +1 +End_Of_Object VDAOGBFunctionBlock 5 +VDAOGBFunctionBlock 5 Begin_Of_Object +1 +208 +3 +TABPredecessor: +41 +TABSuccessor: +2 +VSimulationNode 6 Begin_Of_Object +3 +VProgrammedNode 7 Begin_Of_Object +4 +VConfigurationRoot 8 Begin_Of_Object +1 +End_Of_Object VConfigurationRoot 8 + 1 "include\CAPL\ModbusClient.can" +1 +J:\HsKA\NB7\Bachelorthesis\CANoe\Modbus-CAPL\include\CAPL\ModbusClient2.cbf +Client_3 +Modbus +5 +ECU 1 +ECU 1 +EOF_TITLE_INFO +Client_3 +1 +0 +1 +1 +0 +1 +0 +1 0 2 0 +SS_BEGIN_COMMON_INFO +1 +5 +Behavior +1 +Buses +1 +Misc +1 +Modules +1 +Timing +1 +SS_END_COMMON_INFO + +EOF_MBSSDATA +1 +0 1 +0 +EOF_NLDATA +0 +EOF_ASSEMBLYDATA + 1 "include\CAPL\ModbusClient2.cbf" +VIPBStackSetting 8 Begin_Of_Object +3 +1 +1 +VIPBAdapterSetting 9 Begin_Of_Object +4 +1 +9 +02:48:F9:C4:13:00 +End_Of_Serialized_Data 9 +9 +192.168.1.3 +End_Of_Serialized_Data 9 +9 +255.255.255.0 +End_Of_Serialized_Data 9 +9 +0.0.0.0 +End_Of_Serialized_Data 9 +1 +VPersistentIFv4Address 10 Begin_Of_Object +1 +VPersistentIFAddress 11 Begin_Of_Object +1 +VPersistentAddress 12 Begin_Of_Object +1 +End_Of_Object VPersistentAddress 12 +End_Of_Object VPersistentIFAddress 11 +10 +192.168.1.3 +End_Of_Serialized_Data 10 +10 +255.255.255.0 +End_Of_Serialized_Data 10 +End_Of_Object VPersistentIFv4Address 10 +0 +1 +11 +Ether1 +1 +0 +0 +End_Of_Object VIPBAdapterSetting 9 +0 +1 +0 +End_Of_Object VIPBStackSetting 8 +7 +NULL +End_Of_Serialized_Data 7 +End_Of_Object VProgrammedNode 7 +0 +0 +Startdelay 1 0 10 +Jitter 0 0 1 0 0 0 0 +1 +1 ETHERNET_IL.DLL +EOF_NLDATA +3 +VSimulinkModelViewerConfiguration 7 Begin_Of_Object +2 + 1 "include\CAPL\" + 1 "include\CAPL\" + 1 "include\CAPL\" +150 +0 +End_Of_Object VSimulinkModelViewerConfiguration 7 +1 +0 +3569770309 0 NodeSignalPanelBustypeCount 0 End_Of_Object VSimulationNode 6 @@ -5316,7 +5562,7 @@ VDAOGBFunctionBlock 5 Begin_Of_Object TABPredecessor: 46 TABSuccessor: -2 +208 VSSPlugInConfiguration 6 Begin_Of_Object 1 VConfigurationRoot 7 Begin_Of_Object @@ -5331,7 +5577,7 @@ VBoxRoot 9 Begin_Of_Object 1 3 1 1 1 1 0 166 -8 -30 61 86 1093 577 -Ethernet Packet Builder + 1 MDI_DOCK_INFO_END @@ -5409,11 +5655,105 @@ EOF_MBSSDATA 1 0 1 - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -5424,104 +5764,10 @@ EOF_MBSSDATA - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + End_Of_Object VSSPlugInConfiguration 6 NULL @@ -5539,7 +5785,7 @@ VDAOGBFunctionBlock 5 Begin_Of_Object 2 0 TABPredecessor: -41 +208 TABSuccessor: 0 VCardConf 6 Begin_Of_Object @@ -5557,7 +5803,7 @@ NULL End_Of_Object VDOLocalInfoStruct 3 0.000000 0 0 -1 1 0 59420 1 176 1 2882400001 268 468 250 705 2882400002 0 0 0 0 0 20 1 2882400001 1146 1346 252 452 2882400002 0 0 0 0 0 0 3 +1 1 0 59420 1 176 1 2882400001 243 443 430 885 2882400002 0 0 0 0 0 20 1 2882400001 1121 1321 432 632 2882400002 0 0 0 0 0 0 3 SS_BEGIN_COMMON_INFO 1 0 @@ -5569,7 +5815,7 @@ Ether1 11 1 1 -0 1 0 1 0 1 1 0 0 18 2000 1 +0 1 0 1 0 1 1 0 0 0 2000 1 SS_BEGIN_COMMON_INFO 1 3 @@ -5581,7 +5827,6 @@ Misc 1 SS_END_COMMON_INFO - EOF_BUSDATA 1 _Start_VPRBSManager 1 @@ -5681,7 +5926,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 -10088 -10000 -9070 -9233 End_Of_Child_List End_Of_Object VWinStore 2 VWinStore 2 Begin_Of_Object @@ -5972,14 +6217,14 @@ SymbSelHeaderMgrBegin SymbSelHeaderMgrEnd End Begin -3 0 2 +3 0 -1 3 Modbus modbus Systemvariablen - ( 0 ) + ( 3 ( 0 ) 0 ) SymbSelHeaderMgrBegin 1 4 0 1 200 0 0 @@ -6001,8 +6246,6 @@ End FiltersEnd 1 1 - - END_OF_WORKSPACE_MEMBER_DATA END_OF_WORKSPACE_MEMBER 1 @@ -6123,7 +6366,7 @@ VIPBGlobalSettings 2 Begin_Of_Object 1 VIPBStackSetting 3 Begin_Of_Object 3 -0 +1 1 VIPBAdapterSetting 4 Begin_Of_Object 4 diff --git a/Modbus-CAPL/include/CAPL/MakeConfig.can b/Modbus-CAPL/include/CAPL/MakeConfig.can index 6b79661..5987596 100644 --- a/Modbus-CAPL/include/CAPL/MakeConfig.can +++ b/Modbus-CAPL/include/CAPL/MakeConfig.can @@ -58,7 +58,7 @@ on preStart strncpy(fnSysvar, "include/SysVars/generated.vsysvar", elCount(fnSysvar)); strncpy(fnDbc, "include/DBC/generated.dbc", elCount(fnDbc)); - OutputDebugLevel = Info; + OutputDebugLevel = Mute; } on start @@ -201,35 +201,29 @@ void MakeIpNets() void AnalyzeDevices() { // Init counters - ADn = 10; // expect 10 responses + ADn = 1; // expect 10 responses ADi = 0; // First IP address ADl = gIpsSorted.Size(); writeLineEx(0, 1, "Analyzing %s", gIpsSorted[ips[ADi]].Ip); - gIpsSorted[ips[ADi]].Vendor = Wago; if (gRemoteIP != INVALID_IP) // If we already do have a socket gRemoteIP = ips[ADi]; // use it else // else create a new one ModbusConnectTo(ips[ADi], @sysvar::Config::Modbus::Port); - // read the important registers from the device - ModbusReadRegisters(0x2011, 1); // Serial Code - ModbusReadRegisters(0x2012, 1); // Device Code - ModbusReadRegisters(0x1022, 1); // Number of AOs - ModbusReadRegisters(0x1023, 1); // Number of AIs - ModbusReadRegisters(0x1024, 1); // Number of DOs - ModbusReadRegisters(0x1025, 1); // Number of DIs - ModbusReadRegisters(0x2030, 65); // Connected IO 1 - ModbusReadRegisters(0x2031, 64); // Connected IO 2 - ModbusReadRegisters(0x2032, 64); // Connected IO 3 - ModbusReadRegisters(0x2033, 63); // Connected IO 4 + // request something special to get the vendor + // since there is no common register that holds the vendor + // we have to send a request that only one device responds correctly. + // At 0x1000-0x1002 B&R devices return the MAC address, whereas Wago holds the WatchdogTime. + // As the watchdog time only consists of 1 word Wago will return a IllegalDataAddress exception (0x02) + ModbusReadRegisters(0x1000, 3); // Request B&R MAC address } - /// void AnalyzeDevicesNext() { - gIpsSorted[ips[ADi]].DeviceIOs.Modules[strlen(gIpsSorted[ips[ADi]].DeviceIOs.Modules)-1] = 0; + if (strlen(gIpsSorted[ips[ADi]].DeviceIOs.Modules) > 0) + gIpsSorted[ips[ADi]].DeviceIOs.Modules[strlen(gIpsSorted[ips[ADi]].DeviceIOs.Modules)-1] = 0; writeEx(0, 1, ": AOs: %d, AIs: %d, DOs: %d, DIs: %d --> %s", gIpsSorted[ips[ADi]].DeviceIOs.OutputRegisters, gIpsSorted[ips[ADi]].DeviceIOs.InputRegisters, gIpsSorted[ips[ADi]].DeviceIOs.OutputBits, gIpsSorted[ips[ADi]].DeviceIOs.InputBits, gIpsSorted[ips[ADi]].DeviceIOs.Modules); if (++ADi >= ADl) // we have analyzed all devices @@ -238,35 +232,47 @@ void AnalyzeDevicesNext() return; } - ADn = 10; // expect 10 responses + ADn = 1; // expect 10 responses gRemoteIP = ips[ADi]; // Next IP address writeLineEx(0, 1, "Analyzing %s", gIpsSorted[ips[ADi]].Ip); - gIpsSorted[ips[ADi]].Vendor = Wago; - ModbusReadRegisters(0x2011, 1); // Serial Code - ModbusReadRegisters(0x2012, 1); // Device Code - ModbusReadRegisters(0x1022, 1); // Number of AOs - ModbusReadRegisters(0x1023, 1); // Number of AIs - ModbusReadRegisters(0x1024, 1); // Number of DOs - ModbusReadRegisters(0x1025, 1); // Number of DIs - ModbusReadRegisters(0x2030, 65); // Connected IO 1 - ModbusReadRegisters(0x2031, 64); // Connected IO 2 - ModbusReadRegisters(0x2032, 64); // Connected IO 3 - ModbusReadRegisters(0x2033, 63); // Connected IO 4 + // request something special to get the vendor + ModbusReadRegisters(0x1000, 3); // Request B&R MAC address } - /// void OnModbusReadRegistersFailed(enum ModbusRequestError error, enum ModbusException ex, struct ModbusApHeader mbap) { + struct ModbusReqRead mbreq; + switch (error) { case Timeout: return; + case Exception: + memcpy_n2h(mbreq, gQueueAck[mbap.TxID].Buffer); + + if (mbreq.Address == 0x1000 && ex == IllegalDataAddress) // We requested Wago SerialCode and it didn't work --> Not Wago --> B&R + { + gIpsSorted[ips[ADi]].Vendor = Wago; + // request information + ADn = 10; + ModbusReadRegisters(0x2011, 1); // Serial Code + ModbusReadRegisters(0x2012, 1); // Device Code + ModbusReadRegisters(0x1022, 1); // Number of AOs (= size in bits) + ModbusReadRegisters(0x1023, 1); // Number of AIs (= size in bits) + ModbusReadRegisters(0x1024, 1); // Number of DOs + ModbusReadRegisters(0x1025, 1); // Number of DIs + ModbusReadRegisters(0x2030, 65); // Connected IO 1 + ModbusReadRegisters(0x2031, 64); // Connected IO 2 + ModbusReadRegisters(0x2032, 64); // Connected IO 3 + ModbusReadRegisters(0x2033, 63); // Connected IO 4 + return; + } + + writeLineEx(0, 3, "Error while analyzing %s! The device respond with exception code %d! Ignoring...", gIpsSorted[ips[ADi]].IP, ex); + break; case FinalTimeout: writeLineEx(0, 3, "Error while analyzing %s! The device did not respond! Ignoring...", gIpsSorted[ips[ADi]].IP); break; - case Exception: - writeLineEx(0, 3, "Error while analyzing %s! The device respond with exception code %d! Ignoring...", gIpsSorted[ips[ADi]].IP, ex); - break; } gQueueAck.Clear(); // Clear all queues gQueuePending.Clear(); @@ -274,42 +280,83 @@ void OnModbusReadRegistersFailed(enum ModbusRequestError error, enum ModbusExcep gIpsSorted.Remove(ips[ADi]); // Remove the IP AnalyzeDevicesNext(); // And go to the next device } - /// void OnModbusReadRegistersSuccess(struct ModbusResReceiveRegisters mbres, struct ModbusReqRead mbreq) { byte i; - // Parse the received data - switch (mbreq.Address) + if (mbreq.Address == 0x1000) // We detected a B&R device { - case 0x2011: - gIpsSorted[ips[ADi]].serialCode = mbres.Data[0]; - break; - case 0x2012: - gIpsSorted[ips[ADi]].deviceCode = mbres.Data[0]; - break; - case 0x1022: - gIpsSorted[ips[ADi]].DeviceIOs.OutputRegisters = mbres.Data[0] / 16; - break; - case 0x1023: - gIpsSorted[ips[ADi]].DeviceIOs.InputRegisters = mbres.Data[0] / 16; - break; - case 0x1024: - gIpsSorted[ips[ADi]].DeviceIOs.OutputBits = mbres.Data[0]; - break; - case 0x1025: - gIpsSorted[ips[ADi]].DeviceIOs.InputBits = mbres.Data[0]; - break; - case 0x2030: - case 0x2031: - case 0x2032: - case 0x2033: - for (i = 0; i < mbreq.Count; i++) + gIpsSorted[ips[ADi]].Vendor = BuR; + + // request further information + ADn = 5; + 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; + } + + switch (gIpsSorted[ips[ADi]].Vendor) + { + case Wago: + // Parse the received data + switch (mbreq.Address) { - if (mbres.Data[i] == 0x0000) // No more devices --> end + case 0x2011: + gIpsSorted[ips[ADi]].serialCode = mbres.Data[0]; + break; + case 0x2012: + gIpsSorted[ips[ADi]].deviceCode = mbres.Data[0]; + break; + case 0x1022: + gIpsSorted[ips[ADi]].DeviceIOs.OutputRegisters = mbres.Data[0] / 16; + break; + case 0x1023: + gIpsSorted[ips[ADi]].DeviceIOs.InputRegisters = mbres.Data[0] / 16; + break; + case 0x1024: + gIpsSorted[ips[ADi]].DeviceIOs.OutputBits = mbres.Data[0]; + break; + case 0x1025: + gIpsSorted[ips[ADi]].DeviceIOs.InputBits = mbres.Data[0]; + break; + case 0x2030: + case 0x2031: + case 0x2032: + case 0x2033: + for (i = 0; i < mbreq.Count; i++) + { + if (mbres.Data[i] == 0x0000) // No more devices --> end + break; + ParseDeviceCode(mbres.Data[i], gIpsSorted[ips[ADi]].Vendor, gIpsSorted[ips[ADi]].DeviceIOs); + } + break; + } + break; + case BuR: + // Parse the received data + switch (mbreq.Address) + { + case 0x1083: + gIpsSorted[ips[ADi]].serialCode = mbres.Data[0]; + break; + case 0x1101: + gIpsSorted[ips[ADi]].DeviceIOs.InputRegisters = mbres.Data[0] - 3; // X20BC0087 has 3 AIs when no module is connected... hö? + break; + case 0x1103: + gIpsSorted[ips[ADi]].DeviceIOs.OutputRegisters = mbres.Data[0]; + break; + case 0x1105: + gIpsSorted[ips[ADi]].DeviceIOs.InputBits = mbres.Data[0] * 8; // Unfortunately this is quite imprecise: + // in the process image one module will always fill a whole number of bytes. + // So 4 12DI modules not allocate not 4*12 bit = 6 byte, but 4*16 bit = 64 bit = 8 byte + break; + case 0x1107: + gIpsSorted[ips[ADi]].DeviceIOs.OutputBits = mbres.Data[0] * 8; break; - ParseDeviceCode(mbres.Data[i], gIpsSorted[ips[ADi]].Vendor, gIpsSorted[ips[ADi]].DeviceIOs); } break; } @@ -415,19 +462,75 @@ void GenSysvars() // InputRegisters PutString(" \n"); + PutString("\" minValue=\"0\" minValuePhys=\"0\" maxValue=\""); + if (gIpsSorted[ipN].Vendor == Wago) + { + PutString((word)123); + PutString("\" maxValuePhys=\""); + PutString((word)123); + PutString("\" />\n"); + } + else + { + PutString((word)2048); + PutString("\" maxValuePhys=\""); + PutString((word)2048); + PutString("\" />\n"); + } // InputBits PutString(" \n"); + PutString("\" minValue=\"0\" minValuePhys=\"0\" maxValue=\""); + if (gIpsSorted[ipN].Vendor == Wago) + { + PutString((word)2000); + PutString("\" maxValuePhys=\""); + PutString((word)2000); + PutString("\" />\n"); + } + else + { + PutString((word)16384); + PutString("\" maxValuePhys=\""); + PutString((word)16384); + PutString("\" />\n"); + } // OutputRegisters PutString(" \n"); + PutString("\" minValue=\"0\" minValuePhys=\"0\" maxValue=\""); + if (gIpsSorted[ipN].Vendor == Wago) + { + PutString((word)123); + PutString("\" maxValuePhys=\""); + PutString((word)123); + PutString("\" />\n"); + } + else + { + PutString((word)2048); + PutString("\" maxValuePhys=\""); + PutString((word)2048); + PutString("\" />\n"); + } // OutputBits PutString(" \n"); + PutString("\" minValue=\"0\" minValuePhys=\"0\" maxValue=\""); + if (gIpsSorted[ipN].Vendor == Wago) + { + PutString((word)2000); + PutString("\" maxValuePhys=\""); + PutString((word)2000); + PutString("\" />\n"); + } + else + { + PutString((word)16384); + PutString("\" maxValuePhys=\""); + PutString((word)16384); + PutString("\" />\n"); + } PutString(" \n"); // Namespace Data diff --git a/Modbus-CAPL/include/CAPL/ModbusClient.can b/Modbus-CAPL/include/CAPL/ModbusClient.can index b257048..881e738 100644 --- a/Modbus-CAPL/include/CAPL/ModbusClient.can +++ b/Modbus-CAPL/include/CAPL/ModbusClient.can @@ -21,12 +21,40 @@ on preStart on start { + word outputBits, outputRegs, outputBitAddr, outputRegAddr; + + outputBits = @sysvar::%BUS_TYPE%%CHANNEL%::%NODE_NAME%::Info::OutputBits; + outputRegs = @sysvar::%BUS_TYPE%%CHANNEL%::%NODE_NAME%::Info::OutputRegisters; + + switch ((enum Vendor)@sysvar::%BUS_TYPE%%CHANNEL%::%NODE_NAME%::Info::Vendor) + { + case Wago: + outputBitAddr = 0x200; + outputRegAddr = 0x200; + break; + case BuR: + outputBitAddr = 0x000; + outputRegAddr = 0x800; + break; + } + ModbusInit(); - if (@sysvar::%BUS_TYPE%%CHANNEL%::%NODE_NAME%::Info::OutputBits > 0) - ModbusReadBits(0x200, @sysvar::%BUS_TYPE%%CHANNEL%::%NODE_NAME%::Info::OutputBits); - if (@sysvar::%BUS_TYPE%%CHANNEL%::%NODE_NAME%::Info::OutputRegisters > 0) - ModbusReadRegisters(0x200, @sysvar::%BUS_TYPE%%CHANNEL%::%NODE_NAME%::Info::OutputRegisters); + while (outputBits > 0) + { + ModbusReadOutBits(outputBitAddr, 2000); + outputBits -= 2000; + } + if (outputBits > 0) + ModbusReadOutBits(outputBitAddr, outputBits); + + while (outputRegs > 0) + { + ModbusReadRegisters(outputRegAddr, 123); + outputRegs -= 123; + } + if (outputRegs > 0) + ModbusReadRegisters(outputRegAddr, outputRegs); setTimerCyclic(gtRead, 1, @sysvar::%BUS_TYPE%%CHANNEL%::%NODE_NAME%::Config::Interval); } @@ -126,7 +154,7 @@ void OnModbusReadRegistersSuccess(struct ModbusResReceiveRegisters mbres, struct @sysvar::%BUS_TYPE%%CHANNEL%::%NODE_NAME%::Data::OutputRegisters[i] = mbres.Data[i]; sysEndVariableStructUpdate("%BUS_TYPE%%CHANNEL%::%NODE_NAME%::Data", "OutputRegisters"); break; - case 0x000: // set output registers + case 0x000: // set input registers sysBeginVariableStructUpdate("%BUS_TYPE%%CHANNEL%::%NODE_NAME%::Data", "InputRegisters"); for (i = 0; i < @sysvar::%BUS_TYPE%%CHANNEL%::%NODE_NAME%::Info::InputRegisters; i++) @sysvar::%BUS_TYPE%%CHANNEL%::%NODE_NAME%::Data::InputRegisters[i] = mbres.Data[i]; diff --git a/Modbus-CAPL/include/CAPL/include/Common.cin b/Modbus-CAPL/include/CAPL/include/Common.cin index 8c51bc9..e816623 100644 --- a/Modbus-CAPL/include/CAPL/include/Common.cin +++ b/Modbus-CAPL/include/CAPL/include/Common.cin @@ -21,7 +21,9 @@ variables Error = 0x30, AlgoError = 0x32, ConnError = 0x34, - MbError = 0x37 + MbError = 0x37, + + Mute = 0xFF }; char DebugLvlStr[4][8] = {"Debug", "Info", "Warning", "Error"}; enum DebugLvl OutputDebugLevel = Debug; diff --git a/Modbus-CAPL/include/CAPL/include/ModbusClientCommon.cin b/Modbus-CAPL/include/CAPL/include/ModbusClientCommon.cin index aaa1473..7189d5b 100644 --- a/Modbus-CAPL/include/CAPL/include/ModbusClientCommon.cin +++ b/Modbus-CAPL/include/CAPL/include/ModbusClientCommon.cin @@ -60,10 +60,24 @@ void ModbusMakeHeader(struct ModbusApHeader mbap, word length) // REGION: ModbusReadBits ------------------------------------------------------------- /// +void ModbusReadInBits(word address, word count) +{ + ModbusReadBits(0x02, address, count); +} +/// void ModbusReadBits(word address, word count) +{ + ModbusReadBits(0x02, address, count); +} +/// +void ModbusReadOutBits(word address, word count) +{ + ModbusReadBits(0x01, address, count); +} +/// +void ModbusReadBits(byte funcCode, word address, word count) { const byte length = __size_of(struct ModbusReqRead); - const byte funcCode = 0x01; byte buffer[length]; struct ModbusReqRead mbr; @@ -166,7 +180,7 @@ void OnModbusReceiveRegistersException(struct ModbusApHeader mbap, enum ModbusEx void ModbusWriteBit(word address, byte value) { const byte length = __size_of(struct ModbusReqWriteSingle); - const byte funcCode = 0x05; + const byte funcCode = 0x05; // B&R does not support 0x06 byte buffer[length]; struct ModbusReqWriteSingle mbw; diff --git a/Modbus-CAPL/include/CAPL/include/ModbusFunctions.cin b/Modbus-CAPL/include/CAPL/include/ModbusFunctions.cin index ef32a1b..fc4a429 100644 --- a/Modbus-CAPL/include/CAPL/include/ModbusFunctions.cin +++ b/Modbus-CAPL/include/CAPL/include/ModbusFunctions.cin @@ -1,12 +1,6 @@ /*@!Encoding:1252*/ variables { - enum Vendor - { - BuR = 2, - Wago = 23 - }; - struct deviceIOs { byte InputRegisters; diff --git a/Modbus-CAPL/include/CAPL/include/ModbusStructs.cin b/Modbus-CAPL/include/CAPL/include/ModbusStructs.cin index 814eff7..5aaa6c1 100644 --- a/Modbus-CAPL/include/CAPL/include/ModbusStructs.cin +++ b/Modbus-CAPL/include/CAPL/include/ModbusStructs.cin @@ -143,4 +143,9 @@ variables VendorIdUnknown = 0x03, ConnectionError = 0x04 }; + enum Vendor + { + Wago = 23, + BuR = 2 + }; } \ No newline at end of file diff --git a/Modbus-CAPL/include/DBC/generated.dbc b/Modbus-CAPL/include/DBC/generated.dbc index fdbed98..e790666 100644 --- a/Modbus-CAPL/include/DBC/generated.dbc +++ b/Modbus-CAPL/include/DBC/generated.dbc @@ -33,7 +33,7 @@ NS_ : BS_: -BU_: Client_2 +BU_: Client_2 Client_3 diff --git a/Modbus-CAPL/include/SysVars/generated.vsysvar b/Modbus-CAPL/include/SysVars/generated.vsysvar index b9eef8f..61a9c19 100644 --- a/Modbus-CAPL/include/SysVars/generated.vsysvar +++ b/Modbus-CAPL/include/SysVars/generated.vsysvar @@ -39,6 +39,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + +