diff --git a/src/io/app/SystemConstants/plc_line_HwIdentifiers.st b/src/io/app/SystemConstants/plc_line_HwIdentifiers.st index 24ab6724f..823b532f8 100644 --- a/src/io/app/SystemConstants/plc_line_HwIdentifiers.st +++ b/src/io/app/SystemConstants/plc_line_HwIdentifiers.st @@ -1,35 +1,35 @@ CONFIGURATION HardwareIDs VAR_GLOBAL CONSTANT - bni00l3_2_HwID : UINT := UINT#258; - bni00l3_2_16_DI_HwID : UINT := UINT#263; - bni00l3_2_16_DI_BALLUFF_8_Port_IO_Link_Master_HwID : UINT := UINT#264; - bni00l3_2_Rack_HwID : UINT := UINT#261; - bni00l3_2_X01_HwID : UINT := UINT#265; - bni00l3_2_X02_HwID : UINT := UINT#266; - bni00l3_2_X03_HwID : UINT := UINT#267; - bni00l3_2_X04_HwID : UINT := UINT#268; - bni00l3_2_X05_HwID : UINT := UINT#269; - bni00l3_2_X06_HwID : UINT := UINT#270; - bni00l3_2_X07_HwID : UINT := UINT#271; - bni00l3_2_X08_HwID : UINT := UINT#272; - bni00l3_2_bni00l3_2_HwID : UINT := UINT#262; - bni00l3_2_bni00l3_2_BNI_XG3_508_0B5_R067_HwID : UINT := UINT#273; - bni00l3_2_bni00l3_2_PN_IO_HwID : UINT := UINT#257; - bni00l3_2_bni00l3_2_PN_IO_Port_1_HwID : UINT := UINT#259; - bni00l3_2_bni00l3_2_PN_IO_Port_2_HwID : UINT := UINT#260; - et200sp_HwID : UINT := UINT#276; - et200sp_A100_Server_module_V1_1_0_bytes_HwID : UINT := UINT#281; - et200sp_A10_DI_16x24VDC_ST_V1_1_HwID : UINT := UINT#284; - et200sp_A20_DQ_16x24VDC_0_5A_ST_V1_1_HwID : UINT := UINT#283; - et200sp_A30_CM_4xIO_Link_V2_2_32I_32O_HwID : UINT := UINT#282; - et200sp_Rack_HwID : UINT := UINT#279; - et200sp_et200sp_HwID : UINT := UINT#280; - et200sp_et200sp_IM_155_6_PN_ST_V4_2_HwID : UINT := UINT#285; - et200sp_et200sp_PN_IO_HwID : UINT := UINT#275; - et200sp_et200sp_Port_1_HwID : UINT := UINT#277; - et200sp_et200sp_Port_2_HwID : UINT := UINT#278; + bni00l3_HwID : UINT := UINT#258; + bni00l3_BALLUFF_Link_module_HwID : UINT := UINT#263; + bni00l3_BALLUFF_Link_module_BALLUFF_8_Port_IO_Link_Master_HwID : UINT := UINT#264; + bni00l3_Rack_HwID : UINT := UINT#261; + bni00l3_X01_HwID : UINT := UINT#271; + bni00l3_X02_HwID : UINT := UINT#272; + bni00l3_X03_HwID : UINT := UINT#265; + bni00l3_X04_HwID : UINT := UINT#266; + bni00l3_X05_HwID : UINT := UINT#267; + bni00l3_X06_HwID : UINT := UINT#268; + bni00l3_X07_HwID : UINT := UINT#269; + bni00l3_X08_HwID : UINT := UINT#270; + bni00l3_bni00l3_HwID : UINT := UINT#262; + bni00l3_bni00l3_BNI_XG3_508_0B5_R067_HwID : UINT := UINT#273; + bni00l3_bni00l3_PN_IO_HwID : UINT := UINT#257; + bni00l3_bni00l3_PN_IO_Port_1_HwID : UINT := UINT#259; + bni00l3_bni00l3_PN_IO_Port_2_HwID : UINT := UINT#260; + et200sp_HwID : UINT := UINT#275; + et200sp_A100_Server_module_V1_1_0_bytes_HwID : UINT := UINT#280; + et200sp_A10_DI_16x24VDC_ST_V1_1_HwID : UINT := UINT#283; + et200sp_A20_DQ_16x24VDC_0_5A_ST_V1_1_HwID : UINT := UINT#282; + et200sp_A30_CM_4xIO_Link_V2_2_32I_32O_HwID : UINT := UINT#281; + et200sp_Rack_HwID : UINT := UINT#278; + et200sp_et200sp_HwID : UINT := UINT#279; + et200sp_et200sp_IM_155_6_PN_ST_V4_2_HwID : UINT := UINT#284; + et200sp_et200sp_PN_IO_HwID : UINT := UINT#274; + et200sp_et200sp_Port_1_HwID : UINT := UINT#276; + et200sp_et200sp_Port_2_HwID : UINT := UINT#277; plc_line_HwID : UINT := UINT#32; - plc_line_Rail_0_HwID : UINT := UINT#286; + plc_line_Rail_0_HwID : UINT := UINT#285; plc_line_plc_line_HwID : UINT := UINT#48; plc_line_plc_line_CPU_display_1_HwID : UINT := UINT#54; plc_line_plc_line_Card_reader_writer_1_HwID : UINT := UINT#51; @@ -41,8 +41,7 @@ CONFIGURATION HardwareIDs plc_line_plc_line_PROFINET_interface_2_HwID : UINT := UINT#72; plc_line_plc_line_PROFINET_interface_2_Port_3_HwID : UINT := UINT#73; plc_line_plc_line_Virtual_communication_interface_HwID : UINT := UINT#135; - profinet2_plc_line_HwID : UINT := UINT#256; - profinet_plc_line_HwID : UINT := UINT#274; + profinet_plc_line_HwID : UINT := UINT#256; END_VAR END_CONFIGURATION diff --git a/src/io/app/SystemConstants/plc_line_IoAddresses.st b/src/io/app/SystemConstants/plc_line_IoAddresses.st index e8c3e8dc5..a4cb9e995 100644 --- a/src/io/app/SystemConstants/plc_line_IoAddresses.st +++ b/src/io/app/SystemConstants/plc_line_IoAddresses.st @@ -1,17 +1,13 @@ CONFIGURATION IoAddresses VAR_GLOBAL - // Module bni00l3_2/16_DI - bni00l3_2_16_DI_BALLUFF_8_Port_IO_Link_Master_Input AT %IB0 : bni00l3_2_16_DI_BALLUFF_8_Port_IO_Link_Master_Input_Layout; - bni00l3_2_16_DI_BALLUFF_8_Port_IO_Link_Master_Output AT %QB0 : bni00l3_2_16_DI_BALLUFF_8_Port_IO_Link_Master_Output_Layout; - bni00l3_2_16_DI_X01_Input AT %IB1 : bni00l3_2_16_DI_X01_Input_Layout; - bni00l3_2_16_DI_X02_Input AT %IB2 : bni00l3_2_16_DI_X02_Input_Layout; - bni00l3_2_16_DI_X03_Input AT %IB3 : bni00l3_2_16_DI_X03_Input_Layout; - bni00l3_2_16_DI_X04_Input AT %IB4 : bni00l3_2_16_DI_X04_Input_Layout; - bni00l3_2_16_DI_X05_Input AT %IB5 : bni00l3_2_16_DI_X05_Input_Layout; - bni00l3_2_16_DI_X06_Input AT %IB6 : bni00l3_2_16_DI_X06_Input_Layout; - bni00l3_2_16_DI_X07_Input AT %IB7 : bni00l3_2_16_DI_X07_Input_Layout; - bni00l3_2_16_DI_X08_Input AT %IB8 : bni00l3_2_16_DI_X08_Input_Layout; + // Module bni00l3/BALLUFF_Link_module + bni00l3_BALLUFF_Link_module_BALLUFF_8_Port_IO_Link_Master_Input AT %IB0 : bni00l3_BALLUFF_Link_module_BALLUFF_8_Port_IO_Link_Master_Input_Layout; + bni00l3_BALLUFF_Link_module_BALLUFF_8_Port_IO_Link_Master_Output AT %QB0 : bni00l3_BALLUFF_Link_module_BALLUFF_8_Port_IO_Link_Master_Output_Layout; + bni00l3_BALLUFF_Link_module_X01_Input AT %IB1 : bni00l3_BALLUFF_Link_module_X01_Input_Layout; + bni00l3_BALLUFF_Link_module_X02_Input AT %IB6 : bni00l3_BALLUFF_Link_module_X02_Input_Layout; + bni00l3_BALLUFF_Link_module_X03_Input AT %IB43 : bni00l3_BALLUFF_Link_module_X03_Input_Layout; + bni00l3_BALLUFF_Link_module_X04_Input AT %IB46 : bni00l3_BALLUFF_Link_module_X04_Input_Layout; // Module et200sp/A10 et200sp_A10_Input AT %IB41 : et200sp_A10_Input_Layout; @@ -26,7 +22,7 @@ CONFIGURATION IoAddresses END_CONFIGURATION TYPE - bni00l3_2_16_DI_BALLUFF_8_Port_IO_Link_Master_Input_Layout : STRUCT + bni00l3_BALLUFF_Link_module_BALLUFF_8_Port_IO_Link_Master_Input_Layout : STRUCT Signals_0 AT %X0.0 : BOOL; Signals_1 AT %X0.1 : BOOL; Signals_2 AT %X0.2 : BOOL; @@ -39,7 +35,7 @@ TYPE END_TYPE TYPE - bni00l3_2_16_DI_BALLUFF_8_Port_IO_Link_Master_Output_Layout : STRUCT + bni00l3_BALLUFF_Link_module_BALLUFF_8_Port_IO_Link_Master_Output_Layout : STRUCT Signals_8 AT %X0.0 : BOOL; Signals_9 AT %X0.1 : BOOL; Signals_10 AT %X0.2 : BOOL; @@ -52,106 +48,50 @@ TYPE END_TYPE TYPE - bni00l3_2_16_DI_X01_Input_Layout : STRUCT - Signals_0_0 AT %X0.0 : BOOL; - Signals_0_1 AT %X0.1 : BOOL; - Signals_0_2 AT %X0.2 : BOOL; - Signals_0_3 AT %X0.3 : BOOL; - Signals_0_4 AT %X0.4 : BOOL; - Signals_0_5 AT %X0.5 : BOOL; - Signals_0_6 AT %X0.6 : BOOL; - Signals_0_7 AT %X0.7 : BOOL; + bni00l3_BALLUFF_Link_module_X01_Input_Layout : STRUCT + Signals_0 AT %B0 : ARRAY[0..3] OF BYTE; + Signals_1 AT %X4.2 : BOOL; + Signals_2 AT %X4.3 : BOOL; + Signals_3 AT %X4.4 : BOOL; + Signals_4 AT %X4.5 : BOOL; + Signals_5 AT %X4.6 : BOOL; + Signals_6 AT %X4.7 : BOOL; END_STRUCT; END_TYPE TYPE - bni00l3_2_16_DI_X02_Input_Layout : STRUCT - Signals_0_0 AT %X0.0 : BOOL; - Signals_0_1 AT %X0.1 : BOOL; - Signals_0_2 AT %X0.2 : BOOL; - Signals_0_3 AT %X0.3 : BOOL; - Signals_0_4 AT %X0.4 : BOOL; - Signals_0_5 AT %X0.5 : BOOL; - Signals_0_6 AT %X0.6 : BOOL; - Signals_0_7 AT %X0.7 : BOOL; + bni00l3_BALLUFF_Link_module_X02_Input_Layout : STRUCT + Signals_0 AT %B0 : ARRAY[0..1] OF BYTE; + Signals_1 AT %X2.2 : BOOL; + Signals_2 AT %X2.3 : BOOL; + Signals_3 AT %X2.4 : BOOL; + Signals_4 AT %X2.5 : BOOL; + Signals_5 AT %X2.6 : BOOL; + Signals_6 AT %X2.7 : BOOL; END_STRUCT; END_TYPE TYPE - bni00l3_2_16_DI_X03_Input_Layout : STRUCT - Signals_0_0 AT %X0.0 : BOOL; - Signals_0_1 AT %X0.1 : BOOL; - Signals_0_2 AT %X0.2 : BOOL; - Signals_0_3 AT %X0.3 : BOOL; - Signals_0_4 AT %X0.4 : BOOL; - Signals_0_5 AT %X0.5 : BOOL; - Signals_0_6 AT %X0.6 : BOOL; - Signals_0_7 AT %X0.7 : BOOL; + bni00l3_BALLUFF_Link_module_X03_Input_Layout : STRUCT + Signals_0 AT %B0 : ARRAY[0..1] OF BYTE; + Signals_1 AT %X2.2 : BOOL; + Signals_2 AT %X2.3 : BOOL; + Signals_3 AT %X2.4 : BOOL; + Signals_4 AT %X2.5 : BOOL; + Signals_5 AT %X2.6 : BOOL; + Signals_6 AT %X2.7 : BOOL; END_STRUCT; END_TYPE TYPE - bni00l3_2_16_DI_X04_Input_Layout : STRUCT - Signals_0_0 AT %X0.0 : BOOL; - Signals_0_1 AT %X0.1 : BOOL; - Signals_0_2 AT %X0.2 : BOOL; - Signals_0_3 AT %X0.3 : BOOL; - Signals_0_4 AT %X0.4 : BOOL; - Signals_0_5 AT %X0.5 : BOOL; - Signals_0_6 AT %X0.6 : BOOL; - Signals_0_7 AT %X0.7 : BOOL; - END_STRUCT; -END_TYPE - -TYPE - bni00l3_2_16_DI_X05_Input_Layout : STRUCT - Signals_0_0 AT %X0.0 : BOOL; - Signals_0_1 AT %X0.1 : BOOL; - Signals_0_2 AT %X0.2 : BOOL; - Signals_0_3 AT %X0.3 : BOOL; - Signals_0_4 AT %X0.4 : BOOL; - Signals_0_5 AT %X0.5 : BOOL; - Signals_0_6 AT %X0.6 : BOOL; - Signals_0_7 AT %X0.7 : BOOL; - END_STRUCT; -END_TYPE - -TYPE - bni00l3_2_16_DI_X06_Input_Layout : STRUCT - Signals_0_0 AT %X0.0 : BOOL; - Signals_0_1 AT %X0.1 : BOOL; - Signals_0_2 AT %X0.2 : BOOL; - Signals_0_3 AT %X0.3 : BOOL; - Signals_0_4 AT %X0.4 : BOOL; - Signals_0_5 AT %X0.5 : BOOL; - Signals_0_6 AT %X0.6 : BOOL; - Signals_0_7 AT %X0.7 : BOOL; - END_STRUCT; -END_TYPE - -TYPE - bni00l3_2_16_DI_X07_Input_Layout : STRUCT - Signals_0_0 AT %X0.0 : BOOL; - Signals_0_1 AT %X0.1 : BOOL; - Signals_0_2 AT %X0.2 : BOOL; - Signals_0_3 AT %X0.3 : BOOL; - Signals_0_4 AT %X0.4 : BOOL; - Signals_0_5 AT %X0.5 : BOOL; - Signals_0_6 AT %X0.6 : BOOL; - Signals_0_7 AT %X0.7 : BOOL; - END_STRUCT; -END_TYPE - -TYPE - bni00l3_2_16_DI_X08_Input_Layout : STRUCT - Signals_0_0 AT %X0.0 : BOOL; - Signals_0_1 AT %X0.1 : BOOL; - Signals_0_2 AT %X0.2 : BOOL; - Signals_0_3 AT %X0.3 : BOOL; - Signals_0_4 AT %X0.4 : BOOL; - Signals_0_5 AT %X0.5 : BOOL; - Signals_0_6 AT %X0.6 : BOOL; - Signals_0_7 AT %X0.7 : BOOL; + bni00l3_BALLUFF_Link_module_X04_Input_Layout : STRUCT + Signals_0 AT %B0 : ARRAY[0..0] OF BYTE; + Signals_1 AT %X1.2 : BOOL; + Signals_2 AT %X1.3 : BOOL; + Signals_3 AT %X1.4 : BOOL; + Signals_4 AT %X1.5 : BOOL; + Signals_5 AT %X1.6 : BOOL; + Signals_6 AT %X1.7 : BOOL; END_STRUCT; END_TYPE diff --git a/src/io/app/apax.yml b/src/io/app/apax.yml index 849183e80..45a3d1f2a 100644 --- a/src/io/app/apax.yml +++ b/src/io/app/apax.yml @@ -14,8 +14,7 @@ variables: AXTARGETPLATFORMINPUT: .\bin\1500\ AX_USERNAME: "admin" AX_TARGET_PWD: "Qwerty123456+" - # USE_PLC_SIM_ADVANCED: "true" - USE_PLC_SIM_ADVANCED: "true" + USE_PLC_SIM_ADVANCED: "false" # <= Do not commit any changes to the following variables. You may modify them locally, but committing the changes will mess up the nightly build. registries: "@inxton": "https://npm.pkg.github.com/" @@ -137,12 +136,20 @@ scripts: echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax swddo' Finished in :" $(expr $(date +%s) - $START) "s" alf: | #clear plc except ip and name and provide all actions for install all, build and initial download hw so as sw (apax plcsim & apax clean & apax install & apax clean_plc & apax ssc & apax hwfd & apax swfd) START=$(date +%s) - ..\\..\\scripts\\all_first.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED + if [ "$1" = "--force" ] || [ "$1" = "-f" ]; then + ..\\..\\scripts\\all_first.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED true + else + ..\\..\\scripts\\all_first.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED false + fi echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax alf' Finished in :" $(expr $(date +%s) - $START) "s" all: | #build and download hardware and software using cert file. If cert file does not exists or its hash is different calls apax alf (apax plcsim & apax clean & apax install & apax hwu & apax swfd) START=$(date +%s) - ..\\..\\scripts\\all.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED - echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax all' Finished in :" $(expr $(date +%s) - $START) "s" + if [ "$1" = "--force" ] || [ "$1" = "-f" ]; then + ..\\..\\scripts\\all.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED true + else + ..\\..\\scripts\\all.sh $DEFAULT_NAMESPACE $PLC_NAME $AXTARGET $AXTARGETPLATFORMINPUT $AX_USERNAME $AX_TARGET_PWD $USE_PLC_SIM_ADVANCED false + fi + echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax all' Finished in :" $(expr $(date +%s) - $START) "s" echo $(date +%D)"-"$(date +%H)":"$(date +%M)":"$(date +%S) " - 'apax all' Finished in :" $(expr $(date +%s) - $START) "s" ib: | START=$(date +%s) apax install diff --git a/src/io/app/hwc/hwc.gen/plc_line.HardwareIdentifiers.json b/src/io/app/hwc/hwc.gen/plc_line.HardwareIdentifiers.json new file mode 100644 index 000000000..a1ba59473 --- /dev/null +++ b/src/io/app/hwc/hwc.gen/plc_line.HardwareIdentifiers.json @@ -0,0 +1,173 @@ +{ + "Version": 1, + "HardwareIdentifiers": [ + { + "Name": "bni00l3", + "Value": 258 + }, + { + "Name": "bni00l3~BALLUFF_Link_module", + "Value": 263 + }, + { + "Name": "bni00l3~BALLUFF_Link_module~BALLUFF_8_Port_IO-Link_Master", + "Value": 264 + }, + { + "Name": "bni00l3~Rack", + "Value": 261 + }, + { + "Name": "bni00l3~X01", + "Value": 271 + }, + { + "Name": "bni00l3~X02", + "Value": 272 + }, + { + "Name": "bni00l3~X03", + "Value": 265 + }, + { + "Name": "bni00l3~X04", + "Value": 266 + }, + { + "Name": "bni00l3~X05", + "Value": 267 + }, + { + "Name": "bni00l3~X06", + "Value": 268 + }, + { + "Name": "bni00l3~X07", + "Value": 269 + }, + { + "Name": "bni00l3~X08", + "Value": 270 + }, + { + "Name": "bni00l3~bni00l3", + "Value": 262 + }, + { + "Name": "bni00l3~bni00l3~BNI XG3-508-0B5-R067", + "Value": 273 + }, + { + "Name": "bni00l3~bni00l3~PN-IO", + "Value": 257 + }, + { + "Name": "bni00l3~bni00l3~PN-IO~Port_1", + "Value": 259 + }, + { + "Name": "bni00l3~bni00l3~PN-IO~Port_2", + "Value": 260 + }, + { + "Name": "et200sp", + "Value": 275 + }, + { + "Name": "et200sp~A100~Server module V1.1 (0 bytes)", + "Value": 280 + }, + { + "Name": "et200sp~A10~DI 16x24VDC ST V1.1", + "Value": 283 + }, + { + "Name": "et200sp~A20~DQ 16x24VDC/0.5A ST V1.1", + "Value": 282 + }, + { + "Name": "et200sp~A30~CM 4xIO-Link V2.2 32I/32O", + "Value": 281 + }, + { + "Name": "et200sp~Rack", + "Value": 278 + }, + { + "Name": "et200sp~et200sp", + "Value": 279 + }, + { + "Name": "et200sp~et200sp~IM 155-6 PN ST V4.2", + "Value": 284 + }, + { + "Name": "et200sp~et200sp~PN-IO", + "Value": 274 + }, + { + "Name": "et200sp~et200sp~Port_1", + "Value": 276 + }, + { + "Name": "et200sp~et200sp~Port_2", + "Value": 277 + }, + { + "Name": "plc_line", + "Value": 32 + }, + { + "Name": "plc_line~Rail_0", + "Value": 285 + }, + { + "Name": "plc_line~plc_line", + "Value": 48 + }, + { + "Name": "plc_line~plc_line~CPU display_1", + "Value": 54 + }, + { + "Name": "plc_line~plc_line~Card reader/writer_1", + "Value": 51 + }, + { + "Name": "plc_line~plc_line~DP interface_1", + "Value": 60 + }, + { + "Name": "plc_line~plc_line~OPC UA_1", + "Value": 117 + }, + { + "Name": "plc_line~plc_line~PROFINET_interface_1", + "Value": 64 + }, + { + "Name": "plc_line~plc_line~PROFINET_interface_1~Port_1", + "Value": 65 + }, + { + "Name": "plc_line~plc_line~PROFINET_interface_1~Port_2", + "Value": 66 + }, + { + "Name": "plc_line~plc_line~PROFINET_interface_2", + "Value": 72 + }, + { + "Name": "plc_line~plc_line~PROFINET_interface_2~Port_3", + "Value": 73 + }, + { + "Name": "plc_line~plc_line~Virtual communication interface", + "Value": 135 + }, + { + "Name": "profinet_plc_line", + "Value": 256 + } + ] +} \ No newline at end of file diff --git a/src/io/app/hwc/hwc.gen/plc_line.IoAddresses.json b/src/io/app/hwc/hwc.gen/plc_line.IoAddresses.json new file mode 100644 index 000000000..e44f853d7 --- /dev/null +++ b/src/io/app/hwc/hwc.gen/plc_line.IoAddresses.json @@ -0,0 +1,983 @@ +{ + "Version": 2, + "IoAddresses": [ + { + "Ref": "bni00l3/BALLUFF_Link_module", + "HardwareIdentifier": 263, + "Submodules": [ + { + "Name": "BALLUFF_8_Port_IO-Link_Master", + "Ref": "bni00l3/BALLUFF_Link_module/BALLUFF_8_Port_IO-Link_Master", + "HardwareIdentifier": 264, + "Inputs": { + "StartAddress": "0.0", + "EndAddress": "0.7", + "Length": 8, + "Source": "AutoAssigned", + "SignalLayout": [ + { + "Name": "Signals_0", + "Offset": 0, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_1", + "Offset": 1, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_2", + "Offset": 2, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_3", + "Offset": 3, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_4", + "Offset": 4, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_5", + "Offset": 5, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_6", + "Offset": 6, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_7", + "Offset": 7, + "Length": 1, + "DataType": "Boolean" + } + ] + }, + "Outputs": { + "StartAddress": "0.0", + "EndAddress": "0.7", + "Length": 8, + "Source": "AutoAssigned", + "SignalLayout": [ + { + "Name": "Signals_8", + "Offset": 0, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_9", + "Offset": 1, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_10", + "Offset": 2, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_11", + "Offset": 3, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_12", + "Offset": 4, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_13", + "Offset": 5, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_14", + "Offset": 6, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_15", + "Offset": 7, + "Length": 1, + "DataType": "Boolean" + } + ] + } + }, + { + "Name": "X01", + "Ref": "bni00l3/BALLUFF_Link_module/X01", + "HardwareIdentifier": 271, + "Inputs": { + "StartAddress": "1.0", + "EndAddress": "5.7", + "Length": 40, + "Source": "AutoAssigned", + "SignalLayout": [ + { + "Name": "Signals_0", + "Offset": 0, + "Length": 32, + "DataType": "OctetString" + }, + { + "Name": "Signals_1", + "Offset": 34, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_2", + "Offset": 35, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_3", + "Offset": 36, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_4", + "Offset": 37, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_5", + "Offset": 38, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_6", + "Offset": 39, + "Length": 1, + "DataType": "Boolean" + } + ] + } + }, + { + "Name": "X02", + "Ref": "bni00l3/BALLUFF_Link_module/X02", + "HardwareIdentifier": 272, + "Inputs": { + "StartAddress": "6.0", + "EndAddress": "8.7", + "Length": 24, + "Source": "AutoAssigned", + "SignalLayout": [ + { + "Name": "Signals_0", + "Offset": 0, + "Length": 16, + "DataType": "OctetString" + }, + { + "Name": "Signals_1", + "Offset": 18, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_2", + "Offset": 19, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_3", + "Offset": 20, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_4", + "Offset": 21, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_5", + "Offset": 22, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_6", + "Offset": 23, + "Length": 1, + "DataType": "Boolean" + } + ] + } + }, + { + "Name": "X03", + "Ref": "bni00l3/BALLUFF_Link_module/X03", + "HardwareIdentifier": 265, + "Inputs": { + "StartAddress": "43.0", + "EndAddress": "45.7", + "Length": 24, + "Source": "AutoAssigned", + "SignalLayout": [ + { + "Name": "Signals_0", + "Offset": 0, + "Length": 16, + "DataType": "OctetString" + }, + { + "Name": "Signals_1", + "Offset": 18, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_2", + "Offset": 19, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_3", + "Offset": 20, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_4", + "Offset": 21, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_5", + "Offset": 22, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_6", + "Offset": 23, + "Length": 1, + "DataType": "Boolean" + } + ] + } + }, + { + "Name": "X04", + "Ref": "bni00l3/BALLUFF_Link_module/X04", + "HardwareIdentifier": 266, + "Inputs": { + "StartAddress": "46.0", + "EndAddress": "47.7", + "Length": 16, + "Source": "AutoAssigned", + "SignalLayout": [ + { + "Name": "Signals_0", + "Offset": 0, + "Length": 8, + "DataType": "OctetString" + }, + { + "Name": "Signals_1", + "Offset": 10, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_2", + "Offset": 11, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_3", + "Offset": 12, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_4", + "Offset": 13, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_5", + "Offset": 14, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_6", + "Offset": 15, + "Length": 1, + "DataType": "Boolean" + } + ] + } + } + ] + }, + { + "Ref": "et200sp/A10", + "Submodules": [ + { + "Name": "DI 16x24VDC ST V1.1", + "HardwareIdentifier": 283, + "Inputs": { + "StartAddress": "41.0", + "EndAddress": "42.7", + "Length": 16, + "Source": "AutoAssigned", + "SignalLayout": [ + { + "Name": "Signals_0", + "Offset": 0, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_1", + "Offset": 1, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_2", + "Offset": 2, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_3", + "Offset": 3, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_4", + "Offset": 4, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_5", + "Offset": 5, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_6", + "Offset": 6, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_7", + "Offset": 7, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_8", + "Offset": 8, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_9", + "Offset": 9, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_10", + "Offset": 10, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_11", + "Offset": 11, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_12", + "Offset": 12, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_13", + "Offset": 13, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_14", + "Offset": 14, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_15", + "Offset": 15, + "Length": 1, + "DataType": "Boolean" + } + ] + } + } + ] + }, + { + "Ref": "et200sp/A20", + "Submodules": [ + { + "Name": "DQ 16x24VDC/0.5A ST V1.1", + "HardwareIdentifier": 282, + "Outputs": { + "StartAddress": "33.0", + "EndAddress": "34.7", + "Length": 16, + "Source": "AutoAssigned", + "SignalLayout": [ + { + "Name": "Signals_0", + "Offset": 0, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_1", + "Offset": 1, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_2", + "Offset": 2, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_3", + "Offset": 3, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_4", + "Offset": 4, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_5", + "Offset": 5, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_6", + "Offset": 6, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_7", + "Offset": 7, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_8", + "Offset": 8, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_9", + "Offset": 9, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_10", + "Offset": 10, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_11", + "Offset": 11, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_12", + "Offset": 12, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_13", + "Offset": 13, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_14", + "Offset": 14, + "Length": 1, + "DataType": "Boolean" + }, + { + "Name": "Signals_15", + "Offset": 15, + "Length": 1, + "DataType": "Boolean" + } + ] + } + } + ] + }, + { + "Ref": "et200sp/A30", + "Submodules": [ + { + "Name": "CM 4xIO-Link V2.2 32I/32O", + "HardwareIdentifier": 281, + "Inputs": { + "StartAddress": "9.0", + "EndAddress": "40.7", + "Length": 256, + "Source": "AutoAssigned", + "SignalLayout": [ + { + "Name": "Signals_0", + "Offset": 0, + "Length": 8, + "DataType": "Unsigned8" + }, + { + "Name": "Signals_1", + "Offset": 8, + "Length": 8, + "DataType": "Unsigned8" + }, + { + "Name": "Signals_2", + "Offset": 16, + "Length": 8, + "DataType": "Unsigned8" + }, + { + "Name": "Signals_3", + "Offset": 24, + "Length": 8, + "DataType": "Unsigned8" + }, + { + "Name": "Signals_4", + "Offset": 32, + "Length": 8, + "DataType": "Unsigned8" + }, + { + "Name": "Signals_5", + "Offset": 40, + "Length": 8, + "DataType": "Unsigned8" + }, + { + "Name": "Signals_6", + "Offset": 48, + "Length": 8, + "DataType": "Unsigned8" + }, + { + "Name": "Signals_7", + "Offset": 56, + "Length": 8, + "DataType": "Unsigned8" + }, + { + "Name": "Signals_8", + "Offset": 64, + "Length": 8, + "DataType": "Unsigned8" + }, + { + "Name": "Signals_9", + "Offset": 72, + "Length": 8, + "DataType": "Unsigned8" + }, + { + "Name": "Signals_10", + "Offset": 80, + "Length": 8, + "DataType": "Unsigned8" + }, + { + "Name": "Signals_11", + "Offset": 88, + "Length": 8, + "DataType": "Unsigned8" + }, + { + "Name": "Signals_12", + "Offset": 96, + "Length": 8, + "DataType": "Unsigned8" + }, + { + "Name": "Signals_13", + "Offset": 104, + "Length": 8, + "DataType": "Unsigned8" + }, + { + "Name": "Signals_14", + "Offset": 112, + "Length": 8, + "DataType": "Unsigned8" + }, + { + "Name": "Signals_15", + "Offset": 120, + "Length": 8, + "DataType": "Unsigned8" + }, + { + "Name": "Signals_16", + "Offset": 128, + "Length": 8, + "DataType": "Unsigned8" + }, + { + "Name": "Signals_17", + "Offset": 136, + "Length": 8, + "DataType": "Unsigned8" + }, + { + "Name": "Signals_18", + "Offset": 144, + "Length": 8, + "DataType": "Unsigned8" + }, + { + "Name": "Signals_19", + "Offset": 152, + "Length": 8, + "DataType": "Unsigned8" + }, + { + "Name": "Signals_20", + "Offset": 160, + "Length": 8, + "DataType": "Unsigned8" + }, + { + "Name": "Signals_21", + "Offset": 168, + "Length": 8, + "DataType": "Unsigned8" + }, + { + "Name": "Signals_22", + "Offset": 176, + "Length": 8, + "DataType": "Unsigned8" + }, + { + "Name": "Signals_23", + "Offset": 184, + "Length": 8, + "DataType": "Unsigned8" + }, + { + "Name": "Signals_24", + "Offset": 192, + "Length": 8, + "DataType": "Unsigned8" + }, + { + "Name": "Signals_25", + "Offset": 200, + "Length": 8, + "DataType": "Unsigned8" + }, + { + "Name": "Signals_26", + "Offset": 208, + "Length": 8, + "DataType": "Unsigned8" + }, + { + "Name": "Signals_27", + "Offset": 216, + "Length": 8, + "DataType": "Unsigned8" + }, + { + "Name": "Signals_28", + "Offset": 224, + "Length": 8, + "DataType": "Unsigned8" + }, + { + "Name": "Signals_29", + "Offset": 232, + "Length": 8, + "DataType": "Unsigned8" + }, + { + "Name": "Signals_30", + "Offset": 240, + "Length": 8, + "DataType": "Unsigned8" + }, + { + "Name": "Signals_31", + "Offset": 248, + "Length": 8, + "DataType": "Unsigned8" + } + ] + }, + "Outputs": { + "StartAddress": "1.0", + "EndAddress": "32.7", + "Length": 256, + "Source": "AutoAssigned", + "SignalLayout": [ + { + "Name": "Signals_32", + "Offset": 0, + "Length": 8, + "DataType": "Unsigned8" + }, + { + "Name": "Signals_33", + "Offset": 8, + "Length": 8, + "DataType": "Unsigned8" + }, + { + "Name": "Signals_34", + "Offset": 16, + "Length": 8, + "DataType": "Unsigned8" + }, + { + "Name": "Signals_35", + "Offset": 24, + "Length": 8, + "DataType": "Unsigned8" + }, + { + "Name": "Signals_36", + "Offset": 32, + "Length": 8, + "DataType": "Unsigned8" + }, + { + "Name": "Signals_37", + "Offset": 40, + "Length": 8, + "DataType": "Unsigned8" + }, + { + "Name": "Signals_38", + "Offset": 48, + "Length": 8, + "DataType": "Unsigned8" + }, + { + "Name": "Signals_39", + "Offset": 56, + "Length": 8, + "DataType": "Unsigned8" + }, + { + "Name": "Signals_40", + "Offset": 64, + "Length": 8, + "DataType": "Unsigned8" + }, + { + "Name": "Signals_41", + "Offset": 72, + "Length": 8, + "DataType": "Unsigned8" + }, + { + "Name": "Signals_42", + "Offset": 80, + "Length": 8, + "DataType": "Unsigned8" + }, + { + "Name": "Signals_43", + "Offset": 88, + "Length": 8, + "DataType": "Unsigned8" + }, + { + "Name": "Signals_44", + "Offset": 96, + "Length": 8, + "DataType": "Unsigned8" + }, + { + "Name": "Signals_45", + "Offset": 104, + "Length": 8, + "DataType": "Unsigned8" + }, + { + "Name": "Signals_46", + "Offset": 112, + "Length": 8, + "DataType": "Unsigned8" + }, + { + "Name": "Signals_47", + "Offset": 120, + "Length": 8, + "DataType": "Unsigned8" + }, + { + "Name": "Signals_48", + "Offset": 128, + "Length": 8, + "DataType": "Unsigned8" + }, + { + "Name": "Signals_49", + "Offset": 136, + "Length": 8, + "DataType": "Unsigned8" + }, + { + "Name": "Signals_50", + "Offset": 144, + "Length": 8, + "DataType": "Unsigned8" + }, + { + "Name": "Signals_51", + "Offset": 152, + "Length": 8, + "DataType": "Unsigned8" + }, + { + "Name": "Signals_52", + "Offset": 160, + "Length": 8, + "DataType": "Unsigned8" + }, + { + "Name": "Signals_53", + "Offset": 168, + "Length": 8, + "DataType": "Unsigned8" + }, + { + "Name": "Signals_54", + "Offset": 176, + "Length": 8, + "DataType": "Unsigned8" + }, + { + "Name": "Signals_55", + "Offset": 184, + "Length": 8, + "DataType": "Unsigned8" + }, + { + "Name": "Signals_56", + "Offset": 192, + "Length": 8, + "DataType": "Unsigned8" + }, + { + "Name": "Signals_57", + "Offset": 200, + "Length": 8, + "DataType": "Unsigned8" + }, + { + "Name": "Signals_58", + "Offset": 208, + "Length": 8, + "DataType": "Unsigned8" + }, + { + "Name": "Signals_59", + "Offset": 216, + "Length": 8, + "DataType": "Unsigned8" + }, + { + "Name": "Signals_60", + "Offset": 224, + "Length": 8, + "DataType": "Unsigned8" + }, + { + "Name": "Signals_61", + "Offset": 232, + "Length": 8, + "DataType": "Unsigned8" + }, + { + "Name": "Signals_62", + "Offset": 240, + "Length": 8, + "DataType": "Unsigned8" + }, + { + "Name": "Signals_63", + "Offset": 248, + "Length": 8, + "DataType": "Unsigned8" + } + ] + } + } + ] + } + ] +} \ No newline at end of file diff --git a/src/io/app/hwc/hwc.gen/plc_line.SecurityConfiguration.json b/src/io/app/hwc/hwc.gen/plc_line.SecurityConfiguration.json new file mode 100644 index 000000000..7cb3221c7 --- /dev/null +++ b/src/io/app/hwc/hwc.gen/plc_line.SecurityConfiguration.json @@ -0,0 +1,9 @@ +{ + "PKIData": "AQAAAAAAAAAAAAAAAAAAAAEBAcIgAAACAAAAAAAAAAAAAwAAAN8ALS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS0KTUhvd0ZBWUhLb1pJemowQ0FRWUpLeVFEQXdJSUFRRUxBMklBQkE5K2o5TGhzZHRSUUxQNUlPQzd6N1hIRjZNVwpUb242cjJ6SzZnaGVTMEFHZWUxdjBkOUg0WVJ4U2FIcU1tcVBYQW81Z08vZFVOUGx3UHc3LzhIbzdPZkRsbmVOClJLcVVmaFp4R0M0OS9ZSWFxSTh6eCt6dG1yeVVXcjRON1V3ZDlRPT0KLS0tLS1FTkQgUFVCTElDIEtFWS0tLS0tCnsBAQACAAAnEAAgwkS+vKYDIcDJX242EnfXoftTMapt9IfPGJPMfr7gUbUBACAADAAQsrhEcGQ/6n/I3pmUjic5+AEAAAE2w3r/vyU5JCXv0dUoTxU+BpTPagfGXjcoG+Zg+zRL33vBUT29z6v1HWM3PJmPK1lEttDE2FX3JWY7jMicuQPKDIulEyGyGzgRjDmupvOwoRJFukNCR2NhQMO/QVaK4pXIBheH8AqqBC/rgdrwODpiPJGCPArhxCsDdTDSGO9DU5aK0fAaSbqF1qHPxRQ23wVuRycCJyNHGM5cDKe4S9/8FuFWi7bhycdCQKQgGjGdTmwOLkpYGp7X5otAqWC+3TVIccaEFGIHCPAgwGklMWH0QIDJ9MjSZk7Y8jdnktFHxY42KMHheoFZaekz7Ekd410SC0GiWOiDBWYskQGbdzopt5xS8wT3KJ46TBYY17z0GmJLQANRPol6CQ7n2XI6itTH1yMYofgS+SU3kN2UvYdvFZ235ETR3wIACWxvY2FsaG9zdAEAAAAAAAAAAQAAAAIAAAAAAAAAFAAoWLCX0+KVG3H04ms2YN95pzUxBrQGAQAGsC0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQ0KTUlJRXN6Q0NBNXVnQXdJQkFnSVVPUUNjMEY1bFpaQUJ3S1dCamN6V0hSUHZGR3d3RFFZSktvWklodmNOQVFFTEJRQXdlekVMTUFrRw0KQTFVRUJoTUNXRmd4RWpBUUJnTlZCQWdNQ1ZOMFlYUmxUbUZ0WlRFUk1BOEdBMVVFQnd3SVEybDBlVTVoYldVeEZEQVNCZ05WQkFvTQ0KQzBOdmJYQmhibmxPWVcxbE1Sc3dHUVlEVlFRTERCSkRiMjF3WVc1NVUyVmpkR2x2Yms1aGJXVXhFakFRQmdOVkJBTU1DV3h2WTJGcw0KYUc5emREQWVGdzB5TmpBek1EVXhPVEk1TXpKYUZ3MHpOakF6TURJeE9USTVNekphTUhzeEN6QUpCZ05WQkFZVEFsaFlNUkl3RUFZRA0KVlFRSURBbFRkR0YwWlU1aGJXVXhFVEFQQmdOVkJBY01DRU5wZEhsT1lXMWxNUlF3RWdZRFZRUUtEQXREYjIxd1lXNTVUbUZ0WlRFYg0KTUJrR0ExVUVDd3dTUTI5dGNHRnVlVk5sWTNScGIyNU9ZVzFsTVJJd0VBWURWUVFEREFsc2IyTmhiR2h2YzNRd2dnRWlNQTBHQ1NxRw0KU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRRFMxREVoamhLVUYzZ0NtSlRCeEZwNGEvTHBQR3VGWDhnNmJEaGRSdjY3dWJ3UA0KYUhzbWJjcllVWm1pRlB2aVluU0dCSXZvdk94RnlrNWlRVkF3RXZhOWM5Qjh6QXZpb0FWQXlJU01ORThSYUhOaGVuVEtEMUJPN3JBdw0KNWs0KzAremlGWDZWQzFFZmVOS3BhRTNTTkNGWG8vVTUxdHRwejhEanp5aWt2dGpBUVgvSmpKVXRQUmJCYjJLcmhuSjhLZk94YTJ6TQ0KZjU3Qm5yUHJYOGljdkNqdTdqYUw0ZkNkWnlmUUdXN0dRVVRIckRVcjRuSW5qU1o5blZlQy9ENXB3NkxRSU5CekZDWW85bVZHZjlqbQ0Ka1NHSkdwK0V3dmdmRVBqYkk2bVA4TXFyWTF1WnNpa0xiOEcxU01PN2ZXK0d6UExITkRXc1BwM3VnTHNQK1VaMi9iT1JBZ01CQUFHag0KZ2dFdE1JSUJLVEFKQmdOVkhSTUVBakFBTUE0R0ExVWREd0VCL3dRRUF3SUM5REFkQmdOVkhTVUVGakFVQmdnckJnRUZCUWNEQVFZSQ0KS3dZQkJRVUhBd0l3RXdZRFZSMFJCQXd3Q29JQWh3VEFxR1I0aGdBd0hRWURWUjBPQkJZRUZEMUsyN2gwRWQ5YkZ5ODRFUVpvbGtRbQ0KRERsS01JRzRCZ05WSFNNRWdiQXdnYTJBRkQxSzI3aDBFZDliRnk4NEVRWm9sa1FtRERsS29YK2tmVEI3TVFzd0NRWURWUVFHRXdKWQ0KV0RFU01CQUdBMVVFQ0F3SlUzUmhkR1ZPWVcxbE1SRXdEd1lEVlFRSERBaERhWFI1VG1GdFpURVVNQklHQTFVRUNnd0xRMjl0Y0dGdQ0KZVU1aGJXVXhHekFaQmdOVkJBc01Fa052YlhCaGJubFRaV04wYVc5dVRtRnRaVEVTTUJBR0ExVUVBd3dKYkc5allXeG9iM04wZ2hRNQ0KQUp6UVhtVmxrQUhBcFlHTnpOWWRFKzhVYkRBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQUJLK09RRVBQc3plcitYeXlvZ2R3R3BFaQ0KSkNmNUF2SDFxMEJDa0VrU0tWZEh4SGMrZmxnYXlPR1AwT015ZFJWR1JvcFBveEpMUXQ5VlR4TnBSOWYwQWF6dEhDcW5iSTZmTjNyRQ0Kc1U3NmdCeW5aQzkxbzN6NitoSXBDb2FGbUM2a1ZTUzR1WThZOEN3SXZ5ZjAzT0xRRWJDbmNBczF2S3NuU1JrNWpkSGlGYVlQblpLMQ0KTXZIMzA2ZHJpUmZsMENtZUFpZ0hjcTAvdHBKN3Uya0NKd0ZPR0dBdEVjZ3ZTMUdYRlkvMTJxQzc0eTNqTmhFVEVlNjM1cHZlc01LWA0KWXAzY296ZE9IRlRGeXFUTkVXOTJUbzBTK2IwTmdRTHIxLzZhVlU0VWNIR3ZnaFlTS294dHVyNkxHd3M5dlVEdmozaUJIU2Y1QlhOVg0KMmYwY3luQjd3Q1NoTHc9PQ0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQ0KFwgBAACzAQACAHwwejAUBgcqhkjOPQIBBgkrJAMDAggBAQsDYgAEFvtiMIaYPyw3gfkeLmtWNhH7ZKFVB6LWDfeybsbOR1PJCsGAPsRJMOsDK0HuowvlDP5ecD3TCSuYU1Fmq0KaqOwvGzBYoIanIup68TuOSxg0OERDfeytUZIvoweRCplqJtX+8iEzWZavhiK/vF/7tgAgeft6yW/y1h0lNRX81ObTp6Nq3vS5wgIgdKNu9RuBtlYHXi0tLS0tQkVHSU4gRU5DUllQVEVEIFBSSVZBVEUgS0VZLS0tLS0KTUlJRk5UQmZCZ2txaGtpRzl3MEJCUTB3VWpBeEJna3Foa2lHOXcwQkJRd3dKQVFRT1NNR1hXYjFyYktSazVIZQp3RGNSUFFJQ0NBQXdEQVlJS29aSWh2Y05BZ2tGQURBZEJnbGdoa2dCWlFNRUFTb0VFQUIxc0YvKy8zazNsNUFXCk8wbUtQU2NFZ2dUUWtraG1QTStuUUVzTk52cFRHY0NmTnBXK25FdVpyM0JxdXlML1lnelZnZWs1c090NTZkNXMKQUx5SXY3eVZ4MzJGSndWQk50Q0Q1Q2FoOU9mbzE4NHNwdTd1Y1lCZm96V05xQnVUTm9od3Z2aDk2OEFZYk5DaQpaMUc0T0pHajU2MGVJZ2NiYWRSOTh2eVg5WnFWYklRQ2VWWmdta3JDYStrVzh1bmFwM25uTFZuK3hmV1luL1Z0ClMvbXIwMjRmYjFwK1JjN1pwWFYxRUhIZnNZZ0doUE5MSDBaUG5pTWY4Ty9vZ2hyVWZIRWhqZTRTMGszcDdrOWoKSE9Zd1VmdlBXUWdHNG5LeDBKODd6NDYwQU5oeEx2MHhleEdOODZudlkybzk0VHZMenlzWldLNXZPNjJmbmFrMgpMdDkyWnB2RjZ5eW03OGtDZHd4T1hxQ0pOaGN2ZStqRUFNWFNnNGJpbm9meDY0R3V1cFJjRWE1RGpLa05DTERDCmo4c0FEaUNHSHVDVXhaNW1zNVBSbFpMeDk2R2pUS28xRDJkUy9HSXBzUzJXbFpSUFNwZTE2cHRRUmVUZ29Wa3YKbC9OelZnd1JGZng2a2pmQ01EQWdEOE8xRkU3MWlVWnZlejJvZUY2SW9HK3VnUlQ3eSs4RlRMckZvM2I1Rk5xbAo4QW9VR05BOXVsKzVxeDhjbGFNTm1zNHZPYW9yRzkzNUtxamlFdVVpR3VtYy9kWVU1ZnExVmlsT2FKb0xQNkgrCjZWRlJPdmFVdFgxZm5rczAzakNtVHE0dnUwNjlWNXFCZERWTSs4ZExCMDloWlZtUUY3ZFhVc1N5aTVHOGI2YlUKa01xaVpOak0zU1dxa1o1UkxZeVE1MHdHejZwQUVXZnVRMWxmb1ZEcnJrL2xvUEI0NmxjYVV1b1BXeFg0YTJkZwp4U0prT0VOb1orWUtUQ0ZRdmI5QVZveXE2WEdVdmY0bmhQck1id0tjZ21NbGpEb1c3Mng2TWJHcWhQU0xTbFk3ClA3amd5OHBwQjllbnAyZHE2OUJKVUtwdDBjek5PU0dZY1hQcWtPRXk4SkI2WWhwQ3NCZm03OFB5VkRKb2VMNGcKNVVpSEE4YndQck1EUitIS1IwWWE5RXJYZW1qUlM1WVhYK2lUT1FRVit6UjQ3N1Z6K09MZ29GVS9WL2JyUWN0VgpUTEpYajVKTUUxbzVqVVpnQ1lSSXM1aGlsQ2c2SHZXc2dZa0lEdEtiSXhqK3Jvdk5FWjRvME01T001RWE0RHNLCjZCTVI4YWljQXlqOWJvL3Jnb1NXMHE2NHVYNFdjaHlyMXRWbS9sbXJsM3czc1ZnS3MrRzZ4RnlBSndjcTJNOHkKWlkzcVZ4YjNVM1c1YnhYdXRQelNqKzNwMUJoMEJKQzZLcnRoN2RnbHN2UjMwaWlRRFpQLzNkc0dSb3pLcVFmKwp5N0VzMVNXM3NGWXhQSW12MUVSMFN3bGl4dlN1ZmJmdXZyMk04TUlpQ1V0MFBMaTVFS2E3alduTWxsd3dMRzRTCnZYT1Q1MDg5U253bDl4Z1ppMWxub3BXREhGOTlqVFJWd1E5bm53YnRrVmhKa1d6WlNMTnRKK2dkR21CeTJOUGoKdmZDWVYvZGNJMXZDMnRjclZRNlVuNm9oU2tGZ3c3STQ0aUVhUkViSENHdW11QkoxSm5ENDBkNFVIczhqRlFNRQpSTmFGa3dkdGV1MlBPK1FZL3czREhsZUtVYnR4L3R4WXh4eGVwL2Q1Qk9YaFhPZEE4ZnducTlXSmJDUk1HU1YvCkNWbnhnYjREV2Rlc2hJZFNaTlN4LzhwVGxJRUdsYlBpZDl2MWErajBGTy9wTCtzdFQya0tIczJOV2p1VGUvQlgKQ3NvM2p6Nkt1T1dzU1dENHVMcUpPa2loWkpSbTVPSUwzMHhoSFJXQmVKTEorVURUNE5UZGxHcVFJM1JuQ1dndwpFR3NBSHpaVzdTT0NrdERXYnlCTXEycnE1cXZQd2FIdGI4L1FqcEtDWVdiS0VCTVRoYXd5ZHBaMUZkSytudFJSCmo3c1hWWGNTdWJTajhGQVo3dDNycm1WSlJuMFRpbjVPL1R3R3hlMXJwc2JYdVplczF0U1REcGxrUGlhcHowY04KbGM0VlRxZmxPNzRpWXBscnFoTUtzaHRMMGZlNi8wM0pMUE1TbklSL3V0RWxhbUNRS3NCUWxtbz0KLS0tLS1FTkQgRU5DUllQVEVEIFBSSVZBVEUgS0VZLS0tLS0KJkROUzosIElQIEFkZHJlc3M6MTkyLjE2OC4xMDAuMTIwLCBVUkk6CWxvY2FsaG9zdAIAAAAAAAAAAQAAAAIAAAAAAAAAFAAoWLCX0+KVG3H04ms2YN95pzUxBrQGAQAGsC0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQ0KTUlJRXN6Q0NBNXVnQXdJQkFnSVVPUUNjMEY1bFpaQUJ3S1dCamN6V0hSUHZGR3d3RFFZSktvWklodmNOQVFFTEJRQXdlekVMTUFrRw0KQTFVRUJoTUNXRmd4RWpBUUJnTlZCQWdNQ1ZOMFlYUmxUbUZ0WlRFUk1BOEdBMVVFQnd3SVEybDBlVTVoYldVeEZEQVNCZ05WQkFvTQ0KQzBOdmJYQmhibmxPWVcxbE1Sc3dHUVlEVlFRTERCSkRiMjF3WVc1NVUyVmpkR2x2Yms1aGJXVXhFakFRQmdOVkJBTU1DV3h2WTJGcw0KYUc5emREQWVGdzB5TmpBek1EVXhPVEk1TXpKYUZ3MHpOakF6TURJeE9USTVNekphTUhzeEN6QUpCZ05WQkFZVEFsaFlNUkl3RUFZRA0KVlFRSURBbFRkR0YwWlU1aGJXVXhFVEFQQmdOVkJBY01DRU5wZEhsT1lXMWxNUlF3RWdZRFZRUUtEQXREYjIxd1lXNTVUbUZ0WlRFYg0KTUJrR0ExVUVDd3dTUTI5dGNHRnVlVk5sWTNScGIyNU9ZVzFsTVJJd0VBWURWUVFEREFsc2IyTmhiR2h2YzNRd2dnRWlNQTBHQ1NxRw0KU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRRFMxREVoamhLVUYzZ0NtSlRCeEZwNGEvTHBQR3VGWDhnNmJEaGRSdjY3dWJ3UA0KYUhzbWJjcllVWm1pRlB2aVluU0dCSXZvdk94RnlrNWlRVkF3RXZhOWM5Qjh6QXZpb0FWQXlJU01ORThSYUhOaGVuVEtEMUJPN3JBdw0KNWs0KzAremlGWDZWQzFFZmVOS3BhRTNTTkNGWG8vVTUxdHRwejhEanp5aWt2dGpBUVgvSmpKVXRQUmJCYjJLcmhuSjhLZk94YTJ6TQ0KZjU3Qm5yUHJYOGljdkNqdTdqYUw0ZkNkWnlmUUdXN0dRVVRIckRVcjRuSW5qU1o5blZlQy9ENXB3NkxRSU5CekZDWW85bVZHZjlqbQ0Ka1NHSkdwK0V3dmdmRVBqYkk2bVA4TXFyWTF1WnNpa0xiOEcxU01PN2ZXK0d6UExITkRXc1BwM3VnTHNQK1VaMi9iT1JBZ01CQUFHag0KZ2dFdE1JSUJLVEFKQmdOVkhSTUVBakFBTUE0R0ExVWREd0VCL3dRRUF3SUM5REFkQmdOVkhTVUVGakFVQmdnckJnRUZCUWNEQVFZSQ0KS3dZQkJRVUhBd0l3RXdZRFZSMFJCQXd3Q29JQWh3VEFxR1I0aGdBd0hRWURWUjBPQkJZRUZEMUsyN2gwRWQ5YkZ5ODRFUVpvbGtRbQ0KRERsS01JRzRCZ05WSFNNRWdiQXdnYTJBRkQxSzI3aDBFZDliRnk4NEVRWm9sa1FtRERsS29YK2tmVEI3TVFzd0NRWURWUVFHRXdKWQ0KV0RFU01CQUdBMVVFQ0F3SlUzUmhkR1ZPWVcxbE1SRXdEd1lEVlFRSERBaERhWFI1VG1GdFpURVVNQklHQTFVRUNnd0xRMjl0Y0dGdQ0KZVU1aGJXVXhHekFaQmdOVkJBc01Fa052YlhCaGJubFRaV04wYVc5dVRtRnRaVEVTTUJBR0ExVUVBd3dKYkc5allXeG9iM04wZ2hRNQ0KQUp6UVhtVmxrQUhBcFlHTnpOWWRFKzhVYkRBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQUJLK09RRVBQc3plcitYeXlvZ2R3R3BFaQ0KSkNmNUF2SDFxMEJDa0VrU0tWZEh4SGMrZmxnYXlPR1AwT015ZFJWR1JvcFBveEpMUXQ5VlR4TnBSOWYwQWF6dEhDcW5iSTZmTjNyRQ0Kc1U3NmdCeW5aQzkxbzN6NitoSXBDb2FGbUM2a1ZTUzR1WThZOEN3SXZ5ZjAzT0xRRWJDbmNBczF2S3NuU1JrNWpkSGlGYVlQblpLMQ0KTXZIMzA2ZHJpUmZsMENtZUFpZ0hjcTAvdHBKN3Uya0NKd0ZPR0dBdEVjZ3ZTMUdYRlkvMTJxQzc0eTNqTmhFVEVlNjM1cHZlc01LWA0KWXAzY296ZE9IRlRGeXFUTkVXOTJUbzBTK2IwTmdRTHIxLzZhVlU0VWNIR3ZnaFlTS294dHVyNkxHd3M5dlVEdmozaUJIU2Y1QlhOVg0KMmYwY3luQjd3Q1NoTHc9PQ0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQ0KFwgBAACzAQACAHwwejAUBgcqhkjOPQIBBgkrJAMDAggBAQsDYgAEI5VVn84TuzhtuKbDPUybiVCI+rrtc9lNftY5pUDOrrczZ+B18Ktjd/Y3iirc3frlhmGA5o2NrkwXl9xmdujUaTu3BctvXdqb/Mc8z7JBUbMec9KtW9ufLTD9UqmNZ8YxfIuVB4PDrB0wsVYOJzhilQAgFgVk55hE0pNupG+52JXbBK0tQU9njBaZR21pnPBu94gHXi0tLS0tQkVHSU4gRU5DUllQVEVEIFBSSVZBVEUgS0VZLS0tLS0KTUlJRk5UQmZCZ2txaGtpRzl3MEJCUTB3VWpBeEJna3Foa2lHOXcwQkJRd3dKQVFRd1l5Mkx4MU5QbnNLMHVuaQpSRXFUK2dJQ0NBQXdEQVlJS29aSWh2Y05BZ2tGQURBZEJnbGdoa2dCWlFNRUFTb0VFRzAra1AycVlvZVpjYUFXCjFTQVhlK0VFZ2dUUWtRdkN3VjErYkNaeEdOQnhSUE9aOFJzK25oa0EzMmpPK1l0b3ZkZkRxK3VCcnZ6aDFNTDMKM2RrbUoyRGlzU1l2cTZvQVVjVFFpRVVjOVB4N1pCSU50Sk5yYVhCNFMyT1dUT3BKVHgyc1FET1FxWmdGZUZibwpFZC96L0ZWL2x4WlZVNy9xdmUxcHhLM1R4NE95QnRwbnZleXgrdWorOE16Szgza2hQV1hqT2RQcVJkbzd1SW5GCjJWd1pINlpLSkU0N2ZzTWgrNnpoamxFTDlkOWd5UXVpNGkzaEJGbS93VkZjUjVDNDJ5MGQybTJaSW9vZy9PN2EKRGoydDV2ZlpDM1l3cEhIK3JHVy81UFhPT1I4Sy9MM0czYytKUGdpamNUVW5WMkxJeHZub3Ruc3hBb3RabU5zeApsNFBNSDJwYm1KbjVhYys2QWwwdWoxTEdxQW8vc0wxSFV0UzRsdzV5bjgzM0s2cDhQMnR2eTFVeFFWWVNkRG5MCkVleFAzZlVsenNraEJsQVpUVzQ4NjFuZkpkM1k2MFFxREdBUnFocVMwNHkxRk5nczJhcW9LSkQxU1hOYmhEc08KclJNWEl1QUJwK0U0SWxKMTFiTjl4ZHh1K3lqcis4ejM4OFo3eHpoS0hTUmhiZXpGVUtHMDVLa3BhbVl2d2ZWbwptRkFrU3g5ZXFLVzB1dDJUTjdzVktPcHFQNTFmS25STkwrN2Q3cGsyRURxb3FGK0lLZVdDUnB1ZlRtQXJrQ2NsCmVjekljRWdPalZLaDdnaHlFOEJ5WjJGTk9kL1ZvdENOQjhybmJWa2RKaC8zQTExMTY4azJzdjhwbDVQcmg1VzkKbzE4c2N1NndjWWc0UmRKRm5zZ1RpeEFJaGxYL3JBSGxnb0pIRFhMZFEyazIzQXNSRWhDSjY3SUt4aEFWUk5NZApsYUF3RmNTckxLQXQ1dGJsTnJ4RjJwL00vVU5xdDRpNVd0QjBZbWZUNnFSSnZTTmZqRmtZdkhEVit4cmdDSFpNCnhEcFJ4eVMwektncHFTaytyNTVsbHByQVRxMXRYRzN0dVoxT0tMQjNMNkNnQzNzQWoza21xSkZidC9BWkZOVTgKL0Zhd1RUWVVUbjMwa1kvZG9sU2gzcnNBQ0toZThJbkR6N3FwaEFXQlFFR2duOGh2OE5WQU11aXFyaTh2Z2hhbAplZEJHYjYxcE10QjZJRkdCWDNMZnVxRENVcWlibUxyYjIya3QrWFRhOU96ajIxRUxRQWp0MlBqSzV5UWNaNEJSCjRERG5tQjkvMXlWa2JnVVpFMGtVbjZXRFg5UEFaY0V5ZWhIMjA3b216dXRWNUxjdFJtWTU1MkdYZWNEcVNCTGwKOEJXd0ZZOUFyMmFseElSRzBnRnd2UEtUaTIxNTdsYWRldnF6S2twdFlrcjlYc05xZ1lVbkloZWJ0cm00NUdQUAoxK3F0b2l5N210dlpndzZOTjY4eU9Ebk9kVVpOZUdBRkU3VDFSWmVXQktCSm9rSjYyMDRyV1RhcllOak1EZHM5CnlPQThGSlZvalFLQUJpcjJYV2x1SFBnTVVQNFpCRjB6U0N0eVR1cnRiYnFjNFZUekpYS1cxVEFXb1hOaW5yQk4KaW1Bc1pieHh0a2lseHRIYUpRS0JJTkViYUoyTExqUVZJdFZKbkQ5SW4wME9kK3Y1cUowYUlHRkdhRzgwN0ovcAprdHJmQXgrQU5rU2hZaXZUWE5yVTN3SWNQSUsyTVlNd092OU91UXliRHZPVjJoRzE0eTdEWlhteDBVUmp5SVBvCmZ5aWpzSGdvVDdaM1R3RnNKUlhxTHFPRnFHVWlVZEhXNWxsb1NUNC9WUVc2c2R5QmVXVlQ4MG1uR1ltNWpXQUQKRHQxamU3eHVVajlyOVlDOXpSRFdReWNkR2dIRkU5MjhwVHB3ZGNydFJQZVNsQ3lPeGdXdVRkNUgzL1JTOEJlMgpKQnVHYW5kQThrTWJ4b0U1bWI3aXE2Q1I0Z29BRjdNMXVlMEZTVlVIdzBaaEZZNWhaT3lqY3NwQ2ZJczVIbWZqCm9teHM3UU9CZXRGYTJURzQxN2JqaG81OVZ5WHZVbDFjMVZjbTFoT3VXVnhkR0hCYWk5ZTI0TGRCemtUcGVVU0oKZ1lwYURMYnNqNS9Ea1VmWXlZTmlTb2hrUXE3SktwODcyTTBkVVJUWE5vNUFncEQrTEZWaE9NTT0KLS0tLS1FTkQgRU5DUllQVEVEIFBSSVZBVEUgS0VZLS0tLS0KJkROUzosIElQIEFkZHJlc3M6MTkyLjE2OC4xMDAuMTIwLCBVUkk6", + "UserData": "AgAAAAAAAAAAAAAAAAAAAAEAAAAFAGFkbWludAAAAAEAAAEBAAEFAAAnEAAAACD28VAO7PHZUyGNf4XD4xlQkDmAnngaxHIjIzMCaWxaUgAAAEDKH/Fg4IgHJd0QO0a4aNeQdRzDNguP2LVmfqTc+UiXHnlvrE4CMNd1Oslyhk0nHcwo046C7lk0Y3Q+53KE0zX5AA==", + "CertificateAssignments": { + "TLS": 1, + "WebServer": 2 + }, + "AccessProtectionData": "AQAAAAAAAAAAAAAAAAAAAAABAABQAAAAAAEBAAAAAgDQBwAAIADwjhtVgT8Cg4U5nUZ19uUmgsMx8ojqqGgyUJqe51IhwCAAGqsDc2Y2NGXo3pFTjT4NekzLAnFxFW+R7ORi6PjphCBQAAAAAAEBAAAAAgDQBwAAIADwjhtVgT8Cg4U5nUZ19uUmgsMx8ojqqGgyUJqe51IhwCAAK6xE1m2cDHgWTpW0qZr9BjhQsreQwxKWX+GC9diS6fZQAAAAAAEBAAAAAgDQBwAAIADwjhtVgT8Cg4U5nUZ19uUmgsMx8ojqqGgyUJqe51IhwCAAGqsDc2Y2NGXo3pFTjT4NekzLAnFxFW+R7ORi6PjphCBQAAAAAAEBAAAAAgDQBwAAIADwjhtVgT8Cg4U5nUZ19uUmgsMx8ojqqGgyUJqe51IhwCAAGqsDc2Y2NGXo3pFTjT4NekzLAnFxFW+R7ORi6PjphCAgAAAA8I4bVYE/AoOFOZ1GdfblJoLDMfKI6qhoMlCanudSIcA=" +} \ No newline at end of file diff --git a/src/io/app/hwc/plc_line.hwl.yml b/src/io/app/hwc/plc_line.hwl.yml index d0f248258..e12b28f23 100644 --- a/src/io/app/hwc/plc_line.hwl.yml +++ b/src/io/app/hwc/plc_line.hwl.yml @@ -10,18 +10,52 @@ Devices: PROFINET_DEVICE_NAME_X2: 'plc_line_x2' ADMIN_NAME: 'admin' CYCLE_COMMUNICATION_LOAD: 50 + # HIGHLY IMPORTANT NOTE: + # Due to the missing built-in configuration tool for IO-Link on the AX side (something like S7-PCT in TIA Portal), + # it is not recommended to use any IO-Link devices that need to be configured. + # If such devices are used, they must be configured using the vendor tools, matching the EXACT configuration in HWC. + # Currently supported combinations are: + # ------------------------------------------------------------------------- + # BNI0099 connected to ports X01–X08 of the BNI00L3 + # The BNI0099 itself must be configured using the Balluff configuration tool. + # Example of BNI0099 connected to port X04: + # X04: balluff_bni00l3_bni0099 + # ------------------------------------------------------------------------- + # ------------------------------------------------------------------------- + # Extended configuration: BNI0099 connected to ports X01–X08 of the BNI00L3, + # with an additional BNI0099 connected to port 7 of the first BNI0099. + # Both BNI0099 devices (the primary and the additional one) must be configured + # using the Balluff configuration tool. + # Example of an extended BNI0099 with an additional one connected to port X02: + # X02: balluff_bni00l3_bni0099_bni0099 + # ------------------------------------------------------------------------- + # ------------------------------------------------------------------------- + # BNI00AY connected to ports X01–X08 of the BNI00L3 + # The BNI00AY itself must be configured using the Balluff configuration tool. + # Example of BNI00AY connected to port X03: + # X03: balluff_bni00l3_bni00ay + # ------------------------------------------------------------------------- + # ------------------------------------------------------------------------- + # Extended configuration: BNI00AY connected to ports X01–X08 of the BNI00L3, + # with an additional BNI00AY connected to port 15 of the first BNI00AY. + # Both BNI00AY devices (the primary and the additional one) must be configured + # using the Balluff configuration tool. + # Example of an extended BNI00AY with an additional one connected to port X01: + # X01: balluff_bni00l3_bni00ay_bni00ay + # ------------------------------------------------------------------------- + - Apply: balluff_bni00l3 + Arguments: + NAME: bni00l3 + IP_ADDRESS_X1: 192.168.100.122/24 + PROFINET_DEVICE_NAME_X1: bni00l3 + X01: balluff_bni00l3_bni00ay_bni00ay + X02: balluff_bni00l3_bni0099_bni0099 + X03: balluff_bni00l3_bni00ay + X04: balluff_bni00l3_bni0099 IoSystems: - Name: profinet_plc_line ControllerInterfaces: - Ref: plc_line/plc_line/PROFINET_interface_1 DeviceInterfaces: - Ref: et200sp/et200sp/PN-IO - #- Ref: bni00l3/bni00l3/PN-IO - # - Ref: et200sp_1/et200sp_1/PN-IO -- Name: profinet2_plc_line - ControllerInterfaces: - - Ref: plc_line/plc_line/PROFINET_interface_2 - DeviceInterfaces: - #- Ref: et200sp/et200sp/PN-IO - - Ref: bni00l3_2/bni00l3_2/PN-IO - # - Ref: et200sp_1/et200sp_1/PN-IO + - Ref: bni00l3/bni00l3/PN-IO diff --git a/src/io/app/hwc/project_devices/bni00l3.hwl.yml b/src/io/app/hwc/project_devices/bni00l3.hwl.yml index 617a2f757..b67d2e07e 100644 --- a/src/io/app/hwc/project_devices/bni00l3.hwl.yml +++ b/src/io/app/hwc/project_devices/bni00l3.hwl.yml @@ -1,49 +1,49 @@ - Devices: - - Name: 'bni00l3' - Modules: - - Name: 'bni00l3' - TypeIdentifier: - FileName: 'GSDML-V2.45-BALLUFF-BNI-XG3-X0X-XB5-X067-20250822.XML' - GsdId: 'BNI XG3-508-0B5-R067' - Interfaces: - - Name: 'PN-IO' - Label: 'X1' - Addresses: - Configured: - - IPv4: '192.168.100.122/24' - - ProfinetDeviceName: 'bni00l3' - Parameters: - AdditionalInformation: "" - LocationIdentifier: "" - PlantDesignation: "" - IECV22LLDPMode: False - # PrioritizedStartup (Boolean) - Ports: - - Name: 'Port_1' - Label: 'X1 P1' - Parameters: - PortActivation: True - # Possible values: 8 - Automatic | 16 - TP 100 Mbps full duplex - TransmissionRateAndDuplex: 'Automatic' - EndOfDetectionOfAccessibleDevices: False - EndOfTopologyDiscovery: False - PortMonitoring: False - # TransmissionRateAutoNegotiation: True - # CableName: 0 - # MediumAttachmentType: 'Copper' - - Name: 'Port_2' - Label: 'X1 P2' - Parameters: - PortActivation: True - # Possible values: 8 - Automatic | 16 - TP 100 Mbps full duplex - TransmissionRateAndDuplex: 'Automatic' - EndOfDetectionOfAccessibleDevices: False - EndOfTopologyDiscovery: False - PortMonitoring: False - # TransmissionRateAutoNegotiation: True - # CableName: 0 - # MediumAttachmentType: 'Copper' - - Apply: BNI00L3_IDM_LinkModule_16_DI - Arguments: - NAME: '16_DI' + # Devices: + # - Name: 'bni00l3' + # Modules: + # - Name: 'bni00l3' + # TypeIdentifier: + # FileName: 'GSDML-V2.45-BALLUFF-BNI-XG3-X0X-XB5-X067-20250822.XML' + # GsdId: 'BNI XG3-508-0B5-R067' + # Interfaces: + # - Name: 'PN-IO' + # Label: 'X1' + # Addresses: + # Configured: + # - IPv4: '192.168.100.122/24' + # - ProfinetDeviceName: 'bni00l3' + # Parameters: + # AdditionalInformation: "" + # LocationIdentifier: "" + # PlantDesignation: "" + # IECV22LLDPMode: False + # # PrioritizedStartup (Boolean) + # Ports: + # - Name: 'Port_1' + # Label: 'X1 P1' + # Parameters: + # PortActivation: True + # # Possible values: 8 - Automatic | 16 - TP 100 Mbps full duplex + # TransmissionRateAndDuplex: 'Automatic' + # EndOfDetectionOfAccessibleDevices: False + # EndOfTopologyDiscovery: False + # PortMonitoring: False + # # TransmissionRateAutoNegotiation: True + # # CableName: 0 + # # MediumAttachmentType: 'Copper' + # - Name: 'Port_2' + # Label: 'X1 P2' + # Parameters: + # PortActivation: True + # # Possible values: 8 - Automatic | 16 - TP 100 Mbps full duplex + # TransmissionRateAndDuplex: 'Automatic' + # EndOfDetectionOfAccessibleDevices: False + # EndOfTopologyDiscovery: False + # PortMonitoring: False + # # TransmissionRateAutoNegotiation: True + # # CableName: 0 + # # MediumAttachmentType: 'Copper' + # - Apply: BNI00L3_IDM_LinkModule_16_DI + # Arguments: + # NAME: '16_DI' \ No newline at end of file diff --git a/src/io/app/hwc/project_devices/bni00l3_2.hwl.yml b/src/io/app/hwc/project_devices/bni00l3_2.hwl.yml deleted file mode 100644 index 25dd02351..000000000 --- a/src/io/app/hwc/project_devices/bni00l3_2.hwl.yml +++ /dev/null @@ -1,49 +0,0 @@ - Devices: - - Name: 'bni00l3_2' - Modules: - - Name: 'bni00l3_2' - TypeIdentifier: - FileName: 'GSDML-V2.45-BALLUFF-BNI-XG3-X0X-XB5-X067-20250822.XML' - GsdId: 'BNI XG3-508-0B5-R067' - Interfaces: - - Name: 'PN-IO' - Label: 'X1' - Addresses: - Configured: - - IPv4: '192.168.101.122/24' - - ProfinetDeviceName: 'bni00l3_2' - Parameters: - AdditionalInformation: "" - LocationIdentifier: "" - PlantDesignation: "" - IECV22LLDPMode: False - # PrioritizedStartup (Boolean) - Ports: - - Name: 'Port_1' - Label: 'X1 P1' - Parameters: - PortActivation: True - # Possible values: 8 - Automatic | 16 - TP 100 Mbps full duplex - TransmissionRateAndDuplex: 'Automatic' - EndOfDetectionOfAccessibleDevices: False - EndOfTopologyDiscovery: False - PortMonitoring: False - # TransmissionRateAutoNegotiation: True - # CableName: 0 - # MediumAttachmentType: 'Copper' - - Name: 'Port_2' - Label: 'X1 P2' - Parameters: - PortActivation: True - # Possible values: 8 - Automatic | 16 - TP 100 Mbps full duplex - TransmissionRateAndDuplex: 'Automatic' - EndOfDetectionOfAccessibleDevices: False - EndOfTopologyDiscovery: False - PortMonitoring: False - # TransmissionRateAutoNegotiation: True - # CableName: 0 - # MediumAttachmentType: 'Copper' - - Apply: BNI00L3_IDM_LinkModule_16_DI - Arguments: - NAME: '16_DI' - \ No newline at end of file diff --git a/src/io/app/hwc/project_devices/et200sp_1.hwl.yml b/src/io/app/hwc/project_devices/et200sp_1.hwl.yml index b76a9dac7..1aa941423 100644 --- a/src/io/app/hwc/project_devices/et200sp_1.hwl.yml +++ b/src/io/app/hwc/project_devices/et200sp_1.hwl.yml @@ -1,61 +1,61 @@ -Devices: -- Name: et200sp_1 - Modules: - - Apply: '6ES7155-6AU02-0BN0_v6_3' - Arguments: - NAME: et200sp_1 - IP_ADDRESS_X1: '192.168.100.160/24' - PROFINET_DEVICE_NAME_X1: et200sp_1 - - Apply: '6ES7131-6BH01-0BA0_v0_0' - Arguments: - NAME: A10 - TERMINAL: 'Enable new potential group (light BaseUnit)' # Possible values: 'Use potential group of the left module (dark BaseUnit)' - # 'Enable new potential group (light BaseUnit)' - # Default value: 'Use potential group of the left module (dark BaseUnit)' - # So this parameter need to be specified only in the case of 'Enable new potential group (light BaseUnit)' is used - - Apply: '6ES7131-6BH01-0BA0_v0_0' - Arguments: - NAME: A11 - - Apply: '6ES7131-6BH01-0BA0_v0_0' - Arguments: - NAME: A12 - - Apply: '6ES7131-6BH01-0BA0_v0_0' - Arguments: - NAME: A13 - - Apply: '6ES7131-6BH01-0BA0_v0_0' - Arguments: - NAME: A14 - - Apply: '6ES7131-6BH01-0BA0_v0_0' - Arguments: - NAME: A15 - - Apply: '6ES7131-6BH01-0BA0_v0_0' - Arguments: - NAME: A16 - - Apply: '6ES7131-6BH01-0BA0_v0_0' - Arguments: - NAME: A17 - - Apply: '6ES7132-6BH01-0BA0_v0_0' - Arguments: - NAME: A20 - TERMINAL: 'Enable new potential group (light BaseUnit)' # Possible values: 'Use potential group of the left module (dark BaseUnit)' - # 'Enable new potential group (light BaseUnit)' - # Default value: 'Use potential group of the left module (dark BaseUnit)' - # So this parameter need to be specified only in the case of 'Enable new potential group (light BaseUnit)' is used - - Apply: '6ES7132-6BH01-0BA0_v0_0' - Arguments: - NAME: A21 - - Apply: '6ES7132-6BH01-0BA0_v0_0' - Arguments: - NAME: A22 - - Apply: '6ES7132-6BH01-0BA0_v0_0' - Arguments: - NAME: A23 - - Apply: '6ES7134-6HD01-0BA1_v2_0' - Arguments: - NAME: A30 - - Apply: '6ES7135-6HD00-0BA1_v1_0' - Arguments: - NAME: A40 - - Apply: '6ES7193-6PA00-0AA0_v1_1' - Arguments: - NAME: A100 \ No newline at end of file +# Devices: +# - Name: et200sp_1 +# Modules: +# - Apply: '6ES7155-6AU02-0BN0_v6_3' +# Arguments: +# NAME: et200sp_1 +# IP_ADDRESS_X1: '192.168.100.160/24' +# PROFINET_DEVICE_NAME_X1: et200sp_1 +# - Apply: '6ES7131-6BH01-0BA0_v0_0' +# Arguments: +# NAME: A10 +# TERMINAL: 'Enable new potential group (light BaseUnit)' # Possible values: 'Use potential group of the left module (dark BaseUnit)' +# # 'Enable new potential group (light BaseUnit)' +# # Default value: 'Use potential group of the left module (dark BaseUnit)' +# # So this parameter need to be specified only in the case of 'Enable new potential group (light BaseUnit)' is used +# - Apply: '6ES7131-6BH01-0BA0_v0_0' +# Arguments: +# NAME: A11 +# - Apply: '6ES7131-6BH01-0BA0_v0_0' +# Arguments: +# NAME: A12 +# - Apply: '6ES7131-6BH01-0BA0_v0_0' +# Arguments: +# NAME: A13 +# - Apply: '6ES7131-6BH01-0BA0_v0_0' +# Arguments: +# NAME: A14 +# - Apply: '6ES7131-6BH01-0BA0_v0_0' +# Arguments: +# NAME: A15 +# - Apply: '6ES7131-6BH01-0BA0_v0_0' +# Arguments: +# NAME: A16 +# - Apply: '6ES7131-6BH01-0BA0_v0_0' +# Arguments: +# NAME: A17 +# - Apply: '6ES7132-6BH01-0BA0_v0_0' +# Arguments: +# NAME: A20 +# TERMINAL: 'Enable new potential group (light BaseUnit)' # Possible values: 'Use potential group of the left module (dark BaseUnit)' +# # 'Enable new potential group (light BaseUnit)' +# # Default value: 'Use potential group of the left module (dark BaseUnit)' +# # So this parameter need to be specified only in the case of 'Enable new potential group (light BaseUnit)' is used +# - Apply: '6ES7132-6BH01-0BA0_v0_0' +# Arguments: +# NAME: A21 +# - Apply: '6ES7132-6BH01-0BA0_v0_0' +# Arguments: +# NAME: A22 +# - Apply: '6ES7132-6BH01-0BA0_v0_0' +# Arguments: +# NAME: A23 +# - Apply: '6ES7134-6HD01-0BA1_v2_0' +# Arguments: +# NAME: A30 +# - Apply: '6ES7135-6HD00-0BA1_v1_0' +# Arguments: +# NAME: A40 +# - Apply: '6ES7193-6PA00-0AA0_v1_1' +# Arguments: +# NAME: A100 \ No newline at end of file diff --git a/src/io/app/monitor.mon b/src/io/app/monitor.mon index b5f4de41f..97fd19d8d 100644 --- a/src/io/app/monitor.mon +++ b/src/io/app/monitor.mon @@ -1,23 +1,6 @@ -documentation.componentFive.ExampleComponent._loIndex -documentation.componentFive.ExampleComponent._hiIndex -documentation.componentFive.ExampleComponent._currentHwID -documentation.componentFive.ExampleComponent._currentIndex -documentation.componentFive.ExampleComponent._plcIndex -documentation.componentFive.ExampleComponent._plcHwId -documentation.componentFive.ExampleComponent._ioSystemIndex -documentation.componentFive.ExampleComponent._ioSystemHwId -documentation.componentFive.ExampleComponent._ioSystemNumber -documentation.componentFive.ExampleComponent._stationIndex -documentation.componentFive.ExampleComponent._stationHwId -documentation.componentFive.ExampleComponent._stationNumber -documentation.componentFive.ExampleComponent._moduleIndex -documentation.componentFive.ExampleComponent._moduleHwId -documentation.componentFive.ExampleComponent._slotNumber -documentation.componentFive.ExampleComponent._subModuleIndex -documentation.componentFive.ExampleComponent._subModuleHwId -documentation.componentFive.ExampleComponent._subSlotNumber -documentation.componentFive.ExampleComponent._retval -documentation.componentFive.ExampleComponent._progress +Inputs.bni00l3_BALLUFF_Link_module_X01_Input.Signals_0 +Inputs.bni00l3_BALLUFF_Link_module_X02_Input.Signals_0 + #documentation.componentFour.ExampleComponent.Inputs.C1.Box1.In[0] #documentation.componentFour.ExampleComponent.Inputs.C1.Box2.In[0] #documentation.componentFour.ExampleComponent.Inputs.C1.PortStatus diff --git a/src/io/app/src/Documentation/Component_4.st b/src/io/app/src/Documentation/Component_4.st index c5b9cb2b0..0e62dd825 100644 --- a/src/io/app/src/Documentation/Component_4.st +++ b/src/io/app/src/Documentation/Component_4.st @@ -40,7 +40,7 @@ CLASS Component_4 EXTENDS AXOpen.Core.AxoObject Port_3 := AXOpen.Io.eAxoIOLinkET200SP_Balluff_PortConfig#NONE, // Enter the configuration of the correctly wired boxes connected to Port 3 Port_4 := AXOpen.Io.eAxoIOLinkET200SP_Balluff_PortConfig#BNI00AY_BNI00AY);// Enter the configuration of the correctly wired boxes connected to Port 4 - // A30.Inputs.C1.Box1.In[5] + // A30.Inputs.C1.Box1.In[5] // ExampleComponent.Run(inParent := THIS, // hwID := HwIdentifiers#et200sp_A30_CM_4xIO_Link_V2_2_32I_32O_HwID, // Enter the hardware ID of your correctly wired IO-Link master module based on your error-free, already-compiled hardware configuration // Port_1 := AXOpen.Io.eAxoIOLinkET200SP_Balluff_PortConfig#BNI0099, // Enter the configuration of the correctly wired boxes connected to Port 1 diff --git a/src/io/app/src/Documentation/DocumentationContext.st b/src/io/app/src/Documentation/DocumentationContext.st index 2d61617e6..22b1667a4 100644 --- a/src/io/app/src/Documentation/DocumentationContext.st +++ b/src/io/app/src/Documentation/DocumentationContext.st @@ -11,11 +11,56 @@ CLASS DocumentationContext EXTENDS AXOpen.Core.AxoContext END_VAR METHOD PROTECTED OVERRIDE Main + VAR_EXTERNAL + Inputs : AXOpen.Io.Inputs; + Outputs : AXOpen.Io.Outputs; + END_VAR + VAR + _tmpBool : BOOL; + END_VAR + THIS.InitializeRootObject(_rootObject); componentOne.Run(_rootObject); componentTwo.Run(_rootObject); componentThree.Run(_rootObject); componentFour.Run(_rootObject); componentFive.Run(_rootObject); + + // Example of BNI0099 connected to port X04, + // accessing digital input connected to the port 7 of the BNI0099 + _tmpBool := Inputs.bni00l3_BALLUFF_Link_module_X04_Input.Signals_0[0].%X7; + + // Example of an extended BNI0099 with an additional one connected to port X02, + // accessing digital input connected to the port 5 of the first BNI0099 in the chain + _tmpBool := Inputs.bni00l3_BALLUFF_Link_module_X02_Input.Signals_0[0].%X5; + + // Example of an extended BNI0099 with an additional one connected to port X02, + // accessing digital input connected to the port 3 of the second BNI0099 in the chain + _tmpBool := Inputs.bni00l3_BALLUFF_Link_module_X02_Input.Signals_0[1].%X3; + + // Example of BNI00AY connected to port X03, + // accessing digital input connected to the port 6 of the BNI00AY + _tmpBool := Inputs.bni00l3_BALLUFF_Link_module_X03_Input.Signals_0[0].%X6; + + // Example of BNI00AY connected to port X03, + // accessing digital input connected to the port 15 of the BNI00AY + _tmpBool := Inputs.bni00l3_BALLUFF_Link_module_X03_Input.Signals_0[1].%X7; + + // Example of an extended BNI00AY with an additional one connected to port X01, + // accessing digital input connected to the port 0 of the first BNI00AY in the chain + _tmpBool := Inputs.bni00l3_BALLUFF_Link_module_X01_Input.Signals_0[0].%X0; + + // Example of an extended BNI00AY with an additional one connected to port X01, + // accessing digital input connected to the port 14 of the first BNI00AY in the chain + _tmpBool := Inputs.bni00l3_BALLUFF_Link_module_X01_Input.Signals_0[1].%X6; + + // Example of an extended BNI00AY with an additional one connected to port X01, + // accessing digital input connected to the port 2 of the second BNI00AY in the chain + _tmpBool := Inputs.bni00l3_BALLUFF_Link_module_X01_Input.Signals_0[2].%X2; + + // Example of an extended BNI00AY with an additional one connected to port X01, + // accessing digital input connected to the port 11 of the second BNI00AY in the chain + _tmpBool := Inputs.bni00l3_BALLUFF_Link_module_X01_Input.Signals_0[3].%X3; + END_METHOD END_CLASS diff --git a/src/io/app/src/IO/HwIdentifierList.st b/src/io/app/src/IO/HwIdentifierList.st index 118cadaf3..e0cdaa69d 100644 --- a/src/io/app/src/IO/HwIdentifierList.st +++ b/src/io/app/src/IO/HwIdentifierList.st @@ -1,5 +1,5 @@ NAMESPACE AXOpen.Io - TYPE HwIdentifierList : ARRAY[0..42] OF UINT := + TYPE HwIdentifierList : ARRAY[0..41] OF UINT := [ UINT#32, UINT#48, @@ -42,8 +42,7 @@ NAMESPACE AXOpen.Io UINT#282, UINT#283, UINT#284, - UINT#285, - UINT#286 + UINT#285 ]; END_TYPE END_NAMESPACE diff --git a/src/io/app/src/IO/HwIdentifiers.st b/src/io/app/src/IO/HwIdentifiers.st index df41e7a13..695aa7f86 100644 --- a/src/io/app/src/IO/HwIdentifiers.st +++ b/src/io/app/src/IO/HwIdentifiers.st @@ -14,37 +14,36 @@ NAMESPACE AXOpen.Io plc_line_plc_line_PROFINET_interface_2_Port_3_HwID := UINT#73, plc_line_plc_line_OPC_UA_1_HwID := UINT#117, plc_line_plc_line_Virtual_communication_interface_HwID := UINT#135, - profinet2_plc_line_HwID := UINT#256, - bni00l3_2_bni00l3_2_PN_IO_HwID := UINT#257, - bni00l3_2_HwID := UINT#258, - bni00l3_2_bni00l3_2_PN_IO_Port_1_HwID := UINT#259, - bni00l3_2_bni00l3_2_PN_IO_Port_2_HwID := UINT#260, - bni00l3_2_Rack_HwID := UINT#261, - bni00l3_2_bni00l3_2_HwID := UINT#262, - bni00l3_2_16_DI_HwID := UINT#263, - bni00l3_2_16_DI_BALLUFF_8_Port_IO_Link_Master_HwID := UINT#264, - bni00l3_2_X01_HwID := UINT#265, - bni00l3_2_X02_HwID := UINT#266, - bni00l3_2_X03_HwID := UINT#267, - bni00l3_2_X04_HwID := UINT#268, - bni00l3_2_X05_HwID := UINT#269, - bni00l3_2_X06_HwID := UINT#270, - bni00l3_2_X07_HwID := UINT#271, - bni00l3_2_X08_HwID := UINT#272, - bni00l3_2_bni00l3_2_BNI_XG3_508_0B5_R067_HwID := UINT#273, - profinet_plc_line_HwID := UINT#274, - et200sp_et200sp_PN_IO_HwID := UINT#275, - et200sp_HwID := UINT#276, - et200sp_et200sp_Port_1_HwID := UINT#277, - et200sp_et200sp_Port_2_HwID := UINT#278, - et200sp_Rack_HwID := UINT#279, - et200sp_et200sp_HwID := UINT#280, - et200sp_A100_Server_module_V1_1_0_bytes_HwID := UINT#281, - et200sp_A30_CM_4xIO_Link_V2_2_32I_32O_HwID := UINT#282, - et200sp_A20_DQ_16x24VDC_0_5A_ST_V1_1_HwID := UINT#283, - et200sp_A10_DI_16x24VDC_ST_V1_1_HwID := UINT#284, - et200sp_et200sp_IM_155_6_PN_ST_V4_2_HwID := UINT#285, - plc_line_Rail_0_HwID := UINT#286 + profinet_plc_line_HwID := UINT#256, + bni00l3_bni00l3_PN_IO_HwID := UINT#257, + bni00l3_HwID := UINT#258, + bni00l3_bni00l3_PN_IO_Port_1_HwID := UINT#259, + bni00l3_bni00l3_PN_IO_Port_2_HwID := UINT#260, + bni00l3_Rack_HwID := UINT#261, + bni00l3_bni00l3_HwID := UINT#262, + bni00l3_BALLUFF_Link_module_HwID := UINT#263, + bni00l3_BALLUFF_Link_module_BALLUFF_8_Port_IO_Link_Master_HwID := UINT#264, + bni00l3_X03_HwID := UINT#265, + bni00l3_X04_HwID := UINT#266, + bni00l3_X05_HwID := UINT#267, + bni00l3_X06_HwID := UINT#268, + bni00l3_X07_HwID := UINT#269, + bni00l3_X08_HwID := UINT#270, + bni00l3_X01_HwID := UINT#271, + bni00l3_X02_HwID := UINT#272, + bni00l3_bni00l3_BNI_XG3_508_0B5_R067_HwID := UINT#273, + et200sp_et200sp_PN_IO_HwID := UINT#274, + et200sp_HwID := UINT#275, + et200sp_et200sp_Port_1_HwID := UINT#276, + et200sp_et200sp_Port_2_HwID := UINT#277, + et200sp_Rack_HwID := UINT#278, + et200sp_et200sp_HwID := UINT#279, + et200sp_A100_Server_module_V1_1_0_bytes_HwID := UINT#280, + et200sp_A30_CM_4xIO_Link_V2_2_32I_32O_HwID := UINT#281, + et200sp_A20_DQ_16x24VDC_0_5A_ST_V1_1_HwID := UINT#282, + et200sp_A10_DI_16x24VDC_ST_V1_1_HwID := UINT#283, + et200sp_et200sp_IM_155_6_PN_ST_V4_2_HwID := UINT#284, + plc_line_Rail_0_HwID := UINT#285 ); END_TYPE END_NAMESPACE diff --git a/src/io/app/src/IO/Inputs.st b/src/io/app/src/IO/Inputs.st index 35f1d0829..bcdec1b88 100644 --- a/src/io/app/src/IO/Inputs.st +++ b/src/io/app/src/IO/Inputs.st @@ -1,26 +1,18 @@ -NAMESPACE AXOpen.Io +NAMESPACE AXOpen.Io TYPE {S7.extern=ReadWrite} {#ix-attr:[Container(Layout.Wrap)]} Inputs : STRUCT - // Module bni00l3_2/16_DI - bni00l3_2_16_DI_BALLUFF_8_Port_IO_Link_Master_Input AT %B0 : bni00l3_2_16_DI_BALLUFF_8_Port_IO_Link_Master_Input_Layout; + // Module bni00l3/BALLUFF_Link_module + bni00l3_BALLUFF_Link_module_BALLUFF_8_Port_IO_Link_Master_Input AT %B0 : bni00l3_BALLUFF_Link_module_BALLUFF_8_Port_IO_Link_Master_Input_Layout; - bni00l3_2_16_DI_X01_Input AT %B1 : bni00l3_2_16_DI_X01_Input_Layout; + bni00l3_BALLUFF_Link_module_X01_Input AT %B1 : bni00l3_BALLUFF_Link_module_X01_Input_Layout; - bni00l3_2_16_DI_X02_Input AT %B2 : bni00l3_2_16_DI_X02_Input_Layout; + bni00l3_BALLUFF_Link_module_X02_Input AT %B6 : bni00l3_BALLUFF_Link_module_X02_Input_Layout; - bni00l3_2_16_DI_X03_Input AT %B3 : bni00l3_2_16_DI_X03_Input_Layout; + bni00l3_BALLUFF_Link_module_X03_Input AT %B43 : bni00l3_BALLUFF_Link_module_X03_Input_Layout; - bni00l3_2_16_DI_X04_Input AT %B4 : bni00l3_2_16_DI_X04_Input_Layout; - - bni00l3_2_16_DI_X05_Input AT %B5 : bni00l3_2_16_DI_X05_Input_Layout; - - bni00l3_2_16_DI_X06_Input AT %B6 : bni00l3_2_16_DI_X06_Input_Layout; - - bni00l3_2_16_DI_X07_Input AT %B7 : bni00l3_2_16_DI_X07_Input_Layout; - - bni00l3_2_16_DI_X08_Input AT %B8 : bni00l3_2_16_DI_X08_Input_Layout; + bni00l3_BALLUFF_Link_module_X04_Input AT %B46 : bni00l3_BALLUFF_Link_module_X04_Input_Layout; // Module et200sp/A10 et200sp_A10_Input AT %B41 : et200sp_A10_Input_Layout; diff --git a/src/io/app/src/IO/IoStructures.st b/src/io/app/src/IO/IoStructures.st index d4b975b3f..2c7173a19 100644 --- a/src/io/app/src/IO/IoStructures.st +++ b/src/io/app/src/IO/IoStructures.st @@ -1,8 +1,8 @@ -NAMESPACE AXOpen.Io +NAMESPACE AXOpen.Io TYPE {S7.extern=ReadWrite} {#ix-attr:[Container(Layout.Wrap)]} - bni00l3_2_16_DI_BALLUFF_8_Port_IO_Link_Master_Input_Layout : STRUCT + bni00l3_BALLUFF_Link_module_BALLUFF_8_Port_IO_Link_Master_Input_Layout : STRUCT Signals_0 AT %X0.0 : BOOL; Signals_1 AT %X0.1 : BOOL; Signals_2 AT %X0.2 : BOOL; @@ -17,7 +17,7 @@ TYPE {S7.extern=ReadWrite} {#ix-attr:[Container(Layout.Wrap)]} - bni00l3_2_16_DI_BALLUFF_8_Port_IO_Link_Master_Output_Layout : STRUCT + bni00l3_BALLUFF_Link_module_BALLUFF_8_Port_IO_Link_Master_Output_Layout : STRUCT Signals_8 AT %X0.0 : BOOL; Signals_9 AT %X0.1 : BOOL; Signals_10 AT %X0.2 : BOOL; @@ -32,120 +32,56 @@ TYPE {S7.extern=ReadWrite} {#ix-attr:[Container(Layout.Wrap)]} - bni00l3_2_16_DI_X01_Input_Layout : STRUCT - Signals_0_0 AT %X0.0 : BOOL; - Signals_0_1 AT %X0.1 : BOOL; - Signals_0_2 AT %X0.2 : BOOL; - Signals_0_3 AT %X0.3 : BOOL; - Signals_0_4 AT %X0.4 : BOOL; - Signals_0_5 AT %X0.5 : BOOL; - Signals_0_6 AT %X0.6 : BOOL; - Signals_0_7 AT %X0.7 : BOOL; + bni00l3_BALLUFF_Link_module_X01_Input_Layout : STRUCT + Signals_0 AT %B0 : ARRAY[0..3] OF BYTE; + Signals_1 AT %X4.2 : BOOL; + Signals_2 AT %X4.3 : BOOL; + Signals_3 AT %X4.4 : BOOL; + Signals_4 AT %X4.5 : BOOL; + Signals_5 AT %X4.6 : BOOL; + Signals_6 AT %X4.7 : BOOL; END_STRUCT; END_TYPE TYPE {S7.extern=ReadWrite} {#ix-attr:[Container(Layout.Wrap)]} - bni00l3_2_16_DI_X02_Input_Layout : STRUCT - Signals_0_0 AT %X0.0 : BOOL; - Signals_0_1 AT %X0.1 : BOOL; - Signals_0_2 AT %X0.2 : BOOL; - Signals_0_3 AT %X0.3 : BOOL; - Signals_0_4 AT %X0.4 : BOOL; - Signals_0_5 AT %X0.5 : BOOL; - Signals_0_6 AT %X0.6 : BOOL; - Signals_0_7 AT %X0.7 : BOOL; + bni00l3_BALLUFF_Link_module_X02_Input_Layout : STRUCT + Signals_0 AT %B0 : ARRAY[0..1] OF BYTE; + Signals_1 AT %X2.2 : BOOL; + Signals_2 AT %X2.3 : BOOL; + Signals_3 AT %X2.4 : BOOL; + Signals_4 AT %X2.5 : BOOL; + Signals_5 AT %X2.6 : BOOL; + Signals_6 AT %X2.7 : BOOL; END_STRUCT; END_TYPE TYPE {S7.extern=ReadWrite} {#ix-attr:[Container(Layout.Wrap)]} - bni00l3_2_16_DI_X03_Input_Layout : STRUCT - Signals_0_0 AT %X0.0 : BOOL; - Signals_0_1 AT %X0.1 : BOOL; - Signals_0_2 AT %X0.2 : BOOL; - Signals_0_3 AT %X0.3 : BOOL; - Signals_0_4 AT %X0.4 : BOOL; - Signals_0_5 AT %X0.5 : BOOL; - Signals_0_6 AT %X0.6 : BOOL; - Signals_0_7 AT %X0.7 : BOOL; + bni00l3_BALLUFF_Link_module_X03_Input_Layout : STRUCT + Signals_0 AT %B0 : ARRAY[0..1] OF BYTE; + Signals_1 AT %X2.2 : BOOL; + Signals_2 AT %X2.3 : BOOL; + Signals_3 AT %X2.4 : BOOL; + Signals_4 AT %X2.5 : BOOL; + Signals_5 AT %X2.6 : BOOL; + Signals_6 AT %X2.7 : BOOL; END_STRUCT; END_TYPE TYPE {S7.extern=ReadWrite} {#ix-attr:[Container(Layout.Wrap)]} - bni00l3_2_16_DI_X04_Input_Layout : STRUCT - Signals_0_0 AT %X0.0 : BOOL; - Signals_0_1 AT %X0.1 : BOOL; - Signals_0_2 AT %X0.2 : BOOL; - Signals_0_3 AT %X0.3 : BOOL; - Signals_0_4 AT %X0.4 : BOOL; - Signals_0_5 AT %X0.5 : BOOL; - Signals_0_6 AT %X0.6 : BOOL; - Signals_0_7 AT %X0.7 : BOOL; - END_STRUCT; - END_TYPE - - TYPE - {S7.extern=ReadWrite} - {#ix-attr:[Container(Layout.Wrap)]} - bni00l3_2_16_DI_X05_Input_Layout : STRUCT - Signals_0_0 AT %X0.0 : BOOL; - Signals_0_1 AT %X0.1 : BOOL; - Signals_0_2 AT %X0.2 : BOOL; - Signals_0_3 AT %X0.3 : BOOL; - Signals_0_4 AT %X0.4 : BOOL; - Signals_0_5 AT %X0.5 : BOOL; - Signals_0_6 AT %X0.6 : BOOL; - Signals_0_7 AT %X0.7 : BOOL; - END_STRUCT; - END_TYPE - - TYPE - {S7.extern=ReadWrite} - {#ix-attr:[Container(Layout.Wrap)]} - bni00l3_2_16_DI_X06_Input_Layout : STRUCT - Signals_0_0 AT %X0.0 : BOOL; - Signals_0_1 AT %X0.1 : BOOL; - Signals_0_2 AT %X0.2 : BOOL; - Signals_0_3 AT %X0.3 : BOOL; - Signals_0_4 AT %X0.4 : BOOL; - Signals_0_5 AT %X0.5 : BOOL; - Signals_0_6 AT %X0.6 : BOOL; - Signals_0_7 AT %X0.7 : BOOL; - END_STRUCT; - END_TYPE - - TYPE - {S7.extern=ReadWrite} - {#ix-attr:[Container(Layout.Wrap)]} - bni00l3_2_16_DI_X07_Input_Layout : STRUCT - Signals_0_0 AT %X0.0 : BOOL; - Signals_0_1 AT %X0.1 : BOOL; - Signals_0_2 AT %X0.2 : BOOL; - Signals_0_3 AT %X0.3 : BOOL; - Signals_0_4 AT %X0.4 : BOOL; - Signals_0_5 AT %X0.5 : BOOL; - Signals_0_6 AT %X0.6 : BOOL; - Signals_0_7 AT %X0.7 : BOOL; - END_STRUCT; - END_TYPE - - TYPE - {S7.extern=ReadWrite} - {#ix-attr:[Container(Layout.Wrap)]} - bni00l3_2_16_DI_X08_Input_Layout : STRUCT - Signals_0_0 AT %X0.0 : BOOL; - Signals_0_1 AT %X0.1 : BOOL; - Signals_0_2 AT %X0.2 : BOOL; - Signals_0_3 AT %X0.3 : BOOL; - Signals_0_4 AT %X0.4 : BOOL; - Signals_0_5 AT %X0.5 : BOOL; - Signals_0_6 AT %X0.6 : BOOL; - Signals_0_7 AT %X0.7 : BOOL; + bni00l3_BALLUFF_Link_module_X04_Input_Layout : STRUCT + Signals_0 AT %B0 : ARRAY[0..0] OF BYTE; + Signals_1 AT %X1.2 : BOOL; + Signals_2 AT %X1.3 : BOOL; + Signals_3 AT %X1.4 : BOOL; + Signals_4 AT %X1.5 : BOOL; + Signals_5 AT %X1.6 : BOOL; + Signals_6 AT %X1.7 : BOOL; END_STRUCT; END_TYPE diff --git a/src/io/app/src/IO/Outputs.st b/src/io/app/src/IO/Outputs.st index 63366ec7e..59116f14c 100644 --- a/src/io/app/src/IO/Outputs.st +++ b/src/io/app/src/IO/Outputs.st @@ -1,9 +1,9 @@ -NAMESPACE AXOpen.Io +NAMESPACE AXOpen.Io TYPE {S7.extern=ReadWrite} {#ix-attr:[Container(Layout.Wrap)]} Outputs : STRUCT - bni00l3_2_16_DI_BALLUFF_8_Port_IO_Link_Master_Output AT %B0 : bni00l3_2_16_DI_BALLUFF_8_Port_IO_Link_Master_Output_Layout; + bni00l3_BALLUFF_Link_module_BALLUFF_8_Port_IO_Link_Master_Output AT %B0 : bni00l3_BALLUFF_Link_module_BALLUFF_8_Port_IO_Link_Master_Output_Layout; // Module et200sp/A20 et200sp_A20_Output AT %B33 : et200sp_A20_Output_Layout; diff --git a/src/io/ctrl/assets/balluff.iolink/io/balluff_bni00l3.hwl.yml b/src/io/ctrl/assets/balluff.iolink/io/balluff_bni00l3.hwl.yml index 4526afb78..dca054c1e 100644 --- a/src/io/ctrl/assets/balluff.iolink/io/balluff_bni00l3.hwl.yml +++ b/src/io/ctrl/assets/balluff.iolink/io/balluff_bni00l3.hwl.yml @@ -127,42 +127,42 @@ Templates: FileName: 'GSDML-V2.45-BALLUFF-BNI-XG3-X0X-XB5-X067-20250822.XML' GsdId: 'IDS_IOLM' Slot: 1 - IoConfiguration: - Inputs: - # Supported Process Image Partitions depend on the specific controller type in use (e.g., S7-1500 supports PIP 0–31). - ProcessImagePartition: 'Automatic update' - Outputs: - # Supported Process Image Partitions depend on the specific controller type in use (e.g., S7-1500 supports PIP 0–31). - ProcessImagePartition: 'Automatic update' - # - Apply: ${X01} - # Arguments: - # SubmoduleName: 'X01' - # Slot: 2 - # - Apply: ${X02} - # Arguments: - # SubmoduleName: 'X02' - # Slot: 3 - # - Apply: ${X03} - # Arguments: - # SubmoduleName: 'X03' - # Slot: 4 - # - Apply: ${X04} - # Arguments: - # SubmoduleName: 'X04' - # Slot: 5 - # - Apply: ${X05} - # Arguments: - # SubmoduleName: 'X05' - # Slot: 6 - # - Apply: ${X06} - # Arguments: - # SubmoduleName: 'X06' - # Slot: 7 - # - Apply: ${X07} - # Arguments: - # SubmoduleName: 'X07' - # Slot: 8 - # - Apply: ${X08} - # Arguments: - # SubmoduleName: 'X08' - # Slot: 9 + # IoConfiguration: + # Inputs: + # # Supported Process Image Partitions depend on the specific controller type in use (e.g., S7-1500 supports PIP 0–31). + # ProcessImagePartition: 'Automatic update' + # Outputs: + # # Supported Process Image Partitions depend on the specific controller type in use (e.g., S7-1500 supports PIP 0–31). + # ProcessImagePartition: 'Automatic update' + - Apply: ${X01} + Arguments: + SubmoduleName: 'X01' + Slot: 2 + - Apply: ${X02} + Arguments: + SubmoduleName: 'X02' + Slot: 3 + - Apply: ${X03} + Arguments: + SubmoduleName: 'X03' + Slot: 4 + - Apply: ${X04} + Arguments: + SubmoduleName: 'X04' + Slot: 5 + - Apply: ${X05} + Arguments: + SubmoduleName: 'X05' + Slot: 6 + - Apply: ${X06} + Arguments: + SubmoduleName: 'X06' + Slot: 7 + - Apply: ${X07} + Arguments: + SubmoduleName: 'X07' + Slot: 8 + - Apply: ${X08} + Arguments: + SubmoduleName: 'X08' + Slot: 9 diff --git a/src/io/ctrl/assets/balluff.iolink/io/balluff_bni00l3_bni0099.hwl.yml b/src/io/ctrl/assets/balluff.iolink/io/balluff_bni00l3_bni0099.hwl.yml index 2dd5d53dc..e2c03d201 100644 --- a/src/io/ctrl/assets/balluff.iolink/io/balluff_bni00l3_bni0099.hwl.yml +++ b/src/io/ctrl/assets/balluff.iolink/io/balluff_bni00l3_bni0099.hwl.yml @@ -1,72 +1,72 @@ -# Templates: -# Submodules: -# - Name: 'balluff_bni00l3_bni0099' -# Placeholders: -# - Name: 'SubmoduleName' -# Value: 'X01' -# AllowedValues: -# - 'X01' -# - 'X02' -# - 'X03' -# - 'X04' -# - 'X05' -# - 'X06' -# - 'X07' -# - 'X08' -# - Name: 'Slot' -# Value: 2 -# AllowedValues: -# - 2 -# - 3 -# - 4 -# - 5 -# - 6 -# - 7 -# - 8 -# - 9 -# Content: -# Name: '${SubmoduleName}' -# Slot: '${Slot}' -# TypeIdentifier: -# FileName: 'GSDML-V2.45-BALLUFF-BNI-XG3-X0X-XB5-X067-20250822.XML' -# GsdId: 'IDS_IOL_1I_0O_PQI' -# Parameters: -# RecordDataList: -# - IndexName: 'Port configuration' -# Values: -# - OffsetName: 'Enable port diagnosis' -# Value: True -# - OffsetName: 'Enable process alarms (Enable Notifications)' -# Value: False -# - OffsetName: 'Enable input fraction (Disable PD size check)' -# Value: False -# - OffsetName: 'Enable Pull/Plug' -# Value: True -# # - Offset: '4' -# # # Possible value range: [0, 255] -# # Value: 2 -# # - Offset: '5' -# # # Possible value range: [0, 255] -# # Value: 0 -# - OffsetName: 'Port mode' -# # Possible ValueNames: Deactivated | Set port configuration | Autoconfig -# ValueName: 'Autoconfig' -# - OffsetName: 'Validation & Backup' -# # Possible ValueNames: No Device check | Type compatible Device V1.0 | Type compatible Device V1.1 | Type compatible Device V1.1, Backup + Restore | Type compatible Device V1.1, Restore -# ValueName: 'Type compatible Device V1.1, Backup + Restore' -# - OffsetName: 'Port Class / Pin2 behavior' -# # Possible ValueNames: Class A / NC (Not connected) | Class A / DI | Class A / DO | Class A / Power -# ValueName: 'Class A / NC (Not connected)' -# - OffsetName: 'Cycle Time' -# # Possible ValueNames: as fast as possible | 1.6 ms | 3.2 ms | 4.8 ms | 8.0 ms | 10.0 ms | 12.0 ms | 16.0 ms | 20.0 ms | 40.0 ms | 80.0 ms | 120.0 ms -# ValueName: 'as fast as possible' -# - OffsetName: 'Vendor ID (dez)' -# # Possible value range: [0, 65535] -# Value: 888 -# - OffsetName: 'Device ID (dez)' -# # Possible value range: [0, 16777215] -# Value: 330592 -# IoConfiguration: -# Inputs: -# # Supported Process Image Partitions depend on the specific controller type in use (e.g., S7-1500 supports PIP 0–31). -# ProcessImagePartition: 'Automatic update' +Templates: + Submodules: + - Name: 'balluff_bni00l3_bni0099' + Placeholders: + - Name: 'SubmoduleName' + Value: 'X01' + AllowedValues: + - 'X01' + - 'X02' + - 'X03' + - 'X04' + - 'X05' + - 'X06' + - 'X07' + - 'X08' + - Name: 'Slot' + Value: 2 + AllowedValues: + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + - 8 + - 9 + Content: + Name: '${SubmoduleName}' + Slot: '${Slot}' + TypeIdentifier: + FileName: 'GSDML-V2.45-BALLUFF-BNI-XG3-X0X-XB5-X067-20250822.XML' + GsdId: 'IDS_IOL_1I_0O_PQI' + Parameters: + RecordDataList: + - IndexName: 'Port configuration' + Values: + - OffsetName: 'Enable port diagnosis' + Value: True + - OffsetName: 'Enable process alarms (Enable Notifications)' + Value: False + - OffsetName: 'Enable input fraction (Disable PD size check)' + Value: False + - OffsetName: 'Enable Pull/Plug' + Value: True + # - Offset: '4' + # # Possible value range: [0, 255] + # Value: 2 + # - Offset: '5' + # # Possible value range: [0, 255] + # Value: 0 + - OffsetName: 'Port mode' + # Possible ValueNames: Deactivated | Set port configuration | Autoconfig + ValueName: 'Autoconfig' + - OffsetName: 'Validation & Backup' + # Possible ValueNames: No Device check | Type compatible Device V1.0 | Type compatible Device V1.1 | Type compatible Device V1.1, Backup + Restore | Type compatible Device V1.1, Restore + ValueName: 'Type compatible Device V1.1, Backup + Restore' + - OffsetName: 'Port Class / Pin2 behavior' + # Possible ValueNames: Class A / NC (Not connected) | Class A / DI | Class A / DO | Class A / Power + ValueName: 'Class A / NC (Not connected)' + - OffsetName: 'Cycle Time' + # Possible ValueNames: as fast as possible | 1.6 ms | 3.2 ms | 4.8 ms | 8.0 ms | 10.0 ms | 12.0 ms | 16.0 ms | 20.0 ms | 40.0 ms | 80.0 ms | 120.0 ms + ValueName: 'as fast as possible' + - OffsetName: 'Vendor ID (dez)' + # Possible value range: [0, 65535] + Value: 888 + - OffsetName: 'Device ID (dez)' + # Possible value range: [0, 16777215] + Value: 330592 + # IoConfiguration: + # Inputs: + # # Supported Process Image Partitions depend on the specific controller type in use (e.g., S7-1500 supports PIP 0–31). + # ProcessImagePartition: 'Automatic update' diff --git a/src/io/ctrl/assets/balluff.iolink/io/balluff_bni00l3_bni0099_bni0099.hwl.yml b/src/io/ctrl/assets/balluff.iolink/io/balluff_bni00l3_bni0099_bni0099.hwl.yml index 836af81d6..a6bb12bc7 100644 --- a/src/io/ctrl/assets/balluff.iolink/io/balluff_bni00l3_bni0099_bni0099.hwl.yml +++ b/src/io/ctrl/assets/balluff.iolink/io/balluff_bni00l3_bni0099_bni0099.hwl.yml @@ -1,72 +1,72 @@ -# Templates: -# Submodules: -# - Name: 'balluff_bni00l3_bni0099_bni0099' -# Placeholders: -# - Name: 'SubmoduleName' -# Value: 'X01' -# AllowedValues: -# - 'X01' -# - 'X02' -# - 'X03' -# - 'X04' -# - 'X05' -# - 'X06' -# - 'X07' -# - 'X08' -# - Name: 'Slot' -# Value: 2 -# AllowedValues: -# - 2 -# - 3 -# - 4 -# - 5 -# - 6 -# - 7 -# - 8 -# - 9 -# Content: -# Name: '${SubmoduleName}' -# Slot: '${Slot}' -# TypeIdentifier: -# FileName: 'GSDML-V2.45-BALLUFF-BNI-XG3-X0X-XB5-X067-20250822.XML' -# GsdId: 'IDS_IOL_2I_0O_PQI' -# Parameters: -# RecordDataList: -# - IndexName: 'Port configuration' -# Values: -# - OffsetName: 'Enable port diagnosis' -# Value: True -# - OffsetName: 'Enable process alarms (Enable Notifications)' -# Value: False -# - OffsetName: 'Enable input fraction (Disable PD size check)' -# Value: False -# - OffsetName: 'Enable Pull/Plug' -# Value: True -# # - Offset: '4' -# # # Possible value range: [0, 255] -# # Value: 2 -# # - Offset: '5' -# # # Possible value range: [0, 255] -# # Value: 0 -# - OffsetName: 'Port mode' -# # Possible ValueNames: Deactivated | Set port configuration | Autoconfig -# ValueName: 'Autoconfig' -# - OffsetName: 'Validation & Backup' -# # Possible ValueNames: No Device check | Type compatible Device V1.0 | Type compatible Device V1.1 | Type compatible Device V1.1, Backup + Restore | Type compatible Device V1.1, Restore -# ValueName: 'Type compatible Device V1.1, Backup + Restore' -# - OffsetName: 'Port Class / Pin2 behavior' -# # Possible ValueNames: Class A / NC (Not connected) | Class A / DI | Class A / DO | Class A / Power -# ValueName: 'Class A / NC (Not connected)' -# - OffsetName: 'Cycle Time' -# # Possible ValueNames: as fast as possible | 1.6 ms | 3.2 ms | 4.8 ms | 8.0 ms | 10.0 ms | 12.0 ms | 16.0 ms | 20.0 ms | 40.0 ms | 80.0 ms | 120.0 ms -# ValueName: 'as fast as possible' -# - OffsetName: 'Vendor ID (dez)' -# # Possible value range: [0, 65535] -# Value: 888 -# - OffsetName: 'Device ID (dez)' -# # Possible value range: [0, 16777215] -# Value: 330593 -# IoConfiguration: -# Inputs: -# # Supported Process Image Partitions depend on the specific controller type in use (e.g., S7-1500 supports PIP 0–31). -# ProcessImagePartition: 'Automatic update' +Templates: + Submodules: + - Name: 'balluff_bni00l3_bni0099_bni0099' + Placeholders: + - Name: 'SubmoduleName' + Value: 'X01' + AllowedValues: + - 'X01' + - 'X02' + - 'X03' + - 'X04' + - 'X05' + - 'X06' + - 'X07' + - 'X08' + - Name: 'Slot' + Value: 2 + AllowedValues: + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + - 8 + - 9 + Content: + Name: '${SubmoduleName}' + Slot: '${Slot}' + TypeIdentifier: + FileName: 'GSDML-V2.45-BALLUFF-BNI-XG3-X0X-XB5-X067-20250822.XML' + GsdId: 'IDS_IOL_2I_0O_PQI' + Parameters: + RecordDataList: + - IndexName: 'Port configuration' + Values: + - OffsetName: 'Enable port diagnosis' + Value: True + - OffsetName: 'Enable process alarms (Enable Notifications)' + Value: False + - OffsetName: 'Enable input fraction (Disable PD size check)' + Value: False + - OffsetName: 'Enable Pull/Plug' + Value: True + # - Offset: '4' + # # Possible value range: [0, 255] + # Value: 2 + # - Offset: '5' + # # Possible value range: [0, 255] + # Value: 0 + - OffsetName: 'Port mode' + # Possible ValueNames: Deactivated | Set port configuration | Autoconfig + ValueName: 'Autoconfig' + - OffsetName: 'Validation & Backup' + # Possible ValueNames: No Device check | Type compatible Device V1.0 | Type compatible Device V1.1 | Type compatible Device V1.1, Backup + Restore | Type compatible Device V1.1, Restore + ValueName: 'Type compatible Device V1.1, Backup + Restore' + - OffsetName: 'Port Class / Pin2 behavior' + # Possible ValueNames: Class A / NC (Not connected) | Class A / DI | Class A / DO | Class A / Power + ValueName: 'Class A / NC (Not connected)' + - OffsetName: 'Cycle Time' + # Possible ValueNames: as fast as possible | 1.6 ms | 3.2 ms | 4.8 ms | 8.0 ms | 10.0 ms | 12.0 ms | 16.0 ms | 20.0 ms | 40.0 ms | 80.0 ms | 120.0 ms + ValueName: 'as fast as possible' + - OffsetName: 'Vendor ID (dez)' + # Possible value range: [0, 65535] + Value: 888 + - OffsetName: 'Device ID (dez)' + # Possible value range: [0, 16777215] + Value: 330593 + # IoConfiguration: + # Inputs: + # # Supported Process Image Partitions depend on the specific controller type in use (e.g., S7-1500 supports PIP 0–31). + # ProcessImagePartition: 'Automatic update' diff --git a/src/io/ctrl/assets/balluff.iolink/io/balluff_bni00l3_bni00ay.hwl.yml b/src/io/ctrl/assets/balluff.iolink/io/balluff_bni00l3_bni00ay.hwl.yml index 8ce942bdc..4a56dcc8c 100644 --- a/src/io/ctrl/assets/balluff.iolink/io/balluff_bni00l3_bni00ay.hwl.yml +++ b/src/io/ctrl/assets/balluff.iolink/io/balluff_bni00l3_bni00ay.hwl.yml @@ -1,72 +1,72 @@ -# Templates: -# Submodules: -# - Name: 'balluff_bni00l3_bni00ay' -# Placeholders: -# - Name: 'SubmoduleName' -# Value: 'X01' -# AllowedValues: -# - 'X01' -# - 'X02' -# - 'X03' -# - 'X04' -# - 'X05' -# - 'X06' -# - 'X07' -# - 'X08' -# - Name: 'Slot' -# Value: 2 -# AllowedValues: -# - 2 -# - 3 -# - 4 -# - 5 -# - 6 -# - 7 -# - 8 -# - 9 -# Content: -# Name: '${SubmoduleName}' -# Slot: '${Slot}' -# TypeIdentifier: -# FileName: 'GSDML-V2.45-BALLUFF-BNI-XG3-X0X-XB5-X067-20250822.XML' -# GsdId: 'IDS_IOL_2I_0O_PQI' -# Parameters: -# RecordDataList: -# - IndexName: 'Port configuration' -# Values: -# - OffsetName: 'Enable port diagnosis' -# Value: True -# - OffsetName: 'Enable process alarms (Enable Notifications)' -# Value: False -# - OffsetName: 'Enable input fraction (Disable PD size check)' -# Value: False -# - OffsetName: 'Enable Pull/Plug' -# Value: True -# # - Offset: '4' -# # # Possible value range: [0, 255] -# # Value: 2 -# # - Offset: '5' -# # # Possible value range: [0, 255] -# # Value: 0 -# - OffsetName: 'Port mode' -# # Possible ValueNames: Deactivated | Set port configuration | Autoconfig -# ValueName: 'Autoconfig' -# - OffsetName: 'Validation & Backup' -# # Possible ValueNames: No Device check | Type compatible Device V1.0 | Type compatible Device V1.1 | Type compatible Device V1.1, Backup + Restore | Type compatible Device V1.1, Restore -# ValueName: 'Type compatible Device V1.1, Backup + Restore' -# - OffsetName: 'Port Class / Pin2 behavior' -# # Possible ValueNames: Class A / NC (Not connected) | Class A / DI | Class A / DO | Class A / Power -# ValueName: 'Class A / NC (Not connected)' -# - OffsetName: 'Cycle Time' -# # Possible ValueNames: as fast as possible | 1.6 ms | 3.2 ms | 4.8 ms | 8.0 ms | 10.0 ms | 12.0 ms | 16.0 ms | 20.0 ms | 40.0 ms | 80.0 ms | 120.0 ms -# ValueName: 'as fast as possible' -# - OffsetName: 'Vendor ID (dez)' -# # Possible value range: [0, 65535] -# Value: 888 -# - OffsetName: 'Device ID (dez)' -# # Possible value range: [0, 16777215] -# Value: 331040 -# IoConfiguration: -# Inputs: -# # Supported Process Image Partitions depend on the specific controller type in use (e.g., S7-1500 supports PIP 0–31). -# ProcessImagePartition: 'Automatic update' +Templates: + Submodules: + - Name: 'balluff_bni00l3_bni00ay' + Placeholders: + - Name: 'SubmoduleName' + Value: 'X01' + AllowedValues: + - 'X01' + - 'X02' + - 'X03' + - 'X04' + - 'X05' + - 'X06' + - 'X07' + - 'X08' + - Name: 'Slot' + Value: 2 + AllowedValues: + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + - 8 + - 9 + Content: + Name: '${SubmoduleName}' + Slot: '${Slot}' + TypeIdentifier: + FileName: 'GSDML-V2.45-BALLUFF-BNI-XG3-X0X-XB5-X067-20250822.XML' + GsdId: 'IDS_IOL_2I_0O_PQI' + Parameters: + RecordDataList: + - IndexName: 'Port configuration' + Values: + - OffsetName: 'Enable port diagnosis' + Value: True + - OffsetName: 'Enable process alarms (Enable Notifications)' + Value: False + - OffsetName: 'Enable input fraction (Disable PD size check)' + Value: False + - OffsetName: 'Enable Pull/Plug' + Value: True + # - Offset: '4' + # # Possible value range: [0, 255] + # Value: 2 + # - Offset: '5' + # # Possible value range: [0, 255] + # Value: 0 + - OffsetName: 'Port mode' + # Possible ValueNames: Deactivated | Set port configuration | Autoconfig + ValueName: 'Autoconfig' + - OffsetName: 'Validation & Backup' + # Possible ValueNames: No Device check | Type compatible Device V1.0 | Type compatible Device V1.1 | Type compatible Device V1.1, Backup + Restore | Type compatible Device V1.1, Restore + ValueName: 'Type compatible Device V1.1, Backup + Restore' + - OffsetName: 'Port Class / Pin2 behavior' + # Possible ValueNames: Class A / NC (Not connected) | Class A / DI | Class A / DO | Class A / Power + ValueName: 'Class A / NC (Not connected)' + - OffsetName: 'Cycle Time' + # Possible ValueNames: as fast as possible | 1.6 ms | 3.2 ms | 4.8 ms | 8.0 ms | 10.0 ms | 12.0 ms | 16.0 ms | 20.0 ms | 40.0 ms | 80.0 ms | 120.0 ms + ValueName: 'as fast as possible' + - OffsetName: 'Vendor ID (dez)' + # Possible value range: [0, 65535] + Value: 888 + - OffsetName: 'Device ID (dez)' + # Possible value range: [0, 16777215] + Value: 331040 + # IoConfiguration: + # Inputs: + # # Supported Process Image Partitions depend on the specific controller type in use (e.g., S7-1500 supports PIP 0–31). + # ProcessImagePartition: 'Automatic update' diff --git a/src/io/ctrl/assets/balluff.iolink/io/balluff_bni00l3_bni00ay_bni00ay.hwl.yml b/src/io/ctrl/assets/balluff.iolink/io/balluff_bni00l3_bni00ay_bni00ay.hwl.yml index 169e20a58..c963aa95a 100644 --- a/src/io/ctrl/assets/balluff.iolink/io/balluff_bni00l3_bni00ay_bni00ay.hwl.yml +++ b/src/io/ctrl/assets/balluff.iolink/io/balluff_bni00l3_bni00ay_bni00ay.hwl.yml @@ -1,72 +1,72 @@ -# Templates: -# Submodules: -# - Name: 'balluff_bni00l3_bni00ay_bni00ay' -# Placeholders: -# - Name: 'SubmoduleName' -# Value: 'X01' -# AllowedValues: -# - 'X01' -# - 'X02' -# - 'X03' -# - 'X04' -# - 'X05' -# - 'X06' -# - 'X07' -# - 'X08' -# - Name: 'Slot' -# Value: 2 -# AllowedValues: -# - 2 -# - 3 -# - 4 -# - 5 -# - 6 -# - 7 -# - 8 -# - 9 -# Content: -# Name: '${SubmoduleName}' -# Slot: '${Slot}' -# TypeIdentifier: -# FileName: 'GSDML-V2.45-BALLUFF-BNI-XG3-X0X-XB5-X067-20250822.XML' -# GsdId: 'IDS_IOL_4I_0O_PQI' -# Parameters: -# RecordDataList: -# - IndexName: 'Port configuration' -# Values: -# - OffsetName: 'Enable port diagnosis' -# Value: True -# - OffsetName: 'Enable process alarms (Enable Notifications)' -# Value: False -# - OffsetName: 'Enable input fraction (Disable PD size check)' -# Value: False -# - OffsetName: 'Enable Pull/Plug' -# Value: True -# # - Offset: '4' -# # # Possible value range: [0, 255] -# # Value: 2 -# # - Offset: '5' -# # # Possible value range: [0, 255] -# # Value: 0 -# - OffsetName: 'Port mode' -# # Possible ValueNames: Deactivated | Set port configuration | Autoconfig -# ValueName: 'Autoconfig' -# - OffsetName: 'Validation & Backup' -# # Possible ValueNames: No Device check | Type compatible Device V1.0 | Type compatible Device V1.1 | Type compatible Device V1.1, Backup + Restore | Type compatible Device V1.1, Restore -# ValueName: 'Type compatible Device V1.1, Backup + Restore' -# - OffsetName: 'Port Class / Pin2 behavior' -# # Possible ValueNames: Class A / NC (Not connected) | Class A / DI | Class A / DO | Class A / Power -# ValueName: 'Class A / NC (Not connected)' -# - OffsetName: 'Cycle Time' -# # Possible ValueNames: as fast as possible | 1.6 ms | 3.2 ms | 4.8 ms | 8.0 ms | 10.0 ms | 12.0 ms | 16.0 ms | 20.0 ms | 40.0 ms | 80.0 ms | 120.0 ms -# ValueName: 'as fast as possible' -# - OffsetName: 'Vendor ID (dez)' -# # Possible value range: [0, 65535] -# Value: 888 -# - OffsetName: 'Device ID (dez)' -# # Possible value range: [0, 16777215] -# Value: 331041 -# IoConfiguration: -# Inputs: -# # Supported Process Image Partitions depend on the specific controller type in use (e.g., S7-1500 supports PIP 0–31). -# ProcessImagePartition: 'Automatic update' +Templates: + Submodules: + - Name: 'balluff_bni00l3_bni00ay_bni00ay' + Placeholders: + - Name: 'SubmoduleName' + Value: 'X01' + AllowedValues: + - 'X01' + - 'X02' + - 'X03' + - 'X04' + - 'X05' + - 'X06' + - 'X07' + - 'X08' + - Name: 'Slot' + Value: 2 + AllowedValues: + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + - 8 + - 9 + Content: + Name: '${SubmoduleName}' + Slot: '${Slot}' + TypeIdentifier: + FileName: 'GSDML-V2.45-BALLUFF-BNI-XG3-X0X-XB5-X067-20250822.XML' + GsdId: 'IDS_IOL_4I_0O_PQI' + Parameters: + RecordDataList: + - IndexName: 'Port configuration' + Values: + - OffsetName: 'Enable port diagnosis' + Value: True + - OffsetName: 'Enable process alarms (Enable Notifications)' + Value: False + - OffsetName: 'Enable input fraction (Disable PD size check)' + Value: False + - OffsetName: 'Enable Pull/Plug' + Value: True + # - Offset: '4' + # # Possible value range: [0, 255] + # Value: 2 + # - Offset: '5' + # # Possible value range: [0, 255] + # Value: 0 + - OffsetName: 'Port mode' + # Possible ValueNames: Deactivated | Set port configuration | Autoconfig + ValueName: 'Autoconfig' + - OffsetName: 'Validation & Backup' + # Possible ValueNames: No Device check | Type compatible Device V1.0 | Type compatible Device V1.1 | Type compatible Device V1.1, Backup + Restore | Type compatible Device V1.1, Restore + ValueName: 'Type compatible Device V1.1, Backup + Restore' + - OffsetName: 'Port Class / Pin2 behavior' + # Possible ValueNames: Class A / NC (Not connected) | Class A / DI | Class A / DO | Class A / Power + ValueName: 'Class A / NC (Not connected)' + - OffsetName: 'Cycle Time' + # Possible ValueNames: as fast as possible | 1.6 ms | 3.2 ms | 4.8 ms | 8.0 ms | 10.0 ms | 12.0 ms | 16.0 ms | 20.0 ms | 40.0 ms | 80.0 ms | 120.0 ms + ValueName: 'as fast as possible' + - OffsetName: 'Vendor ID (dez)' + # Possible value range: [0, 65535] + Value: 888 + - OffsetName: 'Device ID (dez)' + # Possible value range: [0, 16777215] + Value: 331041 + # IoConfiguration: + # Inputs: + # # Supported Process Image Partitions depend on the specific controller type in use (e.g., S7-1500 supports PIP 0–31). + # ProcessImagePartition: 'Automatic update' diff --git a/src/io/ctrl/assets/balluff.iolink/io/balluff_bni00l3_port_deactivated.hwl.yml b/src/io/ctrl/assets/balluff.iolink/io/balluff_bni00l3_port_deactivated.hwl.yml index c71030fc4..cc7df388e 100644 --- a/src/io/ctrl/assets/balluff.iolink/io/balluff_bni00l3_port_deactivated.hwl.yml +++ b/src/io/ctrl/assets/balluff.iolink/io/balluff_bni00l3_port_deactivated.hwl.yml @@ -1,46 +1,46 @@ -# Templates: -# Submodules: -# - Name: 'balluff_bni00l3_port_deactivated' -# Placeholders: -# - Name: 'SubmoduleName' -# Value: 'X01' -# AllowedValues: -# - 'X01' -# - 'X02' -# - 'X03' -# - 'X04' -# - 'X05' -# - 'X06' -# - 'X07' -# - 'X08' -# - Name: 'Slot' -# Value: 2 -# AllowedValues: -# - 2 -# - 3 -# - 4 -# - 5 -# - 6 -# - 7 -# - 8 -# - 9 -# Content: -# Name: '${SubmoduleName}' -# Slot: '${Slot}' -# TypeIdentifier: -# FileName: 'GSDML-V2.45-BALLUFF-BNI-XG3-X0X-XB5-X067-20250822.XML' -# GsdId: 'IDS_IOL_INACTIVE' -# Parameters: -# RecordDataList: -# # - IndexName: 'Port configuration' -# # Values: -# # - OffsetName: 'Enable port diagnosis' -# # Value: False -# # - OffsetName: 'Enable process alarms (Enable Notifications)' -# # Value: False -# # - OffsetName: 'Enable input fraction (Disable PD size check)' -# # Value: False -# # - OffsetName: 'Enable Pull/Plug' -# # Value: False -# # - OffsetName: 'Port mode' -# # ValueName: 'Deactivated' +Templates: + Submodules: + - Name: 'balluff_bni00l3_port_deactivated' + Placeholders: + - Name: 'SubmoduleName' + Value: 'X01' + AllowedValues: + - 'X01' + - 'X02' + - 'X03' + - 'X04' + - 'X05' + - 'X06' + - 'X07' + - 'X08' + - Name: 'Slot' + Value: 2 + AllowedValues: + - 2 + - 3 + - 4 + - 5 + - 6 + - 7 + - 8 + - 9 + Content: + Name: '${SubmoduleName}' + Slot: '${Slot}' + TypeIdentifier: + FileName: 'GSDML-V2.45-BALLUFF-BNI-XG3-X0X-XB5-X067-20250822.XML' + GsdId: 'IDS_IOL_INACTIVE' + # Parameters: + # RecordDataList: + # - IndexName: 'Port configuration' + # Values: + # - OffsetName: 'Enable port diagnosis' + # Value: False + # - OffsetName: 'Enable process alarms (Enable Notifications)' + # Value: False + # - OffsetName: 'Enable input fraction (Disable PD size check)' + # Value: False + # - OffsetName: 'Enable Pull/Plug' + # Value: False + # - OffsetName: 'Port mode' + # ValueName: 'Deactivated' diff --git a/src/scripts/all.sh b/src/scripts/all.sh index 1d72d846a..c66a61894 100644 --- a/src/scripts/all.sh +++ b/src/scripts/all.sh @@ -2,8 +2,8 @@ export RED='\033[0;31m' export YELLOW='\033[0;33m' export NC='\033[0m\r\n' # No Color+CRLF -if [ "$#" -ne 7 ]; then - printf "${RED}Usage: $0 \r\n${NC}" +if [ "$#" -ne 8 ]; then + printf "${RED}Usage: $0 \r\n${NC}" exit 1 fi @@ -50,6 +50,15 @@ if [ -z $USE_PLC_SIM_ADVANCED ]; then exit 1 fi + +if [ "$8" = "true" ]; then + echo "Project certificate is going to overwrite the online one." + FORCE=true +else + echo "Project certificate is going to be compared with online one." + FORCE=false +fi + PLCSIM=0 case "$(echo "$USE_PLC_SIM_ADVANCED" | tr '[:upper:]' '[:lower:]')" in "true") @@ -65,74 +74,157 @@ case "$(echo "$USE_PLC_SIM_ADVANCED" | tr '[:upper:]' '[:lower:]')" in ;; esac -certfile="./certs/$PLC_NAME/$PLC_NAME.cer" -if ! [[ -e "$certfile" ]]; then - printf "${RED}Certification file $certfile does not exist.\r\n${NC}" - #alf #clear plc except ip and name and provide all actions for install all, build and initial download hw so as sw - alf=$( dirname ${BASH_SOURCE[0]})"\\all_first.sh" - $alf $NAMESPACE $PLC_NAME $PLC_IP_ADDRESS $PLATFORM $USERNAME $PASSWORD $USE_PLC_SIM_ADVANCED -else +if [ "$FORCE" = "true" ]; then + certfile="./certs/$PLC_NAME/$PLC_NAME.cer" + if [[ ! -e "$certfile" ]]; then + printf "${RED}Certification file $certfile does not exist.\r\n${NC}" + exit 1 + fi + p12container="./certs/$PLC_NAME/containerWithPublicAndPrivateKeys_x509.p12" + if [[ ! -e "$p12container" ]]; then + printf "${RED}Public private key container file $p12container does not exist.\r\n${NC}" + exit 1 + fi + refFile="./certs/$PLC_NAME/reference_x509.crt" + if [[ ! -e "$refFile" ]]; then + printf "${RED}Reference file $refFile does not exist.\r\n${NC}" + exit 1 + fi + check_requisites_apax_script=$( dirname ${BASH_SOURCE[0]})"\\check_requisites_apax.sh" if ! $check_requisites_apax_script ; then exit 1 fi - + check_requisites_nuget_script=$( dirname ${BASH_SOURCE[0]})"\\check_requisites_nuget.sh" if ! $check_requisites_nuget_script ; then exit 1 fi - + check_requisites_custom_registry_script=$( dirname ${BASH_SOURCE[0]})"\\check_requisites_custom_registry.sh" if ! $check_requisites_custom_registry_script ; then exit 1 fi - + if [ "$PLCSIM" -eq 1 ]; then plcsim_script=$( dirname ${BASH_SOURCE[0]})"\\plcsimadvanced.sh" $plcsim_script $NAMESPACE $PLC_NAME $PLC_IP_ADDRESS fi - #apax run ci # clean and install dependencies - apax clean - apax install --catalog - apax install + #copy_and_install_gsd # copy and install all gsdml files from library + copy_and_install_gsd=$( dirname ${BASH_SOURCE[0]})"\\copy_and_install_gsd.sh" + $copy_and_install_gsd + if [[ $? -eq 0 ]]; then + printf "${GREEN}Gsdml files installed succesfully.${NC}" + else + printf "${RED}Installation of the gsdml files finished with an error!${NC}\n" + printf "${RED}Please check the details above.${NC}\n" + exit 1 + fi - is_cert_hash_sha1_equal_script=$( dirname ${BASH_SOURCE[0]})"\\is_cert_hash_sha1_equal.sh" + #copy_hwl_templates # copy all templates from library + copy_hwl_templates=$( dirname ${BASH_SOURCE[0]})"\\copy_hwl_templates.sh" + $copy_hwl_templates + if [[ $? -eq 0 ]]; then + printf "${GREEN}Copying hardware templates from the libraries finished succesfully.${NC}" + else + printf "${RED}Copying hardware templates from the libraries finished with an error!${NC}\n" + printf "${RED}Please check the details above.${NC}\n" + exit 1 + fi - if ! $is_cert_hash_sha1_equal_script "$PLC_NAME" "$PLC_IP_ADDRESS"; then - printf "${RED}Certification file $certfile exists, but its sha1 hash is different to the PLC's one.\r\n" - printf "${RED}It has to be regenerated again.\r\n${NC}" - #alf #clear plc except ip and name and provide all actions for install all, build and initial download hw so as sw -# alf=$( dirname ${BASH_SOURCE[0]})"\\all_first.sh" -# $alf $NAMESPACE $PLC_NAME $PLC_IP_ADDRESS $PLATFORM $USERNAME $PASSWORD $USE_PLC_SIM_ADVANCED + #hw_first_compile_and_first_download # compile, copy the HwIds, first download HW using password and upload certificate + hw_first_compile_and_first_download=$( dirname ${BASH_SOURCE[0]})"\\hw_first_compile_and_first_download.sh" + $hw_first_compile_and_first_download $NAMESPACE $PLC_NAME $PLC_IP_ADDRESS $USERNAME $PASSWORD + if [[ $? -eq 0 ]]; then + printf "${GREEN}Hardware configuration has been succesfully compiled and downloaded.${NC}" else - - printf "${GREEN}Certification file $certfile exists and its sha1 hash is equal to the PLC's one.\r\n" - printf "${GREEN}No prompt will popup during execution, so you could leave your PC and enjoy your coffee now.\r\n${NC}" + printf "${RED}Compilation of the hardware configuration or its downloaded finished with an error!${NC}\n" + printf "${RED}Please check the details above.${NC}\n" + exit 1 + fi + #sw_build_and_download_full # software build and full download + sw_build_and_download_full=$( dirname ${BASH_SOURCE[0]})"\\sw_build_and_download_full.sh" + $sw_build_and_download_full $PLC_NAME $PLC_IP_ADDRESS $PLATFORM $USERNAME $PASSWORD + if [[ $? -eq 0 ]]; then + printf "${GREEN}Software has been succesfully compiled and downloaded.${NC}" + else + printf "${RED}Compilation of the software or its downloaded finished with an error!${NC}\n" + printf "${RED}Please check the details above.${NC}\n" + exit 1 + fi - #hw_update # copy and install gsd, copy templates, compile, copy the HwIds, download HW using certificate - hw_update=$( dirname ${BASH_SOURCE[0]})"\\hw_update.sh" - $hw_update $NAMESPACE $PLC_NAME $PLC_IP_ADDRESS $USERNAME $PASSWORD - if [[ $? -eq 0 ]]; then - printf "${GREEN}Hardware configuration has been succesfully compiled and downloaded.${NC}" - else - printf "${RED}Compilation of the hardware configuration or its downloaded finished with an error!${NC}\n" - printf "${RED}Please check the details above.${NC}\n" +else + certfile="./certs/$PLC_NAME/$PLC_NAME.cer" + if [[ ! -e "$certfile" ]]; then + printf "${RED}Certification file $certfile does not exist.\r\n${NC}" + #alf #clear plc except ip and name and provide all actions for install all, build and initial download hw so as sw + alf=$( dirname ${BASH_SOURCE[0]})"\\all_first.sh" + $alf $NAMESPACE $PLC_NAME $PLC_IP_ADDRESS $PLATFORM $USERNAME $PASSWORD $USE_PLC_SIM_ADVANCED + else + + check_requisites_apax_script=$( dirname ${BASH_SOURCE[0]})"\\check_requisites_apax.sh" + if ! $check_requisites_apax_script ; then exit 1 fi - #sw_build_and_download_full # software build and full download - sw_build_and_download_full=$( dirname ${BASH_SOURCE[0]})"\\sw_build_and_download_full.sh" - $sw_build_and_download_full $PLC_NAME $PLC_IP_ADDRESS $PLATFORM $USERNAME $PASSWORD - if [[ $? -eq 0 ]]; then - printf "${GREEN}Software has been succesfully compiled and downloaded.${NC}" - else - printf "${RED}Compilation of the software or its downloaded finished with an error!${NC}\n" - printf "${RED}Please check the details above.${NC}\n" + check_requisites_nuget_script=$( dirname ${BASH_SOURCE[0]})"\\check_requisites_nuget.sh" + if ! $check_requisites_nuget_script ; then exit 1 fi - fi + + check_requisites_custom_registry_script=$( dirname ${BASH_SOURCE[0]})"\\check_requisites_custom_registry.sh" + if ! $check_requisites_custom_registry_script ; then + exit 1 + fi + + if [ "$PLCSIM" -eq 1 ]; then + plcsim_script=$( dirname ${BASH_SOURCE[0]})"\\plcsimadvanced.sh" + $plcsim_script $NAMESPACE $PLC_NAME $PLC_IP_ADDRESS + fi + + #apax run ci # clean and install dependencies + apax clean + apax install --catalog + apax install + + is_cert_hash_sha1_equal_script=$( dirname ${BASH_SOURCE[0]})"\\is_cert_hash_sha1_equal.sh" + + if ! $is_cert_hash_sha1_equal_script "$PLC_NAME" "$PLC_IP_ADDRESS"; then + printf "${RED}Certification file $certfile exists, but its sha1 hash is different to the PLC's one.\r\n" + printf "${RED}It has to be regenerated again.\r\n${NC}" + #alf #clear plc except ip and name and provide all actions for install all, build and initial download hw so as sw + alf=$( dirname ${BASH_SOURCE[0]})"\\all_first.sh" + $alf $NAMESPACE $PLC_NAME $PLC_IP_ADDRESS $PLATFORM $USERNAME $PASSWORD $USE_PLC_SIM_ADVANCED + else + + printf "${GREEN}Certification file $certfile exists and its sha1 hash is equal to the PLC's one.\r\n" + printf "${GREEN}No prompt will popup during execution, so you could leave your PC and enjoy your coffee now.\r\n${NC}" + + #hw_update # copy and install gsd, copy templates, compile, copy the HwIds, download HW using certificate + hw_update=$( dirname ${BASH_SOURCE[0]})"\\hw_update.sh" + $hw_update $NAMESPACE $PLC_NAME $PLC_IP_ADDRESS $USERNAME $PASSWORD + if [[ $? -eq 0 ]]; then + printf "${GREEN}Hardware configuration has been succesfully compiled and downloaded.${NC}" + else + printf "${RED}Compilation of the hardware configuration or its downloaded finished with an error!${NC}\n" + printf "${RED}Please check the details above.${NC}\n" + exit 1 + fi + + #sw_build_and_download_full # software build and full download + sw_build_and_download_full=$( dirname ${BASH_SOURCE[0]})"\\sw_build_and_download_full.sh" + $sw_build_and_download_full $PLC_NAME $PLC_IP_ADDRESS $PLATFORM $USERNAME $PASSWORD + if [[ $? -eq 0 ]]; then + printf "${GREEN}Software has been succesfully compiled and downloaded.${NC}" + else + printf "${RED}Compilation of the software or its downloaded finished with an error!${NC}\n" + printf "${RED}Please check the details above.${NC}\n" + exit 1 + fi + fi + fi fi diff --git a/src/scripts/all_first.sh b/src/scripts/all_first.sh index f27cc945e..ef83419ea 100644 --- a/src/scripts/all_first.sh +++ b/src/scripts/all_first.sh @@ -14,8 +14,8 @@ validate_password_safe_chars() { return 0 } -if [ "$#" -ne 7 ]; then - printf "${RED}Usage: $0 \r\n${NC}" +if [ "$#" -ne 8 ]; then + printf "${RED}Usage: $0 \r\n${NC}" exit 1 fi @@ -69,6 +69,14 @@ if [ -z $USE_PLC_SIM_ADVANCED ]; then exit 1 fi +if [ "$8" = "true" ]; then + echo "Project certificate is going to be deleted and regenerated again." + FORCE=true +else + echo "Project certificate is going to be generated if it does not already exists." + FORCE=false +fi + PLCSIM=0 case "$(echo "$USE_PLC_SIM_ADVANCED" | tr '[:upper:]' '[:lower:]')" in "true") @@ -107,11 +115,18 @@ if [ "$PLCSIM" -eq 1 ]; then $plcsim_script $NAMESPACE $PLC_NAME $PLC_IP_ADDRESS fi + #apax run ci # clean and install dependencies apax clean apax install --catalog apax install +if [ "$FORCE" = "true" ]; then + certs_folder="./certs" + rm -rf "${certs_folder:?}/"* + hwc_gen_folder="./hwc/hwc.gen" + rm -rf "${hwc_gen_folder:?}/"* +fi #clean_plc # total reset of the PLC excluding IP and name clean_plc=$( dirname ${BASH_SOURCE[0]})"\\clean_plc.sh" $clean_plc $PLC_IP_ADDRESS $USERNAME $PASSWORD diff --git a/src/scripts/compare_all.sh b/src/scripts/compare_all.sh new file mode 100644 index 000000000..cda05b952 --- /dev/null +++ b/src/scripts/compare_all.sh @@ -0,0 +1,68 @@ +export GREEN='\033[0;32m' +export RED='\033[0;31m' +export YELLOW='\033[0;33m' +export NC='\033[0m\r\n' # No Color+CRLF + +if [ "$#" -ne 5 ]; then + printf "${RED}Usage: $0 .${NC}" + exit 1 +fi + +PLC_NAME=$1 +if [ -z $PLC_NAME ]; then + printf "${RED}The PLC_NAME could not be an empty string.${NC}" + exit 1 +fi + +PLC_IP_ADDRESS=$2 +validate_script=$( dirname ${BASH_SOURCE[0]})"\\validate_ip.sh" +if ! $validate_script "$PLC_IP_ADDRESS"; then + printf "${RED}The PLC_IP_ADDRESS '$PLC_IP_ADDRESS' is not a valid IP address.${NC}" + exit 1 +fi + +PLATFORM=$3 +if [ -z $PLATFORM ]; then + printf "${RED}The PLATFORM could not be an empty string.${NC}" + exit 1 +fi + +USERNAME=$4 +if [ -z $USERNAME ]; then + printf "${RED}The USERNAME could not be an empty string.\r\n${NC}" + exit 1 +fi + +PASSWORD=$5 +if [ -z $PASSWORD ]; then + printf "${RED}The PASSWORD could not be an empty string.\r\n${NC}" + exit 1 +fi + +certfile="./certs/$PLC_NAME/$PLC_NAME.cer" +if ! [[ -e "$certfile" ]]; then + printf "${RED}Certification file $certfile does not exist!!!${NC}" + exit 1 +fi +result_file=".\online_offline_compare_result.txt" +if [ -f "$result_file" ] ; then + rm "$result_file" +fi + +apax sld compare --mode all --target $PLC_IP_ADDRESS --input $PLATFORM --username $USERNAME --password $PASSWORD --certificate $certfile --log Information | tee $result_file +exit_code=${PIPESTATUS[0]} +echo "exit_code: $exit_code" + +if [[ $exit_code -eq 0 ]]; then + printf "${GREEN}The compiled software and loaded one are identical.${NC}" +elif [[ $exit_code -eq 9 ]]; then + printf "${YELLOW}At least one code block is different between the compiled software and loaded one.${NC}" +elif [[ $exit_code -eq 10 ]]; then + printf "${YELLOW}At least one data block is different between the compiled software and loaded one.${NC}" +elif [[ $exit_code -eq 11 ]]; then + printf "${YELLOW}At least one code block and one data block are different the compiled software and loaded one.${NC}" +else + printf "${RED}Unspecified return code during comparing!${NC}\n" + printf "${RED}Please check the details above.${NC}\n" + exit 1 +fi \ No newline at end of file diff --git a/src/scripts/compile_all.sh b/src/scripts/compile_all.sh new file mode 100644 index 000000000..15ee8a87d --- /dev/null +++ b/src/scripts/compile_all.sh @@ -0,0 +1,180 @@ +export GREEN='\033[0;32m' +export RED='\033[0;31m' +export YELLOW='\033[0;33m' +export NC='\033[0m\r\n' # No Color+CRLF +if [ "$#" -ne 7 ]; then + printf "${RED}Usage: $0 \r\n${NC}" + exit 1 +fi + +NAMESPACE=$1 +if [ -z $NAMESPACE ]; then + printf "${RED}The NAMESPACE could not be an empty string.\r\n${NC}" + exit 1 +fi + +PLC_NAME=$2 +if [ -z $PLC_NAME ]; then + printf "${RED}The PLC_NAME could not be an empty string.\r\n${NC}" + exit 1 +fi + +PLC_IP_ADDRESS=$3 +validate_script=$( dirname ${BASH_SOURCE[0]})"\\validate_ip.sh" +if ! $validate_script "$PLC_IP_ADDRESS"; then + printf "${RED}The PLC_IP_ADDRESS '$PLC_IP_ADDRESS' is not a valid IP address.\r\n${NC}" + exit 1 +fi + +PLATFORM=$4 +if [ -z $PLATFORM ]; then + printf "${RED}The PLATFORM could not be an empty string.\r\n${NC}" + exit 1 +fi + +USERNAME=$5 +if [ -z $USERNAME ]; then + printf "${RED}The USERNAME could not be an empty string.\r\n${NC}" + exit 1 +fi + +PASSWORD=$6 +if [ -z $PASSWORD ]; then + printf "${RED}The PASSWORD could not be an empty string.\r\n${NC}" + exit 1 +fi + +USE_PLC_SIM_ADVANCED=$7 +if [ -z $USE_PLC_SIM_ADVANCED ]; then + printf "${RED}The USE_PLC_SIM_ADVANCED could not be an empty string.\r\n${NC}" + exit 1 +fi + +PLCSIM=0 +case "$(echo "$USE_PLC_SIM_ADVANCED" | tr '[:upper:]' '[:lower:]')" in + "true") + PLCSIM=1 + printf "${YELLOW} USE_PLC_SIM_ADVANCED is true. ${NC}" + ;; + "false") + PLCSIM=0 + printf "${YELLOW} USE_PLC_SIM_ADVANCED is false. ${NC}" + ;; + *) + printf "${RED}USE_PLC_SIM_ADVANCED has an invalid or undefined value: '$USE_PLC_SIM_ADVANCED'.${NC}" + ;; +esac + +apax install + +check_requisites_apax_script=$( dirname ${BASH_SOURCE[0]})"\\check_requisites_apax.sh" +if ! $check_requisites_apax_script ; then + exit 1 +fi + +check_requisites_nuget_script=$( dirname ${BASH_SOURCE[0]})"\\check_requisites_nuget.sh" +if ! $check_requisites_nuget_script ; then + exit 1 +fi + +check_requisites_custom_registry_script=$( dirname ${BASH_SOURCE[0]})"\\check_requisites_custom_registry.sh" +if ! $check_requisites_custom_registry_script ; then + exit 1 +fi + +if [ "$PLCSIM" -eq 1 ]; then + plcsim_script=$( dirname ${BASH_SOURCE[0]})"\\plcsimadvanced.sh" + $plcsim_script $NAMESPACE $PLC_NAME $PLC_IP_ADDRESS +fi + +apax clean +apax install --catalog +apax install + + +#copy_and_install_gsd # copy and install all gsdml files from library +copy_and_install_gsd=$( dirname ${BASH_SOURCE[0]})"\\copy_and_install_gsd.sh" +$copy_and_install_gsd +if [[ $? -eq 0 ]]; then + printf "${GREEN}Gsdml files installed succesfully.${NC}" +else + printf "${RED}Installation of the gsdml files finished with an error!${NC}\n" + printf "${RED}Please check the details above.${NC}\n" + exit 1 +fi + +#copy_hwl_templates # copy all templates from library +copy_hwl_templates=$( dirname ${BASH_SOURCE[0]})"\\copy_hwl_templates.sh" +$copy_hwl_templates +if [[ $? -eq 0 ]]; then + printf "${GREEN}Copying hardware templates from the libraries finished succesfully.${NC}" +else + printf "${RED}Copying hardware templates from the libraries finished with an error!${NC}\n" + printf "${RED}Please check the details above.${NC}\n" + exit 1 +fi + +#setup_secure_communication # setup secure communication, create and import certificates, setup password for AX_USERNAME +setup_secure_communication=$( dirname ${BASH_SOURCE[0]})"\\setup_secure_communication.sh" +$setup_secure_communication $PLC_NAME $USERNAME $PASSWORD +if [[ $? -eq 0 ]]; then + printf "${GREEN}Configuring secure communication finished succesfully.${NC}" +else + printf "${RED}Configuring secure communication finished with an error!${NC}\n" + printf "${RED}Please check the details above.${NC}\n" + exit 1 +fi + +#hw_compile # hardware compilation +if ! [[ -d "./hwc" ]]; then + printf "${RED}Directory ".\hwc" does not exist!!!${NC}" + exit 1 +fi +hwcfile=".\hwc\\${PLC_NAME}.hwl.yml" +if ! [[ -e "$hwcfile" ]]; then + printf "${RED}Hardware configuration file $hwcfile does not exist!!!${NC}" + exit 1 +fi +hw_compile_script=$( dirname ${BASH_SOURCE[0]})"\\hw_compile.sh" +if ! $hw_compile_script ; then + exit 1 +fi + +#copy_hardware_ids # copy hardware identificators +hwid=$( dirname ${BASH_SOURCE[0]})"\\copy_hardware_ids.sh" +$hwid $NAMESPACE $PLC_NAME +if [[ $? -eq 0 ]]; then + printf "${GREEN}Hardware IDs copied succesfully.${NC}" +else + printf "${RED}Copying the hardware IDs finished with an error!${NC}\n" + printf "${RED}Please check the details above.${NC}\n" + exit 1 +fi + +#copy_io_addresses # copy hardware addresses +hwadr=$( dirname ${BASH_SOURCE[0]})"\\copy_io_addresses.sh" +$hwadr $NAMESPACE $PLC_NAME +if [[ $? -eq 0 ]]; then + printf "${GREEN}IO addresses copied succesfully.${NC}" +else + printf "${RED}Copying the IO addressesfinished with an error!${NC}\n" + printf "${RED}Please check the details above.${NC}\n" + exit 1 +fi + +certfile="./certs/$PLC_NAME/$PLC_NAME.cer" +apax plc-cert --target $PLC_IP_ADDRESS --output $certfile +if [[ $? -eq 0 ]]; then + if [[ ! -d ".\\certs\\$PLC_NAME" ]]; then + mkdir -p ".\\certs\\$PLC_NAME" + echo "Created directory: .\\certs\\$PLC_NAME" + fi + printf "${GREEN}Security certificate has been succesfully uploaded.${NC}" +else + printf "${RED}Uploading of the security certificate finished with an error!${NC}\n" + printf "${RED}Please check the details above.${NC}\n" + exit 1 +fi + +apax build +dotnet ixc diff --git a/src/scripts/compile_all_compare_all.sh b/src/scripts/compile_all_compare_all.sh new file mode 100644 index 000000000..cff7f51a7 --- /dev/null +++ b/src/scripts/compile_all_compare_all.sh @@ -0,0 +1,59 @@ +export GREEN='\033[0;32m' +export RED='\033[0;31m' +export YELLOW='\033[0;33m' +export NC='\033[0m\r\n' # No Color+CRLF +if [ "$#" -ne 7 ]; then + printf "${RED}Usage: $0 \r\n${NC}" + exit 1 +fi + +NAMESPACE=$1 +if [ -z $NAMESPACE ]; then + printf "${RED}The NAMESPACE could not be an empty string.\r\n${NC}" + exit 1 +fi + +PLC_NAME=$2 +if [ -z $PLC_NAME ]; then + printf "${RED}The PLC_NAME could not be an empty string.\r\n${NC}" + exit 1 +fi + +PLC_IP_ADDRESS=$3 +validate_script=$( dirname ${BASH_SOURCE[0]})"\\validate_ip.sh" +if ! $validate_script "$PLC_IP_ADDRESS"; then + printf "${RED}The PLC_IP_ADDRESS '$PLC_IP_ADDRESS' is not a valid IP address.\r\n${NC}" + exit 1 +fi + +PLATFORM=$4 +if [ -z $PLATFORM ]; then + printf "${RED}The PLATFORM could not be an empty string.\r\n${NC}" + exit 1 +fi + +USERNAME=$5 +if [ -z $USERNAME ]; then + printf "${RED}The USERNAME could not be an empty string.\r\n${NC}" + exit 1 +fi + +PASSWORD=$6 +if [ -z $PASSWORD ]; then + printf "${RED}The PASSWORD could not be an empty string.\r\n${NC}" + exit 1 +fi + +USE_PLC_SIM_ADVANCED=$7 +if [ -z $USE_PLC_SIM_ADVANCED ]; then + printf "${RED}The USE_PLC_SIM_ADVANCED could not be an empty string.\r\n${NC}" + exit 1 +fi + +#compile_all # compile hw and sw +cla=$( dirname ${BASH_SOURCE[0]})"\\compile_all.sh" +$cla $NAMESPACE $PLC_NAME $PLC_IP_ADDRESS $PLATFORM $USERNAME $PASSWORD $USE_PLC_SIM_ADVANCED + +#compare_all # compare offline and online +cpa=$( dirname ${BASH_SOURCE[0]})"\\compare_all.sh" +$cpa $PLC_NAME $PLC_IP_ADDRESS $PLATFORM $USERNAME $PASSWORD diff --git a/src/scripts/hw_compile.sh b/src/scripts/hw_compile.sh index c6af1db14..257403e56 100644 --- a/src/scripts/hw_compile.sh +++ b/src/scripts/hw_compile.sh @@ -3,9 +3,6 @@ export RED='\033[0;31m' export YELLOW='\033[0;33m' export NC='\033[0m\r\n' # No Color+CRLF hwcc=$(apax hwc compile -i ".\hwc" -o bin/hwc/) -dos2unix SystemConstants/* -dos2unix -r src/IO/* -dos2unix -r hwc/hwc.gen/* if [[ $? -eq 0 ]]; then printf "${GREEN}Hardware configuration compiled succesfully.${NC}" exit 0 @@ -14,3 +11,6 @@ else printf "${RED}Please check the details above.${NC}\n" exit 1 fi +dos2unix SystemConstants/* +dos2unix -r src/IO/* +dos2unix -r hwc/hwc.gen/*