10010.02.12 UP DEV : UP - 4.0.0

Release date: 19.09.2022

System requirement

SystemRecommendation
UP connectUP - UPconnect V1.7.0
OSWin 7/8.1/10, macOS Monterey
OS Architecture64 Bit
Processor64 Bit
RAM8 GB
DiskSSD

Download

The complete package can be downloaded from the AVM Cloud.

Bugs / Features / Improvements

Bug

Story

  • [AVMASPDEV-2199] - UPAct: Report Summary as log entry
  • [AVMASPDEV-2555] - ChildIterator Method indexOf(CtrlID)
  • [AVMASPDEV-2658] - UPAct TestValueEnum
  • [AVMASPDEV-2905] - Comfort function IF.getState(state, except) and setCommand(cmd, except) on the interface
  • [AVMASPDEV-2968] - UPact-JUnit: Distinction of error vs. failure -> Correct representation in report

Task

Refactorings

Datatype library dependency

Execute generic refactoring UP: Datatype library dependencies.

InterfaceData_deprecated (Parameter, Config, Recipe, Current)

It is strongly recommended to upgrade to migrate deprecated interface data to InterfaceData with dataGroup allocation.

  • Check if some current data has remanent true flag set at controller interface specific "CurrentDec".
    • If true and B&R platform is used, find a solution for remanent current data points:
      • If data point must be at Current data group: use UP 4.0.0 (optional) Declare deprecated data object config with remanent Currrent Data (consider that refactoring must be executed before migrating to new custom data group.
      • If data point is moveable to another data group: Create a new Data group with Remanent handler mode. Move data points from Current to new Data group (Better solution, since no deprecated element is required).
  • Use available refactoring: 3.26.2 UP: (optional) Replace deprecated interface data

InterfaceData_deprecated data type will be removed with next UP releases.

B&R

  • While using B&R Project, delete all data objects (Logical/DataObjects) at target folder before generating with new UP version. Since templates for DataObjects replaced for new custom data group support.
  • VariableInitMisc with user file handler is not supported anymore. No generic refactoring available for that, since variables must be moved to another data group.

Remanent store options

  • Remove init and file handler options from B&R config and create new remanent store options.
  • Please make a screenshot of file handler init options before update to UP 4.0.0.

  • Define new remanent store options:


  • Use same mode than with old file handler config, but please check all modis, it actual setting is still reasonable.
    • Consider that mode3_FileDefaultAutoInit ist suggested instead of mode2_FileDefault!
  • Use old: remanentStore / store / taskClass for new taskClassRemanentHandler

Controller local variable remanent (B&R)

Controller local variable at interface local has no remanent property anymore. Since this property had no effect at Beckhofff and S7 Tia. Some changes only required for B&R projects:

  • Create a new remanent custom data group.
  • Set mode "mode4_RemanentHandler" for this data group at B&R remanent store options.
  • Move local variable to specific interface with declared custom data group.

Command state list

If.IFC.Info.stCmdState is not part of UP anymore. For projects who are using command states. Extend common interface at project.

Ressources

Some ressources moved to communicaty repository:

  • CommandStateDatatypeLibrary (7a4390be-07fa-11ed-ac1e-c351ac9ebbf5)
    • TYP_CommandStateList
    • TYP_CommandState
    • NR_COMMANDS
  • CommandStateFunctionLibrary (8ec03b4c-07f8-11ed-ac1e-c351ac9ebbf5)
    Function implementation was implemented hard coded, copy it to internal B&R library or use Function with a FunctionModel instead.
    • setCmdState

      (* Set the state of a command ((0= Invisible / 1= Enabled / 2= Disabled / 3= DisabledMassage) *)
      FUNCTION setCmdState
      	setCmdState := -1;
      	FOR usi_Index := 0 TO NR_OF_MAX_CONTROLLER_COMMANDS BY 1 DO
      		IF (stCmdState.aCmdList[usi_Index].uin_CommandID = uin_Command) THEN
      			stCmdState.aCmdList[usi_Index].usi_State := usi_State;
      			usi_Index := NR_OF_MAX_CONTROLLER_COMMANDS;
      			setCmdState := 0;
      		END_IF
      	END_FOR
      END_FUNCTION
    • getCmdState

      (* Get the state of a command ((0= Invisible / 1= Enabled / 2= Disabled / 3= DisabledMassage) *)
      FUNCTION getCmdState
      	getCmdState := -1;
      	FOR usi_Index := 0 TO NR_OF_MAX_CONTROLLER_COMMANDS BY 1 DO
      		IF (stCmdState.aCmdList[usi_Index].uin_CommandID = uin_Command) THEN
      			getCmdState := stCmdState.aCmdList[usi_Index].usi_State;
      			usi_Index := NR_OF_MAX_CONTROLLER_COMMANDS;
      		END_IF
      	END_FOR
      END_FUNCTION
    • getCmdIndex

      (* Get index of command *)
      FUNCTION getCmdIndex
      	getCmdIndex := -1;
      	FOR usi_Index := 0 TO NR_OF_MAX_CONTROLLER_COMMANDS BY 1 DO
      		IF (stCmdState.aCmdList[usi_Index].uin_CommandID = uin_Command) THEN
      			getCmdIndex := USINT_TO_INT(usi_Index);
      			usi_Index := NR_OF_MAX_CONTROLLER_COMMANDS;
      		END_IF
      	END_FOR
      END_FUNCTION

Init command structure

Create a global function and generate code with an Actifsource template for all controllers globally.

  • Selector 1: Controller.controllerInterface.getCommands@ControllerFunctionSpace
  • Selector 2: Controller.controllerInterface:ControllerInterface
  • Selector 3: ControllerInterface.getControllerCommandIndex@TemplateFunction
  • Horizontal selector: Controller.controllerInterface.getCommands@ControllerFunctionSpace.count@BuiltIn

B&R libraries

With this UP version, new versions of B&R libraries (AEString & AEAct) come with.