RW8.1.1 Add-in: Issues Registering Custom CFG Types

Hi everyone,

I am developing a custom RobotWare Add-in targeting RobotWare 8.1.1 (OmniCore). My goal is to register custom configuration types/domains (specifically in the PROC domain) using a cfgrules.xml definition during controller boot via install.cmd.

I have tried two different approaches in install.cmd, but both fail:

1. RW7 Approach: cfg_create_type_from_rules_def

Following the RW7 Add-in Developer Guide syntax:

DOS

cfg_create_type_from_rules_def -name $BOOTPATH/rules/ATLAS_cfgrules.xml

  • Result: Fails with error 120019: Unknown type when the system attempts to load/register the configuration rules.

2. Legacy RW6 Approach: invoke

Attempting the legacy entry point:

DOS

invoke -entry cfg_create_proc_types_from_xml_def -strarg "ATLAS_eio_cfgrules" -nomode

  • Result: Fails with error 20672: Restricted command.
  • Note on Signing: I generated a custom certificate, associated it with the Add-in manifest, and built the package with signature validation, but the system still blocks the execution with the same restricted command error.

File Contents

install.cmd

DOS

#
# History:
#
echo -text ""
echo -text ""
echo -text "    _   _____ _        _     _____ "
echo -text "   / \ |_   _| |      / \   / ____|"
echo -text "  / _ \  | | | |     / _ \ | (___  "
echo -text " / ___ \ | | | |___ / ___ \ \___ \ "
echo -text "/_/   \_\|_| |_____/_/   \_\|_____/ "
echo -text ""


echo -text "ATLAS 1.0"

################################################################################
#																			   #  																		 #
# 				 				Language file for textstrings      			   #					  
#																			   #																			 #
################################################################################

setstr -strvar $TMP_ATLAS -value $BOOTPATH
include -path "$RELEASE/system/instlang.cmd"
setstr -strvar $BOOTPATH -value "$TMP_ATLAS"

################################################################################
#																			   #  																		 #
# 				 				SET BootEnvirement Path           			   #
#																			   # 																			 #
################################################################################

setenv -Name "ATLAS" -value $BOOTPATH
# include -path "$BOOTPATH/language_Patch/patch_install.cmd"

################################################################################
#																			   #  																		 #
# REGISTER ERROR DOMAIN ELOG TEXTS           								   #
#																			   #																			 #
################################################################################

register -type elogmes -domain_no 11 -min 1850 -max 1899 -prepath $BOOTPATH/language/ -postpath /ATLAS_elogtext.xml
register -type elogtitle -prepath $BOOTPATH/language/ -postpath /ATLAS_elogtitles.xml

################################################################################
#																			   # 																		 #
# 				 				REGISTER ATLAS PROC SETTINGS                    #
#																			   #																		 #
################################################################################

register -type cfgrules -domain PROC -prepath $BOOTPATH/rules/ 			-postpath ATLAS_cfgrules.xml
register -type cfgtext -domain PROC -prepath $BOOTPATH/language/ 	-postpath /ATLAS_cfgtext.xml
cfg_create_type_from_rules_def -name $BOOTPATH/rules/ATLAS_cfgrules.xml

/* Load for task one... */

config -filename $BOOTPATH/config/EIO/eioATLAS_1.cfg -domain EIO -replace -internal
config -filename $BOOTPATH/config/EIO/eioATLASST1.cfg -domain EIO -replace -internal

config -filename $BOOTPATH/config/PROC/procATLASStation_1.cfg -domain PROC -replace
config -filename $BOOTPATH/config/PROC/procATLASSet_IoWeld1.cfg -domain PROC -replace 

config -filename $BOOTPATH/config/SYS/sysATLASBase_1.cfg -domain SYS -replace -internal
config -filename $BOOTPATH/config/SYS/sysATLAS_1.cfg -domain SYS -replace -internal

/*BASE TASK INIT*/
/*config -filename $BOOTPATH/config/SYS/sysATLASFIFO.cfg -domain SYS -replace -internal */
/*config -filename $BOOTPATH/config/SYS/sysATLASStateCont.cfg -domain SYS -replace -internal */
/*config -filename $BOOTPATH/config/SYS/sysATLASALARM.cfg -domain SYS -replace -internal */
/*config -filename $BOOTPATH/config/SYS/sysATLASMenu.cfg -domain SYS -replace -internal */


################################################################################
#																			   #
# 				 				ATLAS WEBAPP                                    #
#																			   #
################################################################################

register -type option -description ATLAS -path $BOOTPATH/WebApps/1

echo -text "ATLAS 1.0 load complete"

#END_LABEL




ATLAS_cfgrules.xml

XML

<?xml version="1.0" encoding="utf-8"?>
<Domain xmlns="urn:abb-robotics-cfg-rules" cfgName="PROC" resourceID="ATLAS_10" cfgRulesVersion="1.3">
  <Type cfgName="ATLAS_SETTINGS" resourceID="ATLAS_20" addRemoveInstances="true" instanceVisibility="showAll">
    <Parameter cfgName="name" resourceID="ATLAS_30" userInput="cfgDefaultOk" parameterType="typeStringRAPID" modifyOptions="modRestartWarm" maxVal=" " minVal=" " initVal=" ">
      <LookupParameterValue domainCfgName="SYS" typeCfgName="CAB_TASKS" parameterCfgName="Name" userEdit="false" />
    </Parameter>
    <Parameter cfgName="ATLAS_auth_code" resourceID="ATLAS_53" userInput="cfgDefaultOk" parameterType="typeStringRAPID" modifyOptions="modRestartWarm" maxVal=" " minVal=" " initVal=" "  />
    <Parameter cfgName="ATLAS_lang" resourceID="ATLAS_40" userInput="cfgDefaultOk" parameterType="typeStringNormal" modifyOptions="modRestartWarm" maxVal=" " minVal=" " initVal=" ">
    <LookupParameterValue domainCfgName="PROC" typeCfgName="ATLAS_LANGS" parameterCfgName="LangName" userEdit="false"/>
  </Parameter>
    <Parameter cfgName="ATLAS_proc" resourceID="ATLAS_50" userInput="cfgDefaultOk" parameterType="typeStringNormal" modifyOptions="modRestartWarm" maxVal=" " minVal=" " initVal=" ">
    <LookupParameterValue domainCfgName="PROC" typeCfgName="ATLAS_PROCS" parameterCfgName="Name" userEdit="false"/>
  </Parameter>
    <Parameter cfgName="ATLAS_abk_pccl" resourceID="ATLAS_51" userInput="cfgDefaultOk" parameterType="typeInteger" modifyOptions="modWriteEnabled" maxVal="9999" minVal="0" initVal="0"  />
    <Parameter cfgName="ATLAS_abk_robot" resourceID="ATLAS_52" userInput="cfgDefaultOk" parameterType="typeInteger" modifyOptions="modWriteEnabled" maxVal="9999" minVal="0" initVal="0"  />
   </Type>
  <Type cfgName="ATLAS_PROCS" resourceID="ATLAS_60" addRemoveInstances="true" instanceVisibility="showAll">
    <Parameter cfgName="Name" resourceID="ATLAS_61" userInput="cfgDefaultOk" parameterType="typeStringRAPID" modifyOptions="modRestartWarm" maxVal=" " minVal=" " initVal=" " />
    <Parameter cfgName="ProcName" resourceID="ATLAS_62" userInput="cfgDefaultOk" parameterType="typeStringRAPID" modifyOptions="modRestartWarm" maxVal=" " minVal=" " initVal="ARC" />
    <Parameter cfgName="ARC_TC_Count" resourceID="ATLAS_70" userInput="cfgDefaultOk" parameterType="typeInteger" modifyOptions="modWriteEnabled" maxVal="9999" minVal="0" initVal="0" />
    <Parameter cfgName="ARC_MD_Count" resourceID="ATLAS_71" userInput="cfgDefaultOk" parameterType="typeInteger" modifyOptions="modWriteEnabled" maxVal="9999" minVal="0" initVal="0" />
    <Parameter cfgName="ARC_GC_Count" resourceID="ATLAS_72" userInput="cfgDefaultOk" parameterType="typeInteger" modifyOptions="modWriteEnabled" maxVal="9999" minVal="0" initVal="0" />
    <Parameter cfgName="ARC_BE_Count" resourceID="ATLAS_73" userInput="cfgDefaultOk" parameterType="typeInteger" modifyOptions="modWriteEnabled" maxVal="9999" minVal="0" initVal="0" />
    <Parameter cfgName="SPOT_TD_Count" resourceID="ATLAS_74" userInput="cfgDefaultOk" parameterType="typeInteger" modifyOptions="modWriteEnabled" maxVal="9999" minVal="0" initVal="0" />
    <Parameter cfgName="SPOT_TC_Count" resourceID="ATLAS_75" userInput="cfgDefaultOk" parameterType="typeInteger" modifyOptions="modWriteEnabled" maxVal="9999" minVal="0" initVal="0" />
  </Type>
  <Type cfgName="ATLAS_LANGS" resourceID="ATLAS_80" addRemoveInstances="true" instanceVisibility="showAll">
    <Parameter cfgName="LangCode" resourceID="ATLAS_81" userInput="cfgDefaultOk" parameterType="typeStringRAPID" modifyOptions="modRestartWarm" maxVal=" " minVal=" " initVal=" " />
    <Parameter cfgName="LangName" resourceID="ATLAS_82" userInput="cfgDefaultOk" parameterType="typeStringRAPID" modifyOptions="modRestartWarm" maxVal=" " minVal=" " initVal=" " />
  </Type>
  <Type cfgName="ATLAS_STATION_SIGNALS" resourceID="ATLAS_st_200" addRemoveInstances="true" instanceVisibility="showAll">
    <Parameter cfgName="SyName" resourceID="ATLAS_225" userInput="cfgDefaultOk" parameterType="typeStringRAPID" modifyOptions="modRestartWarm" maxVal=" " minVal=" " initVal=" " />
    <Parameter cfgName="Stationame" resourceID="ATLAS_226" userInput="cfgDefaultOk" parameterType="typeStringRAPID" modifyOptions="modRestartWarm" maxVal=" " minVal=" " initVal=" " />
    <!-- DI/DO: Start -->
    <Parameter cfgName="DiMStart" resourceID="ATLAS_st_210" userInput="cfgDefaultOk" parameterType="typeStringRAPID" modifyOptions="modRestartWarm" maxVal=" " minVal=" " initVal=" ">
      <ListValue userEdit="false">
        <CfgValue resourceID="ATLAS_nosig">NO_SIGNAL</CfgValue>
      </ListValue>
      <LookupParameterValue domainCfgName="EIO" typeCfgName="EIO_SIGNAL" parameterCfgName="Name" userEdit="false">
        <ParamValueFilterGroup condition="valAnd">
          <ConditionFilter parameterCfgName="Category" operandCfgValue="safety" operand="valNotEqual" />
          <ConditionFilter parameterCfgName="Category" operandCfgValue="internal" operand="valNotEqual" />
          <ConditionFilterGroup condition="valOr">
            <ConditionFilter parameterCfgName="SignalType" operandCfgValue="DI" operand="valEqual" />
          </ConditionFilterGroup>
        </ParamValueFilterGroup>
      </LookupParameterValue>
    </Parameter>
     </Type>

</Domain>


Questions:

  1. What is the correct syntax or recommended command to register custom CFG types from an XML rules definition in RobotWare 8.x?
  2. Has cfg_create_type_from_rules_def changed its argument structure, or does RW8 require types to be declared in a specific sequence/domain before loading?
  3. Is cfg_create_proc_types_from_xml_def completely locked down to ABB internal certificates in RW8, or is there a manifest capability/permission required to execute it?

Any guidance, working examples, or pointers to RW8-specific Add-in documentation would be greatly appreciated.

Thanks in advance!