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 typewhen 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:
- What is the correct syntax or recommended command to register custom CFG types from an XML rules definition in RobotWare 8.x?
- Has
cfg_create_type_from_rules_defchanged its argument structure, or does RW8 require types to be declared in a specific sequence/domain before loading? - Is
cfg_create_proc_types_from_xml_defcompletely 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!