[{"data":1,"prerenderedAt":763},["ShallowReactive",2],{"docs-navigation":3,"docs-\u002Fdocs\u002Fcamera\u002Fconnections\u002Fabb-robot":146,"docs-\u002Fdocs\u002Fcamera\u002Fconnections\u002Fabb-robot-surround":758},[4],{"title":5,"path":6,"stem":7,"children":8},"Docs","\u002Fdocs","docs",[9,12,80,124],{"title":10,"path":6,"stem":11},"Overview","docs\u002Findex",{"title":13,"path":14,"stem":15,"children":16},"Camera app","\u002Fdocs\u002Fcamera","docs\u002F1.camera\u002Findex",[17,18,22,26,48,52,56,60,64,68,72,76],{"title":10,"path":14,"stem":15},{"title":19,"path":20,"stem":21},"Requirements","\u002Fdocs\u002Fcamera\u002Frequirements","docs\u002F1.camera\u002F01.requirements",{"title":23,"path":24,"stem":25},"Install","\u002Fdocs\u002Fcamera\u002Finstall","docs\u002F1.camera\u002F02.install",{"title":27,"path":28,"stem":29,"children":30},"Connections","\u002Fdocs\u002Fcamera\u002Fconnections","docs\u002F1.camera\u002F03.connections\u002Findex",[31,32,36,40,44],{"title":27,"path":28,"stem":29},{"title":33,"path":34,"stem":35},"Allen-Bradley","\u002Fdocs\u002Fcamera\u002Fconnections\u002Fallen-bradley","docs\u002F1.camera\u002F03.connections\u002F1.allen-bradley",{"title":37,"path":38,"stem":39},"ABB robot","\u002Fdocs\u002Fcamera\u002Fconnections\u002Fabb-robot","docs\u002F1.camera\u002F03.connections\u002F2.abb-robot",{"title":41,"path":42,"stem":43},"Camera events","\u002Fdocs\u002Fcamera\u002Fconnections\u002Fcamera-events","docs\u002F1.camera\u002F03.connections\u002F3.camera-events",{"title":45,"path":46,"stem":47},"Demo and diagnostics","\u002Fdocs\u002Fcamera\u002Fconnections\u002Fdemo-and-diagnostics","docs\u002F1.camera\u002F03.connections\u002F4.demo-and-diagnostics",{"title":49,"path":50,"stem":51},"Tags","\u002Fdocs\u002Fcamera\u002Ftags","docs\u002F1.camera\u002F04.tags",{"title":53,"path":54,"stem":55},"Overlay","\u002Fdocs\u002Fcamera\u002Foverlay","docs\u002F1.camera\u002F05.overlay",{"title":57,"path":58,"stem":59},"History and charts","\u002Fdocs\u002Fcamera\u002Fhistory-and-charts","docs\u002F1.camera\u002F06.history-and-charts",{"title":61,"path":62,"stem":63},"DataBorder","\u002Fdocs\u002Fcamera\u002Fdataborder","docs\u002F1.camera\u002F07.databorder",{"title":65,"path":66,"stem":67},"Recording","\u002Fdocs\u002Fcamera\u002Frecording","docs\u002F1.camera\u002F08.recording",{"title":69,"path":70,"stem":71},"Performance","\u002Fdocs\u002Fcamera\u002Fperformance","docs\u002F1.camera\u002F09.performance",{"title":73,"path":74,"stem":75},"Status and troubleshooting","\u002Fdocs\u002Fcamera\u002Fstatus-and-troubleshooting","docs\u002F1.camera\u002F10.status-and-troubleshooting",{"title":77,"path":78,"stem":79},"Export and import","\u002Fdocs\u002Fcamera\u002Fexport-import","docs\u002F1.camera\u002F11.export-import",{"title":81,"path":82,"stem":83,"children":84},"Decoder","\u002Fdocs\u002Fdecoder","docs\u002F2.decoder\u002Findex",[85,86,89,93,96,100,104,108,112,116,120],{"title":10,"path":82,"stem":83},{"title":23,"path":87,"stem":88},"\u002Fdocs\u002Fdecoder\u002Finstall","docs\u002F2.decoder\u002F01.install",{"title":90,"path":91,"stem":92},"Clips","\u002Fdocs\u002Fdecoder\u002Fopen-clips","docs\u002F2.decoder\u002F02.open-clips",{"title":65,"path":94,"stem":95},"\u002Fdocs\u002Fdecoder\u002Frecord","docs\u002F2.decoder\u002F03.record",{"title":97,"path":98,"stem":99},"Live","\u002Fdocs\u002Fdecoder\u002Flive","docs\u002F2.decoder\u002F04.live",{"title":101,"path":102,"stem":103},"Timeline","\u002Fdocs\u002Fdecoder\u002Ftimeline","docs\u002F2.decoder\u002F05.timeline",{"title":105,"path":106,"stem":107},"Decoded data","\u002Fdocs\u002Fdecoder\u002Fdecoded-data","docs\u002F2.decoder\u002F06.decoded-data",{"title":109,"path":110,"stem":111},"Signal view","\u002Fdocs\u002Fdecoder\u002Fsignal-view","docs\u002F2.decoder\u002F07.signal-view",{"title":113,"path":114,"stem":115},"Extracting clips","\u002Fdocs\u002Fdecoder\u002Fclips","docs\u002F2.decoder\u002F08.clips",{"title":117,"path":118,"stem":119},"Verification","\u002Fdocs\u002Fdecoder\u002Fverify","docs\u002F2.decoder\u002F09.verify",{"title":121,"path":122,"stem":123},"Troubleshooting","\u002Fdocs\u002Fdecoder\u002Ftroubleshooting","docs\u002F2.decoder\u002F10.troubleshooting",{"title":125,"path":126,"stem":127,"children":128,"page":145},"Reference","\u002Fdocs\u002Freference","docs\u002F3.reference",[129,133,137,141],{"title":130,"path":131,"stem":132},"Configuration settings","\u002Fdocs\u002Freference\u002Fconfiguration","docs\u002F3.reference\u002F1.configuration",{"title":134,"path":135,"stem":136},"Compatibility","\u002Fdocs\u002Freference\u002Fcompatibility","docs\u002F3.reference\u002F2.compatibility",{"title":138,"path":139,"stem":140},"Release notes","\u002Fdocs\u002Freference\u002Frelease-notes","docs\u002F3.reference\u002F3.release-notes",{"title":142,"path":143,"stem":144},"Glossary","\u002Fdocs\u002Freference\u002Fglossary","docs\u002F3.reference\u002F4.glossary",false,{"id":147,"title":37,"body":148,"description":751,"extension":752,"meta":753,"navigation":754,"path":38,"seo":755,"source":756,"stem":39,"__hash__":757},"docs\u002Fdocs\u002F1.camera\u002F03.connections\u002F2.abb-robot.md",{"type":149,"value":150,"toc":738},"minimark",[151,160,165,182,188,248,251,255,265,270,421,430,482,485,489,496,527,531,545,550,602,605,609,625,631,635,638,642,650,653,656],[152,153,154,155,159],"p",{},"An ",[156,157,158],"strong",{},"ABB robot (Robot Web Services)"," connection reads an IRC5 or OmniCore controller. Its standard state is a catalog of signals, which the robot panel, the pose figure and the DataBorder's robot records read without tags.",[161,162,164],"h2",{"id":163},"connection","Connection",[152,166,167,168,170,171,174,175,177,178,181],{},"Open ",[156,169,27],{},", choose ",[156,172,173],{},"Add connection"," and set the source to ",[156,176,158],{},". The fields that every source shares are on the ",[179,180,27],"a",{"href":28}," page.",[183,184],"shot",{"alt":185,"caption":186,"name":187},"The connection form for an ABB robot: host, username, password, port, TLS verification and the shared fields.","An ABB robot connection.","camera-abb-connection",[189,190,191,204],"table",{},[192,193,194],"thead",{},[195,196,197,201],"tr",{},[198,199,200],"th",{},"Field",[198,202,203],{},"Description",[205,206,207,216,232,240],"tbody",{},[195,208,209,213],{},[210,211,212],"td",{},"Robot host \u002F IP",[210,214,215],{},"This is the address of the robot controller.",[195,217,218,221],{},[210,219,220],{},"Username, Password",[210,222,223,224,227,228,231],{},"The factory default is ",[156,225,226],{},"Default User"," with the password ",[156,229,230],{},"robotics",". The password is stored on the camera and is never returned by the interface or included in exports.",[195,233,234,237],{},[210,235,236],{},"Port (blank = auto)",[210,238,239],{},"Leave it blank. The camera tries HTTP and then HTTPS on the standard ports.",[195,241,242,245],{},[210,243,244],{},"Verify TLS cert",[210,246,247],{},"OmniCore controllers ship with a self-signed certificate, so verification is off by default. Turning it on against a stock OmniCore fails the connection.",[152,249,250],{},"IRC5 with RobotWare 6 over HTTP and OmniCore with RobotWare 7 over HTTPS are detected automatically.",[161,252,254],{"id":253},"signals","Signals",[152,256,167,257,260,261,264],{},[156,258,259],{},"Tag library"," and choose ",[156,262,263],{},"Catalog"," next to the connection. The standard catalog is listed even while the robot is offline. When the robot answers, its I\u002FO signals and RAPID symbols are listed after it.",[183,266],{"alt":267,"caption":268,"name":269},"The Available signals dialog for an ABB connection: panel, execution, motion, event and system addresses, each with its type.","The ABB signal catalog.","camera-abb-browse",[189,271,272,285],{},[192,273,274],{},[195,275,276,279,282],{},[198,277,278],{},"Group",[198,280,281],{},"Address",[198,283,284],{},"Reports",[205,286,287,316,345,377,399],{},[195,288,289,292,313],{},[210,290,291],{},"Panel",[210,293,294,298,299,298,302,305,306,309,310],{},[295,296,297],"code",{},"panel.ctrlstate",", ",[295,300,301],{},"panel.opmode",[295,303,304],{},"panel.rollup",", each also as ",[295,307,308],{},"#code","; ",[295,311,312],{},"panel.speedratio",[210,314,315],{},"The controller state, the operating mode, the roll-up status, and the speed in percent.",[195,317,318,321,342],{},[210,319,320],{},"Execution",[210,322,323,326,327,298,330,298,333,298,336,298,339],{},[295,324,325],{},"exec.state"," and ",[295,328,329],{},"exec.state#code",[295,331,332],{},"exec.cycle",[295,334,335],{},"exec.routine",[295,337,338],{},"exec.line",[295,340,341],{},"exec.stmt",[210,343,344],{},"Whether RAPID is running, the cycle mode, and the program pointer as routine, line and statement.",[195,346,347,350,374],{},[210,348,349],{},"Motion",[210,351,352,355,356,298,359,298,362,298,365,298,368,298,371],{},[295,353,354],{},"motion.joint.1"," to ",[295,357,358],{},"motion.joint.6",[295,360,361],{},"motion.tcp.x",[295,363,364],{},".y",[295,366,367],{},".z",[295,369,370],{},"motion.tool",[295,372,373],{},"motion.wobj",[210,375,376],{},"Joint angles in degrees, the TCP position in millimeters, the active tool and work object.",[195,378,379,382,396],{},[210,380,381],{},"Events",[210,383,384,298,387,298,390,298,393],{},[295,385,386],{},"elog.last.code",[295,388,389],{},"elog.last.severity",[295,391,392],{},"elog.last.title",[295,394,395],{},"elog.last.seq",[210,397,398],{},"The latest event log entry. Severity is 1 for information, 2 for warning and 3 for error.",[195,400,401,404,418],{},[210,402,403],{},"System",[210,405,406,298,409,298,412,298,415],{},[295,407,408],{},"system.name",[295,410,411],{},"system.rwversion",[295,413,414],{},"system.robottype",[295,416,417],{},"system.energy.power",[210,419,420],{},"The system name, the RobotWare version, the robot type and the average power in watts.",[152,422,423,424,426,427,429],{},"The ",[295,425,308],{}," addresses are state tags and take a state map from these codes. See ",[179,428,49],{"href":50},".",[189,431,432,441],{},[192,433,434],{},[195,435,436,438],{},[198,437,281],{},[198,439,440],{},"Codes",[205,442,443,453,463,472],{},[195,444,445,450],{},[210,446,447],{},[295,448,449],{},"panel.ctrlstate#code",[210,451,452],{},"0 init, 1 motoroff, 2 motoron, 3 guardstop, 4 emergencystop, 5 emergencystopreset, 6 sysfail",[195,454,455,460],{},[210,456,457],{},[295,458,459],{},"panel.opmode#code",[210,461,462],{},"0 INIT, 1 AUTO, 2 MANR, 3 MANF, 4 AUTO_CH, 5 MANF_CH, 6 UNDEF",[195,464,465,469],{},[210,466,467],{},[295,468,329],{},[210,470,471],{},"0 stopped, 1 running",[195,473,474,479],{},[210,475,476],{},[295,477,478],{},"panel.rollup#code",[210,480,481],{},"0 RUNNING, 1 STOPPED, 2 ALARM, 3 GUARD STOP, 4 E-STOP, 5 SYS FAIL",[152,483,484],{},"The roll-up is a worst-of summary. It starts from the execution state, rises to ALARM for ten minutes after an error, and a guard stop, an emergency stop or a system failure overrides it.",[161,486,488],{"id":487},"addresses-by-hand","Addresses by hand",[152,490,491,492,495],{},"Choose ",[156,493,494],{},"Add tag"," to read a signal that is not in the catalog. Each one costs one request per poll.",[497,498,499,510],"ul",{},[500,501,502,505,506,509],"li",{},[295,503,504],{},"io:Network\u002FDevice\u002FSignal"," reads an I\u002FO signal. Two parts assume the ",[295,507,508],{},"Local"," network, and a bare name is searched for on the controller.",[500,511,512,515,516,519,520,523,524,429],{},[295,513,514],{},"rapid:Task\u002FModule\u002FSymbol"," reads a RAPID persistent, variable or constant. A record or an array takes a component after ",[295,517,518],{},"#",", such as ",[295,521,522],{},"#x"," or ",[295,525,526],{},"#2",[161,528,530],{"id":529},"robot-panel-and-pose-figure","Robot panel and pose figure",[152,532,423,533,536,537,540,541,544],{},[156,534,535],{},"Robots"," group on the ",[179,538,539],{"href":54},"overlay"," has two elements. Both are bound to the connection under ",[156,542,543],{},"Robot connection"," and need no tags.",[183,546],{"alt":547,"caption":548,"name":549},"The overlay editor with a robot panel showing state chips and a pose figure drawn from the joint angles.","A robot panel and a pose figure.","camera-abb-overlay",[189,551,552,561],{},[192,553,554],{},[195,555,556,559],{},[198,557,558],{},"Element",[198,560,203],{},[205,562,563,586],{},[195,564,565,568],{},[210,566,567],{},"Robot panel",[210,569,570,573,574,577,578,581,582,585],{},[156,571,572],{},"Detail level"," is ",[156,575,576],{},"Chip"," for the name and roll-up status, ",[156,579,580],{},"Compact"," for the state, mode, execution and speed chips, or ",[156,583,584],{},"Full",", which adds the routine and line, the statement, the tool and work object, and an alarm row.",[195,587,588,591],{},[210,589,590],{},"Pose figure",[210,592,593,594,597,598,601],{},"A schematic six-axis arm posed from joints 1, 2, 3 and 5, as an ",[156,595,596],{},"Isometric"," or a ",[156,599,600],{},"Side view",". It is the same drawing for every robot model.",[152,603,604],{},"The panel's height follows its detail level and base font size, so you set only its width. The alarm row shows the latest warning or error for ten minutes.",[161,606,608],{"id":607},"databorder-records","DataBorder records",[152,610,611,614,615,617,618,298,621,624],{},[156,612,613],{},"Robot state records"," on the ",[179,616,61],{"href":62}," page adds standard records for a robot connection, named ",[295,619,620],{},"r1.state",[295,622,623],{},"r1.speed"," and so on. Roll-up status, controller state, operating mode, execution, speed and routine are selected to start with. Program line, statement text, joints and TCP position change on every poll while the robot moves, so add them only when the stream needs the pose.",[152,626,627,630],{},[156,628,629],{},"Alarm burst"," adds a group with the alarm's code, severity and text, and the routine, line and statement the program pointer was at when the alarm landed. A new alarm also forces a full snapshot, so a clip that starts at the fault is self-contained. Strings in the stream are cut at 64 bytes.",[161,632,634],{"id":633},"polling","Polling",[152,636,637],{},"One poll makes one request per group of signals, and only the groups that something uses are read. A panel reads the panel and execution groups, a figure adds the joints, and records and tags add theirs. One second is a sensible interval.",[161,639,641],{"id":640},"limitations","Limitations",[497,643,644,647],{},[500,645,646],{},"The connection reads one mechanical unit and one RAPID task, the first of each. A MultiMove controller shows its first robot.",[500,648,649],{},"Only the latest event of each poll is kept. When a fault raises several entries in one second, the panel and the records show the last one.",[161,651,121],{"id":652},"troubleshooting",[152,654,655],{},"The reason for the last failure is shown in the Connections row.",[189,657,658,668],{},[192,659,660],{},[195,661,662,665],{},[198,663,664],{},"Reason",[198,666,667],{},"Check",[205,669,670,684,694,704,714,724],{},[195,671,672,677],{},[210,673,674],{},[156,675,676],{},"authentication failed (check username\u002Fpassword)",[210,678,679,680,326,682,429],{},"The username and password. The factory default is ",[156,681,226],{},[156,683,230],{},[195,685,686,691],{},[210,687,688],{},[156,689,690],{},"robot unreachable",[210,692,693],{},"The host, and that the camera can reach the robot's network.",[195,695,696,701],{},[210,697,698],{},[156,699,700],{},"answered … but: HTTP 500",[210,702,703],{},"Robot Web Services on the controller, which answered but did not serve the request.",[195,705,706,711],{},[210,707,708],{},[156,709,710],{},"RWS status …",[210,712,713],{},"The user's grants on the controller. A RobotWare 6 user needs read access to the resources it is asked for.",[195,715,716,721],{},[210,717,718],{},[156,719,720],{},"robot returned 503 (session limit) after retry",[210,722,723],{},"Other clients holding Robot Web Services sessions. Close them, or wait for their sessions to expire.",[195,725,726,731],{},[210,727,728],{},[156,729,730],{},"robot stopped answering (3 polls)",[210,732,733,734,737],{},"The robot went offline while connected. Values keep their last reading with a ",[295,735,736],{},"!"," until it is back.",{"title":739,"searchDepth":740,"depth":740,"links":741},"",3,[742,744,745,746,747,748,749,750],{"id":163,"depth":743,"text":164},2,{"id":253,"depth":743,"text":254},{"id":487,"depth":743,"text":488},{"id":529,"depth":743,"text":530},{"id":607,"depth":743,"text":608},{"id":633,"depth":743,"text":634},{"id":640,"depth":743,"text":641},{"id":652,"depth":743,"text":121},"Connecting to an IRC5 or OmniCore controller over Robot Web Services.","md",{},true,{"title":37,"description":751},null,"ThCBNhQxuRfvpojN3WivotOWH6wGC9mxk8m8jsWU7GI",[759,761],{"title":33,"path":34,"stem":35,"description":760,"children":-1},"Connecting to an Allen-Bradley PLC over EtherNet\u002FIP.",{"title":41,"path":42,"stem":43,"description":762,"children":-1},"Person and motion detection from within the camera.",1788953752282]