Fusion 360 -> Fanuc System R-J3iB

  • Hello all,

    First, I apologize for an ignorant question. I have spent literal days looking at options and I need some external input.


    I have an ArcMate 100iB with System R-J3iB controller that was donated to our school (used). I and our robotics club are attempting to set up this robot for 3D printing and drawing onto flat surfaces in various orientations; essentially, we intend to teach a plane to the robot, give it a starting point and let it run from there. This is for demonstration purposes only.

    We understand that this is not the intended purpose of this robot, that the outcome will be coarse and that it is not really a functional use of the equipment. The robot is heavily used and may not boot tomorrow for all we know.


    I have done a controller backup onto a CF card, and the following is in the "BACKDATE.DT" file:

    My first hope was to create a custom post-processor for Fusion 360 which would generate a compatible .LS file, but sadly this robot does not have the ASCII upload option.
    Since we are a club, the school does not allow us to accept educational software licenses such as for RoboDK or RoboGuide, so parsing the .LS into a .TP is not an option.

    I considered creating a Karel program to store a database of points and feedrates that would be loaded onto the controller, then place them into the appropriate .TP file. The necessary Karel options are not enabled :thinking_face:

    Socket messaging is not an option either apparently.
    -Is there any way with the options above to request over TCP/IP or RS232 that the robot move to a dynamic XYZ position with a specific feedrate? Essentially we would be dripfeeding positions at this point, but it would be an option.

    -Is there a way to configure the robot such that it applies XYZ offsets in a taught plane based on I/O pulses? I can use external hardware to toggle inputs on the controller to get it to move where we need it to go.


    Again I apologize for the silly questions. I just hate for this robot to end up in scrap because it's too big for a classroom and doesn't have the options we need for the club. Thank you in advance for any help!

  • We've messed with g-code to robot a few times. Fusion / HSM would be able to write a 3-axis program (basically you can program a flat part) however you have to re-post process the data to robot code - it would be something you'd have to write yourself.


    Look at RoboDK software, that might be more suited for what you're trying to do. If you contact them, they might be able to provide you with the software free of charge since it's for education.


    You'll still need ascii upload software option however.

  • Hey fungus. I don't know if those codes in the backdate.dt correspond to the installed options. It would be helpful if we could see what is installed on that robot. I normally do this by going to Menu->Status->Version ID. Then click the NEXT button and find the ORDER FI button (F2 or F3). This screen will show the code and the name of the option.


    As you are realizing, the software options define the capability of robot.

  • Hey fungus. I don't know if those codes in the backdate.dt correspond to the installed options. It would be helpful if we could see what is installed on that robot. I normally do this by going to Menu->Status->Version ID. Then click the NEXT button and find the ORDER FI button (F2 or F3). This screen will show the code and the name of the option.


    As you are realizing, the software options define the capability of robot.

    Hi JMD, I thought the list of options seemed short compared to the list I saw under Version ID (if this is the same thing, it's slightly different on my controller: Menu>Next>Status>Version ID>F3[config])

    The list is quite long, so I had hoped to pull it in automatically.
    Some of the zeros (0) and o's (O) may be crossed, it's hard to tell the difference.


    1 ArcTool (N.A.) ARTL

    2 English Dictionary H521

    3 Alarm Cause/Remedy DIAG

    4 Analog I/O H550

    5 Arc EQ Program Select J676

    6 Arc SoftPart AWSP

    7 Background Editing J616

    8 Control Reliable J547

    9 Controller Backup J632

    10 Cycle Time Priority J523

    11 Enhanced Rob Serv Req ORSR

    12 Enhanced User Frame J604

    13 Ext. DIO Config EIOC

    14 Floppy Connection J516

    15 General Weld Eq Lib AWMG

    16 Group Mask Exchange MASK

    17 Host Communications HOCO

    18 Hour Meter J513

    19 I/O Interconnect 2 J542

    20 Incr Instruction J510

    21 KAREL Run-Time Env J539

    22 Kernel + Basic S/W H510

    23 Lincoln Weld Eq Lib AWML

    24 MACROs, Skip/Offset J503

    25 Mirror Shift J506

    26 Mode Switch MDSW

    27 Multi-Tasking J600

    28 Online Help HELP

    29 Position Registers J514

    30 Print Function J507

    31 Program Num Selection J515

    32 Program Adjust J517

    33 Program Shift J505

    34 RDM Robot Discovery FRDM

    35 Robot Service Request SRSR

    36 Robot Servo Code H930

    37 Shift Library SHLB

    38 Shift and Mirror Lib SMLB

    39 TCP Auto Set J520

    40 TCP/IP Interface HTCP

    41 TMILIB Interface TMIL

    42 TP Menu Accounting TPAC

    43 TPTX TPTX

    44 Tool Offset J509

    45 User Frame UFRM

    46 Weaving J504

    47 Web Server HTTP

    48 Weld I/O Inst WIOI

    49 iPendant CGTP

    50 iPendant Setup IPGS

    51 M-6iB/ARCMate100iB H770

    52 ArcLink I/O ACLK

    53 BumpBox BBOX

    54 Data Monitor J675

    55 Error Recovery J664

    56 MH Collision Guard HSCD

    57 Payload Ident. J669

    58 TorchGuard TGRD

    59 TorchMate TOMA

    60 Touch Sensing J536

    61 iPendant Controls FRIP

    62 Collision Guard J633

    63 Cycle Time Opt. CTOP

    64 Data Acquisition DTAQ

    65 Data Monitor Chart DMCH

    66 Data Monitor Common DMCM

    67 ETX for TM and BBOX TXBT

    68 Motherboard Driver MOBO

    69 System Trigger SYTG


    Again, thanks everyone.

  • I would say give Fanuc a call and see if they can generate a PAC for ASCII Upload. Hopefully you still have the original install media for the robot.


    I believe it was free on that era of controller, and Fanuc tends to hand out options like candy on educational machines.

    Check out the Fanuc position converter I wrote here! Now open source!

    Check out my example Fanuc Ethernet/IP Explicit Messaging program here!

  • I would say give Fanuc a call and see if they can generate a PAC for ASCII Upload. Hopefully you still have the original install media for the robot.


    I believe it was free on that era of controller, and Fanuc tends to hand out options like candy on educational machines.

    Unfortunately no manuals or install media came with the robot. I only have a backup because I made it myself!

  • I think your options are:

    1. Get the option such as ASCII upload, User Socket Messaging, Dynamic Path Modification

    2. Think way outside the box and do something that is not recommended by anyone. For example: You mentioned that you have access to the I/Os on the robot. You could create a system that can take your Fusion 360 file and convert it to positions. Then send the positions as digital I/O using Group Inputs. If you could send 17 outputs to the robot you could use 16 of the values as a Group Input. A group input will treat each input as a bit in a 16 bit value (binary to decimal conversion). The 17th output would signal that the next value was ready to be read. You would write a Teach Pendant program that would read the digital inputs to load up Position registers one value at a time. PR[2,1] then PR[2,2], etc. Then you would have to send the speed, acceleration, Joint or linear, fine or continous and save this in data registers. Then you have a separate Teach Pendant program that would do the motion by moving to each Position register. You would need multiple motion commands for each PR (Joint/linear, fine/continous). Only one of those motion commands would be executed based on the data registers that stored the motion type for the current move.


    Like I said, this would be way outside the box but it seems possible.

  • On that era of controller, you can enable Karel by going into the system variables and turning $Karel_enb to true. As for compiling teach pendant or Karel programs, attached is pretty much an abandon ware version of the compiler. It can also compile .tp programs.


    Maketp.exe will compile .ls programs to .tp. PrintTP will do the opposite. Ktrans.exe will compile .kl to .pc. Use -? on them in a command prompt to see what they need for arguments. You may also need to run them in a dosbox. I haven't used them in years. You may need to run setrobot.exe to setup your robot first for the compilers.

  • On that era of controller, you can enable Karel by going into the system variables and turning $Karel_enb to true. As for compiling teach pendant or Karel programs, attached is pretty much an abandon ware version of the compiler. It can also compile .tp programs.


    Maketp.exe will compile .ls programs to .tp. PrintTP will do the opposite. Ktrans.exe will compile .kl to .pc. Use -? on them in a command prompt to see what they need for arguments. You may also need to run them in a dosbox. I haven't used them in years. You may need to run setrobot.exe to setup your robot first for the compilers.

    You, sir, are a gentleman and a scholar. This is absolutely fantastic. I'm going to give this a try this evening and see if it will work. I can't thank you enough!!!

  • Just a quick update: I have had zero trouble going from .TP to .LS or from .LS to .TP on Windows 10 native cmd.exe.
    I have not tried Ktrans yet, but to be honest if I can just convert ASCII to .TP and execute them, it's a small post-processing step for what we're trying to do.
    Nation, I can't thank you enough for the help. Are the files you shared with me to be guarded, or can they be shared with others as they need help?

  • Also, attached is my post for an ABB. Hopefully it will help you out a bit.

    Fanuc code is a bit different. You will have to store the XYZWPR pos and paste it at the end of your .ls file.


    John Saunders made a video on configuring a post that was very helpful in making this.

    https://www.youtube.com/watch?v=4OWT-O4oN8E

  • :pssst: Technically, Fanuc gives those files away for free when they let you install a trial version of RoboGuide...


    You're RoboGuide license may expire, but the command line tools aren't controlled by the license. If you wanted the latest and greatest (which you don't need, but maybe someone else may at some point), you would just need to install the most recent version of RoboGuide.

  • Also, attached is my post for an ABB. Hopefully it will help you out a bit.

    Fanuc code is a bit different. You will have to store the XYZWPR pos and paste it at the end of your .ls file.


    John Saunders made a video on configuring a post that was very helpful in making this.

    https://www.youtube.com/watch?v=4OWT-O4oN8E

    Thank you for your example ABB post! I've modified both the LinuxCNC lathe post and the generic FANUC mill post in the past, Autodesk made a nice choice with using JavaScript for their posts. It's similar enough to C++ that I can monkey my way through it.


    PDL, thanks for the tip. It sounds like if I run across a newer robot than the ones on this older tool set, I'll still have a workaround.


    It may be a hot minute, but once I get a post processor going I'll try to throw the whole tool chain on GitHub for anyone else who treads this path.

  • Grrr. Fanuc won't even sell me a manual. This is absurd.

    Can anyone give me some pinout hints on the I/O? The card is an A16B-2201-0472, so 40DI / 40DO.

    I get them wanting to protect their copyrighted material, but come on... I'm trying to get one the legitimate way :pouting_face:

  • Here's what I'm seeing from what I can glean online:

    CRM2A:

    1*IMSTP
    2*HOLD
    3*SFSPD
    4CSTOPI
    5FAULT RESET
    6START
    7HOME
    8ENBL
    9RSR1/PNS1
    10RSR2/PNS2
    11RSR3/PNS3
    12RSR4/PNS4
    13RSR5/PNS5
    14RSR6/PNS6
    15RSR7/PNS7
    16RSR8/PNS8
    170V
    180V
    19ACK3/SNO3
    20ACK4/SNO4
    21ACK5/SNO5
    22ACK6/SNO6
    23COM-A4
    24ACK7/SNO7
    25ACK8/SNO8
    26SNACK
    27RESERVED
    28COM-A5
    29PNSTROBE
    30PROD START
    31SDIO1
    32SDIO2
    33CMDENBL
    34SYSRDY
    35PROGRUN
    36PAUSED
    37COM-A1
    38HELD
    39FAULT
    40ATPERCH
    41TPENBL
    42COM-A2
    43BATALM
    44BUSY
    45ACK1/SNO1
    46ACK2/SNO2
    47COM-A3
    48
    49+24E
    50+24E


    CRM2B:

    1SDIO3
    2SDIO4
    3SDIO5
    4SDIO6
    5SDIO7
    6SDIO8
    7SDIO9
    8SDI10
    9SDI11
    10SDI12
    11SDI13
    12SDI14
    13SDI15
    14SDI16
    15SDI17
    16SDI18
    170V
    180V
    19SDO13
    20SDO14
    21SDO15
    22SDO16
    23COM-B4
    24SDO17
    25SDO18
    26SDO19
    27SDO20
    28COM-B5
    29SDI19
    30SDI20
    31SDI21
    32SDI22
    33SDO01
    34SDO02
    35SDO03
    36SDO04
    37COM-B1
    38SDO05
    39SDO06
    40SDO07
    41SDO08
    42COM-B2
    43SDO09
    44SDO10
    45SDO11
    46SDO12
    47COM-B3
    48
    49+24E
    50+24E


    Does the above make sense for this I/O card?

  • Another silly question: pins 49/50 (+24E) are 24V out for input switches, and 17/18 are 0V for the same purpose (depending on the setting of the ICOM2 jumper which selects sinking or sourcing inputs).
    It is recommended to use an external 24V power supply for outputs (the outputs only sink), with a common connection of COMB1-B5 (external power supply negative goes to COMB1-B5). Each output is rated to sink 200mA.
    I am using an external optoisolator board to buffer the outputs, so the current on each of the digital outs (2 are used currently) is more like 15mA each, 30mA total worst-case.

    Would it be acceptable to jumper 0V (17-18) to COMB1-5(37,42,47,23,28), and use the +24E output (49-50) for the high side of the optoisolator inputs?
    Other than creating too high a current draw on the internal 24V supply, I cannot see how this could harm anything. It just keeps me from having to add a 24V PSU for these tiny outputs.
    Jumpering 0V-COMB1-5 may create a short ground loop, so I'll read with an ohm-meter to see if they are internally connected already.

    Thanks!

Advertising from our partners