top of page

18.3.4.3. Inovance EtherCAT Configuration

18.3.4.3. Inovance EtherCAT Configuration

  1. XML File Import

Open Inovance AutoShop programming software and create a new PLC project. Select “EtherCAT Devices” from the right toolbox:

Right-click after selecting “EtherCAT Devices” to open the “Import Device XML” dialog. Locate the folder containing the card’s XML file. After successful import, the card name will appear under “EtherCAT Devices”. Close and reopen the project to complete the import process.

  1. Variable Mapping

Double-click the variable table in the left toolbar. Create: - 256-byte input array (Soft element address: D0) - 256-byte output array (Soft element address: D200)

Under “EtherCAT” in the left toolbar, double-click “Xone-PCIe-ECATs”. In the dialog, click “I/O Mapping”, then bind variable addresses by selecting from the variable table. Repeat sequentially for other addresses.

  1. Program Download

Open the test program and change PLC IP from default “192.168.1.88” to “192.168.0.88”:

Click “Modify IP/Device Name” and update both IP and gateway to “192.168.0.88”:

Confirm modification by clicking “Yes” in the popup dialog when clicking “Modify IP”.

After successful communication, download the PLC program.

18.3.5. HMI setting (CC-Link IEF Basic emulation)

  1. After logging into the HMI interface, enable ‘Enable Task’ to establish the communication connection between PLC and controller.

  2. Click ‘01_MC_EnableRobot’ interface and then click ‘EnableRobot’ to enable the robot, and click ‘Reset’ to reset if there is any error during the process.

  3. Click ‘02_MC_ToolData’ to enter the tool information interface, enter the parameters on the left and click WriteToolData to write the tool information; on the right, click ReadToolData to read the existing tool information.

  4. Click ‘03_MC_FrameData’ to enter the interface of workpiece information. On the left side, after inputting parameters, click WriteFrameData to write workpiece information; on the right side, click ReadFrameData to read existing workpiece information.

  5. Click ‘04_MC_LoadData’ to enter the load information interface, enter the parameters on the left and click WriteLoadData to write load information; on the right, click ReadLoadData to read the existing load information.

  6. Click ‘05_MC_RobotReferenceDynamics’ to enter the interface of Maximum Velocity and Maximum Acceleration of Robot, enter the parameters on the left side and then click WriteRobotRefD to write the information of Maximum Velocity and Maximum Acceleration; click ReadRobotRefD on the right side to read the information of Maximum Velocity and Maximum Acceleration. On the right side, click ReadRobotRefD to read the max speed and max acceleration information.

  7. Click ‘06_MC_Robot DefaultDynamics’ to enter the interface of robot default speed and default acceleration, enter the parameters on the left side and click WriteRobotDefD to write the default speed and default acceleration information; on the right side, click ReadRobotDefD to read the default speed and default acceleration information. on the left side, and then click WriteRobotDefD to write the default speed and default acceleration information; on the right side, click ReadRobotDefD to read the information.

  8. Click ‘07_MC_RobotSwLimits’ to enter the coordinate limit interface. On the left side, input the maximum limit and minimum limit parameter values and click WriteRobotSwLimits to write the limit parameter information; on the right side, click ReadRobotSwLimits to read the existing limit parameter information. parameter information.

  9. Click ‘08_MC_ReadActualPosition’ to enter the read actual position interface, click ReadPosition to read the existing position information.

  10. Click ‘09_MC_MoveLinearAbsolute’ to enter the Linear Motion interface, input the coordinate parameter and click MoveLinearAbsolute to make the robot move linearly at the target position.

  11. Click ‘10_MC_MoveAxesAbsolute’ to enter the interface of axis coordinate movement, input the coordinate parameter and click MoveAxesAbsolute to make the robot move to the target position with the input axis coordinate as the end point.

  12. Click ‘11_MC_MoveDirectAbsolute’ to enter the direct motion interface, input the coordinate parameter and click MoveDirectAbsolute to make the robot move directly to the target position with the input parameter as the end point.

  13. Click ‘12_MC_Groups’ to enter the direct motion interface, in which, clicking GroupInterrupt can interrupt the movement of the robot in the process of movement, and clicking GroupContinue can make the robot continue to move to the target position. Click GroupStop to stop (end) the ongoing position movement. If an alarm or error is triggered during the process, click GroupReset to reset the robot to the error.

  14. Click ‘13_MC_PositionConversion’ to enter the position conversion interface, XtoJ1 can be converted from Cartesian position to joint angle, and J1toX can be converted from joint angle to Cartesian position.

  15. Click ‘14_MC_GroupJog’ to enter the interface of robot jogging, after the configuration is finished, drop down the axes to select the axis you need to jog, and then select the rotation direction of the axis. Click JogMove to move. MC_ChangeSpeedOverride on the right side can adjust the moving speed of the robot arm.

18.3.6. HMI setting (Profinet emulation)

  1. After opening the programme, click on ‘HMI_1[ktp700 Basic PN]’ in the project tree, and then click on ‘Online’→‘Simulation’→‘Start’ in the menu bar. Click ‘Online’→‘Simulation’→‘Start’ in the menu bar. Wait for the software to compile and simulate.

  2. The function after emulation is the same as the content of the Velcro screen (CC-Link IEF Basic). You can refer to the above content to set up.

18.4. Robot Slave Mode Operation Manual

18.4.1. Loading Slave Mode

Step 1: Open the WebApp, navigate to Initial Setup -> Peripherals -> Board Communication -> Manual Configuration.

Figure 17.3-1 Board Communication Manual Configuration

First, configure the IP address of the FRJ-PCIeN board. If left blank, the board will use the default IP: 192.168.0.100 for startup configuration. Currently, IP configuration only applies to EIP and CC-Link IEF Basic protocols. For PN protocol, the IP is assigned by the PLC master station scanning slave devices.

Note

After changing the IP address on the page, you need to load the slave mode for the changes to take effect.

Select the required mapping functions for DI, DO, and AO (see Appendix 1). The parameters are defined as follows:

  • DI (Robot Control): The robot slave accepts external input signals and executes the mapped functions.

  • DO (Robot Status Output): The robot slave feeds back status signals to the master station.

  • AO (Robot Status Feedback): The robot slave feeds back status data to the master station. AO0~AO15 are signed integers (int16), and AO16~AO31 are single-precision floating-point numbers (float).

Step 2: Click the “Configure” button to generate the open protocol Lua file.

Figure 17.3-2 Device Operation and Status

Note

The open protocol Lua file supports download and can be imported in the auto-configuration interface.

Example generated program:

local id = 3
local ctrlDI = {0, 0, 0, 0, 0, 0}
local funcDI = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
local DOState = {0, 0, 0, 0, 0, 0, 0, 0}
local AOState = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
-- Launch the board communication process
LoadFieldBusSlave()
sleep_ms(8000)
while(1) do
   -- Set the DO status
   CtrlBoxDO, CtrlBoxCO, CtrlBoxDI, CtrlBoxCI, errState, motionState, moveToOriginState, robotStartDoneState, modeChangeState, programStartStopState, emergencyState, reduceState, collision, enablestate, safetyStop0, safetyStop1, pauseState, interfereState = GetRobotFuncDOState()
   DOState[1] = CtrlBoxDO
   DOState[2] = CtrlBoxCO
   DOState[3] = CtrlBoxDI
   DOState[4] = CtrlBoxCI
   local ctrlWord0 = 0
   ctrlWord0 = SetBitWithIndex(ctrlWord0, 0, errState)
   ctrlWord0 = SetBitWithIndex(ctrlWord0, 1, motionState)
   ctrlWord0 = SetBitWithIndex(ctrlWord0, 2, moveToOriginState)
   ctrlWord0 = SetBitWithIndex(ctrlWord0, 3, robotStartDoneState)
   ctrlWord0 = SetBitWithIndex(ctrlWord0, 4, modeChangeState)
   ctrlWord0 = SetBitWithIndex(ctrlWord0, 5, programStartStopState)
   ctrlWord0 = SetBitWithIndex(ctrlWord0, 6, emergencyState)
   ctrlWord0 = SetBitWithIndex(ctrlWord0, 7, reduceState)
   DOState[5] = ctrlWord0
   local ctrlWord1 = 0
   ctrlWord1 = SetBitWithIndex(ctrlWord1, 0, collision)
   ctrlWord1 = SetBitWithIndex(ctrlWord1, 1, enablestate)
   ctrlWord1 = SetBitWithIndex(ctrlWord1, 2, safetyStop0)
   ctrlWord1 = SetBitWithIndex(ctrlWord1, 3, safetyStop1)
   ctrlWord1 = SetBitWithIndex(ctrlWord1, 4, pauseState)
   ctrlWord1 = SetBitWithIndex(ctrlWord1, 5, interfereState)
   DOState[6] = ctrlWord1
   SetFieldBusDOState(DOState)

   -- Set the AO status
   mainErrCode, subErrCode, TCPSpeed, axisPos1, axisPos2, axisPos3, axisPos4, axisPos5, axisPos6, jointVelFeedback1, jointVelFeedback2, jointVelFeedback3, jointVelFeedback4, jointVelFeedback5, jointVelFeedback6, jointCurFeedback1, jointCurFeedback2, jointCurFeedback3,jointCurFeedback4,jointCurFeedback5,jointCurFeedback6, jointTorqueFeedback1, jointTorqueFeedback2,jointTorqueFeedback3,jointTorqueFeedback4, jointTorqueFeedback5, jointTorqueFeedback6, cartPosx, cartPosy, cartPosz, cartPosrx, cartPosry, cartPosrz = GetRobotFuncAOState()
   AOState[1] = mainErrCode
   AOState[2] = subErrCode
   AOState[17] = axisPos1
   AOState[18] = axisPos2
   AOState[19] = axisPos3
   AOState[20] = axisPos4
   AOState[21] = axisPos5
   AOState[22] = axisPos6
   AOState[23] = cartPosx
   AOState[24] = cartPosy
   AOState[25] = cartPosz
   AOState[26] = cartPosrx
   AOState[27] = cartPosry
   AOState[28] = cartPosrz
   SetFieldBusAOState(AOState)
   sleep_ms(10)

   -- Set the DI status
   -- Configure the DI function and update it in real-time
   ctrlDI[1],ctrlDI[2],ctrlDI[3],ctrlDI[4],ctrlDI[5],ctrlDI[6] = GetFieldBusDIState()
   funcDI[1] = ctrlDI[1]
   funcDI[2] = ctrlDI[2]
   funcDI[3] = GetBitWithIndex(ctrlDI[3], 0)
   funcDI[4] = GetBitWithIndex(ctrlDI[3], 1)
   funcDI[5] = GetBitWithIndex(ctrlDI[3], 2)
   funcDI[6] = GetBitWithIndex(ctrlDI[3], 3)
   funcDI[7] = GetBitWithIndex(ctrlDI[3], 4)
   funcDI[8] = GetBitWithIndex(ctrlDI[3], 5)
   funcDI[9] = GetBitWithIndex(ctrlDI[3], 6)
   funcDI[10] = GetBitWithIndex(ctrlDI[3], 7)
   funcDI[11] = GetBitWithIndex(ctrlDI[4], 0)
   funcDI[12] = GetBitWithIndex(ctrlDI[4], 1)
   funcDI[13] = GetBitWithIndex(ctrlDI[4], 2)
   funcDI[14] = GetBitWithIndex(ctrlDI[4], 3)
   funcDI[15] = GetBitWithIndex(ctrlDI[4], 4)
   funcDI[16] = GetBitWithIndex(ctrlDI[4], 5)
   SetRobotFuncDIState(funcDI)
   local stopFlag = GetOpenLUAStopFlag(id)
   if(stopFlag ~= 0) then
      UnloadFieldBusSlave()
      break
   end
   sleep_ms(10)
end

Step 3: Click the “Load” button to load the robot slave mode.

Figure 17.3-3 Loading Slave Mode

Note

After successfully loading the robot slave mode, the auto-start function is supported. To use remote mode, unload the slave mode first.

Step 4: Click the status bar button on the right to monitor DI, DO, AI, and AO interaction information. The parameters are as follows:

  • CtrlDO: Input signal value from the master device controlling the robot control box DO.

  • DI: Input signal value from the external master control.

  • DO: Output signal value fed back by the robot slave.

  • AI: Input value from the external master. AI0~AI15 are int16 type, and AI16~AI31 are float type.

  • AO: Output value from the robot slave. AO0~AO15 are int16 type, and AO16~AO31 are float type.

Figure 17.3-4 DI, DO, AI, AO Interaction Information

Step 5:After loading is complete, you can use the Teach Program -> Communication Command -> Board Card to generate Lua commands for the board. This allows you to:

  1. Set Slave DO (Digital Output) and AO (Analog Output).

  2. Read Slave DI (Digital Input) and AI (Analog Input).

  3. Wait for Slave DI and AI signals.

Figure 17.3-5 Board Lua Commands

Appendix 1: Slave Mode Address Mapping Table

18.5. Board Communication Cycle Configuration

The communication cycle of the board can be configured via the host computer. Currently, only PN protocol firmware is provided, with future compatibility for EIP, CC-Link IE Basic, and EtherCAT protocols.

  1. Directly connect the PC (Windows 11 system) network port to the board’s network port. Open Device Assistant v1.1.0, double-click “Ethernet,” and click the “Refresh” button in the upper left corner to scan for currently connected board devices.

  2. In the firmware update interface, upload the new version of PN firmware and click the “Update” button. A prompt reading “Upgrade Successful” will appear in the lower left corner when printed.

  3. Enter the desired communication cycle (supports 1~100ms) and click the “Set” button. A prompt reading “Cycle Setting Successful” will appear in the lower left corner when printed.

18.6. Appendice

18.6.1. Instruction List

Command code

Command description

0x1000

Robot enablement

0x1001

Reset all error

0x1002

Robot stops moving

0x1003

Read actual position

0x1004

Set robot speed

0x1005

Resume robot motion

0x1006

Robot pauses motion

0x1007

Calculate the Cartesian position from the joint position

0x1008

Calculate joint position from Cartesian position

0x2000

Write tool information

0x2001

Read tool information

0x2002

Write workpiece information

0x2003

Read workpiece information

0x2004

Write load information

0x2005

Read load information

0x2006

Write reference dynamic information

0x2007

Read reference dynamic information

0x2008

Write default dynamic information

0x2009

Read default dynamic information

0x2010

Write soft limit information

0x2011

Read soft limit information

0x3000

MoveAxes (based on joint angle)

0x3001

MoveLinear

0x3002

MoveDirect (based on Cartesian coordinate system)

0x3003

jog motion

0x3004

jog stop


robotic arm
FAIRINO ROBOTIC ARMS

Contact

Location: 10637 Scripps Summit Court,

San Diego, CA. 92131
Phone: (619) 333-FAIR
Email: hello@fairino.us

© 2023 FAIRINO Proudly created By G2T

bottom of page