FANUC Standard Interface Functions
When programming the FANUC robot, please pay attention to the following:
-
Multiple parameters in a function should be separated by commas.
-
Variable-type parameters should use local variables, which take effect only in the program.
-
Input or Output parameters can be customized for functions.
A Standard Interface program for FANUC robots supports the following functions. A Standard Interface function is implemented and represented as a procedure for FANUC robots.
Initialize Communication
This function sets the host IP address, port number, and wait time for TCP/IP communication.
Parameter
Parameter | Description |
---|---|
Input parameter |
|
C_Tag |
The port number string of the robot. Please select a port from ports 1 to 8. |
Ip_Addr |
The IP address of the IPC as a string. |
Svr_Port |
Server port number; the default port number is 50000. |
Time_Out |
Wait time in minutes before stopping the connection attempt. |
Start Mech-Vision Project
This function starts the Mech-Vision project that executes image capturing and performs vision recognition. It applies for applications that use Mech-Vision but not Mech-Viz.
Parameter
Parameter | Description |
---|---|
Input parameter |
|
Job |
Mech-Vision project ID, which can be viewed before the project name in the Project List panel in Mech-Vision. |
Pos_Num_Need |
The expected number of vision points for Mech-Vision to send. The vision point contains the vision pose, corresponding point cloud, label, scaling, etc. Value range: 0–20, in which 0 indicates that all vision points will be received. |
SendPos_Type |
The type of the robot pose to be sent to Mech-Vision. Value range: 0 to 3.
|
Pr_Num |
ID of the Position Register storing the joint positions of the start point when SendPose_Type is 3. |
Get Vision Target(s)
This function obtains the vision result from the corresponding Mech-Vision project. It applies for applications that use Mech-Vision but not Mech-Viz.
Parameter
Parameter | Description |
---|---|
Input parameter |
|
Job |
Mech-Vision project ID, which can be viewed before the project name in the Project List panel in Mech-Vision. |
Output parameter |
|
Reg_Lst_Data |
ID of the Data Register for storing a value (0 or 1) indicating whether all vision points have been sent.
|
Reg_Pos_Num |
ID of the Data Register for storing the number of received poses (from 1 to 20) |
Reg_Status |
ID of the Data Register for storing the received status code. Please see Status Codes and Troubleshooting. |
Example
CALL MM_GET_VIS(1,50,51,52)
This example obtains the vision result from Mech-Vision project whose ID is 1. Whether all vision points have been sent is stored in register R[50], the number of received vision points is stored in register R[51], and the received status code is stored in register R[52].
Start Mech-Viz Project
This function starts the Mech-Viz project that triggers the corresponding Mech-Vision project, and therefore the Mech-Viz project can plan the robot path based on the vision points received from Mech-Vision. It is for applications that use both Mech-Vision and Mech-Viz.
Parameter
Parameter | Description |
---|---|
Input parameter |
|
SendPos_Type |
Robot pose type. Value range: 0 to 2.
|
Pr_Num |
ID of the Position Register storing the joint positions of the start point when SendPose_Type is 2. |
Get Planned Path from Mech-Viz
This function obtains the path planned by a Mech-Viz project.
Parameter
Parameter | Description |
---|---|
Input parameter |
|
Jps_Pos |
Pose type of the waypoints in the planned path.
|
Output parameter |
|
Reg_Lst_Data |
ID of the Data Register for storing a value (0 or 1) indicating whether all waypoints have been sent. 0: NOT all waypoints have been sent (more on the way); 1: All waypoints have been sent. |
Reg_Pos_Num |
ID of the Data Register for storing the number (1 to 20) of received waypoints. |
Reg_VPos_Num |
ID of the Data Register for storing the position of the first Vision Move waypoint in the path.
|
Reg_Status |
ID of the Data Register for storing the received status code. Please see Status Codes and Troubleshooting. |
Example
CALL MM_GET_VIZ(2,50,51,52,53)
This example obtains the planned path from Mech-Viz in the form of TCPs. Whether all waypoints have been sent is stored in register R[50], the number of waypoints received is stored in register R[51], the position of the Vision Move waypoint is stored in register R[52], and the received status code is stored in register R[53].
Obtain Pose
This function stores a vision point returned by Mech-Vision or a waypoint (in TCP) returned by Mech-Viz in the specified Position Register.
Parameter
Parameter | Description |
---|---|
Input parameter |
|
Serial |
Specify the index of the pose to be stored. |
Output parameter |
|
Pr_Num |
ID of the Position Register for storing the specified pose. |
Reg_Label |
ID of the Data Register for storing the label corresponding to the specified pose. |
Reg_Speed |
ID of the Data Register for storing the velocity corresponding to the specified pose. |
Obtain Joint Positions (Available When Mech-Viz Is Used)
This function stores a vision point (in JPs) returned by Mech-Vision or a waypoint (in JPs) returned by Mech-Viz in the specified position variable. It will only take effect when the path is planned by Mech-Viz.
Parameter
Parameter | Description |
---|---|
Input parameter |
|
Serial |
Specify the index of the pose to be stored. |
Output parameter |
|
Pr_Num |
ID of the Position Register for storing the specified set of joint positions. |
Reg_Label |
ID of the Data Register for storing the label corresponding to the specified pose. |
Reg_Speed |
ID of the Data Register for storing the velocity corresponding to the specified pose. |
Switch Mech-Vision Recipe
This function specifies which parameter recipe of the Mech-Vision project to use. Parameter recipes can be used to switch parameter settings, including point cloud model for matching, ROI, confidence threshold, etc, in the same Mech-Vision project when it is used to recognize different workpieces. This function must be called BEFORE MM_START_VIS.
Select Mech-Viz Branch
This function selects along which branch the Mech-Viz project should proceed. Such branching is achieved by adding “Branch by Msg” Step(s) to the Mech-Viz project. This function specifies which exit port such Step(s) should take. MM_START_VIZ must be called BEFORE this function. When the Mech-Viz project executes to the “Branch by Msg” Step, it will wait for MM_SET_BCH to send the exit port of the branch.
Parameter
Parameter | Description |
---|---|
Input parameter |
|
Branch_Num |
Step ID of the “Branch by Msg” Step. Its value is an integer. The Step ID can be viewed in the Step Parameters panel. |
Export_Num |
The number of the exit port to take + 1. For example, to select exit port 0 in Mech-Viz, set the value of this parameter to 1. Value range: 1 to 99. |
Set Move Index
This function sets the value of the Current Index parameter of the specified Mech-Viz Step. Steps that have this parameter include “Move by List”, “Move by Grid”, “Custom Pallet Pattern”, and “Predefined Pallet Pattern”. MM_START_VIZ must be called BEFORE this function.
Parameter
Parameter | Description |
---|---|
Input parameter |
|
Skill_Num |
Step ID of the Step, an integer. The Step ID can be viewed in the Step Parameters panel. |
Index_Num |
The index value that should be set the next time this Step is executed. When this function is called successfully, the current index value in Mech-Viz will become the parameter value minus 1. When the Mech-Viz project runs to the Step specified by this function, the Current Index value in Mech-Viz will be increased by 1 to become the parameter’s value. |
Get Software Status
This function is used to obtain the software execution status of Mech-Vision, Mech-Viz, and Mech-Center. Currently, this function can only be used to check whether Mech-Vision is ready to run.
Parameter
Parameter | Description |
---|---|
Output parameter |
|
MM_Status |
ID of the Data Register for storing the status code. Please see Status Codes and Troubleshooting for detailed information. |
Input Object Dimensions to Mech-Vision
This function dynamically inputs object dimensions into the Mech-Vision project. This function must be called BEFORE MM_START_VIS.
Get/Set DO Signal List
This function obtains the planned DO Signal list for controlling multiple sections of a sectioned vacuum gripper. MM_GET_VIZ must be called BEFORE this function.
Please configure the Mech-Viz project based on the example project in XXXX/Mech-Center-xxx/tool/viz_project/suction_zone
, and set the suction cup configuration file in the project.
Input TCP to Mech-Viz
Input poses in TCP dynamically. This function should be used in conjunction with the External Move Step in Mech-Viz. Please use this function based on the example project in XXXX/Mech-Center-xxx/tool/viz_project/outer_move
, and place the External Move Step at a proper position in the workflow. MM_START_VIZ must be called BEFORE this function.
Calibration
This function is used for hand-eye calibration (camera extrinsic parameter calibration). It automates the calibration process in conjunction with the Camera Calibration function in Mech-Vision. For detailed instructions, see FANUC Calibration Process.
Parameter
Parameter | Description |
---|---|
Input parameter |
|
Move_Type |
Motion type
|
PosJps |
Pose in flange pose or joint positions
|
WaitTime |
The time that the robot waits to avoid shaking after it moves to the calibration point; the default value is 2 (s). |
AxisNum |
The number of the robot axes. |
AxisVal |
Float data of the external 7th axis in mm (Optional; input 0 when there is no external axis). |
Reg_CalibPos |
ID of the Position Register used in MM_AUTO_CALIB; PR[100] is used by default. |
Example
CALL MM_CALIB(2,1,2,6,0,100)
This example moves a 6-axis robot in Joint motion type, receives pose data in the form of flange pose, and sets the wait time to 2 seconds to avoid the robot from shaking after it moves to the calibration point. Moreover, the robot does not have an external 7th axis. The register PR[100] is used to store the received pose data.
Get Notification from Mech-Vision
This function obtains the message output by the “Notify” Step in the corresponding Mech-Vision project. MM_START_VIS or MM_START_VIZ must be called BEFORE this function.
Parameters of the “Notify” Step in the Mech-Vision project must be set according to the following requirements:
-
“Service Name” must be set to “Standard Interface Notify”.
-
“Message” must be a positive integer that represents a predetermined message.
Get Custom Output Data from Mech-Vision
This function obtains the custom output data from the corresponding Mech-Vision project. “Custom output data” refers to the data output by ports other than poses and labels of the “Procedure Out” Step. The output ports can be customized if the “Port Type” parameter of the Step is set to “Custom”.
Parameter
Parameter | Description |
---|---|
Input parameter |
|
Job |
Mech-Vision project ID, which can be viewed before the project name in the Project List panel in Mech-Vision. |
Output parameter |
|
Reg_Pos_Num |
ID of the Data Register for storing the number (1 to 50) of received vision points. |
Reg_Status |
ID of the Data Register for storing the received status code. |
Save Vision Point to Specified Registers
This function stores the data in a custom output data returned by Mech-Vision in the specified registers. This function should be called AFTER MM_GET_DY_DT.
Parameter
Parameter | Description |
---|---|
Input parameter |
|
Serial |
Specify the index of the vision point whose custom data need to be obtained. |
Output parameter |
|
Pr_Num |
ID of the Position Register for storing the pose of the specified vision point. |
Reg_Label |
ID of the Data Register for storing the label corresponding to the specified vision point. |
Reg_UserData |
ID of the first Data Register for storing the custom port outputs corresponding to the specified vision point. Output data are stored in consecutive registers from the specified first one. |
Get Waypoint from Mech-Viz
This function is used for obtaining the planned path from Mech-Viz. In the planned path, the waypoint may be a Vision Move waypoint or a normal motion waypoint. A waypoint may contain pose, velocity, gripper info, object info, etc.
Waypoints in a planned path can be divided into the following three types.
-
Normal motion waypoints (not including the Vision Move waypoint): contain information such as motion type (joint motion or linear motion), tool number, and velocity.
-
Vision Move waypoints, containing information such as label, number of workobjects that have been picked, number of workobjects picked this time, edge/corner ID of the suction cup, the TCP offset, workobject orientation, and workobject dimensions.
-
Vision Move waypoints including custom data. In this case, the port type of the “Procedure Out” Step in the Mech-Vision project should be “Custom”.
Parameter
Parameter | Description |
---|---|
Input parameter |
|
Jps_Pos |
Expected format of the returned data. See the following table for explanations. |
Output parameter |
|
Reg_Pos_Num |
ID of the Data Register for storing the number (1 to 50) of received waypoints. |
Reg_VPos_Num |
ID of the Data Register for storing the position of the first Vision Move waypoint in the planned path. |
Reg_Status |
ID of the Data Register for storing the received status code. |
Below are the explanations of the four possible data formats that can be returned by this function.
Value of the Jps_Pos parameter | Format of returned data (Explained below) |
---|---|
1 |
Pose (joint positions), motion type, tool number, velocity, number of custom ports, custom port output 1, custom port output 2, … custom port output N |
2 |
Pose (TCP), motion type, tool number, velocity, number of custom ports, custom port output 1, custom port output 2, … custom port output N |
3 |
Pose (joint positions), motion type, tool number, velocity, depalletizing planning data, number of custom ports, custom port output 1, custom port output 2, … custom port output N |
4 |
Pose (TCP), motion type, tool number, velocity, depalletizing planning data, number of custom ports, custom port output 1, custom port output 2, … custom port output N |
Pose
The pose of the waypoint can be in the form of joint positions (in degree) or TCP, which is composed of Cartesian coordinates (XYZ in mm) and Euler angles (ABC in degree).
Motion type
-
1
: joint motion, MOVEJ -
2
: linear motion, MOVEL
Tool number
The index number of the tool to be used at this waypoint. -1 indicates no tool is used.
Velocity
Velocity percentage of the waypoint. It is determined by multiplying the velocity setting specified in the corresponding move-type step by the global velocity setting in Mech-Viz. The result is expressed as a percentage.
Depalletizing planning data
Data used in planning multi-pick depalletizing tasks. This data is part of the waypoint of the “Vision Move” Step. The following data are included:
-
Label: composed of 10 integers. If fewer than 10 labels are obtained, the rest of the digits are filled with 0.
-
Number of picked workobjects.
-
Number of workobjects to be picked this time.
-
Edge-corner ID of vacuum gripper: used to specify the gripper corner to which the workobject is aligned. It can be checked by double-clicking the corresponding tool in the Resources panel in Mech-Viz and then selecting Configure control logic.
-
TCP offset: The offset between the tool pose at the center of the to-pick workobjects and the actual tool pose.
-
Workobject orientation: whether the X-axis of the workobject reference frame is aligned with the X-axis of the tool reference frame (value: 0 or 1).
-
Dimensions of the workobjects combined.
Number of custom ports
The number of output ports excluding poses and labels when the “Port Type” parameter of the “Procedure Out” Step in the Mech-Vision project is set to “Custom”.
Custom port outputs
The outputs that exclude poses and labels when the “Port Type” parameter of the “Procedure Out” Step in the Mech-Vision project is set to “Custom”. These data are part of the waypoint of the “Vision Move” Step.
The custom port outputs are arranged in alphabetical order of the custom port names.
Example
CALL MM_GET_PLNDT(3,50,51,52)
This example obtains the planned path that includes depalletizing planning data and custom port outputs from Mech-Viz, and the poses obtained are in the form of joint positions. The number of waypoints received is stored in register R[50], the position of the Vision Move waypoint is stored in register R[51], and the status code is stored in register R[52].
Save Waypoint to Specified Registers
This function is called AFTER MM_GET_PLNDT. This function stores the data in a waypoint returned by Mech-Viz in the specified registers.
Function
MM_GET_PLJOP(Serial,Jps_Pos,Pr_Num,Reg_MoveType,Reg_ToolNum,Reg_Speed,Reg_UserData,Reg_PlanRes)
Parameter
Parameter | Description |
---|---|
Input parameter |
|
Serial |
Specify the index of the waypoint to be stored. |
Jps_Pos |
Expected format of the returned data, must be the same as that set in MM_GET_PLNDT. |
Output parameter |
|
Pr_Num |
ID of the Position Register for storing the pose of the specified waypoint. |
Reg_MoveType |
ID of the Data Register for storing the motion type corresponding to the specified waypoint. 1 indicates joint motion, while 2 indicates linear motion |
Reg_ToolNum |
The ID of Data Register for storing the tool number corresponding to the specified waypoint. -1 indicates no tool is used. |
Reg_Speed |
ID of the Data Register for storing the velocity corresponding to the specified waypoint. |
Reg_UserData |
ID of the first Data Register for storing the custom port outputs corresponding to the specified waypoint. Custom output data are stored in consecutive registers from the specified first Data Register. One custom output item is stored in one register. Currently, the supported maximum number of custom output items is 50. |
Reg_PlanRes |
ID of the first Data Register for storing the depalletizing planning data corresponding to the specified waypoint. Depalletizing planning data are stored in consecutive registers from the specified first Data Register. One depalletizing planning data item is stored in one register. Currently, the supported maximum number of depalletizing planning data items is 20. |
Example
CALL MM_GET_PLJOP(1,3,60,61,62,63,81,131)
This example stores the joint positions of the first received waypoint to register PR[60], the corresponding motion type to register R[61], the corresponding tool number to register R[62], the corresponding velocity to register R[63], the corresponding custom port outputs to consecutive registers starting from R[81], and the corresponding depalletizing planning data to consecutive registers starting from R[131].
Get Result of Step “Path Planning” in Mech-Vision
This function obtains the collision-free path planned by the “Path Planning” Step from the corresponding Mech-Vision project.
The Port Type parameter of the “Procedure Out” Step in the Mech-Vision project must be set to “Predefined (robot path)”.
Parameter
Parameter | Description |
---|---|
Input parameter |
|
Job |
Mech-Vision project ID, which can be viewed before the project name in the Project List panel in Mech-Vision. |
Jps_Pos |
The pose type of waypoints returned by the “Path Planning” Step.
|
Output parameter |
|
Reg_Lst_Data |
ID of the Data Register for storing a value (0 or 1) indicating whether all waypoints have been sent.
|
Reg_Pos_Num |
ID of the Data Register for storing the number (1 to 20) of received waypoints. |
Reg_VPos_Num |
ID of the Data Register for storing the position of the first Vision Move waypoint in the path.
|
Reg_Status |
ID of the Data Register for storing the received status code. |
Example
CALL MM_GET_VISP(1,1,50,51,52,53)
This example obtains the planned path from the Mech-Vision project whose ID is 1 in the form of joint positions. Whether all waypoints have been sent is stored in register R[50], the number of waypoints received is stored in register R[51], the position of the Vision Move waypoint is stored in register R[52], and the status code is stored in register R[53].