You must create the input/output tags in the PLC. Find an ethernet/ip configuration option in your PLC developing platform. You must ask fanuc for the Ethernet IP Operator manual.
Posts by Famous_Fella
-
-
I finally chose to use the explicit message way as I was unable to setup the SNP communication successfully on the HMI side. I was not able to establish a connection from the HMI to the robot as an external device. The only external devices I could add from sysmac studio were other Omron CPUs and the vendor list was only Omron. anyway, here is a quick video with the result IMG_1036.mp4
Yeah, J6 is partying a lot on those kinds of programs
-
I don't have the HMI
What HMI model you have? If it's possible why not read the data directly into the HMI, without sending it to the PLC and then to the HMI?
I am using an OMRON NA5 HMI. I also just checked that I have the HMI Device (SNPX) R553 installed on the robot but I never bothered to learn SNPX . Can you please point me to the correct manual describing in debth the HMI SNPX function ?
-
Thank you HawkMe. I browsed the forum all weekend before creating the thread but all I found was a solution to apply a strategy that would send have the integer half the decimal portion and have the PLC re-assemble the number. I will go with the Timer reset function strategy but I would be curious to know how could I brake a decimal number at the robot side without the Math add-on option on the robot ?
I guess its not possible yes ? -
As the title says, I am trying to create a real time robot torque monitor screen where the end-user will be able to monitor real time robot crucial parameters like disturbance torque, torque average from servo DSPs, OVCs and temperature simulated from servos all these in an effort to give my clients a better way to understand if their programs are smooth and healthy for their robots and take actions if not.
My strategy was at first to pull all the system variables I need and store them into 16bit Group Outputs in a BG LOGIC program and from there directly to the PLC but to my bad luck all of the values read are 90% decimal so I cannot store them in GOs.
Second approach was to store them directly to Registers and have the PLC pull them out using explicit messaging but this solution will not work really well because having a PLC bit always open for the explicit message, doesnt update the data continuously and having a reset output of the explicit message bit every cycle doesnt seem like a good option to me.Also I must account for the fact that every PLC variable needs at least 100ms to reach the HMI. BG LOGIC scan time and Ethernet IP communication between Robot and PLC are 8ms set.
Is there any other optimal way of storing these decimal values directly to GOs?
-
Then my suggestion is to use CIP messages (explicit messaging) to send coordinates directly to the PRs of the robot. EIP manual has all the info you need to implement that.
-
encoders have nothing to do with what you want to accomplish. What I am talking about is this:
1.You already have a robot and a PLC connected to each other (or not?). How is this connection implemented ? is it Ethernet IP connection? is it modbus TCP? is it profinet ? is it profibus ?
FANUC robots have a large list of supported industrial communication protocols but -I believe- none of them comes standard. First you decide which PLC brand and model you want to use and then depending the protocol supported by your PLC, you order the additional software and hardware package to your robot.
-
First of all, you have to tell us which protocol you use to communicate with the PLC. If using EIP you can use explicit messaging to send the coordinates directly to the robot's PRs. This is what I am using. GROUP input/output will be very troublesome to setup for coordinates.
-
Hi,
I am using J6 axis in some applications as a continuous turn axis. On the cont. turn setup screen my only options are Gear ratio for motor and axis, which I have left to default. My problem is when in CTV mode, the turn speed at 100% is not really fast... Do the gear ratio for motor and axis options affect the speed of the cont. turn axis? The manual doesn't really go in depth explaining how those values affect the speed or provide a chart with appropriate value ranges. What should I do to increase the cont. turn speed ?
-
Hi,
use POST_ERR BuiltIn:
Syntax: POST_ERR(error_code, parameter, cause_code, severity)
severity 1 :pause
severity 2 :abort
severity 0 : nothing
---
best regards
Thank you very much! works like a charm!
-
Hello,
To help my robot operators I have decided to create a small KAREL program that saves the currently edited file to a registered device (another robot on the network already setup as FTP). The setup of the deice is correct, meaning going through menus > FILE > set device > C4: which is my other robot's FTP I can save any files, but with the KAREL program I always get an Error. This is the KAREL code I used, any help would be greately appreciated:
Code
Display MorePROGRAM SAVE_VRS1 %NOLOCKGROUP %COMMENT = 'SAVE .vr, .tp, .sv' %ENVIRONMENT sysdef %ENVIRONMENT MEMO %ENVIRONMENT FDEV CONST SUCCESS = 0 -- The value expected from all built-in calls. VAR prog_name : STRING[12] -- The program name to save status : INTEGER -- The status returned from the built-in calls file_spec : STRING[30] -- The created file specification for SAVE dev : STRING[5] -- The device to save to specify whether to del_vr : BOOLEAN -- delete file_spec before performing the SAVE. BEGIN prog_name = $SHELL_WRK.$ROUT_NAME --choose the currently edited program file_spec = dev+prog_name+'.TP' IF (del_vr = TRUE) THEN DELETE_FILE (file_spec, FALSE, status) -- Delete the file. IF (status <> SUCCESS) AND (status <> 10003) AND (status <> 85014) THEN WRITE ('ERROR ', status,' IN attempt TO delete ',CR, file_spec,CR) ENDIF ENDIF SAVE (prog_name, file_spec, status) -- Save the variable/program IF (status <> SUCCESS) THEN -- Verify SAVE was successful WRITE ('ERROR saving ', file_spec, ' variables', status, CR) ENDIF END SAVE_VRS1
The error returned is 21094 but in FANUC KAREL documentation there is no list of error codes and descriptions.
-
No special setup required on the robot's end except the initial setup required for Ethernet IP connection between Robot Controller and PLC CPU. I currently have R30iB configured as an adapter. I unfortunately cannot provide a sample smc as this is intellectual property for the company I work for, but the screenshots are pretty much a guide by themselves.
Something I discovered right now:
For the fetch messages I use a 10ms update interval (6message commands in total fetching 6 blocks of Registers) but this interval stresses the controller a lot making the Teach Pendant cumbersome and increasing response time of any commands issued from it. Increasing Update Interval to 1 sec seemed to have corrected this problem.
-
Here you go.
Those are: a function that writes value 1 to R[15].
and a function that reads a block of Registers (R[111} to R[117]) and saves them to a custom Array.
-
UPDATE on the thread to anyone who will try setting up explicit message between OMRON and FANUC.
The built-in function for OMRON is CIPUCMMSend. Omron supports two types of CIP (Common Industrial Protocol- TCP/IP Layer) CIPSend which is a class 3 explicit Message and UCMM which is unconnected message. FANUC EIP Manual states that it supports both but I didnt get into the trouble of using both. The difference between the two is that Class 3 CIP needs you to open a connection to the server (robot controller), send your message and after close the connection. UCMM is direct, no connection open/close.What took me so many days and gave so much trouble was the data types used to pass the correct parameters from the PLC to the Robot. The FANUC Manual writes everything with HEX but with omron PLC some must be passed as HEX and others as UINT. Especially the value you want to pass to a Register for example must be sent as DWORD (FANUC says in the manual you can send INT or REAL which I was not able to do so)
-
They are in UK and they specialize on used robot parts and used robots in general. They also have different CPU configurations. They have everything needed to get a robot system up and running in no time. I have purchased a used robot from them in the past and they loaded all the software options I needed for my application. They also forgot to load Handling Tool and they sent me another CPU with the correct options.
-
Explicit messaging is EthernetIP. You would need it to read or write to numeric registers or position registers.
I searched on google and it mentioned Omron Ethernet IP datalink. You might want to look into that.
To my understanding, not many people from the forum use Omron PLCs for robots, at least in USA. Ethernet IP Datalink is used to connect 2 PLCs from what I understood. Explicit message is implemented with built in functions but there are too many functions used for different types of messages. What about other PLC brands?
Do you use special ladder functions to implement explicit message ? do you need to first OPEN the connection and after send the message ? In order to read the variable you need another function ? Or read and write commands fall on the same bucket ?
To better understand what I mean here are some Omron built-in functions for communication:
Sendcmd:uses a serial gateway and sends a command to a Serial Communications
Unit. Or, it sends an explicit command to a DeviceNet Unit. (prolly not what I need).
CIPOpen:
opens a CIP class 3 connection with the specified remote node. (maybe what I need?)
CIPRead:uses a class 3 explicit message to read the value of a variable in another Controller
on a CIP network.(prolly not what I need as it refers to Controller)
CIPWrite:
uses a class 3 explicit message to write the value of a variable in another Controller
on a CIP network.
CIPSend:
sends a class 3 CIP message to a specified device on a CIP network. Maybe the answer to my question ? CIPSend accepts as Inputs ServiceCode, RqPath which is Request path (class ID, instance ID, attribute ID) which to my understanding it fits with the variables described to EIP fanuc manual.CIPClose:
opposite of CIP Open
CIPUCMMRead:
uses a UCMM explicit message to read the value of a variable in another Controller on the specified CIP network. Prolly not what I need, maybe explicit message from PLC to PLC ?
CIPUCMMWrite:
UCMM explicit message to write the value of a variable inanother Controller on a CIP network.
CIPUCMMSend:
sends a UCMM CIP message to a specified device on a CIP network.. This function also accepts as inputs the same one CIP send has which troubles me. What is the difference between UCMM and class 3 explicit messages ?
How do you implement the concept on other controllers like allen brandley or siemens ? -
Why you don't wonna use EIP? All Omron NX PLCs support EIP.
I do use EIP successfully. I can already send and recieve data through Digital I/O exchange between PLC and Robot and Group I/Os. I just need to learn how to also use explicit messaging for more advanced functions like Position Register manipulation through the HMI.
-
Hello,
I am currently working on upgrading one of our cells consisting of R30iB controller and Omron NX series PLC connected with EIP protocol. As I have the time I thought it would be a good chance to play around with Explicit messaging as I never had the chance in the past. But digging through Omron manuals the only thing I found close to explicit messaging is FINS protocol. Has anyone ever used it before to configure explicit messaging on a FANUC robot ?
-
Here is a sample routine:
Program No. 1 is a condition monitor, it monitors a certain Robot Input, when it turns on it calls program No. 2
/PROG VACUUM_PROTECT Cond
/ATTR
OWNER = MNEDITOR;
COMMENT = "";
PROG_SIZE = 166;
CREATE = DATE 19-07-06 TIME 03:55:22;
MODIFIED = DATE 19-07-06 TIME 03:55:22;
FILE_NAME = ;
VERSION = 0;
LINE_COUNT = 1;
MEMORY_SIZE = 542;
PROTECT = READ_WRITE;
TCD: STACK_SIZE = 0,
TASK_PRIORITY = 50,
TIME_SLICE = 0,
BUSY_LAMP_OFF = 0,
ABORT_REQUEST = 0,
PAUSE_REQUEST = 0;
DEFAULT_GROUP = *,*,*,*,*;
CONTROL_CODE = 00000000 00000000;
/MN
1: WHEN RI[1:ON :Vuoto OK]=OFF,CALL VACUUM_RECOUER ;
/POS
/END
Program No 2
/PROG VACUUM_RECOUER
/ATTR
OWNER = MNEDITOR;
COMMENT = "";
PROG_SIZE = 238;
CREATE = DATE 19-07-05 TIME 22:48:42;
MODIFIED = DATE 19-09-10 TIME 01:45:24;
FILE_NAME = ;
VERSION = 0;
LINE_COUNT = 8;
MEMORY_SIZE = 578;
PROTECT = READ_WRITE;
TCD: STACK_SIZE = 0,
TASK_PRIORITY = 50,
TIME_SLICE = 0,
BUSY_LAMP_OFF = 0,
ABORT_REQUEST = 0,
PAUSE_REQUEST = 0;
DEFAULT_GROUP = *,*,*,*,*;
CONTROL_CODE = 00000000 00000000;
/MN
1: DO[11:OFF:Stop wheels]=ON ;
2: DO[2:OFF:CstopI UI4]=PULSE,0.3sec ;
3: WAIT .50(sec) ;
4: F[1:OFF]=(ON) ;
5: WAIT 1.00(sec) ;
6: F[1:OFF]=(OFF) ;
7: DO[11:OFF:Stop wheels]=OFF ;
8: ;
/POS
/END
This program activates a DO (doesnt matter for you), after it PULSES DO2 (I have mapped DO2 to UI4 which is the cycle stop signal), after I activate F1 which is a flag. Flag no. 1 calls the return home macro.
Return home macro program:
/PROG AUTO_HOME Macro
/ATTR
OWNER = MNEDITOR;
COMMENT = "";
PROG_SIZE = 276;
CREATE = DATE 19-07-05 TIME 23:35:20;
MODIFIED = DATE 19-07-06 TIME 00:14:40;
FILE_NAME = ;
VERSION = 0;
LINE_COUNT = 7;
MEMORY_SIZE = 628;
PROTECT = READ_WRITE;
TCD: STACK_SIZE = 0,
TASK_PRIORITY = 50,
TIME_SLICE = 0,
BUSY_LAMP_OFF = 0,
ABORT_REQUEST = 0,
PAUSE_REQUEST = 0;
DEFAULT_GROUP = 1,*,*,*,*;
CONTROL_CODE = 00000000 00000000;
/MN
1: OVERRIDE=25% ;
2: PR[16]=LPOS ;
3: PR[16,1]=PR[16,1]-250 ;
4: PR[16,2]=PR[16,2]+0 ;
5: PR[16,3]=PR[16,3]+100 ;
6:L PR[16] 400mm/sec FINE ;
7: CALL R_HOME ;
/POS
/END
this program changes the speed override to 25%, saves the current robot LINEAR position to a Position Register and then it substracts 250mm from PR16 x dimension and adds 100mm to the z dimension, after it calls Robot home program which is basically a joint position to home.
-
There is also one more method:
Create the original program, select all the motion commands, create a new program and then paste the selected motion commands with the option POS ID. The system will not be able to copy the motion commands with the orginal POSITION IDs from one program to another, instead it pastes them as uninitialized positions. This effectively cancels the need to use a PC.But please elaborate me on this:
how can this be of use? making a program with uninitialised data means the operator must re-make the whole program.