December 12, 2018, 07:07:06 PM
Robotforum | Support for Robotprogrammer and Users

Author Topic: Welding robot communication problem  (Read 2139 times)

0 Members and 1 Guest are viewing this topic.

March 10, 2018, 04:06:23 PM
Read 2139 times


Good day!

I have a system, which consists of BA006N robot, E01 controller and Kemppi A7 MIG welder. The controller and welder are connected by software Ethernet/IP using port 2 on main CPU board. I have set the IP configuration for it, so the EIPSTATUS returns "Instance: 1 Status: ONLINE". The question is how to define correctly the Ethernet/IP scanner settings (aux. function 0608-9-4 and probably 0608-9-3) in according with A7 MIG welder default table (see attached image), and also how to define correctly input and output signals in aux. 0608-1. Thank you.

March 11, 2018, 09:18:34 AM
Reply #1


Global Moderator
Have a read through the following post:
This went through various steps in order to setup the Ethernet/ip configurations, that may assist you.

Do you know of the relevant instances from the eds file of the welder?......those instances require entering in the controller in order to establish communication....have you set these?
Also the information you posted is welder->robot.......what about robot->welder?

You have Scanner/Adapter.......MASTER/ signal allocation would be either master/slave in 0608-1 depending on whether you are using the Kawasaki as a scanner or adapter....

March 11, 2018, 09:50:26 AM
Reply #2


Global Moderator
The following is what I used to configure a Kawasaki to communicate with a Siemens IM 151-3 EIP Ethernet/IP Adapter Module (extended IO Module).
In theory it would be the same process for the welder.....

1. Set the required no of IO in Aux 0611- ie 128 in Master.
2. Clear the current IO allocation in Aux 060801. (Master/Slave).
3. Allocate the Master (software Ethernet/ip) 12 in Aux 060802.
4. Allocate the required no of IO for Master in Aux 060801.
5. Set the correct port setting for Port 2 in Aux 06080901.
6. Obtain the correct instance values from the peripheral EDS file for communication - usually the exclusive owner instance values.
7. Enter these values into Aux 06080904 for the adapter no. you are setting 1 - I think you only need to enter values on page(s) 1 and 3 here.
8. Page 3 enter the values for the no. of IO for the Input Scanner/Output Scanner size - ie 16.
« Last Edit: March 11, 2018, 06:23:18 PM by kwakisaki »

March 11, 2018, 02:22:26 PM
Reply #3


Thank you for your answer, kwawkisaki!

I've read your post about ESAB connection and it looks like the same to my problem, but i have no robot under the hand to try it right now.

As for the welder, i have an EDS file for it, please see the attachment.

The table, attached in the my first message, contains both welder->robot and robot->welder columns. As i understand it, the controller must write to the welder IP a set of 16 bytes in suggested order of robot->welder "Control" column to define the welder statement, and, the same time, read a 16-bytes set of welder->robot "Status" column.

P.S. I'm so newbie in this field, sorry for maybe stupid questions.

March 11, 2018, 05:04:58 PM
Reply #4


Global Moderator
Yes, Welcome to the Forum

Sadly, Software or Hardware Ethernet/IP is not the easiest to configure in Kawasaki (due to the many fields of settings available).
Unlike other PLC's, there's no ability to load the EDS file directly into the Controller, therefore a little understanding of the EDS parameters and fieldbus communication is required (along with some basic fieldbus configuration understanding within the Kawasaki).
- Being able to extract the relevant instance values, input them into the Kawasaki and then confirm connections.
- Use the error codes that Kawasaki reference (in the Monitor screen for Ethernet/IP - See attached) to assist with diagnosing connectivity issues.

Thanks for the attached EDS, I shall have a look over it and see what recommendations I can give for you to try.....

March 11, 2018, 05:50:36 PM
Reply #5


Global Moderator
Ok, looking at your EDS information below highlighted in RED, I believe are the instance values you need:
        Revision = 2;

        Assem100 =
                "Input Data",

        Assem150 =
                "Output Data",

[Connection Manager]
        Connection1 =
                0x04030002,             $ trigger & transport
                                        $  0-15  = supported transport classes (class 1)
                                        $  16 = cyclic (1 = supported)
                                        $  17 = change of state (0 = not supported)
                                        $  18 = on demand (0 = not supported)
                                        $  19-23 = reserved (must be zero)
                                        $  24-27 = exclusive owner
                                        $  28-30 = reserved (must be zero)
                                        $  31 = client 0 / server = 1
                0x44640405,             $ point/multicast & priority & realtime format
                                        $   0     = O=>T fixed (1 = supported)
                                        $   1     = O=>T variable (0 = not supported)
                                        $   2     = T=>O fixed (1 = supported)
                                        $   3     = T=>O variable (0 = not supported)
                                        $  4-7   = reserved (must be zero)
                                        $  8-10  = O=>T header (4 byte run/idle)
                                        $  11  = reserved (must be zero)
                                        $  12-14 = T=>O header
                                        $  15  = reserved (must be zero)
                                        $  16-19 = O=>T point-to-point
                                        $  20-23 = T=>O connection type (multicast or point-to-point)
                                        $  24-27 = O=>T scheduled
                                        $  28-31 = T=>O scheduled
                Param3,Param1,Assem150, $ O=>T RPI,Size,Format
                Param3,Param2,Assem100, $ T=>O RPI,Size,Format
                ,,                      $ config part 1 (dynamic assemblies)
                ,,                      $ config part 2 (module configuration)
                "Exclusive Owner",      $ connection name
                "",                     $ Help string
                "20 04 24 05 2C 96 2C 64";    $ exclusive output path

From this information I think:
Configuration value is 5
Input(producing) value is 100
Output(consuming) value is 150

Assuming you have the fieldbus option already set and assuming you are not using ANY local IO interface such as 1TW or ArmID Board extended IO, then I would try the attached screenshots settings:
The monitoring screen at the end is where you can monitor the connection status.
Here you will see ONLINE(Green) and #0000 or OFFLINE (Red) with #xxxx error code.
Let us know how you get on.
« Last Edit: March 11, 2018, 06:03:44 PM by kwakisaki »

March 11, 2018, 06:07:33 PM
Reply #6


Thanks a lot!

I will try to access the system in next 24 hours and answer the result immediately.

March 11, 2018, 06:53:03 PM
Reply #7


Global Moderator
I have a small list of error codes I have compiled by setting incorrect values, all produce OFFLINE and an error code that may also help.....

#0109 - Output Run or Input Run Program Header value incorrectly set or Input Scanner or Output Scanner Size incorrectly set.
#0110 - TargetProducingConnPoint incorrectly set - EDS Assembly input or TargetConsumingConnPoint incorrectly set - EDS Assembly output
#0111 - ProducingDataRate and/or Consuming DataRate (RPI value in ms) incorrectly set.
#0203 - Cable Disconnection.
#0315 - TargetConfigConnInstance value incorrectly set.

March 12, 2018, 05:51:41 PM
Reply #8


Good news: the scanner is online, the welder's web interface shows messages like "gas on", "welding on" and some others.
Bad news: no gas, no wire feed, no arc, "arc failure" error message.
I will attach previous backup later. There are some suspicions about wrong signal mapping.
« Last Edit: March 12, 2018, 05:53:45 PM by Zerych »

March 12, 2018, 06:51:33 PM
Reply #9


Global Moderator
That's good news, the fact that you are online, suggests the settings are valid, Ethernet/ip is very good at letting you know when there are mismatches in the configurations.
- However, they're still could be some fine tuning required........but....

If you have used the exact settings I have suggested, then yes indeed I would say the mapping would be the main cause here but the immediate issues that your welding interface is reporting back will probably be down to the current dedicated input and dedicated output signals already set in Aux 0601/Aux 0602.
- So the Welder will more than likely be seeing these signals.......

So you will need to either:
- Cancel the dedication signals in Aux 0601/Aux 0602.
- Remap Aux 060801 Allocations (this is the usual method if you are also using/have the standard 1TW board fitted).

On most standard systems I have come across, customers have elected to retain the 1TW board (local 32 IO board) and therefore in Aux 060801, kept the first 32 Outputs/Inputs mapped as 'Local' and started there fieldbus allocation from Outputs 33 and Inputs 1033.

However, from the sounds of it, you're 95% there....... :beerchug:

Did those instance settings work in Aux 06080904.....for the Config/Producing/Consuming values then?

March 12, 2018, 07:57:01 PM
Reply #10


I used almost all the settings from screenshots, except the first "number of signals". And it works as i said before. Additional issue is the warning message in welder's web interface "warning 103: empty memory channel", and it may be another problem with welding start, because the welder has no curves inside. But, i think, it may not be a problem in case of simple MIG welding.

Here are two backups from the specialist, which, he says, must be working, one of them contains right mapping, or both are additional to each other. Sorry, i still cannot define it by myself ( need an advice about principles of implementation of the welder's bit list from the first message into the controller's Signal Allocation tab.

March 12, 2018, 08:30:19 PM
Reply #11


Global Moderator
The backups you have provided are somewhat different with various sections missing....... ???
Is any of these backups directly from the robot, or backups 'the specialist' has provided you to load in? you know?

I ask as one contains setup information as a slave (which looks incomplete/incorrect = backup1) and the other as a master which looks more like I would expect (backup2)?

Backup2 does appear to me to be in line with what I mentioned in my last post.......
- See attached screenshot for correction to No of sigs Aux 0611 and signal allocation Aux 060801.
- Also, I have cross referenced the IO referencing in the backup and edited your welder io list........and it all appears to tie in.
- So if for instance you enable Output 83 on the Robot, you would inch the wire, and enable Output 84, you would retract the wire.
- Dedicated Signals (Aux 0601/Aux 0602) would still be valid but some of these would be required to be setup also in line with the welder functions....but from backup2 it appears these values also are correct.
« Last Edit: March 12, 2018, 09:40:10 PM by kwakisaki »

March 12, 2018, 10:19:27 PM
Reply #12


That's great, kwakisaki!

I also compared these files as a text and found the same differences with "slave" and "master", and the same in DEFSIG commands section. Thank you for detailed screenshots! As for me, you did a priceless job! )) i will try it as soon as i can.

And some specifying questions about principals. The "Address" column in Signal Allocation sheet means the number of bit in the set of bytes, isn't it? Then i didn't find where exactly the "wire feed speed" and other "byte" and "word" type signals were mapped? And what about the first column with end-to-end numbering, as i understood, they are mapped directly to the controller's hardware, and, for example, as you said, first 32 are 1TW board' signals? I can switch them off by marking as a "Local Port" signals?

March 12, 2018, 11:01:49 PM
Reply #13


Global Moderator
We should be able to get you going......its nearly there.... :top:

In the signal allocation, the Kawasaki groups its signals in 16bits (word) addresses.....(1 byte is 8bits).
- So the 'addressing' column you refer to is the start signal no for the consecutive 16 signals.

So when you look at  the signal allocation for the 'local'.
- You have already set 32 inputs and 32 outputs as the local IO no. in Aux 0611.
- So in the signal allocation you start at 1 for the first word (signals 1-16)......then the next starts at 17 for the second word (signals 17-32).....that takes care of your 'local' addressing.
- So local signals for the 1TW would Signal 1-32 (Outputs) and 1001 - 1032 (Inputs)

Then for your fieldbus, you will be starting at Robot Output 33/Robot Input 1033.........BUT Robot Output 33 would be the 1st Output (Output No. 1 to your fieldbus) and Robot Input 1033 would be the 1st Input (Input No.1 from your fieldbus)....thats' why the address starts back at 1 again for the Master for the Outputs/Inputs.
- This will then be read by your welder as Input no.1 which will reside in byte 0......Input 9 would reside in byte 1.
- Likewise, when your welder sends an will be sent via the byte/bit from the welder onto the fieldbus and the Kawasaki would read it and apply it to the signal allocation map input no.(s)

So referencing your welder IO table.......
- OX 33,16 is outputs 33 - 48 from the robot onto the fieldbus address 1 - your welder reads as byte 0 and byte 1.
- byte 0 and byte 1 FROM the welder on the fieldbus would be read by the Kawasaki as WX 1033,16.
- Does that make more sense?

So looking at backup 2 and certain areas of coding - namely the Interface Panel Configuration below:
- I've highlighted in RED some indicators that appear to be already set up on the Teach Pendant Interface Panel referencing the allocated signals Robot->Welder (OX) and Welder->Robot (WX)
28,7,"  Welding","  Number",10,9,2,1,0,65,8,1
31,7,"[WX]Kemppi","   Current",10,5,3,1,0,1033,16,1
32,7,"[WX]Kemppi","   Voltage",10,5,3,1,0,1049,16,1
34,4,1," Air Blow","OFF     ON","","",1,4,2,0,86,0
35,1,"[OX]","Fieldbus","     Check","",10,9,1,0,89,0
36,1,"[WX] Power","    Source","     Ready","",10,9,1,0,1081,-1
38,1,"[WX]","     Torch"," Interfere","",10,6,0,2,1091,0
39,1,"[WX]","  Gas Flow","","",10,6,2,0,1085,0
42,1,"[OX]","    WeldOn","","",10,6,2,0,94,0
43,1,"[OX]","      Weld","     Start","",10,6,2,0,81,0
45,1,"[OX]","     GasOn","","",10,4,1,0,85,0
46,1,"[OX]","      Wire","   Inching","",10,4,1,0,83,0
47,1,"[OX]","      Wire","   Retract","",10,4,1,0,84,0
54,7,"[WX]Kemppi"," ErrorCode",10,9,4,1,0,1065,8,1
55,3,"","  Kemppi","ErrorReset","",10,6,8,0,0,90,1090,0

So for instance, you have torch interference set up as an input to the robot from the welder........on input if you locate the switch on the torch and activate it, you should see input 1091 turn on.....aswell as the indicator on the interface panel.

I hope this explains things a little better.......
« Last Edit: March 13, 2018, 06:10:38 AM by kwakisaki »

March 13, 2018, 08:23:01 AM
Reply #14


Well, here is subtotal:

I got the signal mapping from backup2, then made interface settings with one change - TargetConfigConnInstance set to zero. And voila! The welder makes wire inch/retract and gas on from the teach pendant, at last! The next is to bypass the "empty memory channel" on the welder with W1SET command, but that is the secondary task.

Thank you for your support, kwakisaki ) appreciate it and respect  :beerchug:

March 13, 2018, 12:54:00 PM
Reply #15


Global Moderator
Excellent.....surprise to hear about the 'TargetConfigConnInstance set to zero'......I would of expected a link problem......but thanks for the feedback about that.....
- When set to 5, what exactly happens?.....any errors or anything?

Now you have some IO exchange, at least you have functionality and it's a case of fine tuning and customizing it for the application.......... :party20:

March 13, 2018, 01:12:24 PM
Reply #16


As i see, this number means a set of first unsugnificant bytes in the packet, which are about interface configuration or a kind, because with 5 i got working gas flow from teach pendant (byte 6 in I/O table) and no wire inch/retract (byte 0 and 1 in I/O table).

The problem with the welder is that i must always choose the non-empty memory channel, and here i suspect probable wrong signal order in aux. 0608. LSB or MSB, little or big endian. So byte and word values may be sent wrong.
« Last Edit: March 13, 2018, 01:26:33 PM by Zerych »

March 13, 2018, 06:28:43 PM
Reply #17


Global Moderator
Hmmmm not too sure I can relate to that, I didn't realise the TargetConfigConnInstance had any impact on byte swap/bit order, but merely to select the relevant connection configuration interfaces the device can be used for such as:
- Exclusive Owner
- Input Only
- Listen Only
...............but if it's working, that's the main thing....I'll have to do some more reading up on it if I've misunderstood it...... :censored:

Usually OEM's stipulate byte order and lsb/msb......but I have no idea about Kemppi standard, but it's just a case of adjusting those settings to discover the correct order if you have no supporting documentation.
- So Kawasaki has those 2 options to allow for the variations that OEM's can offer.
- I have had to set LSB and Big Endian before when interfacing with Siemens peripherals on other fieldbuses like Profibus/Profinet.

« Last Edit: March 13, 2018, 06:35:12 PM by kwakisaki »

March 13, 2018, 09:49:06 PM
Reply #18


Global Moderator
Thank you for your appreciation for the assistance, it goes along way.... :respect:
The supporting information you have provided was 'key', without it, it could have been more long winded and it's a nice to see such a well presented post too......I hope others that come across this post will benefit not only for Kemmpi/Kawasaki configuration, but also as one of the examples that keep Robot Forum top of the list for sources of information and assistance from it's members.

Sounds like you have some small teething issues, but looks like the fundamental configuration is working and if we can be of any further assistance......keep us posted.....

- Once again, Welcome to the forum........:beerchug:
« Last Edit: March 13, 2018, 09:52:01 PM by kwakisaki »

March 14, 2018, 03:03:50 PM
Reply #19


And here is the total for this topic: the welding is GOING!  :toothy9:

But now some details and questions. The teach pendant's program contains user-declared (i suppose) variable "bits 65,8 = job_no" (see backup2), which is definitely the number of welder's memory channel. So, when the channel #2, which is set in teach pendant with .REALS section of backup2, was defined in welder, then welding started. The question is about backup's section named .INTER_PANEL_D (was mentioned in one of previous messages), which also linked (i suppose) to memory channel number in the first string. Where to find it in the teach pendant and how to automate or simplify choosing the channel number during the robot programming process with the AS language or otherwise?
« Last Edit: March 14, 2018, 06:24:32 PM by Zerych »

March 14, 2018, 07:45:13 PM
Reply #20


Global Moderator
Progress is always music....... :applaus:

So 1 byte is being used for Job no. using output range of 8 signals from 65 - 72.
- Binary Coded Decimal (BCD) where output 65 only would be equivalent of 1, output 66 only would be equivalent of 2, outputs 65 and 66 only would be equivalent 3 and so on........
- Max amount available would be 255.

Interface Panel Page(s) Configuration is done in Aux 0509.
- Pages are in matrix of 7x4 and can contain switches/lamps/messages variable inputs/bcd switch
- E Controller has 4 as default, but can be increased upto 8 by Aux 0808 if required.

Selecting Interface Panel Pages can be via main teach screen, interface panel buttons on teach pendant - attached screenshot.
Also, in program, you can turn on/off interface panel page by including AS Commands:
IFPDISP 1; will turn interface panel page 1 on.
IFPDISP 2; will turn interface panel page 2 on.
MAINDISP; will turn on Teach Screen.

From looking at backup2, it looks like you enter job no. via Interface Panel Page 2 which sends outputs 65-72 (1Byte) to Welder for selection.
Press 'Welding Number' button and enter job no. request for welder......REAL variable will change and it looks like control of this is done by PC Program called autostart.pc always running in PC Area.

Code: [Select]
.PROGRAM autostart.pc() #0
  BITS 65,8 = job_no
  GOTO loop

As for simplifying the process, this would depend on how you would like to send the job no. to the welder.
- The above method is directed towards manually inputting it.....which is as simple as it gets.....
« Last Edit: March 14, 2018, 08:09:11 PM by kwakisaki »

March 14, 2018, 08:54:51 PM
Reply #21


Thanks again, kwakisaki  :beerchug:

And now it's time of thoughtful manuals' reading for more detailed information and future solo working  :wallbash:

P.S. By "automate or simplify" (for example, in absence of possibility of direct current setting) i mean, for example, linking between welder's predefined memory channel numbers and numbered indirectly settable weld conditions, predefined in controller. I suppose, this can be another one PC Program, always running in PC Area. Not sure about it, will try. And, ofcourse, other non-obvious specific problems.
« Last Edit: March 14, 2018, 08:59:10 PM by Zerych »

March 14, 2018, 09:41:20 PM
Reply #22


Global Moderator
Ah ah....yes, reading for additional information.....welding conditions, yes, there is an additional feature you can study up on.....

If you use BLOCK programming in the Kawasaki, you have weld conditions available.
- These conditions can be selected within the BLOCK step, and therefore automatically send the job no request within the program.
- Therefore the relevant welder profile can be selected via the BLOCK step itself.
- So when it comes to program the weld, you can swap the job no. during the process.

Page 2 of that link I referred to in an earlier post, linked onto this feature.
Look at Aux 1413/0602/1401 - attached screenshot (from your current backup), the 'variable' Memory Channel is already been setup but not enabled.
- So here you can select 'Memory Channel' to use.
- When enabled to use, you will see Memory Channel exist in Aux 0602 (Dedicated Output).
- Here you allocate sigs 65 and total no of 8 (same as BITS 65,8 command - BUT for BLOCK program usage).
- Then look in Aux 1401 Arc Weld Condition No.
- You will now see 'Memory Channel'.
- So here you can set your value to send across the 1 byte (output 65-72) to welder.
- For each Arc Weld Condition no., you can allocate specific Memory Channel (job no.) and therefore when BLOCK programming, for WC and WE command, you can select Arc Weld Condition on the step.
- Therefore within 1 program, you can have varied Arc Weld Condition to send to welder for Weld Data and Crater Data.

I hope this makes sense, but definitely look at the Aux function 1413/0602/1401 to see if this suits your requirement better.
- This may also mean you need to learn BLOCK programming in Kawasaki (if you don't know it already) more reading ahead..... :justice:

Using this method means you do not need a PC Program for job no. send to welder......
« Last Edit: March 14, 2018, 09:47:52 PM by kwakisaki »

March 14, 2018, 10:02:58 PM
Reply #23


Yes, it seems to be what is needed. Additional question about the output signal numbers for first item of second screenshot - does that means using (or probable setting) of "WireFeedSpeed" data under the name of "Welding Current"?

March 15, 2018, 08:24:31 AM
Reply #24


Global Moderator
As far as I'm aware, the 4 options you have within Aux 1413 are completely configurable for purpose.
- As default, Kawasaki already includes/enables the Welding Current, Welding Voltage along with Aux 0602.
- If you are not using these defaults and wish to change to wirefeed for example, it can be done freely.
- These changes would be automatically be reflected to Aux 0602 and Aux 1401 Arc Weld Conditions.
- The variable name can also be accessed via AS Commands should you require additional features such as Interface Panel feedback etc.

Using the BLOCK features, assists in reduction of separate control programs to manage the data exchange between Controller and Welder.