Very absorbing tale ! How the story ends with the spline motion approximation and force-torque control in the spline?
Posts by Nosochek
-
-
By the way..I have tried $MOVE_BCO. It turns to TRUE value only while the robot doing BCO movement, in other cases it has FALSE value. So $MOVE_BCO can't help me to recognise whether I have to do a BCO movement..
-
Ooh...I remember the problem with Omron Nj and Ethercat bridge EL6695. My colleage spent about a month on this stuff..
We have contacted with Omron, with Beckhoff and the last one suggested to fix ESI file:
If you imports ESI file to Sysmac studio and got the errors you have to change the ESI file manually.
Replace 'Virutal=1' to 'Virtual=0' for the actual version of the revision. (e.g. 0x00040002)Correct RxPdo and Txpdo with the current DataTypes
For example:Code
Display More<RxPdo Sm="2" Virtual="0"> <Index>#x1608</Index> <Name>IO Outputs</Name> <Entry> <Index>#x7000</Index> <SubIndex>1</SubIndex> <BitLen>32</BitLen> <Name>myOutputTest1</Name> <Comment><![CDATA[]]></Comment> <DataType>UDINT</DataType> </Entry> <Entry> <Index>#x7000</Index> <SubIndex>2</SubIndex> <BitLen>32</BitLen> <Name>myOutputTest2</Name> <Comment><![CDATA[]]></Comment> <DataType>UDINT</DataType> </Entry> </RxPdo> <TxPdo Sm="3" Virtual="0"> <Index>#x1a08</Index> <Name>IO Inputs</Name> <Entry> <Index>#x6000</Index> <SubIndex>1</SubIndex> <BitLen>32</BitLen> <Name>myInputTest1</Name> <Comment><![CDATA[]]></Comment> <DataType>UDINT</DataType> </Entry> <Entry> <Index>#x6000</Index> <SubIndex>2</SubIndex> <BitLen>32</BitLen> <Name>myInputTest2</Name> <Comment><![CDATA[]]></Comment> <DataType>UDINT</DataType> </Entry>
Then import ESI file to the SysMac and remove and add again EL6695 Device. Only then it will catch new settings.
-
Hello, guys!
I have connected PLC and 3 robots with Profibus and I have HMI panel. Shortly: I want be able to show status message code from robot on the HMI.
Long version:
If any robot has status message (for example KSS00309 "Needness of SAK movement in T1/T2" or something else) it blocks the robot cycle and I want to "tell" the PLC the reason of the blocking.
In the ideal case I want to transfer the code 309 to the PLC, HMI.
But, I can't read this code via $STOPMESS, MBX_REC, $ERR, p00 because the $STOPMESS signal doesn't triggered.
I can't even indicate programmatically whether I have some errors when status message appeared.
I have surpised that couldn't find any information about this on the forum. Did anyone faced with this problem?Any help will be appreceated.
Thank you!
environment:
KRC 4
KSS 8.3.29 -
Thank you,Fubini !
I don't think OV_PRO is a good decision in my case.
So if I have no other choice I will create the program structure in the way, where interrupt breake the movement , then set some flags and then resume to the main run . In the main run with the flags I had set before I will do everything I want.
-
Hi guys!
I have the program with the one long and slow LIN movement.
During this movement I have the interrupt routine:Code
Display MoreGLOBAL DEF AlarmStop() INTERRUPT OFF 20 BRAKE F StopSignalsOn() BAS(#VEL_CP, g_LinFreeSpeed) LIN_REL {X -20} #TOOL MsgQuit("Tool collision!") HALT INTERRUPT ON 20 END
It has no errors during the execution, the variable VEL_CP has changed, but actually speed doesn't changed. Is it possible to change the speed in the interrupt routine?
-
Spl, you are right. For #sys messages it doesn't help. But anyway in the msg_txt[] must be something (at least the key), but it's empty.
So, as I understood answer for the main question "how to get system message text" is - no way ?
-
Metalikooky, the code above is the part of the routine, msg[] - parameter
So, the variable msg is declared out of the routine with the size 250 (DECL char msg[250]).Spl, I have tried with SWRITE. It didn't help.
Code
Display Moremessage_count = Get_MsgBuffer (d_bufferMsg[]) IF (message_count > 0) THEN FOR i = 1 TO message_count IF (d_bufferMsg[i].type==#sys_quit) THEN SWRITE(msg[],state,offset,"test message!") SWRITE(msg[],state,offset,d_bufferMsg[i].msg_txt[]) errCode = d_bufferMsg[i].nr RETURN ENDIF ENDFOR ENDIF
After that I got in msg[] only "test message!" -
Hi, guys!
Is it possible to get get system message without KRmsgNET?
I can read the messages from buffer and get message number, but can't get message text.
Code
Display MoreDECL char msg[] DECL INT message_count, i,errCode msg[] = " " errCode = 0 message_count = Get_MsgBuffer (d_bufferMsg[]) IF (message_count > 0) THEN FOR i = 1 TO message_count IF (d_bufferMsg[i].type==#sys_quit) THEN msg[] = d_bufferMsg[i].msg_txt[] errCode = d_bufferMsg[i].nr RETURN ENDIF ENDFOR ENDIF
The errCode variable has the properly value. But the msg is always " ". What wrong with me?)
Thank you!
P.S. KRC 4, v8.3.17
-
Thank you for the idea, irobot.
How it's possible to "forward" from VmWare's IP to KRC's IP?
As far as I know on the KRC2 was the program called "Router" for this purpose or something like this. Does something exist on the KRC4 ? -
Hello,
Does anyone has experience to communicate with Office Lite from PC via KLI interface ?
I use "Bridged network connection" in VMPlayer. Ip address on the PC is located in the same subnet as an OfficeLite's KLI ip. Ping doesn't work.
Do I need to install something on the OfficeLite's windows? Is it possible to communicate via KLI with OL?Thank you in advance.
-
I have checked the version of option it's actually 2.2. But the idea is the same.
I have found out only decision is to change showMsgDepend routine in EthernetKRL.src.
E.g. to change EKI_CHECK(Ret,#QUIT) to EKI_CHECK(Ret,#Notify)
Or to change "IF" condition there.If someone will find something better, please let me know...
-
Hello all !
I have installed Ethernet KRL 2.3 on KRC4. I use EKI as server in the Submit Interpretator.
According documentation I tried to deactivate message output with
<Messages Display="disabled" Logging="error"/> in the <INTERNAL> section in the configuration xml file.
But from time to time I still got the mysterial error message "Send data failed" which blocked the sps.sub.How to avoid blocking? How to handle this error?
Would be great to hear any idea! I have completely stuck...Thank you...
-
Interesting fact, that this code:
FRAME POS position
$BASE = $NULLFRAME
position = $POS_ACT
posistion.B = posistion.B + 10
PTP position
...and this:
$BASE = $NULLFRAME
PTP_REL {B 10}logically must do the same. But robot moves different and destination position will be different.
Who can explain why? -
Right, usually it's 172.31.1.147
-
Herman, interesting idea, will think in this way, thanks...
SkyeFire: Yes, I'm generating new base... If I understood you correctly, your suggestion is to have the program which getting one point from operator and restarts each time in the way mentioned by Herman. To be sure that we have 3 different points you propose in the begining of the program to check whether current position differs from the prevoius one which located in the system variable?
Am I right? Sounds interesting...
-
Thank you for reply, but it's quite dangerous solution, because if operator forget to do it just one time robot returns to the previos solution and easely could break the sensor during the moving, because all these operations happens close to handling detail, that's why I try to find programmatical solution
-
Hello,
During the running program I need to change the robot position by operator and then continue the program execution, but of course robot returns to the previous programmed position.
The idea of the mentioned program logic is following:
I have a robot equiped with the touching sensor on the flange... I'm tries to measure a points for the base defenition. So operator must to change robot position and the sensor will teach the point.
I've tried to do PTP $POS_ACT, but before its execution robot returns to the previous position.I wonder If exists any solution to avoid this behaviour?
Thank you...
P.S. I have a controller KRC4 with KSS 8.2.22
-