Well, I think he wants to evaluate the $err.line_nr at any time the program runs. Because he wants to know the line where the code pointer is. Don't know why one should know that, but anyway, this is not how $err works.
It only has valid values if there is an error in the program during runtime.
So it only makes sense in conjunction with "on_error_proceed" (like panic_mode already tried to say).
Posts by hermann
-
-
As far as I know the motion planner of Karel is very outdated. You should not use it anymore.
-
In the mentioned folder You can find the file "dsqc1030.eds", that is the description file for the DSQC1030 device.
If You don't have that folder: download the 'Robotware Tools and Utilities" from https://new.abb.com/products/robotics/robotstudio/downloads
There You can find the file too. -
-
As You can see in the posted eio.cfg example, the DSQC 1030 is a EthernetIP device.
As far as I know there is no GDSML file for EthernetIP devices.
And I am not sure if the S7 can communicate over EthernetIP. -
If tm_bib is the only one, you can give it a try. Even if there are some other (depends on what exactly) , you can give it a try.
-
What I can see:
the line DEF PROG has to be deleted, wrong place, complete unneccessary.
The line EXT PROG_1() is at the wrong place, must be before 'INI', but may be, can also be deleted (only very old Kukas need that line, You forgot to mention the version of Your kuka system version). -
-
May be the undocumented funtion GET_SIG_INF("SIGNALNAME") can help.
The function returns informations about the signalname given to the funtion.Code
Display MoreSIGNAL INPUT1 $in[1] DECL SIGINF inp DECL char signame[] signame[] = "INPUT1" inp=GET_SIG_INF(signame[]) if $in[inp.idx] then Message("input "+signame+" is TRUE") ; PSEUDOCODE !! else Message("input "+signame+" is FALSE") ; PSEUDOCODE !! endif
Written from scratch, so may be full of errors. Just to give a clue.
Signame can be the parameter for Your own procedure. The problem is that You have to give the name of the declared signal, and if you have a typing error you will get a message not during compile time but later at run time.You don't have the long text, but the signal name declared in $config.dat or somewhere else.
-
Describe the reason. Why Do you need to know the location. May be there is a different solution for the task.
-
Hi everyone!
For my proyect, I need to locate the digital input/output long texts, but i have no idea where can be stored.
What do you mean by 'I need to locate', what exactly do You want to do?
You can export the longtext to a CSV file. -
jm2c:
you must check the velocity / stop by safety configuration, like mentioned above, but the robot needs some time to react on input to slow down / stop, so:
You will need 4 zones:
1. zone: slow down, normal input to robot, slow down f.e. in sps.sub
2. zone: check if speed is slow enough (safety configuration), direct input to safety input
3. zone: stop robot, normal input to robot, stop robot per interrupt via sps.sub
4. zone: check if robot is stopped (safety configuration), direct input to safety inputThere is a possibility ($sr_vel_red or $sr_ov_red) to slow down the robot automatically, but that function also needs some time to react and if the difference between fast and slow motion is to big it will fail, but stopping the robot will fail always, so You will need at least 3 zones.
-
You already answered the question.
The problem: the declaration of the interrupt is in the same program level as the interrupt is triggered. You have to declare the interrupt one level higher.
If there is no higher level, create one.Code
Display Moredef main() INTERRUPT DECL 1 WHEN $cycflag[1] DO ISR_home( ) loop movehome() maintask() endloop end def maintask() loop ; tasksheduler ; here only one task task1() endloop end def task1() Trigger When Distance = 1 Delay = 0 Do counter = 1 ptp pos1 Trigger When Distance = 1 Delay = 0 Do counter = 2 ptp pos2 Trigger When Distance = 1 Delay = 0 Do counter = 3 ptp pos3 Trigger When Distance = 1 Delay = 0 Do counter = 4 ptp home end def isr_home() brake resume end def movehome() repeat Switch counter Case 1 ptp pos1 counter = 0 Case 2 ptp pos2 counter = 1 case 3 ptp pos3 counter = 2 endswitch until SchrittCounter==0 ptp home end
-
Use GS (General Stop) instead of e-stop for icoming e-stop.
Or use a safety module like Pilz pnoz multi with appropriate program to couple robot and machine. -
Thanks. Works great .
-
We have a new robot with DCS and a A20B-8101-0930 profinet card, system version V8.30, option Profinet Dual Channel and Profinet Safety.
We only need the Profinet device functionality, no profisafe. Is it possible to deactivate the profisafe part?
If yes, how is it possible?Safety (fence, E-stop) is done by hardware signals (Don't ask me why, sometimes I don't understand the designers).
-
-
There is not one daimler standard for every plant of them in the world. You have to contact the project manager to get the actual standard for your project.
-
$pos_int during Interrupt otherwise $pos_act
-
If the distance in Z is 20 the z component of the base should be 750-20=730.
How do you calculate/measure the base?