I'm getting a syntak error L:0003 when loading in these olp
What does your line look like?
I'm getting a syntak error L:0003 when loading in these olp
What does your line look like?
I want to use interrupt to stop the program when air pressure is lost and my pressure sensor has only one NO switch.
I could connect it to a new hardware relay and use NC contact as input, but I figure it must be possible to do it with software.
That’s 10x the work for this. Depending on the application the controller is set up for there may be a dedicated set of terminals for air pressure.
If not a simple user alarm would suffice. One or two rungs added to the ladder. Add the text to display on the screen.
Advantages to this are:
No breaking out input groups.
No adding EI and DI instructions in a job.
No creating the job that will execute on the interrupt.
No additional Jump/Call job.
No Clear instruction.
No assigning the interrupt input.
No assigning the executing job on the interrupt.
The Dialog instruction needs user input. That is what the instruction was designed for. Ask a person a question, give them up to 5 options to answer the question, and react on the answer.
If you want text to show up on the screen but disappear with an input, the closest would be a user alarm written in the ladder. Your logic would get the screen text to show up. Your input would get the alarm to reset the alarm.
Here I have 2 questions:
1. Since this is ladder like in PLC, there is no problem with "reading" same variable 2 times (so it won't influence first set of commands: GSTR #20030 OUT #00030) ?
2. What variable can I use, where to declare BOOL variable for my OUT, or can I just use some Auxiliary Relay signals that are not already used?
And in the end in the interrupt for Input signal I will put this "new variable"
1. You can read the same address as many times as you want. You can only write to the address once.
2. The only addresses you can use with interrupt job is an Universal/General Purpose Input.
Interrupt Job was developed for press tending. The input is the press starting to roll which is a rising edge signal.
Are you sure you ladder is mapped as
GSTR #20030
GOUT #00030
and not
GSTR #20030
GOUT #00010?
Assuming standard mapping step 1 is to delete the:
GSTR #20030
GOUT #00010
Step 2 is to write the following:
STR #20030
OUT #00010
STR #20031
OUT #00011
STR #20032
OUT #00012
STR #20033
OUT #00013
STR #20034
OUT #00014
STR #20035
OUT #00015
STR #20036
OUT #00016
STR #20037
OUT #00017
Step 3 is to compile. Your ladder is back to the way it was but with group 1 broken out.
Write your logic for whichever Universal Input you wish to use as the trigger for the interrupt job.
Did you change S1C1G065 before mirroring?
Assuming the default ladder. Towards the bottom of your User Side is a BMOV. It contains address 30064. You have a break out the BMOV to be able to reassign an individual output.
When you save out the CIOPRG.LST you get both the System and User Sides. It’s one big ladder.
40045 is external servo on. Are you starting the robot from a plc, hmi, or push button? This requires the controller to be in Remote Mode to work. They could still start the system in Teach or Play Mode from the pendant unless you have PP SERVO ON PROHIBITED. You could also PROHIBIT PP START.
Me, personally, I would probably go the servo off route. Servos are off in Play unless the limit switch is in the correct position.
Definitely can in MotoPlus. You can write the pulse count position for the axis you want to move and write the other 5 as to where they currently are. There are times where I would do that to move from a machine pounce/perch to another machine pounce/perch.
For the most part, I move as many axes as requires from point A to point B. It’s more efficient.
Easily done in the ladder program. Use the Universal Input to drive the Specific Input (4xxxx) for whichever category Servo Off you want. Always though, think about a “get out of jail free card.” How to recover upon a switch failure.
Since this is going through the ladder it is NOT safety rated. If you want safety rated the GSIN inputs would be used and a machine safety logic circuit written.
An alarm might be easy or may require some digging in the ladder. Depending on the ladder you might be able to tie into an Auxiliary Relay (7xxxx) that is already mapped in the ladder or you get to write your own mapping. It possibly gets deep depending on what is currently in the ladder, but definitely doable.
No quite. Your Concurrent I/O won’t update or be changed unless you change it.
What I am about to write can be changed, this would be the standard/automatic way. Not knowing the controller’s application, in this example, I am going to assume arc welding or general purpose. Theory is still the same on other application but numbers change.
Standard a YRC comes with 40 in and 40 out, or 5 groups of 8. Based on application a certain number are allocated for a dedicated function. Arc and General have two groups of dedicated. 20010 through 20027 or 30010 through 30027. This leaves 3 groups of 8 for the user. 20030 through 20057 or 30030 through 30057.
When adding a board, whether discrete or fieldbus, it starts at the next available address. So, this would be 20060 and 30060. Most, not all, fieldbus boards have a group of status bits. The first user i/o would then be 20070 or 30070. This would continue and end based on the number of bits/bytes set up to transmit.
Going back to the two rungs you posted, the default ladder is already mapped for 510 groups. Subtract out the 3 user discrete and the 1 status group. Unless you are planning on sending more than 507 groups of data, you’re good. The exception is if you want to remap for a hmi or something controlling the system where you need to assign a function to, such as turn on servos, start the job, etc.
Disclaimer: This is the standard way. Manually, I can reconfigure and start board addressing wherever I want.
You’ve got it. To expand on the Specific Inputs can be used to change the condition of the controller. Like call the master job, reset an alarm, start the job, etc. Specific Outputs can tell something the state of the controller. Is the job running, are servos on, is there an alarm, etc.
Here is a link to a post that goes more on-depth. Substitute General Purpose where it says Universal since you are on YRC.
In both of those rungs 70017 is a first pass bit. Basically, is the controller booted up and the ladder running. STR is start a new rung with normally open contacts.
The BMOV is a block or bit move. Move, or pass, the status of 510 groups of 8, or 4080 individual external inputs to the general purpose inputs. Since it is pass through, stuff needs to be broken out for re-assignment.
So the BMOV is taking the status of 4080 external inputs starting at address 20030 and passing the on or off status to the GP inputs stating at address 00010.
The same applies to the second rung.
To do the testing/playing that you want to do change the second rung to 10020, 509, 30040. This will eliminate the first group of GP outputs to play with.
I have exactly the same problem.
How to update the software version?
Call your local Yaskawa office for software.
STR #60010
OUT #30030
This would be momentary. Pressing the button addressed as 60010 would turn on External Output #1.
STR would be start a new rung with normally open contacts. Output to address 30030 which corresponds with External Output #1.
You will need to modify the ladder beforehand to remove address 30030. You can only output to the same address once.
The manuals are available at Motoman.com.
In the GETS you can specify what D-variable address to store the information into.
Before could be:
GETS D030 $D030
GETS D031 $D031
after could be:
GETS D032 $D030
GETS D033 $D031
Use the SUB instruction to find the difference between D030, D032 and D031, D033.
Here is a link to the manual on Yaskawa's website.
https://www.motoman.com/getmedia/136F424D-4508-489E-886E-F3D0F7B8EDE5/166153-1CD.pdf.aspx?ext=.pdf
I've not done this since I never cared about the wear before dressing. Assuming this is a servo motor spot gun, I'd use the SVGUNCL instruction with the PRESSTWC and TWC tag. Then use the GETS with the appropriate $D-variable to get the before. Then the same after the dress. Subtract the two D-variables that you stored the before and the after and you have the difference. Lather, rinse, repeat.
Assuming you are using moves with the V= tag as opposed to the VMAX= tag.
Try using the HPVELON and HPVELOF instructions in the Inform List under Other. HPVELON would go before the moves you where you need speed control and HPVELOF when you are done with those moves. The arm may get some vibration so you may need the ACC= acceleration and/or DEC= deceleration tag. This function is available in software YAS4.24 and newer.