MicroLogix 800 Jump instruction

magnumpress

Member
Join Date
May 2017
Location
Tennessee
Posts
4
I am accustomed to segregating my program in subroutines in RSLogix 500 and 5000 using the JSR instruction. I assumed the JUMP instruction was basically the same thing, but I cannot figure out how to implement it. I have already created multiple ladder programs under the Programs folder with various names. Any help would be much appreciated.

Thanks
 
Welcome to the forum!

While I'm not familiar with the ML800, the JMP (jump) instruction in Logix5, 500 & 5000 is used in conjunction with a LBL (label) instruction to "jump" over the code between the two instructions whenever the JMP coil is true. The logic you "jumped over" does not get scanned. These instructions should be used with caution as misapplication can lead to a major fault.

Please advise if what your asking about is something different.
 
Last edited:
I am referring to the the JSR (Jump To Subroutine) in RSLogix. I'm trying to find the equivalent in the ML800 instruction set. For example, I will create a manual routine, an auto routine, an motor control routine and an analog routine then run them using the JSR so I don't have a single routine to sift through.
 
I tried the "Jump" command and assumed the label was the routine name. This appears to not be the case, so I am either implementing the label wrong or this is actually a "jump" within a given routine and will not access an "external" routine.
 
the JSR and jmp commands are different.

this is a clarification for everyone and if I am incorrect, please correct me.

the jsr command - jump to subroutine.
you are at a command line in the program and wish to jump to another ladder program and execute it. at the end of the subroutine you have the return statement (my preferred method to return to where you left off).

the jmp - jump command
this allows you to skip portions of the program. for example, you are tired of reading a book and skip to the end to see who done it.
the jump has 2 parts.
jmp - jump command rung
lbl - pointer to jump to.



logic statement - jmp01 -> jump to program label 01
lbl 01 - dummy rung to get there ( this is the way I do it).
be careful not to have an endless loop and cause a watchdog fault.

I am not familiar with the 800's, I use the slc 504/05
the jump and label command can ONLY be used in the ladder program in which it was called.

if you are in ladder 3, all jump commands refer to ladder 3.
if you are in ladder 3 and want to jump to ladder 4, use a jsr command
james
 
Last edited:
I am referring to the the JSR (Jump To Subroutine) in RSLogix. I'm trying to find the equivalent in the ML800 instruction set. For example, I will create a manual routine, an auto routine, an motor control routine and an analog routine then run them using the JSR so I don't have a single routine to sift through.

From page 69 of the above posted link:

'...The Micro800 controller supports jumps within a program. Call a subroutine of code within a program by encapsulating that code as a User Defined Function (UDF) or User Defined Function Block (UDFB). A UDF is similar to a traditional subroutine and uses less memory than a UDFB, while a UDFB can have multiple instances. Although a UDFB can be executed within another UDFB, a maximum nesting depth of five is supported. A compilation error occurs if this is exceeded. This also applies to UDFs...'

From page 58 of the above posted link:

'...Jumps are conditional or unconditional elements that control the execution of
Ladder Diagram (LD) programs
...'

That it the closest you would get to the functionality of RSLogix JSR...The implementation is a bit more laborious...Free software and lower tier platforms require more programming work...:D
 
That's what I was afraid of....... Oh well, customer requested ML800 over ML1400, he gets his program all in a single routine. I just know I'll be getting calls now that they can fidget with the program with free software.
 
That's what I was afraid of....... Oh well, customer requested ML800 over ML1400, he gets his program all in a single routine. I just know I'll be getting calls now that they can fidget with the program with free software.

I hear ya...:D...This is pretty common in nowadays automation world...One pretty much gets what one pays for...:D...You could add Siemens here too...The hardware is significantly more 'cost effective', however, an average programmer will need to spend significantly more time developing a Step7/TIA application than when working on a Logix platform...The functional results will be identical...Probably Peter will be wealthier than Paul though...:D

You could 'envelop'(encapsulate) your 'theoretical subroutine' code within a user defined function or function block (Siemens style!) and 'Jump' between these...The customer will have to deal with it from now on...:D
 
I'm not clear as to what you are trying to do. But I program a lot of Micro800's with CCW and I have the program broke down into segments. See picture.

The program will still be executed from top to bottom.

CCW_Program_Segments.jpg
 
The OCD in me compels me to note that there is no such thing as a “MicroLogix 800”. The Micro800’s are not part of the MicroLogix line they are their own product line. One reason that might be important to know is they program very differently (and they are much more difficult to program in my opinion).
 
Just to clarify the JMP instruction for the 800 series in CCW. It allows you to basically just jump rungs in the same program only. To implement it, you need to add the label by going to the rung you want to jump to and right click and "add label". Name the label. Then, wherever you drop a JMP instruction you add the name of the jump label you created, to it. The jump seems very buggy to me thus far so I would avoid using it. Use some conditional logic instead perhaps. That's the way I've gone about it. So far, to my understanding, the "programs" all run sequentially in the order they were created. CCW has been quite different than RSLogix for me, but I am beginning to like it more as I use it more.

In my current project, i have a program called "outputs" where I am actually energizing the relay outputs on their own rungs. In any other program where I want to energize a relay output I create and use a unique variable to do it by adding it on the rung in the output program that contains the DO i want to energize.

The reason i mention that is because during testing and messing around with the jump instruction, it seemed that even while jumping rungs, a false output or bit within the section being jumped would still affect that bit if used elsewhere, even though that logic should not be parsed. I'm not sure, but it seemed like that was happening. That's why I'm saying I'd avoid using JMPs
 
That's what I was afraid of....... Oh well, customer requested ML800 over ML1400, he gets his program all in a single routine. I just know I'll be getting calls now that they can fidget with the program with free software.

There is nothing stopping you from segmenting your program into logical routines with the Micro 800 series.

You do not need to put in JSR's to call each routine, the Micro 800's simply run each routine from top to bottom, then repeat.
 

Similar Topics

Hello, I have machine that's currently running a Micrologix 1400 PLC controlling an AB Powerflex VFD via Ethernet/IP. We want to replace the VFD...
Replies
1
Views
509
Hi all, I had a setup with 2 Micrologix 1100 connected to a Panelview C300 over DH-485. I was mandated to upgrade the HMI, and proposed to...
Replies
5
Views
892
Hello, I have a MicroLogix 1200 controller that I'm trying to get to communicate with a PV 800 (CAT 2711R-T4T). This mostly likely means that I...
Replies
3
Views
2,499
First of all Hi, nice to met you all. I have a problems trying to control my PLC's (1762-L40BWA ser. C and 1763-L16DWD ser. B) with the Panelview...
Replies
10
Views
5,063
Hello Friends I have a PanelView 800 (2711R-T7T) connected with a Micrologix1400 (1766-L32BWA) and an output module (1762-OW16) I have done some...
Replies
3
Views
3,757
Back
Top Bottom