547,064 active members*
2,036 visitors online*
Register for free
Login
IndustryArena Forum > MetalWorking Machines > Okuma > let's reveal what NOEX is, beyond infos from manuals
Results 1 to 4 of 4
  1. #1
    Member
    Join Date
    Jun 2015
    Posts
    3442

    let's reveal what NOEX is, beyond infos from manuals

    hello all

    1) what exactly is NOEX ?

    2) don't you think that it would be usefull to be activated ( and deactivated ) by codes, so to achieve also a modal behaviour ?

    instead of NOEX, to have :
    ... G/M**1 : noex behaviour enabled only for current line ( single shot, just like the current NOEX )
    ... G/M**3 : noex behaviour enabled from current line ( current line and next lines, are all executed with NOEX privileges )
    ... G/M**2 : cancels M**3 ( current line and next lines, are all executed without NOEX privileges )

    kindly
    Ladyhawke - My Delirium, https://www.youtube.com/watch?v=X_bFO1SNRZg

  2. #2
    Member
    Join Date
    Aug 2011
    Posts
    296

    Re: what is NOEX ?

    noex is skip single block
    "Imagination is more important than knowledge."

  3. #3
    Member
    Join Date
    Jun 2015
    Posts
    3442

    Re: what is NOEX ?

    hey kurmay, gramatically you are correct but technically, think again about the "is" there is also :
    ... G305 : Single block Ignore ON
    ... G304 : cancels G305

    i have looked over each post inside this forum where NOEX appears, but there is no post about what NOEX does

    ps : you don't know, but for me all this started because of you
    Ladyhawke - My Delirium, https://www.youtube.com/watch?v=X_bFO1SNRZg

  4. #4
    Member
    Join Date
    Jun 2015
    Posts
    3442

    Re: what is NOEX ?

    hello this is for those that wish to have a finish touch on their codes

    each block is being processed through 2 filters : [ logic/user task ] and [ machine command ] ( g/m code, system variable, etc ); such filters + other things, will allow block execution

    such processing is always done, regardless of actual block content, for example :
    ... G1 X will be checked by the [ machine comand ] filter ( and find a G command ), but also the [ logic ] filter will check that block ( and find nothing, so all ok )
    ... G1 X V10=5 same as above, only that the [ logic ] filter will find something this time
    ... G1 X V10=abc same as above, only that the [ logic ] filter will find something wrong
    ... V10=5 [ machine comand ] filter will execute and find nothing, and the [ logic ] filter will find V10=5

    filters are there to ensure that [ logic ] and [ machine comand ] syntaxes are corect for each block, not also for the flow of the program ; for example :
    ... if you triger a C comand in g137, the cnc will error out, even if the block that contains g137 and the block that contains C, both are semantically correct
    ... if you GOTO a non existing address, the cnc will error out, even if GOTO block is semantically correct
    * in other words, is possible to have a messed up code, even if all lines are semantically correct ( for example, if you translate something with google, like going through a few different languages, it will give you a row of sentences that are semantically correct, but overall, is a hard mess )



    ok, so these 2 filters are always there : [ logic ] and [ machine comand ]

    each block may have [ logic ] and [ machine comand ], thus [ type 1 ] and [ type 2 ], and there may be both types present, or only one, or none ?! will discuss the empty line later

    each block is a row of words, and each word is a [ type 1 ] or [ type 2 ] element, but never a [ type 1 ] and [ type 2 ] element

    thus each word is either [ type 1 ] or [ type 2 ]

    i hope that so far things are clear



    if something can be only black or white, you can find it's colour by checking if it is white, or if it is not black; equivalent

    each word is :
    ... [ type 1 ] or [ type 2 ]
    ... [ type 1 ] or [ not type 1 ]
    ... [ type 2 ] or [ not type 2 ]
    * all of them are equivalent

    thus there is :
    ... [ logic ] and [ machine comand ]
    ... [ logic ] and [ not logic ]
    ... [ machine comand ] and [ not machine comand ]
    * all of them are equivalent

    again, i hope that things are clear



    [ machine comand ] does something that you see with your eyes
    [ logic ] does something that you do not see

    [ machine comand ] creates movement, there is real execution
    [ logic ] does not create movement, there is no execution

    i will repeat and develop :
    ... a [ logic comand ] does not create movement, there is no execution
    ... no execution
    ... no ex / NOEX



    NOEX is saying that there is no execution comand inside that block

    NOEX will disable the [ machine comand ] filter, only for that block

    [ machine comand ] filter is always active, as default, and NOEX is an interlock for it


    in reality, the [ machine comand ] filter requires much more time to process, while the [ logic ] filter is way faster

    if you have a heavy loaded math formula macro, that uses many lines to perform calculations, and only a single line to convert those calculations to real movement, then you are experiencing lag, because of the downtime created by the [ machine comand ] filter being active for no reason; few persons are aware of this, because most of them are satisfied with the macro working as expected, or more precise, are happy to get the macro finaly done and working

    i have noticed this lag, when i have runned some of my p300 codes on a p200; to fix this, i have used NOEX and code simplification, because, even with NOEX, a p200 is slower than p300 ( for example, on p200, an empty line or coment is causing huge lag, while this is processed faster on early p300, and even faster on latest releases, and that because, at the begining, such cases were procesed by the [machine comand] filter, that got disabled on p300, leaving only the [logic] filter active ); not that it would matter, but maybe a quality code is indented, and if you are that person, trying to keep things clean, lisible, working on a p200, then you just screwed up yourself, without even knowing it as code gets complex, difference in logic performance, between p200 and p300 is huge ...

    for example, let's say that you create a parametric code that can shave time "t" from a cycle time, but the problem is that the code itself requires "t" time to execute; it's messed up, and the only solution, without NOEX, is to change the code from parametric to linear, thus loosing aaaaall the logic, being unable to customize it fast ( imagine, instead of using a helix macro, you simply use linear code; the linear code will execute faster, but you won't be able to edit it at the machine )

    before NOEX i was at the 0.1s threashould, i couldn't simply get that 0.1s cycle time reduction, because the code required circa 0.1; it may not seem much, but if you have many 0.1s that sum up, then is indeed, a thing; imagine a code that behaves faster ocasioanly, thus is not consistent , wtf ?! with NOEX i got into that miliseconds scale ( also windows timer maters on some tasks ), and everything boosted from that moment; i have never explained all these until now, but, instead i chosed to share examples inside threads on this forum, because i noticed that there is a lack of such examples, and the advantage is pretty powerfull, but also for a verry narraw segment of cnc programmers


    with NOEX, and other things, i was able to build data gathering techniques, without drastically compromising cycle time, otherwise what's the point ? diagrams are nice, cycle downtime is not



    informations about NOEX and single block are vague, incomplete, mill team seem to have done a better job (like better shot, but still no go); there is more info on it inside latest manual revisions, about msb files, but again, few dare messing with such files ( pls check attached pdf )

    from parameters (pls check attached png), is possible to jump NOEX blocks in single mode; the reason behind it : let's say that you have a parametric code, with a loop of 100 lines that perform calculations with variables, and a single g-code inside that loop; when testing such a code, you would preffer to single block only the g code line, otherwise you'll push that cycle start until it hurts this was an example about why is ok to jump NOEX in single block, but is irelevant from a testing perspective, since testing codes can be done way faster, but this is off-topic



    i will develop soon all these statements :
    ... the best use of NOEX is for blocks that contain only logic, but not all only logic blocks are compatible with NOEX, because there is a category of actions in between [machine comand] and [logic]
    ... another way to avoid lag, without using NOEX, is by combining [logic] with [machine comand], within same block obviously, but this is not always possible, as there are limitations; however, when is possible to combine, lag will be avoided because the duration required for the logic is generaly smaller then the duration for axis movement, except for cases when you succumb the machine, but in such a case, main problem will be the succumb, and not the logic
    ... if you use NOEX inside a block that contains a [ machine comand ], the [ machine comand ] will not be executed, but also it won't be fully ignored
    ... beyond NOEX, there is no g-code boosting technique, but there are methods to achieve a higher level of control when dealing with logic codes / kindly

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •