Fanuc 90/30 HMI programming

Yes, I have the key assignments. though no documentation of original references in Ladder Logic

Functions such as "auto Process 1","auto enable" ,"manual" ,"auto" ," Valve 2", Gas 1" , "Gas 2", " Low Voltage Power". etc. 20 of the 24 key positions are occupied.

Does the ladder logic have text? If you are working from raw logic, it will be very hard to reverse engineer...

I am going to assume that LEDs are status lights in the "HMI" and "Keys" are on/off functions.

Pick an HMI assignment, like "Low Voltage Power", which probably is an alarm display. Find it in the logic and back search till you find the rung that writes to the "HMI" bit sequence.
Usually with an "HMI" like this, there is a bit transfer going on to move the bits from the logic to the "HMI".
For example..... the Alarm Light is on 24Q (%Q0024). Somewhere in the logic, 24Q will be used in a rung to energize 506M (%M0506) to send to the LED to the "HMI".

Also...
Most "HMI"s like this also do not do "bit latch" functions (think of the signals FROM the "HMI" as a pulse) so to use the "Keys" in the "HMI" there will also should be latch/unlatch ladder logic between the "HMI" and the PLC for any signal that need sot be retained (like maybe "Auto" and "Manual").

..
 
Last edited:
Correct, The LEDs are status indicators (announciators) associated with the "keys" on the operator key pad that perform on/off functions.

In this case the LV PWR is turning ON/OFF a low voltage (2-6V), high current (100-200 Amp) supply that can be diverted through two resistance heater circuits.

The ladder logic extracted from the PLC is listed with %I, %M, %R, and %S numerical identifiers,
There is also a "similar" print out of the logic using Nicknames.

I have spent several hours correlating the reference identifiers from the ladder logic with the Nicknames in the documentation, trying to grasp the over all control scheme.
It appears that most real switching functions are handled through M references (internal ) that are identified with LACH## or LCH## nick names.. Many of which are beginning to become quite familiar.



There is a MOVE WORD function in the START block that sets the contents of register R00001 to ZERO at the time of the first scan. r00001 the location for the LEDs If I have it correctly.

Regarding your example of Auto and Manual, there are keys assigned to "Auto Enable", "Auto Process", Auto Pump", and "Auto Vent", The "Auto Enable" function is described as a toggle with status indicated by flashing the LED adjacent to the key . Additional keys assignments include: "Auto Mode" , "Manual Mode" and "Service Mode". I wonder if these last three are only to provide indications of status for these conditions. The Service Mode function is in fact controlled by a mechanical key switch with it's own indicator lamp. It may be that the "Manual Mode" key sets the condition to allow the direct switching of operation functions through the key pad, and the "auto mode" resets conditions to again allow the "Auto Enable" function needed for automatic processing. There are three automated processes written into blocks of the ladder logic It is obvious from a review of the ladder logic, that the mechanical service mode switch by passes many inter-locks and internal conditions.

Progress for sure! Thanks you for your guidance.

regards

Cal
 
Last edited:
Progress....Great!
Yes...
There are other variables but these are common ones you will run into.
%I = Digital Inputs - usually real world inputs or directly related
%Q = Digital Outputs - usually real world oututs or directly rated
%M = Internal memory bits
%R = Internal Memory Registers 16 bit but can be combined to a DINT for 32 bit numbers, or a REAL for real numbers,.....etc.
%AI = Analog Inputs
%AQ= Analog Outputs

Are you looking a printout or text file of the "similar" logic?
Is the "similar" logic on your PC also? You could export the variable name list and import it into the one you are using. If it appears the logic is that close.
Are you using LM90 or Machine Edition?

..
 
Yes, looking at a print out

Progress....Great!
Yes...
There are other variables but these are common ones you will run into.
%I = Digital Inputs - usually real world inputs or directly related
%Q = Digital Outputs - usually real world oututs or directly rated
%M = Internal memory bits
%R = Internal Memory Registers 16 bit but can be combined to a DINT for 32 bit numbers, or a REAL for real numbers,.....etc.
%AI = Analog Inputs
%AQ= Analog Outputs

Are you looking a printout or text file of the "similar" logic?
Is the "similar" logic on your PC also? You could export the variable name list and import it into the one you are using. If it appears the logic is that close.
Are you using LM90 or Machine Edition?

..

I'm using LM90 as that is the application used on the original.

The "similar" logic was that documented when the machine was first commissioned.

The logic extracted from the PLC was the result after the tool had been in use and might be called "revised". Some aspects of the original configuration and function were discarded, and some added. I would say 80% directly compatible overall, with the "MAIN, START and MANUAL blocks 95% in a one to one comparison.

So I have a "paper copy" of as delivered logic WITHOUT numeric references i.e. %R,%I,%M, %Q, etc. only nick names.

And,

I have the electronic file of the current logic, with it's many changes, extracted from the PLC, without the nick names or descriptions.
Only rung numbers, ladder figures and reference identifiers by type and number.

Combining the two is the puzzle before me presently.
I have spent some time with the GE manuals that are readily down loadable from GE (Thanks for that!) I understand the reference functions I, Q,R,M,S etc. There are no analog modules in this unit, only I/O logic and relays. (4 modules) .
Q and I references are mostly matched to hardware.

To date, I have an EXCEL file of some 165 references, (4-1/2 pages), less than 1/2 populated with nicknames, and less than 1/3 with reliable descriptions.

A start! ;-)

One internal Memory reference M0800, with nickname "READY, is the contact that controls subroutine calls that contain all the "work" done by the logic. This same reference shows up on the final 5 rungs of the "MANUAL" block, as contact that energizes a set of MOVE BIT instructions that sets several internal memories (M0529-M0533) with the constant zero
Also, this same "READY contact controls a MOVE WORD instruction that Takes the value LED1 and outputs to %R0001. %R0001 is set to CONST 0 as a First Scan instruction in the START subroutine block. This reference appears significant!

I can not yet find a location where this M0800 originates. There are no obvious mechanical keys or switches with the GE90/30 PLC, and the "Service Mode" key switch is associated with I0007.

I still see no way to assign an LED on the MMI-200 software to a specific logic reference. I have followed several LED coils back through logic to discover their origin contacts. But it seems incorrect to assign the key pad impulse that directly. Such connection would only serve to "light the lamp". I will soon build a new project and assign R0001 to LED and see how things shake out.

I feel that I am on the cusp with this new language, 'just not there yet.

Perhaps I am "over thinking this thing", perhaps the eureka moment is yet to come.

Thanks for your assistance.

comments always welcome

Cal
 
Last edited:
Assuming LED register is addressed to %M00505 - %M00520, LED register + 1 is addressed to %M00521 - %M00536, etc:

Energize %M00505 in ladder logic (coil instruction) and you should see LED #1 light up. Energize %M00506 and you should see LED #2 light up. And so on...

Press F1 on the KEP unit and you should see %M00537 turn on in the PLC. Press F2 and you should see %M00538 turn on in the PLC. And so on.

Th e manual also talks about a "Message trigger register". If your ladder logic in the PLC writes a value of 1 into the message trigger register, the KEP unit will display message #1. Using the software you create the text to be displayed as message #1 and store it to the unit. The message trigger register will probably be %R memory, although it doesn't have to be.

If you want to make a backup copy of your program either post it here or send me a PM and I'll give you an email address.
 
No MTR with this operator panel

The MMI-200 is the simpel version, with No display of any kind, so no "trigger" required to bring up a text message. Thus no need for a MTR.

Could that same function be applied to "calling" up the LEDs? That is a possibility I can imagine.

I could readily provide an electronic copy of the present logic listing for review.

IF I attach such a file here, it will likely overwhelm the display , yes.

Regards

Cal
 
Last edited:
You can export the "Variable Declarations Table" from the "similar" logic and import them to the revised logic.
"Appendix I" in the LM90 software "User's Manual" explains how to do this. It is pretty easy.


If it is a "Move Word" it may be moving more than 1R (%R00001). 1R is just the first register.
What is the "LEN" on the "Move Word" instruction. This is the Length or how many registers to move as words.
The first scan function is probably used to clear the registers on PLC start up. A "First Scan" function is true ONLY for the first logic scan on power up of PLC. It never happens again until PLC is power cycled.
..
 
Last edited:
Sorry to omit the length detail

Start menue

(begins)
rung3

FST_SCN MOVE WORD LEN 256 Q--->%R0001
CONST 000

rung4
FST_SCN MOVE WORD LEN 256 Q--->%R0257
CONST 000

rung 5
FST_SCN MOVE WORD LEN 0004 Q--->I_ACPRG (%M0001)
CONST 000

rung 6
FST_SCN MOVE WORD LEN 032 Q---> LAHLDI1 (%M0193)
CONST 000

rung 7
FST_SCN MOVE WORD LEN 004 Q--->O-HIVAC %Q0001
CONST 000

rung 8
I-SHSEL LAAUT-2 LAAUT-1
-] [--------] / [-------------------------------------------------------( )
|
%I0205 |
-] [-----|

I-SHSEL (%M0013 or %M0018)
LAAUT-2 (%M0166)
LAAUT-1 (%M0165)

In each case above, everything after the FST_SCN is an instruction block

"Importing" variables from the sheets of paper will be quite a trick ;-)
In fact, there are no variable declarations in the "as delivered" documents only the header for same.
There are no Variable declarations from the logic extracted from the PLC either, as that "text" resides in the "project" file. Something I do not have.

IO am about to start on entering them after refining the excel file. Now five full printed pages.

The original logic was produced in LM90 V8.02, The extracted logic indicates LM90 V9.05

I feel that today's efforts have resulted in the accurate assignment of known references to the MMI-200 key board/operator. 19 keys accounted for, even if there are some that are obsolete, and other, yet unconfirmed, to take their places.

There are several significant uncertainties remaining.

Such as
What is reference "READY" %M0800?
What is reference "LAHLDI1" %M0193
and what to do with %Innnn references when there are two for the same nickname?

I suppose just pick one to start off ;-)

I hope this additional information helps clarify the LEN question. (I added a bit more too)

Thanks for the help

Regards

Cal
 
SO...
Taking the first Move Word instruction with an LEN of 256..
On first scan (PLC power up) you are sweeping a 0 through 1R-256R.
Then ON THE next Move Word you also sweep a 0 through 257R-513R.
You are using 513 Registers in the logic?

Do you have LM90 9.5?
I have it if you need...message me your email address and I will send you a link to download.

BUT LM90 software will not install on Win7, you will have to use a "Windows XP Mode Virtual PC" (free download from Microsoft). However I have not had much luck in getting the Virtual PC to communicate with the PLC, but it is good for offline work.

..
 
Last edited:
Is there a way to pull all the references on a block in order to get a comprehensive list of variables within that block? IF that were possible, a listing from the present logic file could be matched with the nick names and descriptions I have compiled.

So far. I don't see how, Such a feature would sure save trouble.

thanks

Cal
 
You might know that this MMI200 has one very significant short coming.

It can not be programmed while the connecting cable to the plc is installed in the plug. That means removing the front panel to disconnect. (Nope, disconnecting only at the PLC is not enough, the entire cable must be removed)

Also, the PLC can not be monitored while the MMI-200 is connected. They both use the same 15 pin port. A concession to the time I suppose. There is likely a module that overcomes this exclusion, but I don't have one.

On another aspect, I have not been able to toggle bit status from the soft ware. (I read the instructions in the manual) perhaps I have over looked something. There was mention that the 311 series 90/30 does not permit "forcing" a bit. but indicates that toggling should be possible. This would allow me to see what happens when I/Os were flopped.

Regards

Cal
 
The CPU311 was the entry level model to the 90-30 line. Instead of a CPU module there is a chip in the baseplate. It leaves all five slots available for I/O modules but is not expandable. Those five slots are all the I/O you can fit into it. And no, you can't force the I/O. You can only toggle memory bits that aren't otherwise controlled by the ladder logic. The F12 key will toggle the bit under the cursor when you're online and "Equal" with Logicmaster software.

One trick you could try if you need to turn %I bits on or off is to download a configuration file that maps the actual input module to a different address than what the program wants. With that configuration in place, there won't be anything writing to the I% addresses used in the program and you'll be able to toggle them on or off.

In Logicmaster you can print a usage table which might cover what you're after. I think it can either global in scope or limited to a single block.
 
The CPU311 was the entry level model to the 90-30 line. Instead of a CPU module there is a chip in the baseplate. It leaves all five slots available for I/O modules but is not expandable. Those five slots are all the I/O you can fit into it. And no, you can't force the I/O. You can only toggle memory bits that aren't otherwise controlled by the ladder logic. The F12 key will toggle the bit under the cursor when you're online and "Equal" with Logicmaster software.

One trick you could try if you need to turn %I bits on or off is to download a configuration file that maps the actual input module to a different address than what the program wants. With that configuration in place, there won't be anything writing to the I% addresses used in the program and you'll be able to toggle them on or off.

In Logicmaster you can print a usage table which might cover what you're after. I think it can either global in scope or limited to a single block.
Steve

Toggling a bit that isn't connected seems like a silly thing to do ;-)

I'm set with a printed list of references used, How can I get the list to show up in the Variable Declarations? a .cvs file perhaps ?
 
The CPU311 was the entry level model to the 90-30 line. Instead of a CPU module there is a chip in the baseplate. It leaves all five slots available for I/O modules but is not expandable. Those five slots are all the I/O you can fit into it. And no, you can't force the I/O. You can only toggle memory bits that aren't otherwise controlled by the ladder logic. The F12 key will toggle the bit under the cursor when you're online and "Equal" with Logicmaster software.

One trick you could try if you need to turn %I bits on or off is to download a configuration file that maps the actual input module to a different address than what the program wants. With that configuration in place, there won't be anything writing to the I% addresses used in the program and you'll be able to toggle them on or off.

In Logicmaster you can print a usage table which might cover what you're after. I think it can either global in scope or limited to a single block.
I've only got 4 of the five slots filled, and even with that, high densitylogic modules. logic and relays relays. so this "entry level" unit is fine. And still room to add a module if needed.

I was thinking that perhaps the TCP/IP "network" connectivity module would allow talking with the PLC while the MMI panel remained connected

It's been a long day with this unit, and there is still a bunch of reading to do (Appendix I)

As usual. may thanks for the assistance.
 

Similar Topics

Hello All, A coworker and myself are currently trying to figure out how we would read a register on our fanuc robot though our crimson G306 HMI...
Replies
2
Views
471
I have read every post I can find on how to interface an Automation Direct C-More EA9 series HMI to a FANUC robot with no luck. Some say it is...
Replies
8
Views
3,089
i got one and it has nothing inside, application software. i feel there should be some kind of application to run the HMI logic. i want to...
Replies
1
Views
948
any one worked on this QP ge fanuc?i got one and it has nothing inside, application software. i feel there should be some kind of application to...
Replies
2
Views
1,235
any one worked on this QP ge fanuc?i got one and it has nothing inside, application software. i feel there should be some kind of application to...
Replies
9
Views
2,511
Back
Top Bottom