Festo/Omron memory locations and printer interface Epson FX-80 ladder logic

My Festo PLC programmer is called E.PRG. I now found an E.PRT-M201 which is a printer interface for a later PLC like Sysmac C2000 (1988) to mainly print ladder logic. I first haven’t found any info but soon found Omron C500-PRT01 and its manual which is obviously the same. It supports Epson FX-80 and Graphtec (Watanabe) plotters. It can be mounted to a PLC rack (=“PC”) and Graphics Programming Console (GPC). There are 3 different memory packs per PLC depending on what someone wants to print. I posted a pic of a GPC here

Some more octal PLC programming devices - #3 by mainframetom

There are printout samples of ladder diagrams. It’s also possible to print out in simple ASCII characters for other printers, missing cross-reference list and comments. Here’s a comparison of ASCII and EPSON printouts and the mnemonic list (same contents)

00000 LD         00000
00001 AND        00001
00002 OR         00500
00003 AND  NOT   00100
00004 OUT        00500
00005 LD         00500
00006 MOV  (21)
               DM 0000
                   010 
00007 LD         00002

Very interesting are the samples of memory dumps. DM contents (Data memory) and file memory. Both almost the same. A block of the file memory consists of 13 rows of 10 words (16 bit). 128 words + 2 sign words including management control data and signs for write protection and deletion.
I first thought that these all are Epson control codes for one page and would be the same as the other samples, but I now think that these are memory contents of the PLC. It starts with this

8432 4328 3E54 524E 4323 4324 4805 4852 328F 4224.

So I checked the manual of the Omron C2000 PLC (396 pages). There are 11 memory/data areas. Most of them can be accessed by either bits or words. The first is the IR (Internal relay, 237 words, to control i/o points, timers, counters, temp etc). The 2nd area is similar and holding flags like the arithmetic flags (carry=bit 4 of word 255) and data transfer flags.
I found an ebook elsewhere. The PLC setup area starting at word 6600 (DM memory) 6600: startup Mode. (program/monitor/run). Might be a different OMRON PLC.

When manually disassembling the above words, I have problems.
84 is SFTR (creates a single- or multiple shift register) manual p. 135
There are 3 operand words, first the control word (only bits 15-12 including the shift direction). Is the next word 3243? Or 4328? But both have bits below 12.
I think the 84 is not an instruction but that all words are just operands as an example on p 103 suggests. Same on the mnemonic list above. DM 0 and earlier MOV (21).
And instructions should be words as well (instruction byte and definer byte) and are probably in the Program Memory (PM) and not DM.
So needs further investigation, I have to try the tools I have or search for more. Maybe the words are just random.

I have OCRed all the words and put in a Hex editor. No notable text (A=41). And I think I haven’t found EPSON code (27 84).
Understanding the design and memory locations of a similar, early device (same brand) might help with my device. But with that many memory areas and bitwise storage…

I was right.
The DM section is obviously just user data /raw data, so printer content in this case.
The DM section is device dependant and might have predefined default values. I’ve read some manuals of Omron peripherals which are a bit more specific. The DM section always have full words.

The two-axis position control unit has at
DM 1000: 41 12 (maximum speed (x) Address 411
DM 1001: 00 05
DM 1002: 00 00

So the left 3 digits of the first word is the address. Also true for later words (different amount of words).

The Ladder program i/o unit has at
DM 060 Bits 8-15 Minutes (0-59) and at bits 0-7 seconds 0-59
DM 061 Date 1-31 - Hour 0-23

The question is still what the data is for the printer. Might be a unique protocol as it has to handle Epson printer, the plotter and ASCII data. Or could be something like BMP.
As there are just 2 different printers, there might be a converter, maybe on the memory packs. And maybe someone needs an additional code stored in the program memory area.

Very interesting is also the ASCII Unit where someone can program in BASIC and ASM (also make use of DM). Here are the manuals, this is W186

https://www.edata.omron.com.au/eData/PLCs/C500/

The Epson Fx-80 is quite a versatile printer - I used to own one and at one point wrote code to drive it in graphics mode to get it to print images from my BBC Micro and Apple II computers. It’s effectively a 9x9 matrix but through software you can make it look like 18x18. Various word processing programs could also use it in graphics mode to give you many different fonts and text sizes too.

So getting it to print “normal” characters like --()-- is easy using it’s built-in fonts, but driving it in graphics mode to make the ladder more pretty isn’t hard - just needs a bit more software on the host to do it… And turning a screen bit-image into printer data isn’t that hard as you’ve already generated the bit-image, so scrape it off the screen 9 vertical pixels at a time and throw it at the printer…

Back then (1980’s) every printer maker had their own protocol for driving DMPs in graphics modes, but it was often consistent over the range, so the FX-80, Fx-100 and other Epson printers of the time all more or less worked the same way, but other DMP printers like HP, Canon all had their own set of magic codes - which were all quite well documented.

-Gordon

1 Like

Yes, thanks. But it’s still the question how to interpret or convert the data.
Or how a “graphics” export file from an Epson looks like.
There is an FX-80 emulator/converter, but needs an Apple II emulator as well. I haven’t tried it yet.

It’s not that important, if it’s just printer data and not PLC data/instructions. But still interesting.

I’ve just tried it on the Omron software (Syswin 3.4, Windows 32 bit only).
It’s possible to open these DM area memory files (extension is .DDM or DEM for expansion) but I got a bad file error.
Then I’ve manually edit a file in that specific editor, put some few words and save it. It has a special header.

The file has a fixed length 49,172 bytes. Header and footer has the magic number “MIKE”. The Header is 16 bytes starting with MIKEDDM and has 3 more bytes (4D 49 4B 45 44 44 4D 00 00 00 00 FF FF 5F 00 00) . Not sure what FFFF5F is, Maybe a version number.
The real data/words then starting at 10h.

The instruction list/mnemonic list is a bit different (at least on that version) and has a point within the operands. It’s possible to save as earlier version like 2.1 (same extension). Not sure what I can do with it without a full program code and without an attached PLC.

I don’t have an FX-80 printer but maybe I find a driver for WINXP and maybe can export a printer file.

I’m still using the one I bought in the early 1980s. A RIFA cap blew up at one point, but with that replaced it’s as good as gold.

I’ve installed an FX-80 driver under WinXP and printed out some samples under my Omron software and also simple ASCII text and a bitmap. All in both text and graphic modes. I also made a print out in an Apple II emu.
To make it short, an Epson dump looks different than my Hex sample from the printer interface manual.
Under windows there’s a header looking like this

@
t6RP2CF

Jñ LELqq    øù!
JLELóó

There are some non-ASCII characters between some characters. The sample above is from an text output. Files are larger than the original text (luckily not compressed), graphic files are much larger. Same header. Header or the first line below probably contains the font and portrait/landscape mode and if graphic mode.
Almost each line starting with JL. And one or more non-ASCII characters, (1B 4A 16 1B 4C 94 02).

The dump from an Apple II emulator looks different. No header, or header is AA (0D 0D 41 41 0D 0D 0A 0A). Many lines starting with LL.
I used a greeting cards software called Print_Shop mentioned on the emulator. Funny is an animated text with “Thinking” and “Printing” with colorful lines.

Print_Shop_000000004

The FX-80 emulator on github (EPHEX-80) doesn’t work with any output, it should convert to SVG. It uses linapple and a different virtual printer interface.

So it’s still unclear how the Omron hex file works and what it respresents. Maybe a unique protocol. I have to re-read the manuals especially the instructions. Maybe I did something wrong. The DM memory section is not converted and I think can’t be printed. There are different addressing modes (like indirect) and might depend on hardware setup (printer interface probably missing) along other issues (missing main code).

The Omron software is comfortable. Someone can click, what to print (like cross reference list, PLC setup), choose text/graphic output and font. A text output has the same header. The ladder diagram has some wrong characters, especially lines


ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
³Ladder Diagram - 1:2    DEMO2CV.SWP   5.01.80    17:12:47   Page 7³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
                                    ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
ÃÄ                 ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄŽ!%SET(016)  ³
                                    ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄŽ