PLC memory allocation

lesmar96

Lifetime Supporting Member
Join Date
May 2017
Location
PA
Posts
520
Hello I am doing some research on plc memory allocation, including RAM, EEPROM, volatile and non-volatile variables etc. I would like to keep my research as brand generic as possible.

Any pointers to good resources to help me better understand the processor/memory side of the plc hardware?
 
Are you looking at the actual HW, or the memory available to the user? These are very different things. I'm not aware of a ton of data out there for the actual HW, as most of the details are proprietary. User space memory models can be hard to compare between brands: ome separate data and code some don't, some separate ram and rom some don't, some just count "steps".


You might have some luck looking through hacking conferences for product teardowns, where they buy a device on the cheap, tear it apart, and look into the specific chipsets involved for vulnerabilities, see if they can reprogram the chips, etc.
 
I was thinking of the typical memory map available to the user. Sorry for the confusion!
 
Why do you need to do this research?

Because I enjoy plc programming, but am primarily self-taught. I would like to have a better grasp of how the memory works.

Like why do some processors require to create a boot application or "burn" boot files and others don't?

or why do some require batteries and others seemingly do not?

Some processors have a "write" lifetime to the EEPROM? others do not?

Sorry, if these questions are too basic, but hopefully it helps you understand where my questions are. Thanks!
 
The main problem that PLC manufacturers only give limited information on the guts of the PLC & memory, This usually applies to the older hardware, for example Mitsubishi did show the memory map & in those days it was all RAM some battery backed i.e. PIO area, Bit memory Word memory etc. Siemens (S5) memory was like a hard disk (although battery backed Ram) all blocks (with the exception of in-built standard ones) were allocated at download but may have been split into areas, for example, there was a sort of FAT table so when a block was downloaded, it was put into un-allocated ram, then the file allocation was (address where the block sits in the memory was written) is updated & if the block existed that allocation was removed (or it could have been overwritten. That was the power of the S5, all blocks did not exist until downloaded, this allowed a whole program to be downloaded while in run (providing you did it in the right order), unlike most other platforms that on-line editing could only be done in small chunks there was no limit, the early IDE's however, you had to compress the memory when full as the old blocks that were replaced were not deleted, the later ones did this automatically.
The other plus was you could create blocks in PLC code on the fly, for example, I know of a program where any spare memory was allocated to a massive Data block for a critical printer buffer the program in the start up organisation block checked available space, created a block to fill that space & wrote the file allocation (only if it did not exist already), however, this posed a problem that no on-line edits could be made as the memory was full or even an off-line download became difficult, for example it was common for the engineers to upload the DB's so they had a copy of the actual values, this meant that their copy of the program could not be downloaded the way to do it was to do it in stop by deleting the printer DB, download the blocks required then a bit of a complicated cold & warm re-start to generate the printer block.
You will have to do a lot of research to find this information, and I believe many newer platforms may not have dedicated areas i.e. memory map but is generated at download.
Going back to the later Mitsubishi, these do have fixed allocation but one other feature is that file memory can reside in a couple of places, these do not exist in the PLC but in the parameters there is a function to create the file memory either in standard battery backed ram or on a memory card.
 

Similar Topics

Hi all, I am trying to add a function block to a PLC program written for an Omron CJ1M PLC. However, CX Programmer has thrown a compile error...
Replies
0
Views
5,323
Is it possible to trend PLC memory usage in the historian? We are getting few faults on the compactlogix controllers. They are old running V17. I...
Replies
8
Views
2,051
Hello to everyone. I hope you are doing well. I have a KINCO PLC HP043-20DT. I'm communicating through free-protocol instructions XMT and RCV...
Replies
0
Views
1,241
I would like to create an AOI which throw me an alarm when cpu usage is more than 75%. Since GSV doesn not support this functionality I am...
Replies
7
Views
2,699
Hi All, I have an Omron PLC program which is copied from the memory card. Could you please tell can I open the PLC program using CX programmer or...
Replies
0
Views
955
Back
Top Bottom