Resourceless servers

Starting from 1.4.0 Snap7Server can work in resourceless mode, i.e. you don’t need to share resources (DB, E, A…) with it : On every read/write request a callback is called passing it the TAG (Type of memory E,A,DB..,DB number if any, Start, Size, WordLen), and a pointer to the internal server area to read/write your data “on demand”

The resourceless mode is triggered automatically when you call Srv_SetRWAreaCallBack() function passing it the address of your callback (and an user pointer that can be useful to be casted onto an object)

The 1.4.0 wrappers were updated to reflect this new mode and I wrote some examples on how to use this feature, that however is very simple.


1.   Protocol converter.
Into the callback you can write a routine that accesses to other hardware (such as Modbus).

2.   HMI analyzer.
Into the callback you don’t write anything (i.e. the write requests will write nothing and the read requests will return all zeroes to the client).
Into the Events Log you will see the list of variables referenced by the HMI.

3.   Flow Splitter/Router.
Into the callback you can insert some function calls to S7Clients that access to Physical PLCs.
To allow this now it’s possible to force the the PDU Length that the server has to negotiate in order to match the various PDU sizes.



1.   When in resourceless mode, all other system requests (read SZL, Get/Set Time and so on) are still handled by the Server.

2.   When in resourceless mode, all the block info requests (DB Get Info, Directory and so on) will return to the client the infos about the resources that you shared (if any) even if they are not physically used.