Applies To:
  • CitectSCADA 5.xx

I am using a memory device with the OPC protocol and getting a #MEM on some of my string data types. I only have a few strings Tags defined. Why is this happening? 

The Memory I/O Device allows the user to configure Variable Tags with "real world" addresses for the chosen protocol (eg. OPC). However, reads and writes to the I/O Device are actually handled by a dedicated Memory Device driver.

In Citect v5.21 you are restricted to 255 Tags of the STRING type when using memory devices. In Citect v5.30, you can have 510. In Citect v5.31 or later, the number has been increased significantly.

However, the OPC and other Citect Tag Based Drivers (TBDs) compile with the Tags address passed as the Variable.dbf record number. So if for example, you have one string as the 600th Tag in your Citect v5.30 project, then it will be passed with address 600 and so fall outside the maximum address of 510 and result in a #MEM error. To avoid this happening, the user may need to sort their Variable.dbf file to place all STRING Tags at the top of the file.


If you have a networked system using the OPC driver, every copy of the variable.dbf must be exactly the same.

Contact Citect Customer Service if you are unsure of how to sort the Variable.dbf file and ensure you make a backup before making any changes.