The Rockwell ACD file is an archive file that contains all the files that are used by RSLogix/Studio 5000.
It consists of a number of text files containing version information, compressed XML files containing project and tag information as well as a number of database files.
To extract the file use the acd.unzip.Unzip class
from acd.unzip import Unzip
unzip = Unzip('CuteLogix.ACD')
unzip.write_files('output_directory')
Extracting the records from a database file is still a work in progress. However, there is some consistencies across the database files.
To read each of the records and store them in a byte array use the DbExtract function
db = DbExtract("build/SbRegion.Dat")
The SbRegion file seems to be fairly basic, to then parse each record from a DbExtract use code similar to that below.
db: DbExtract = DbExtract("build/SbRegion.Dat")
records: List[SbRegionRecord] = []
for record in db.records:
records.append(SbRegionRecord(record))
You can then read the string format for each rung. I haven't seen anything other than rungs yet, but hopefully they are stored in a similar format.
records[0].text
will contain something like
LOWER(@f060d7ef@[6],@f060d7ef@[7]);
The tag references are stored in another database.