I'm working for an organization that uses 100+ Fanuc controlled CNC milling machines that we purchased from an OEM. We've got three types of controls (due to the long period over which they were purchased): 21-B, 21i, and 0i.

In terms of needed functionality, they work the same across the board. The 0i machines aren't doing anything different than the 21 machines in production terms. Since that is the case, we have been creating generic ladders for each of the PMC Types found on those three controllers. SA1/RA1 for the 21s, SA5 for the 21i, and SB7 for the 0i.
The annoyance I have is that the SA1 is extremely limited in terms of Ladder-III editing. More specifically, I am annoyed that it has no ability to support subprograms and that several functions are not available.
I read in the manuals that both SA1/RA1 and SA3/RA3 are supported on the 21-Bs. SA3 does support subprograms and the missing functions but because the controller is expecting SA1, it throws ER04: PMC TYPE UNMATCH if I load in a SA3 ladder.
If I could get SA3 to work on the 21s, I would be able to have a single universal ladder that only required a PMC Type change in Ladder-III to run on any of our controllers.

My questions are:
1. Is the PMC Type the controller expects hardware or software governed?
2. If it's software governed, does anyone know how you would go about changing it?

Thanks.