日本的plc将12位模拟量输入模块转换后的数(0~4095)去掉尾数后为0~4000,对应于模块的模拟量的量程(例如0~10V)。美国的PLC(例如S7-200和GE的PLC)将4000左移3位,12位模拟量输入模块转换后的数为0~32000,接近16位正数的最大值32767。
西门子S7-300PLC模拟量输入模块一般采用积分转化法,转换后的二进制数的位数可以设置为9~16位(与模块的型号和组态有关),如果小于16 位(包括符号位),则转换值被自动左移,使其最高位(符号位)在16位字的最高位,左移后未使用的低位则填入0。设转换的精度为12位加符号位,左移3位后低3位为0,相当于实际的值被乘以8。这种处理方法使转换后的数值与模拟量的关系与组态的A/D转换的位数无关,便于对转换值的后续计算和处理,例如PID控制功能块FB 41需要将来自模拟量输入模块的整数转换为0~100.0%的浮点数。
下表给出了模拟量输入模块的转换值与以百分数表示的模拟量之间的对应关系,其中最重要的关系是双极性模拟量量程的上、下限(100%和−100%)分别对应于模拟值27648和−27648。单极性模拟量量程的上、下限(100%和0%)分别对应于模拟值27648和0。
有人可能要问,为什么是27648呢?我认为可能是制定规则的人担心实际的模拟量输入可能会超过选择的量程,因此在量程的上、下限(-100%~100%)之外设置了18.5%的裕量。为什么是27648而不是别的数呢?因为27648的十六进制数6C00H是个较特殊的数。
不能认为模块的分辨率为1/27648,分辨率还是取决于模块设置的实际精度(转换后的位数)。