dvp60ES22+16XM2+06XA-E2,,也就是说主机加一DI和一AIO扩张模块,DI/DO不是今天的重点,忽略。
首先基础知识(手册原话):
1、扩张模拟量模块最多8个,且不占用数字量地址。编号是0~7、
2、AIO支持多种模拟量形式,+/-10V,+/-5V,0~10V,0~20mA等,所以需要在开机的时候选择你得传感器输入信号的形式进行设定,且不能被更改。
3、AIO是16位,范围及0~32000或-32000~32000.浮点是32位。
现在开始我们的项目。
模拟量通道在进行输入输出时需要进行通道参数设置,根据我们的要求和对照说明书,我们需要修改参数只有通道接收和发送模拟量的类型,使用to指令,将参数写入控制器,(to 模块号 cr号 数据 一次写入的笔数),模块号是0,因为有4个输入,cr号一次是2,3,4,5,需要设定的模式是0-10v,所以参数数据是2,一次写入一笔,如图:
说明书图
实例图:
最后要求参数设置完后,不允许随意更改,所以需要进行锁定。使用的cr号是40,其它相同
如图。
这样我们就将外部的0-10v对应到了0-32000,接下来我们需要读取模拟量值了,使用from指令
From 模块号 模块CR值 存放读取值位置 笔数
这里第一个模拟量模块号0,CR值读的是实时值CR=20,这里我没把通道采集数据的平均次数设为1再读取平均值的方法。存取位置D50(随意的未被使用的d寄存器)笔数4笔,一次性全部读出,这些数据将在D50-D53内。
如图:
现在我们需要进行数据转换了,因为32000是个word,没有小数,我们计算和显示时需要小数,所以后面我们需要数据转换,使用FLT可以将其转到浮点数。
其后使用的除法乘法指令都必须是双字指令。如果采集过来的数据只需要整数显示,你也可通过INT指令将浮点转到整形。此处也可通过HMI完成,在HMI里设置采集数据方式为dword,小数位0位即可。
如图: