IPAM3402如何读取模拟量通道采集值和控制模拟量输出通道?
[复制链接]
一次读取所有8个通道的采集值发送指令:01 04 00 40 00 08 F0 18 其中01为模块地址, 04读取输入型模拟量的功能码, 00 40输入型模拟量的通道起始地址(AIN0的寄存器地址), 00 08读取的模拟量的通道数,这里表示读取所有8个通道,F0 18为crc校验码 模块返回:01 04 10 06 6A 06 12 05 EC 05 94 04 AA 04 54 04 32 03 E9 B3 0C 其中01为模块地址, 04为读取输入型模拟量的功能码, 10为返回数据的字节数, 06 6A 06 12 05 EC 05 94 04 AA 04 54 04 32 03 E9为模块采集到的电压值,每一个通道的采集值占用两个字节,高位在前,上面16个字节按顺序是AIN0~AIN7的采集值,其中06 6A为AIN0(第零个通道)的采集值,转换为十进制为 06 106,把两个字节变为一个字:06*256+106 = 1642 ,模块为-10v~10v的量程,出厂设置为模拟量数据输出,所以通道零的电压是:1642*0.001=1.642V(通道零上连接了一节干电池)。 B3 0C为crc检验。
一次读取单个通道的采集值发送指令:01 04 00 40 00 01 30 1E 其中01为模块地址, 04读取输入型模拟量的功能码, 00 40输入型模拟量的通道起始地址(AIN0的寄存器地址), 00 01读取的模拟量的通道数,这里表示读取1个通道, 30 1E为crc校验码 模块返回:01 04 02 06 6A 3A BF 其中01为模块地址, 04为读取输入型模拟量的功能码, 02为返回数据的字节数, 06 6A为模块采集到的电压(电流)值,每一个通道的采集值占用两个字节,高位在前,上面2个字节为AIN0的采集值,其中06 6A为AIN0(第零个通道)的采集值,转换为十进制为 06 106,把两个字节变为一个字:06*256+106 = 1642 ,模块为-10v~10v的量程,出厂设置模拟量数据输出,所以通道零的电压是:1642*0.001=1.642V(通道零上连接了一节干电池)。 B3 0C为crc检验。
读取第N通道的采集值读取AIN0的采集值的指令是:01 04 00 40 00 01 30 1E 把起始地址00 40 改为00 41就是读取AIN1的采集值(注意CRC校验码也要随着改),以此类推。 起始地址和读取通道数可以随意搭配,只要保证其实地址为00 40~00 4b,起始地址+通道数小于等于00 4b就可以了。
一次读取所有2个通道当前的输出值发送指令:01 03 00 60 00 02 C4 15 其中01为模块地址; 03为读取保持型寄存器的功能码; 00 60 为读取的通道的起始寄存器地址; 00 02 为读取的通道数量,02表示所有2个通道; C4 15 为CRC校验码,低位在前。 模块返回:01 03 04 00 56 00 98 1B 89 其中01为模块地址; 03为读取保持型寄存器的功能码; 04为返回数据的字节数; 00 56 00 98为2个输出通道当前的输出值,每个通道占用两个字节,高位在前,例如:00 56为AO0的输出值,0098为AO1的输出值。 00 56代表的输出电流电压值的换算方法: 将00 56转换为十进制 转换后为 00 86, 把两个字节变为一个字 00*256+86 = 86 出厂默认输出0~10v电压,把86转换为电压 86/4095*10 = 0.210 v 设置的量程和数值的对应关系: 输出量程 对应数值 0~10V 0~4095 0~20MA 0~4095 4~20MA 819~4095 1B 89为CRC校验码 控制当个通道的输出值:发送指令:01 06 00 60 00 56 09 EA 其中01为模块地址; 06 为写入保持型寄存器的功能码; 00 60 为写入的通道的起始寄存器地址,60表示AO0的寄存器地址; 00 56 为需要写入的数值,00 56代表需要输出电压0.210V。设定需要输出的电压电流值为VO,输出量程为FS(输出量程可配置为0~10v,0~20ma和4~20ma),则需要写入的数值的公式: 写入的数值 = VO/FS * 4095
09 EA 为CRC校验码,高位在前。
模块返回:01 06 00 60 00 56 09 EA 模块返回的数据和写入的数据相同表示模块写入成功,如果不同则代表写入失败。 一次写多个通道的输出值发送指令:01 10 00 60 00 02 04 00 56 00 98 14 3D 其中01为模块地址; 10为同时写多个通道的功能码; 00 60 为需要写入的通道的起始地址(及写入的这些通道的第一个通道的寄存器地址); 00 02 为需要写入的通道的数量(这里表示写所有4个通道); 04 为需要写入的字节数(每个通道2个字节,这里是通道数的两倍); 00 56 00 98 写入通道的数值,每个通道两个字节,高位在前,从左往右分别是AO0~AO1的数值,数值换算电压的方式见上面控制当个通道值。 14 3D 为CRC检验码。 模块返回:01 10 00 60 00 02 41 D6 其中01为模块地址; 10为写入多个通道的功能码; 00 60为写入的起始地址; 00 02为写入的通道数量; 41 D6为CRC校验码。
|