发表于:2013/7/10 10:42:38
#0楼
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校验码。
一次读取所有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校验码。
晋江机场电子科技有限公司(dzgs.qzair.com),一家专业生产计数器、数据采集模块、隔离变
送器、信号隔离模块、开关量模块、数字量模块、模拟量模块、温度变送器、计数测频模块的
厂家。
送器、信号隔离模块、开关量模块、数字量模块、模拟量模块、温度变送器、计数测频模块的
厂家。