IPAM3402如何读取模拟量通道和控制模拟量输出通道?

qzairdzgs   2013-7-12 10:43 楼主

IPAM3402读取模拟量通道采集值和控制模拟量输出通道

一次读取所有8个通道的采集值

发送指令:01 04 00 40 00 08 F0 18    

其中01为模块地址,

04读取输入型模拟量的功能码,

00 40输入型模拟量的通道起始地址(AIN0的寄存器地址),

00 08读取的模拟量的通道数,这里表示读取所有8个通道,F0 18crc校验码
模块返回: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 6AAIN0(第零个通道)的采集值,转换为十进制为 06 106,把两个字节变为一个字:06*256 106 = 1642 ,模块为-10v~10v的量程,出厂设置为模拟量数据输出,所以通道零的电压是:1642*0.001=1.642V(通道零上连接了一节干电池)。

B3 0Ccrc检验。

 

一次读取单个通道的采集值

发送指令:01 04 00 40 00 01 30 1E

其中01为模块地址,

04读取输入型模拟量的功能码,

00 40输入型模拟量的通道起始地址(AIN0的寄存器地址),

00 01读取的模拟量的通道数,这里表示读取1个通道,

30 1Ecrc校验码

模块返回:01 04 02 06 6A 3A BF

其中01为模块地址,

04为读取输入型模拟量的功能码,

02为返回数据的字节数,

06 6A为模块采集到的电压(电流)值,每一个通道的采集值占用两个字节,高位在前,上面2个字节为AIN0的采集值,其中06 6AAIN0(第零个通道)的采集值,转换为十进制为 06 106,把两个字节变为一个字:06*256 106 = 1642 ,模块为-10v~10v的量程,出厂设置模拟量数据输出,所以通道零的电压是:1642*0.001=1.642V(通道零上连接了一节干电池)。

B3 0Ccrc检验。

 

读取第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 56AO0的输出值,0098AO1的输出值。

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~10v0~20ma4~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 D6CRC校验码。

 

回复评论 (1)

我以为问题贴呢,原来是技术贴,顶一个。
点赞  2013-7-12 19:14
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复