FLEX4011八通道模拟量(热电偶/电压/电流)采集模块用户手册目 录1 产品介绍 (3)2 电气连接及安装 (5)3 通讯协议 (9)3.1 Modbus RTU/ASCII通信协议 (9)3.1.1 Modbus寄存器地址映射 (9)3.1.2 读取数据以及处理 (13)3.2 ADAM研华通信协议 (16)3.2.1 研华通信协议命令 (16)3.2.1.1 读取单通道的数据命令 (16)3.2.1.2 读取所有通道的数据命令 (18)3.3 ASCII码对照表 (20)4 设置软件使用说明 (20)4.1 设置软件与处于设置状态的模块通信 (20)4.2 串口通信参数如何设置 (23)5 使用串口调试软件读取数据 (24)5.1 Modbus-RTU通信协议 (24)5.2 ADAM研华通信协议 (24)附录A (26)A.1 模拟量数据格式 (26)A.2 模拟量输入范围 (26)1 产品介绍FLEX-4011热电阻采集模块是FLEX-4000系列智能测控模块之一,广泛应用于温度测量的工业场合,提供了多种热电偶信号的采集以及转换,线性处理并转换成线性化的数据值,经RS-485 总线传送到控制器。
FLEX-4011具有八个测量通道,可连接J, K, T, E, R, S, B, N, C, D, G, L, U等多种规格热电偶进行测量。
模块内部各处理单元之间提供了高于1500V 的电气隔离,有效的防止模块因外界高压冲击而损坏,为工厂自动化以及楼宇自动化提供了高效的解决方案。
模块主要特点如下:· 八通道模拟量(热电偶/电压/电流)输入· 可由软件设置传感器的类型以及模块参数· 支持多种标准的热电偶· 宽电压范围输入(18-36V DC),功耗低· RS-485网络连接,支持Modbus RTU/ASCII协议· 内置看门狗,运行稳定可靠· 外部供电/RS485通讯/模拟量输入之间3000V电气隔离· 宽温度范围运行· 安装方便,标准导轨卡装或螺钉固定2 电气连接及安装端子说明图2 接线端子拨码开关模块具有一个10位的拨码开关,说明如下。
拨码开关第1-8位:用于设置Modbus地址,可设置范围为1-255。
拨码开关注1:当拨码开关全部为OFF时,模块的地址由内部寄存器设置,详见通信协议章节。
模块处于设置模式时,模块的Modbus地址默认为0,通信配置默认为:9600,N,8,1(9600bps,无校验位,8个数据位,一个停止位),方便用户与模块进行通信。
这是设置模式与运行模式的唯一区别。
运行模式时,如果模块的外部拨码开关设置的Modbus地址为0,则实际的Modbus地址由模块内部的地址寄存器决定;如果模块的外部拨码开关设置的Modbus地址不为0,模块的Modbus地址由拨码开关第1-8位(或模块内部寄存器)决定;通信配置(波特率,校验位,通信协议)由模块内部寄存器的设置。
电源连接供电为18-36V宽范围直流,建议使用24V 直流电源图3 电源接线注:可连接18~36V直流电源供电,但电源功率必须满足模块要求。
如在标准24V供电的情况下,模块功耗小于2W,在选择电源时要选择大于2W的电源模块。
当为多个模块供电的情况下,电源功率应大于(2W*模块数)。
传感器连接图4 传感器接线对于电压,热电偶信号输入,请将模块跳线设置到“2-3”之间。
对于电流信号输入,如果用户外接100欧姆0.1%精密低温飘电阻,需要将模块内部的跳线设置到“2-3”之间;如果不外接100欧姆电阻,用户需要将模块内部的跳线设置到“1-2”之间,此时内部100欧姆电阻接通。
通讯连接图5 主设备与模块通过RS232/RS485转换器连接 注:图中RS232/485转换器使用ADAM4520作为示意,可根据需要自行选择。
图6 RS485网络通讯连接注1:终端电阻应根据通讯电缆的特性阻抗选择,一般情况下选择Rt=120Ω注2:通讯电缆的屏蔽层可与FLEX模块通讯地(TG)连接3 通讯协议3.1 Modbus RTU/ASCII通信协议Modbus是一种串行通信协议,是Modicon于1979年为使用可编程逻辑控制器(PLC)而发表的。
事实上,它已经成为工业领域通信协议标准,并且现在是工业电子设备之间相当常用的连接方式。
Modbus在工业现场中有着广泛的应用。
Modbus协议是一个主/从架构的协议。
有一个节点是主节点,其他使用Modbus协议参与通信的节点是从节点。
每一个 从设备都有一个唯一的地址。
3.1.1 Modbus寄存器地址映射3.1.2 读取数据以及处理以读取8路温度数据(下表中红色粗体)为例。
通信前请先确认模块的Modbus地址,通讯配置默认为:9600,N,8,1(9600bps,无校验位,8个数据位,一个停止位)举例:读寄存器0x0000H-0x0007H,即八通道温度测量值(负值按补码表示)Modbus-RTU数据格式呼叫与应答均用二进制字节的数值表达,总线上传送的信息时间性要求十分严格。
因RTU方式所有内容均可能为信息,因此无法用特殊字符表示数据块的起始和结束。
信息起始和结束的定位靠预先定义的无传输字节时间宽度来辨别,通常取传输3.5个字节所需要的时间。
显然,该宽度与通讯波特率有关。
当总线上呈现3.5个字节周期或更长的静止期后,出现的第一个字节即为另一个信息的起始点,该字节总是针对某一从方设备的地址信息。
一串信息内容字节过后再次出现3.5个字节周期宽度,表示此串信息结束。
当接收到设备返回的21个字节数据后,进行以下crc计算操作,其中num(输入参数2)= 21//-------------------------------------------------------------------------------------- //CRC计算C51语言函数如下//输入参数1:snd,待校验的字节数组名//输入参数2:num,待校验的字节总数(包括CRC校验的2个字节)//函数返回值:校验失败时返回非0值。
校验成功返回0。
//-------------------------------------------------------------------------------------- unsigned int calc_crc16 (unsigned char *snd, unsigned char num){unsigned char i, j;unsigned int c,crc=0xFFFF;//crc初始化为0xFFFFfor(i = 0; i < num; i ++){c = snd[i] & 0x00FF;//待发送的字节和0x00FF进行“与”操作crc ^= c; //crc与c做“异或”操作,结果存储于crc中for(j = 0;j < 8; j ++){if (crc & 0x0001) //检查crc最低位是否为1{crc>>=1; //crc右移一位crc^=0xA001; //crc与0xA001做“异或”操作,结果存储于crc中}else{crc>>=1; //crc右移一位}}}return(crc);//返回crc校验结果}得到返回结果为0时那么校验成功,如果校验失败返回为非零值。
校验成功后,使用以下公式计算温湿度(负值以补码表示):第0路温度= (0x00*256+0x63)/10 = 99/10 = 9.9℃第1路温度= ((0xFF*256+0x00)-0xFFFF-0x01)/10 = -3276.8℃(未连接传感器的值或者异常值)第2路温度= ((0xFF*256+0x00)-0xFFFF-0x01)/10 = -3276.8℃(未连接传感器的值或者异常值)第3路温度= ((0xFF*256+0x00)-0xFFFF-0x01)/10 = -3276.8℃(未连接传感器的值或者异常值)第4路温度= ((0xFF*256+0x00)-0xFFFF-0x01)/10 = -3276.8℃(未连接传感器的值或者异常值)第5路温度= ((0xFF*256+0x00)-0xFFFF-0x01)/10 = -3276.8℃(未连接传感器的值或者异常值)第6路温度= ((0xFF*256+0x00)-0xFFFF-0x01)/10 = -3276.8℃(未连接传感器的值或者异常值)第7路温度= ((0xFF*256+0x00)-0xFFFF-0x01)/10 = -3276.8℃(未连接传感器的值或者异常值)负值的判断与处理:如果返回值的二进制最高位为1,那么表明返回的数据是负数,假设返回的值是0xFF05 (16进制,补码),那么其二进制表示为:0b 1111111100000101,其最高位为1,那么表明这个返回值是负数。
处理数值时第一字节高字节为0xFF,第二字节低字节为0x 05,那么温度测量值为((0xFF*256+0x05)-0xFFFF-0x01)/10 =(0xFF05-0xFFFF-0x01)/10=-25.1摄氏度。
如果校验不成功,说明传输过程发生错误,应放弃此次采集到的数据,重新采集。
Modbus-ASCII数据格式呼叫与应答的信息用16进制的字符0~9、A~F表示,每两个ASCII字符组成一个信息字节,字符冒号<:>表示待传递信息的起始处,字符<CR>(回车)、<LF>(换行)表示此信息传送结束。
MODBUS 中的ASCII 码方式多用于实时性要求不高的场合。
ASCII方式校验采用累加和校验方式,即将从机地址开始到串结束的所有数值相加得到一个字节的和的相反数,转换成十六进制形式,附加在串后。
3.2 ADAM研华通信协议研华协议是研华公司为其设备定义的一种通信协议,协议为ASCII码传输,简单直观。
模块支持带有校验字节的ADAM研华数据读取命令,可以读取单通道数据或者全部通道数据。
如果希望使用研华协议作为模块的默认数据读取协议,可先使用设置软件将模块的通信协议设置为“研华ADAM”通信协议,具体请参照设置软件使用章节。
设置后重新上电以使协议生效。
当模块通信协议为“研华ADAM”通信协议时,仅支持数据读取命令,其他设置相关的命令不支持。
3.2.1 研华通信协议命令3.2.1.1 读取单通道的数据命令读取地址为AA的模块的第N通道的测量值。
发送与接收全部用ASCII码表示。
请求: #AAN (checksum) (CR)举例如下:读取01号模块的第0通道数据。