数显电流表的RS485通讯规约是什么东西
数显仪表的通讯一般有RS232,RS485来通讯,简单来讲就是将仪表测量的数据通过通讯的方式上传到上位机显示出来。 B600-AC1-1A1的RS485通讯规约是标准的moudbus通讯规约。传输方式:异步串行通信方式。采用规约:MODBUS从站规约。传输速率:2400 bps,4800bps,9600bps,19200bps,38400bps。传输电缆: 采用带屏蔽的多芯铜导线,接口标准应采用一对双绞线。组成RS-485网络时,双绞线电缆特性阻抗约120Ω,导线电阻应小于0.10Ω/m,导线间电容应小于60pF/m,导线与屏蔽层间电容小于100pF/m 。通信接口:RS-485接口为后面板2个端子。传输距离:1300米。主站数目:1个。从站数目:最多31个。应答时间:大于4个字符时间以下是 MODBUS协议基本规则1. 1 MODBUS协议基本规则以下规则确定在RS485回路控制器和其他RS485串行通信回路中设备的通信规则:1) 所有RS485回路通信应遵照主/从方式。在这种方式下,信息和数据在单个主站和最多99个从站(监控设备)之间传递;2) 主站将初始化和控制所有在RS485通信回路上传递的信息;3) 无论如何都不能从一个从站开始通信;4) 所有RS485环路上的通信都以“打包”方式发生。一个报文就是一个简单的字符串(每个字符串8位),一个报文中最多可含255个字节。组成这个报文的字节构成标准异步串行数据,并按1位起始位,8位数据位,1位校验位,1位停止位的方式传递。5) 主站发送报文称为请求,从站发送报文称为响应;6) 任何情况从站只能响应主站一个请求。1. 2传送模式MODBUS协议可以采用ASCII或者RTU模式传送数据。B600-AC系列智能表仅仅支持RTU模式:1位起始位,8位数据位,1位校验位,1位停止位。1. 3 MODBUS报文结构:每个MODBUS报文都由以下四个部分组成:地址域、功能码域、数据域和校验域。1.3.1 地址域MODBUS的从站地址域长度为一个字节。有效的从站地址范围从1~99。从站如果接收到一帧从站地址域信息与自身地址相符合的报文时,从站执行报文中所包含的命令。从站所响应的报文中地址域为自身地址。1.3.2 功能码域MODBUS报文中功能域长度为一个字节,用以通知从站应当执行何操作。从站响应报文中包含主站所请求操作的相同功能域字节。有关智能表的功能码参照下表。功能码含义功能03读取寄存器读取仪表内部一个或多个当前寄存器值06写一个或多个寄存器将指定数值写入仪表内部一个或多个寄存器内05写一个继电器输出状态将指定继电器输出节点断开或闭合1.3.3 数据域MODBUS数据域采用“BIG INDIAN”模式,即是高位字节在前,低位字节在后。举例如下:1个16位寄存器包含数值为0x1234,寄存器数值发送顺序为:高位字节 = 0x12,低位字节 = 0x341.3.4 校验域MODBUS-RTU模式采用16位CRC校验。发送设备应当对报文中的每一个数据都进行CRC-16计算,最后结果存放入检验域中。接收设备也应当对报文中的每一个数据(除校验域以外)进行CRC-16计算,将结果域校验域进行比较。只有相同的报文才可以被接受。具体的CRC校验算法参照第三章。1. 4网络时间考虑在RS485网络上传送报文需要遵循以下有关时间的规定:1)主站请求报文结束到从站响应报文开始之间的时间最小为10毫秒。2)从站响应报文结束到主站下一请求报文开始之间的时间应大于1000毫秒。3) 通信超时的处理。1. 5异常响应异常报文的处理方式:不予理睬,以适应多机组网通信方式。 还有通讯报文,写寄存器等。这个你可以查看实物来学习下。
RS-485是一种串行通信总线。在要求通信距离为几十米到上千米时,广泛采用RS-485 串行总线标准。每种不同的仪表,厂家会规定不同的通讯规约,按照规约,可以解释仪表输出的数据以及控制仪表工作。通讯规约,简单来说,就是一种数据排列的格式。 智能仪表最初是数据模拟信号输出简单过程量,后来仪表接口是RS232接口,这种接口可以实现点对点的通信方式,但这种方式不能实现联网功能。随后出现的RS485解决了这个问题。1. RS-485的电气特性:逻辑“1”以两线间的电压差为+(2~6)V表示;逻辑“0”以两线间的电压差为-(2~6)V表示。接口信号电平比RS-232-C降低了,就不易损坏接口电路的芯片, 且该电平与TTL电平兼容,可方便与TTL电路连接。2. RS-485的数据最高传输速率为10Mbps。3. RS-485接口是采用平衡驱动器和差分接收器的组合,抗共模干扰能力增强,即抗噪声干扰性好。 4. RS-485最大的通信距离约为1219m,最大传输速率为10Mbps,传输速率与传输距离成反比,在100Kb/S的传输速率下,才可以达到最大的通信距离,如果需传输更长的距离,需要加485中继器。RS-485总线一般最大支持32个节点,如果使用特制的485芯片,可以达到128个或者256个节点,最大的可以支持到400个节点。

变频器的RS485通讯怎么使用?
需要两方面理解通讯:1、通讯硬件接口。目前计算机上的串口是RS232的,你需要买一个RS232转RS485的接口。然后与变频器的RS485接线。2、软件。需要清楚变频器的报文结构,然后网上下载串口调试类的软件,比如串口调试精灵,串口调试助手等,然后根据报文结构写报文,然后点击发送。百度搜索相关串口调试类的软件也是大把大把。3、如果是自己编写串口调试类软件,需要用到串口控件,MSCOMM32.OCX,关于使用你也可以百度搜索。变频器(Variable-frequency Drive,VFD)是应用变频技术与微电子技术,通过改变电机工作电源频率方式来控制交流电动机的电力控制设备。变频器主要由整流(交流变直流)、滤波、逆变(直流变交流)、制动单元、驱动单元、检测单元微处理单元等组成。变频器靠内部IGBT的开断来调整输出电源的电压和频率,根据电机的实际需要来提供其所需要的电源电压,进而达到节能、调速的目的,另外,变频器还有很多的保护功能,如过流、过压、过载保护等等。随着工业自动化程度的不断提高,变频器也得到了非常广泛的应用。
需要两方面理解通讯: 1、通讯硬件接口。目前计算机上的串口是RS232的,你需要买一个RS232转RS485的接口。然后与变频器的RS485接线。2、软件。需要清楚变频器的报文结构,然后网上下载串口调试类的软件,比如串口调试精灵,串口调试助手等,然后根据报文结构写报文,然后点击发送。百度搜索相关串口调试类的软件也是大把大把。3、如果是自己编写串口调试类软件,需要用到串口控件,MSCOMM32.OCX,关于使用你也可以百度搜索。 4、望采纳……

电表 485 通信调试
要针对电表的通讯协议而定,你找电表的通讯协议,按照协议规定的格式发送请求报文。如果连接方式没问题、通讯设置正确、报文正确,就可以收到正确的应答。刚好前几天我连过一个电表,它用的是DLT-645协议,在这个协议中你要注意+30和-30的处理。

hart协议,485,232,貌似他们都是什么协议,具体是指什么呢,在仪表中经常见到
协议是通讯双方对信号格式的约定,而232与485是硬件。两者是两回事。 232,485 是规定的物理接口的形式,可接受的电压,电流形式,什么电压,电平,或者是频率代理1,什么的代理0, 而hart,modbus,是软件的协议,是数据格式,比如一帧数据多大,报文开头是几个字节,是什么含义,数据字节是多少个,如何进行校验等

485通信协议怎么规定
把通讯做成命令,应答的帧形式,最好是帧长度固定。 举个例子,主机发送给从机的数据帧头 命令 参数1 参数2 参数3 参数4 校验和 帧尾从机回复的数据回复帧头 应答命令 结果1 结果2 结果3 结果4 校验和 回复帧尾在从机接收到帧头和命令后,并不进行处理,而是暂存起来,知道接收到帧尾,并接校验通过后,才真正执行。假如从收到帧头起,一定的时间内,还没有收到完整的帧,或者帧校验失败,那么从机用特殊的格式回复。当然,超时时间也可以不从帧头算,从上一个字节算也可以。这样的帧结构就能保证通讯的正确性,一般来讲,帧越长,通讯效率越高,但是占用暂存空间越打,而且出错的可能越大,出错后付出的代价也越大,实时性也越差,而且帧长度超过一定值后,通讯效率也不会再明显增加。帧越短,通讯效率越低,但是灵活。像上面的例子,帧长度是8,通讯效率是62.5%。如果将帧长度改为16,通讯效率变为81.25%下面是源代码:直接拷贝就能够编译通过了。当然要把寄存器改了。只有几行需要改的哈:#include "tot.h"#define GOOD_PARSE 0#define BADID_PARSE1#define BADLEN_PARSE 2short parsed;char *pbuf;void tsip_input_proc(TSIPPKT *rpt,unsigned char inbyte);void rpt_packet(TSIPPKT *rpt,int *obuf);void tsip_input_proc(TSIPPKT *rpt,unsigned char inbyte){switch(rpt->status){case TSIP_PARSED_DLE_1:switch(inbyte){case 0:case ETX: // illegaldatarpt->len=0;rpt->status=TSIP_PARSED_EMPTY;break;case DLE: // try normal message start againrpt->len=0;rpt->status=TSIP_PARSED_DLE_1;break;default: // legal ID ;start messagerpt->len=0;rpt->status=TSIP_PARSED_DATA;rpt->codes=inbyte;break;}break;case TSIP_PARSED_DATA:switch(inbyte){case DLE: // expect DLE or ETX nextrpt->status=TSIP_PARSED_DLE_2;break;default: // normal data byterpt->buf[rpt->len]=inbyte;rpt->len++;break;}break;case TSIP_PARSED_DLE_2:switch(inbyte){case DLE: // normal data byterpt->buf[rpt->len]=inbyte;rpt->len++;rpt->status=TSIP_PARSED_DATA;break;case ETX: // end of message,return TURE hererpt->status=TSIP_PARSED_FULL;break;default: // error:treat as TSIP_PARSED_DLE_1,start new report packetrpt->codes=inbyte;rpt->len=0;rpt->status=TSIP_PARSED_DATA;break;}break;caseTSIP_PARSED_FULL:caseTSIP_PARSED_EMPTY:default:switch(inbyte){case DLE: // normal message startrpt->len=0;rpt->status=TSIP_PARSED_DLE_1;break;default: // error:ignore inbyterpt->len=0;rpt->status=TSIP_PARSED_EMPTY;break;}break;}if(rpt->len>MAX_RPTBUF) // error:start new report packet{rpt->status=TSIP_PARSED_EMPTY;rpt->len=0;}}//串口字符交换*******************************************************************/int bGetShort(char *bp){int outval;char *optr;optr=(char *)&outval*optr=*bp<<8 & 0xFF00;*optr=*(++bp) | *optr;return outval;}//串口报文int rpt_0x14(TSIPPKT *rpt,int output[1]){char *buf;buf=rpt->buf;if(rpt->len!=2)return 0;output[0]=bGetShort(&buf[0]);return 1;}void rpt_packet(TSIPPKT *rpt,int *obuf){parsed=GOOD_PARSE;switch(rpt->codes){case 20:rpt_0x14(rpt,obuf);break;default:parsed=BADID_PARSE;break;}}//发送void send_cmd(TSIPPKT *cmd, void sendb(char)){char *cbuf, *cbufend;sendb (DLE);sendb (cmd->codes);cbufend = cmd->buf + cmd->len;for (cbuf = cmd->buf; cbuf < cbufend; cbuf++) {if (*cbuf == DLE) sendb (DLE);sendb (*cbuf);}sendb (DLE);sendb (ETX);}void sendb(char outbyte){//ScibRegs.SCITXBUF=outbyte;}//字符交换void bPutShort(unsigned int *in, char *out){char *inptr;inptr=(char *)in;*out= (*inptr>>8) & 0x00FF;*(++out) = *inptr & 0x00FF;}//命令void cmd_0x0(TSIPPKT *cmd,SCICALOUT *out){bPutShort(&(out->ve),&(cmd->buf[0]));cmd->len = 2;cmd->codes =37;}//串口使用中断方式接收,发送不采用中断int input[MAX_RPTBUF];void SCIRXD_ISR(void){tsip_input_proc(&rpt,ScibRegs.SCIRXBUF.bit.RXDT);// analyseif (rpt.status == TSIP_PARSED_FULL) // receive complete{rpt_packet(&rpt,input); // output reportsrpt.status=TSIP_PARSED_EMPTY;// prepare for next}ScibRegs.SCIFFRX.bit.RXFFOVRCLR=1;// Clear Overflow flagScibRegs.SCIFFRX.bit.RXFFINTCLR=1;// Clear Interrupt flagPieCtrlRegs.PIEACK.all|= PIEACK_GROUP9; // Issue PIE ack}//发送调用方式//cmd_100x0(&cmd);//send_cmd(&cmd,&sendb);//发送调用方式//cmd_100x0(&cmd);//send_cmd(&cmd,&sendb); 上面的就是源代码。。记住把寄存器改了哦。无论是单片机还是上位机都可以用这个哈。
485则是教室里面一个老师和很多个学生交谈,当老师(主控设备)点名(即轮询到某个485地址码)要求某个学生(从设备)回答问题,这个学生如果没有翘课(从设备故障或者通信故障)的话,就应答站起来回答问题。在老师点名,学生答问的过程中,都是只有一个人发言,因为485总线有这样的仲裁机制,所以才可以实现点到多点的通信 你在协议里面实现这个功能就可以了,编程是基于串口编程,VB直接调用串口控件的。
请看 百度百科 串口通讯http://baike.baidu.com/view/542656.htmrs232http://baike.baidu.com/view/196461.htmrs485http://baike.baidu.com/view/542681.htm

本文由 在线网速测试 整理编辑,转载请注明出处,原文链接:https://www.wangsu123.cn/news/74475.html。