modbus

阅读 / 问答 / 标签

施耐德Quantum系列PLC(140 cpu 651 00)通过以太网连接kingscada的IO Server怎么实现(modbusTcp协议)

在程序里面,点击模块上那个接口,把它设置为TCP协议,之后在通信还是网络哦,在左边那个菜单中,在硬件配置下面一点,之后再新建一个TCP协议的通讯参数,之后把要读取或者写入的点输入在上面就好了

求助:QuantumPLC之间的modbus通讯线怎么做

我发的这个图仅限与PLC和PLC之间的通讯,如果要做低端PLCRS232和NOM252的RJ45口的通讯线是另外一种接法,据说M340的Modbus线又是另一种接法,施耐德的接口不统一,真是令我汗颜啊查看原帖>>

Modbus Slave是指什么意思

http://wenku.baidu.com/view/5bf2661fb7360b4c2e3f6402.html

modbus slave 怎样激活

Modbus Slave还是比较简洁的一个工具,不知道你安装的版本有没有激活。首先你需要激活之后才能设置连接,激活之后进行如下步骤配置:按F3或者从Connection菜单进入连接配置页面;选择你的通讯协议,是串口通讯选择Serial Port,如果是通过tcp通讯选择TCP/IP,如果是udp选择UDP/IP;如果是串口通讯,还需要设置是Modbs RTU还是Modbus ASCII,选择对应的Mode,同时设定好Port口,波特率,奇偶校验,停止位等参数;设置好以上连接参数,按F8或者进入Setup菜单选择Slave Definition;填入你要读写的设备从站地址即Slave ID;选择对应的功能代码,比如你读4x0000,就选择03 Holding Register即可;选择寄存器起始地址以及要操作的地址片长度,点击OK; 这时你截图的主页面就会显示出来读取到的值,如果要写入数据,点击对应的寄存器值,会弹出输入框,填入你要写的值,点击OK即可。 以上,希望能帮到你,还有不明白的地方,可以继续提问。

modbus协议 scada通讯介绍

SCADA数据采集及监控,而MODBUS只是个通信协议分:TCP/IP、ASCII、RTU三种方式,其中TCP/IP比较简单最难的是RTU的CRC冗余校验比较复杂,它由站号、功能码、数据起始字节、数据长度、校验码组成。(不像ASCII有起始符:)没有起始符靠字符空闲的时间大于3.5个字节的时间来确定起始状态和空闲状态

modbus server tester怎么用

server 是打开端口502监听,协议处在接收状态 client是连接server的IP+端口,连接后主动发送查询报文

modbus总线can总线与485总线有什么区别

can总线是博世搞得,主要应用在汽车上,实时性和可靠性都要高。modbus是施耐德搞得,应用在输送电等电气领域。 can协议规定了应用层、数据链路层和物理层。其价格比以太网低,但是比UART等RS232或者485要高。但是,实时性在10ms,传输距离远。这一点比别的多数网络都要好。不但用在汽车,工控、电梯等等各方面都有应用。Modbus协议建立在串行接口之上,比如232或485上,只规定了应用层。在PLC等工控领域有比较广泛的应用。485是在232基础上的一个加强版本,可靠性都有所提高。物理层协议。

Modbus Poll模拟Modbus TCP服务的设置

1、Modbus Poll软件的主界面如下所示,菜单项包括File、Edit、Connection、Setup、Functions、Display、View、Windows、Help。 2、建立连接,点击菜单项Connection中的Connect,弹出Connection Setup窗口 2、按照下图进行Modbus TCP的设置 Connection:Modbus TCP/IP Serial Settings:COM1 9600bAUD 8Data bits Even Parity 1 Stop Bit Mode:RTU Response Timeout:1000 Delay Between Polls:20 IP Address or Node Name:127.0.0.1 Server Port:502 Connect Timeout:3000 IPv4 3、TX是发送的次数,红字NO CONNECTION字消失即为连接成功。

modbuspoll可以进行两个电脑链接吗

不可以,modbuspoll是仿真调试工具,不提供链接,但是可以用Virtual Serial Port Driver 9.0在一台电脑里创建虚拟机,实现链接的目的Modbus学习必备的三大神器分别是ModbusPoll、ModbusSlave及VSPD,可以非常方便的进行modbus调试ModbusPoll软件主要用于仿真Modbus主站或Modbus客户端ModbusSlave软件主要用于仿真Modbus从站或Modbus服务器而VSPD全称Configure Virtual Serial Port Driver,是用来给电脑创建虚拟串口使用的。Modbus Poll :Modbus主机仿真器,用于测试和调试Modbus从设备。该软件支持ModbusRTU、ASCII、TCP/IP。用来帮助开发人员测试Modbus从设备,或者其它Modbus协议的测试和仿真。它支持多文档接口,即,可以同时监视多个从设备/数据域。每个窗口简单地设定从设备ID,功能,地址,大小和轮询间隔。你可以从任意一个窗口读写寄存器和线圈。如果你想改变一个单独的寄存器,简单地双击这个值即可。或者你可以改变多个寄存器/线圈值。提供数据的多种格式方式,比如浮点、双精度、长整型(可以字节序列交换)。Modbus Slave: Modbus从设备仿真器,可以仿真32个从设备/地址域。每个接口都提供了对EXCEL报表的OLE自动化支持。主要用来模拟Modbus从站设备,接收主站的命令包,回送数据包。帮助Modbus通讯设备开发人员进行Modbus通讯协议的模拟和测试,用于模拟、测试、调试Modbus通讯设备。可以32个窗口中模拟多达32个Modbus子设备。与Modbus Poll的用户界面相同,支持功能01, 02, 03, 04, 05, 06, 15, 16, 22和23,监视串口数据。Virtual Serial Port Driver 9.0 虚拟com端口工具Virtual Serial Port Driver 9.0使用Modbus调试需要需要两台电脑联机或者上位机与下位机进行调试。有了这个工具后就可以在一个电脑上虚拟出两个连接的com端口,就可以在一台电脑上进行调试。安装过程一直点next即可,这里不再阐述,安装完成之后打开软件,主体是下图我们分成两个部分,左边是虚拟串口的设置,右边是虚拟串口的添加注意添加虚拟串口时尽量选择较大的COM口,因为较小的COM口可能被电脑的键盘,鼠标,U盘等设备占用,会出现冲突。我这里选择COM10跟COM11 点击Add virtual pair在左边就可以看到建立的虚拟串口。在此电脑----右键----管理----设备管理器->端口中查看是否新加了两个端口:Modbus Poll使用安装过程一直点next即可,安装完成之后破解一下(输一下密钥,很简单),软件界面如下图所示。状态框:Tx = 0表示向主站发送数据帧次数,图中为0次;Err = 0表示通讯错误次数,图中为0次;ID = 1表示模拟的Modbus子设备的设备地址,图中地址为1;F = 03表示所使用的Modbus功能码,图中为03功能码;SR = 1000ms表示发送周期,1S一次。红字部分,表示当前的错误状态,“No Connection”表示未连接状态。单击Setup----Read/Write Definition… 或者按F8进行参数设置,会弹出参数设置对话框。Slave ID为要访问的Modbus从机的地址,Function 功能码的选择,Address 为寄存器起始地址,根据功能码的不同,访问地址不同Quantity:为访问寄存器个数,Scan Rate为读取数据周期,轮询发送,单位毫秒,Modbus协议同时规定了二十几种功能码,但是常用的只有8种,用于对存储区的读写,如下表所示:功能码 功能说明01H 读取输出线圈02H 读取输入线圈03H 读取保持寄存器04H 读取输入寄存器05H 写入单线圈06H 写入单寄存器0FH 写入多线圈10H 写入多寄存器当然我们用的最多的就是03和06 一个是读取数据,一个是修改数据。关于功能码以及寄存器地址看这篇讲解原理的文章:详解Modbus通信协议—清晰易懂点击Display可以设置数据的显示方式,默认为Signed方式(16进制无符号二进制),数据范围为-32768~32767点击 Connection -> Connect或者按“F3”进行连接端口主从机分别选择我们虚拟出来的com10和com11端口,其他选项如波特率9600,比特位8,校验位1,无等价位等可以保持不变,然后点击确定进行连接,未连接成功窗口第二行会给出提示信息。Response Timeout,表示读取超时时间,从站在超时时间内没有返回数据,则认为通讯失败。Delay Between Polls,每次扫描的最小间隔时间,默认为20ms。Remote Modbus Server,表示TCP/IP模式时的终端从站设备的网络设置。IP Address,表示TCP/IP模式时从站IP地址。Port,表示TCP模式时从站网络端口Connect Timeout 表示TCP链接超时时间IPV4/IPV6

profibus和modbus 485通讯口硬件是否相同?

profibus和modbus是应用层协议标准,485是物理层通信线路接口标准。profibus和modbus两个协议都是可以适用在485线路上的。

profi bus与modbus rtu区别?

profibus是西门子定义的通讯对话协议(PPI/MPI),在物理层与标准的485没有区别。modbus rtu是一种通用工业通讯对话协议,与西门子协议不兼容,但可通过一些手段互相映射转换,物理层也是标准的485 。

Modbus和Profibus的区别

Modbus协议是应用于电子控制器上的一种通用语言。通过此协议,控制器相互之间、控制器经由网络(例如以太网)和其它设备之间可以通信。它已经成为一通用工业标准。有了它,不同厂商生产的控制设备可以连成工业网络,进行集中监控。此协议定义了一个控制器能认识使用的消息结构,而不管它们是经过何种网络进行通信的。它描述了一控制器请求访问其它设备的过程,如何回应来自其它设备的请求,以及怎样侦测错误并记录。它制定了消息域格局和内容的公共格式。PROFIBUS– DP的DP即Decentralized Periphery。它具有高速低成本,用于设备级控制系统与分散式I/O的通信。它与PROFIBUS-PA(Process Automation )、PROFIBUS-FMS (Fieldbus Message Specification )共同组成了PROFIBUS标准。PROFIBUS–DP协议明确规定了用户数据怎样在总线各站之间传递,但用户数据的含义是在PROFIBUS行规中具体说明的。另外,行规还具体规定了PROFIBUS-DP如何用于应用领域。使用行规可使不同厂商所生产的不同设备互换使用,而工厂操作人员毋须关心两者之间的差异。因为与应用有关的含义在行规中均作了精确的规定说明。

profibus-DP和modbus的区别

Modbus协议是应用于电子控制器上的一种通用语言。通过此协议,控制器相互之间、控制器经由网络(例如以太网)和其它设备之间可以通信。它已经成为一通用工业标准。有了它,不同厂商生产的控制设备可以连成工业网络,进行集中监控。此协议定义了一个控制器能认识使用的消息结构,而不管它们是经过何种网络进行通信的。它描述了一控制器请求访问其它设备的过程,如何回应来自其它设备的请求,以及怎样侦测错误并记录。它制定了消息域格局和内容的公共格式。PROFIBUS– DP的DP即Decentralized Periphery。它具有高速低成本,用于设备级控制系统与分散式I/O的通信。它与PROFIBUS-PA(Process Automation )、PROFIBUS-FMS (Fieldbus Message Specification )共同组成了PROFIBUS标准。PROFIBUS–DP协议明确规定了用户数据怎样在总线各站之间传递,但用户数据的含义是在PROFIBUS行规中具体说明的。另外,行规还具体规定了PROFIBUS-DP如何用于应用领域。使用行规可使不同厂商所生产的不同设备互换使用,而工厂操作人员毋须关心两者之间的差异。因为与应用有关的含义在行规中均作了精确的规定说明。

MODBUS 和 PROFIBUS-DP 协议有什么区别,在线等

请看 百度百科 吧modbus协议http://baike.baidu.com/view/15267.htmprofibushttp://baike.baidu.com/view/14965.htm

modbus协议和 profibus DP协议两者的区别和用途主要在哪里?

Modbus协议是应用于电子控制器上的一种通用语言。通过此协议,控制器相互之间、控制器经由网络(例如以太网)和其它设备之间可以通信。它已经成为一通用工业标准。有了它,不同厂商生产的控制设备可以连成工业网络,进行集中监控。此协议定义了一个控制器能认识使用的消息结构,而不管它们是经过何种网络进行通信的。它描述了一控制器请求访问其它设备的过程,如何回应来自其它设备的请求,以及怎样侦测错误并记录。它制定了消息域格局和内容的公共格式。PROFIBUS – DP的DP即Decentralized Periphery。它具有高速低成本,用于设备级控制系统与分散式I/O的通信。它与PROFIBUS-PA(Process Automation )、PROFIBUS-FMS (Fieldbus Message Specification )共同组成了PROFIBUS标准。PROFIBUS–DP协议明确规定了用户数据怎样在总线各站之间传递,但用户数据的含义是在PROFIBUS行规中具体说明的。另外,行规还具体规定了PROFIBUS-DP如何用于应用领域。使用行规可使不同厂商所生产的不同设备互换使用,而工厂操作人员毋须关心两者之间的差异。因为与应用有关的含义在行规中均作了精确的规定说明。

profibus和modbus的区别是什么

本文操作环境:windows10系统、thinkpad t480电脑。 主要区别: 一、主体不同 1、modbus:是一种串行通信协议,是Modicon公司于1979年为使用可编程逻辑控制器(PLC)通信而发表。Modbus已经成为工业领域通信协议的业界标准,并且现在是工业电子设备之间常用的连接方式。 2、Profibus-DP:具有高速低成本,用于设备级控制系统与分散式I/O的通信协议。与PROFIBUS-PA、PROFIBUS-FMS共同组成了PROFIBUS标准。 二、协议特点不同 1、modbus:在一个数据链路上只能处理247个地址,这种情况限制了可以连接到主控站点的设备数量。只有一个主机,所有通信都由他发出。网络可支持247个之多的远程从属控制器,但实际所支持的从机数要由所用通信设备决定。 2、Profibus-DP:用于现场设备级的高速数据传送,主站周期地读取从站的输入信息并周期地向从站发送输出信息。总线循环时间必须要比主站(PLC)程序循环时间短。除周期性用户数据传输外,PROFIBUS-DP还提供智能化设备所需的非周期性通信以进行组态、诊断和报警处理。 三、传输特点不同 1、modbus:协议包括ASCII、RTU、TCP等,并没有规定物理层。此协议定义了控制器能够认识和使用的消息结构,而不管它们是经过何种网络进行通信的。数据通讯采用Maser/Slave方式,Master端发出数据请求消息,Slave端接收到正确消息后就可以发送数据到Master端以响应请求 2、Profibus-DP:协议明确规定了用户数据怎样在总线各站之间传递,但用户数据的含义是在PROFIBUS行规中具体说明的。PROFIBUS主站之间采用令牌传送方式,主站与从站之间采用主从方式。令牌传递程序保证每个主站在一个确切规定的时间内得到总线存取权。

modbus协议和 profibus DP协议两者的区别和用途主要在哪里?

Modbus协议是应用于电子控制器上的一种通用语言。通过此协议,控制器相互之间、控制器经由网络(例如以太网)和其它设备之间可以通信。它已经成为一通用工业标准。有了它,不同厂商生产的控制设备可以连成工业网络,进行集中监控。此协议定义了一个控制器能认识使用的消息结构,而不管它们是经过何种网络进行通信的。它描述了一控制器请求访问其它设备的过程,如何回应来自其它设备的请求,以及怎样侦测错误并记录。它制定了消息域格局和内容的公共格式。PROFIBUS–DP的DP即DecentralizedPeriphery。它具有高速低成本,用于设备级控制系统与分散式I/O的通信。它与PROFIBUS-PA(ProcessAutomation)、PROFIBUS-FMS(FieldbusMessageSpecification)共同组成了PROFIBUS标准。PROFIBUS–DP协议明确规定了用户数据怎样在总线各站之间传递,但用户数据的含义是在PROFIBUS行规中具体说明的。另外,行规还具体规定了PROFIBUS-DP如何用于应用领域。使用行规可使不同厂商所生产的不同设备互换使用,而工厂操作人员毋须关心两者之间的差异。因为与应用有关的含义在行规中均作了精确的规定说明。

modbus中NAK是什么意思

NAK是否定应答或者非应答的缩写,全拼为 Negative Acknowledgment, 没有应答。它是一个用于数字通信中确认数据收到但是有小错误的信号。

怎么在ZigBee协议栈加入modbus协议

具体要求可以和我说说我做这方面的

AB PLC Micro Logix 1400配置通信通道0配置成Modbus被控,如何把PLC里的浮点数(F8:0)传给Modbus

程序里将浮点数转换为整数。

P请问AB PLC LOGIX5000怎样才能实现与西门子s7-200modbus或者流量计算机通信?

AB的也有MODBUS模块,你购买这样的模块就可以了

modbus协议,查询方式下读写寄存器的值

亲、望采纳!下面是一个用VC编写的ModBus RTU通讯的例子(一)、通讯口设置DCB dcb;hCom=CreateFile("COM1",     GENERIC_READ|GENERIC_WRITE,     0,     NULL,     OPEN_EXISTING,     0,     NULL);if(hCom==INVALID_HANDLE_VALUE){  MessageBox("createfile error,error");}BOOL error=SetupComm(hCom,1024,1024);if(!error)  MessageBox("setupcomm error");error=GetCommState(hCom,&dcb);if(!error)  MessageBox("getcommstate,error");dcb.BaudRate=2400;dcb.ByteSize=8;dcb.Parity=EVENPARITY;//NOPARITY;dcb.StopBits=ONESTOPBIT;error=SetCommState(hCom,&dcb);(二)、CRC校验码计算UINT crcvoid calccrc(BYTE crcbuf){BYTE i;crc=crc ^ crcbuf;for(i=0;i<8;i++){BYTE TT;TT=crc&1;crc=crc>>1;crc=crc&0x7fff;if (TT==1)crc=crc^0xa001;crc=crc&0xffff;}}(三)、数据发送zxaddr=11;//读取地址为11的巡检表数据zxnum=10;//读取十个通道的数据writebuf2[0]=zxaddr;writebuf2[1]=3;writebuf2[2]=0;writebuf2[3]=0;writebuf2[4]=0;writebuf2[5]=zxnum;crc=0xffff;calccrc(writebuf2[0]);calccrc(writebuf2[1]);calccrc(writebuf2[2]);calccrc(writebuf2[3]);calccrc(writebuf2[4]);calccrc(writebuf2[5]);writebuf2[6]=crc & 0xff;writebuf2[7]=crc/0x100;WriteFile(hCom,writebuf2,8,&comnum,NULL);(四)、数据读取ReadFile(hCom,writebuf,5+zxnum*2,&comnum,NULL);//读取zxnum个通道数据可增加错误处理程序,如地址码错误、CRC码错误判断、通讯故障处理等。 CRC简单函数如下:unsigned short CRC16(puchMsg, usDataLen)unsigned char *puchMsg ; /* 要进行CRC校验的消息 */unsigned short usDataLen ; /* 消息中字节数 */{unsigned char uchCRCHi = 0xFF ; /* 高CRC字节初始化 */unsigned char uchCRCLo = 0xFF ; /* 低CRC 字节初始化 */unsigned uIndex ; /* CRC循环中的索引 */while (usDataLen--) /* 传输消息缓冲区 */{uIndex = uchCRCHi ^ *puchMsgg++ ; /* 计算CRC */uchCRCHi = uchCRCLo ^ auchCRCHi[uIndex} ;uchCRCLo = auchCRCLo[uIndex] ;}return (uchCRCHi << 8 | uchCRCLo) ;}/* CRC 高位字节值表 */static unsigned char auchCRCHi[] = {0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0,0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0,0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1,0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41,0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1,0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0,0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40,0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1,0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0,0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40,0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0,0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0,0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0,0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0,0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40,0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1,0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0,0x80, 0x41, 0x00, 0xC1, 0x81, 0x40} ;/* CRC低位字节值表*/static char auchCRCLo[] = {0x00, 0xC0, 0xC1, 0x01, 0xC3, 0x03, 0x02, 0xC2, 0xC6, 0x06,0x07, 0xC7, 0x05, 0xC5, 0xC4, 0x04, 0xCC, 0x0C, 0x0D, 0xCD,0x0F, 0xCF, 0xCE, 0x0E, 0x0A, 0xCA, 0xCB, 0x0B, 0xC9, 0x09,0x08, 0xC8, 0xD8, 0x18, 0x19, 0xD9, 0x1B, 0xDB, 0xDA, 0x1A,0x1E, 0xDE, 0xDF, 0x1F, 0xDD, 0x1D, 0x1C, 0xDC, 0x14, 0xD4,0xD5, 0x15, 0xD7, 0x17, 0x16, 0xD6, 0xD2, 0x12, 0x13, 0xD3,0x11, 0xD1, 0xD0, 0x10, 0xF0, 0x30, 0x31, 0xF1, 0x33, 0xF3,0xF2, 0x32, 0x36, 0xF6, 0xF7, 0x37, 0xF5, 0x35, 0x34, 0xF4,0x3C, 0xFC, 0xFD, 0x3D, 0xFF, 0x3F, 0x3E, 0xFE, 0xFA, 0x3A,0x3B, 0xFB, 0x39, 0xF9, 0xF8, 0x38, 0x28, 0xE8, 0xE9, 0x29,0xEB, 0x2B, 0x2A, 0xEA, 0xEE, 0x2E, 0x2F, 0xEF, 0x2D, 0xED,0xEC, 0x2C, 0xE4, 0x24, 0x25, 0xE5, 0x27, 0xE7, 0xE6, 0x26,0x22, 0xE2, 0xE3, 0x23, 0xE1, 0x21, 0x20, 0xE0, 0xA0, 0x60,0x61, 0xA1, 0x63, 0xA3, 0xA2, 0x62, 0x66, 0xA6, 0xA7, 0x67,0xA5, 0x65, 0x64, 0xA4, 0x6C, 0xAC, 0xAD, 0x6D, 0xAF, 0x6F,0x6E, 0xAE, 0xAA, 0x6A, 0x6B, 0xAB, 0x69, 0xA9, 0xA8, 0x68,0x78, 0xB8, 0xB9, 0x79, 0xBB, 0x7B, 0x7A, 0xBA, 0xBE, 0x7E,0x7F, 0xBF, 0x7D, 0xBD, 0xBC, 0x7C, 0xB4, 0x74, 0x75, 0xB5,0x77, 0xB7, 0xB6, 0x76, 0x72, 0xB2, 0xB3, 0x73, 0xB1, 0x71,0x70, 0xB0, 0x50, 0x90, 0x91, 0x51, 0x93, 0x53, 0x52, 0x92,0x96, 0x56, 0x57, 0x97, 0x55, 0x95, 0x94, 0x54, 0x9C, 0x5C,0x5D, 0x9D, 0x5F, 0x9F, 0x9E, 0x5E, 0x5A, 0x9A, 0x9B, 0x5B,0x99, 0x59, 0x58, 0x98, 0x88, 0x48, 0x49, 0x89, 0x4B, 0x8B,0x8A, 0x4A, 0x4E, 0x8E, 0x8F, 0x4F, 0x8D, 0x4D, 0x4C, 0x8C,0x44, 0x84, 0x85, 0x45, 0x87, 0x47, 0x46, 0x86, 0x82, 0x42,0x43, 0x83, 0x41, 0x81, 0x80, 0x40} ; 

如何不断地读modbus中某个寄存器的值

如果是自编的程序,在程序中加入一个Timer,定时循环发送MODBUS读寄存器指令就可以了。

如何读取modbus寄存器中的值

下面是一个用VC编写的ModBus RTU通讯的例子(一)、通讯口设置DCB dcb;hCom=CreateFile("COM1",     GENERIC_READ|GENERIC_WRITE,     0,     NULL,     OPEN_EXISTING,     0,     NULL);if(hCom==INVALID_HANDLE_VALUE){  MessageBox("createfile error,error");}BOOL error=SetupComm(hCom,1024,1024);if(!error)  MessageBox("setupcomm error");error=GetCommState(hCom,&dcb);if(!error)  MessageBox("getcommstate,error");dcb.BaudRate=2400;dcb.ByteSize=8;dcb.Parity=EVENPARITY;//NOPARITY;dcb.StopBits=ONESTOPBIT;error=SetCommState(hCom,&dcb);(二)、CRC校验码计算UINT crcvoid calccrc(BYTE crcbuf){BYTE i;crc=crc ^ crcbuf;for(i=0;i<8;i++){BYTE TT;TT=crc&1;crc=crc>>1;crc=crc&0x7fff;if (TT==1)crc=crc^0xa001;crc=crc&0xffff;}}(三)、数据发送zxaddr=11;//读取地址为11的巡检表数据zxnum=10;//读取十个通道的数据writebuf2[0]=zxaddr;writebuf2[1]=3;writebuf2[2]=0;writebuf2[3]=0;writebuf2[4]=0;writebuf2[5]=zxnum;crc=0xffff;calccrc(writebuf2[0]);calccrc(writebuf2[1]);calccrc(writebuf2[2]);calccrc(writebuf2[3]);calccrc(writebuf2[4]);calccrc(writebuf2[5]);writebuf2[6]=crc & 0xff;writebuf2[7]=crc/0x100;WriteFile(hCom,writebuf2,8,&comnum,NULL);(四)、数据读取ReadFile(hCom,writebuf,5+zxnum*2,&comnum,NULL);//读取zxnum个通道数据可增加错误处理程序,如地址码错误、CRC码错误判断、通讯故障处理等。 CRC简单函数如下:unsigned short CRC16(puchMsg, usDataLen)unsigned char *puchMsg ; /* 要进行CRC校验的消息 */unsigned short usDataLen ; /* 消息中字节数 */{unsigned char uchCRCHi = 0xFF ; /* 高CRC字节初始化 */unsigned char uchCRCLo = 0xFF ; /* 低CRC 字节初始化 */unsigned uIndex ; /* CRC循环中的索引 */while (usDataLen--) /* 传输消息缓冲区 */{uIndex = uchCRCHi ^ *puchMsgg++ ; /* 计算CRC */uchCRCHi = uchCRCLo ^ auchCRCHi[uIndex} ;uchCRCLo = auchCRCLo[uIndex] ;}return (uchCRCHi << 8 | uchCRCLo) ;}/* CRC 高位字节值表 */static unsigned char auchCRCHi[] = {0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0,0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0,0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1,0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41,0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1,0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0,0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40,0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1,0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0,0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40,0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0,0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0,0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0,0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0,0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40,0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1,0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0,0x80, 0x41, 0x00, 0xC1, 0x81, 0x40} ;/* CRC低位字节值表*/static char auchCRCLo[] = {0x00, 0xC0, 0xC1, 0x01, 0xC3, 0x03, 0x02, 0xC2, 0xC6, 0x06,0x07, 0xC7, 0x05, 0xC5, 0xC4, 0x04, 0xCC, 0x0C, 0x0D, 0xCD,0x0F, 0xCF, 0xCE, 0x0E, 0x0A, 0xCA, 0xCB, 0x0B, 0xC9, 0x09,0x08, 0xC8, 0xD8, 0x18, 0x19, 0xD9, 0x1B, 0xDB, 0xDA, 0x1A,0x1E, 0xDE, 0xDF, 0x1F, 0xDD, 0x1D, 0x1C, 0xDC, 0x14, 0xD4,0xD5, 0x15, 0xD7, 0x17, 0x16, 0xD6, 0xD2, 0x12, 0x13, 0xD3,0x11, 0xD1, 0xD0, 0x10, 0xF0, 0x30, 0x31, 0xF1, 0x33, 0xF3,0xF2, 0x32, 0x36, 0xF6, 0xF7, 0x37, 0xF5, 0x35, 0x34, 0xF4,0x3C, 0xFC, 0xFD, 0x3D, 0xFF, 0x3F, 0x3E, 0xFE, 0xFA, 0x3A,0x3B, 0xFB, 0x39, 0xF9, 0xF8, 0x38, 0x28, 0xE8, 0xE9, 0x29,0xEB, 0x2B, 0x2A, 0xEA, 0xEE, 0x2E, 0x2F, 0xEF, 0x2D, 0xED,0xEC, 0x2C, 0xE4, 0x24, 0x25, 0xE5, 0x27, 0xE7, 0xE6, 0x26,0x22, 0xE2, 0xE3, 0x23, 0xE1, 0x21, 0x20, 0xE0, 0xA0, 0x60,0x61, 0xA1, 0x63, 0xA3, 0xA2, 0x62, 0x66, 0xA6, 0xA7, 0x67,0xA5, 0x65, 0x64, 0xA4, 0x6C, 0xAC, 0xAD, 0x6D, 0xAF, 0x6F,0x6E, 0xAE, 0xAA, 0x6A, 0x6B, 0xAB, 0x69, 0xA9, 0xA8, 0x68,0x78, 0xB8, 0xB9, 0x79, 0xBB, 0x7B, 0x7A, 0xBA, 0xBE, 0x7E,0x7F, 0xBF, 0x7D, 0xBD, 0xBC, 0x7C, 0xB4, 0x74, 0x75, 0xB5,0x77, 0xB7, 0xB6, 0x76, 0x72, 0xB2, 0xB3, 0x73, 0xB1, 0x71,0x70, 0xB0, 0x50, 0x90, 0x91, 0x51, 0x93, 0x53, 0x52, 0x92,0x96, 0x56, 0x57, 0x97, 0x55, 0x95, 0x94, 0x54, 0x9C, 0x5C,0x5D, 0x9D, 0x5F, 0x9F, 0x9E, 0x5E, 0x5A, 0x9A, 0x9B, 0x5B,0x99, 0x59, 0x58, 0x98, 0x88, 0x48, 0x49, 0x89, 0x4B, 0x8B,0x8A, 0x4A, 0x4E, 0x8E, 0x8F, 0x4F, 0x8D, 0x4D, 0x4C, 0x8C,0x44, 0x84, 0x85, 0x45, 0x87, 0x47, 0x46, 0x86, 0x82, 0x42,0x43, 0x83, 0x41, 0x81, 0x80, 0x40} ; 

如何使用Unity Pro L配置Anybus Modbus TCP网关

modbus网关是工业自动化系统的一个网络集线器通信协议转换设备,下与智能仪表连接,将下位仪表的数据采集到modbus网关,上与计算机网络连接,按Modbus Tcp协议规约与网络计算机通信。关于modbus协议, modbus网关串口服务器NetPort 901支持多达8种工作方式:1:TCP客户端2:TCP服务器3:UDP客户端4:UDP服务器5:RTU_Master--TCP_Slaver6:TCP_Master--RTU_Slaver7:ASCII_Master--TCP_Slaver8:TCP_Master--ASCII_Slaver集modbus网关和串口服务器功能于一体,功能非常强大.可以适合各种组态软件,无需使用虚拟串口,就可以直接TCP/IP方式通信.关于有些串口服务器厂家说支持modbus协议.其实,他们是透明传输的,就是串口使用modbus协议,转发到网络上后,就使用TCP或者UDP传输modbus协议. 而不是modbus TCP协议.注意: mobus协议通过TCP传输和modbus TCP协议是完全不同的.modbus网关串口服务器NetPort 901, 既支持modbus协议到网络的透明传输,也支持转换成modbus TCP协议,而且modbus RTU和modbus ASCII协议都支持.所以说的modbus网关串口服务器NetPort 901是集modbus网关和串口服务器功能于一体,功能非常强大.

modbus网关是什么?

串口网关采用高强度IP30防护外壳,工业级EMC设计,支持Auto-Negotiation自适应技术,提供全面的LED状态指示,支持电压12~48VDC电源输入,以增加通讯网络的可靠度。内置ModbusTCP和ModbusRTU协议,用户可轻松实现Modbus以太网设备与Modbus串口设备的连接。基于工业安装需求,提供DIN35导轨安装模式。本产品采用业内优秀的网络方案,-40~85℃工作温度范围,能够满足各种工业现场的要求,提供便捷的串口通讯解决方案。

MODBUS通信协议是什么标准协议?

ModBus协议是应用层报文传输协议。1、Modbus 协议是应用于电子控制器上的一种通用语言。通过此协议,控制器相互之间、控制器经由网络(例如以太网)和其它设备之间可以通信。它已经成为一通用工业标准。有了它,不同厂商生产的控制设备可以连成工业网络,进行集中监控。2、此协议定义了一个控制器能认识使用的消息结构,而不管它们是经过何种网络进行通信的。它描述了一控制器请求访问其它设备的过程,如何回应来自其它设备的请求,以及怎样侦测错误并记录。它制定了消息域格局和内容的公共格式。3、当在一Modbus网络上通信时,此协议决定了每个控制器须要知道它们的设备地址,识别按地址发来的消息,决定要产生何种行动。如果需要回应,控制器将生成反馈信息并用Modbus协议发出。在其它网络上,包含了Modbus协议的消息转换为在此网络上使用的帧或包结构。这种转换也扩展了根据具体的网络解决节地址、路由路径及错误检测的方法。

请问一下modbus主要适用与哪些控制场合?modbus ASCII,modbus RTU和modbus TCP都有什么区别?

modbus是专为工业开发的协议,所以主要用于工业场合,当然也可以用于基础设施,如:住宅、商业中心、机场、水处理、电厂等。modbus RTU协议紧凑,可以使用RS232/RS485、无线、等介质,用于速度要求不高的场合,如:楼宇、工业现场、管道输送、远程泵站等;modbusASCII协议比较宽松,时序要求不高,可以用于条形码阅读器、打印机、仪器仪表读取等;modbusTCP速度很高,可以用于实时控制、时钟对时、全局数据、发送邮件、故障设备替换、网络管理、用户网页制定和浏览、固件更新等多种服务。

什么是Modbus网关?Modbus有什么优势

Modbus网关相当于一个网络集线器通信协议转换设备,下接传感器、仪表等数据设备,将下位设备的数据采集到网关,通过Modbus Tcp协议规约将数据传输到云平台。 Modbus 协议是应用于电子控制器上的一种通用语言。通过此协议,控制器相互之间、控制器经由网络(例如以太网)和其它设备之间可以通信。它已经成为一通用工业标准。有了它,不同厂商生产的控制设备可以连成工业网络,进行集中监控。 此协议定义了一个控制器能认识使用的消息结构,而不管它们是经过何种网络进行通信的。它描述了一控制器请求访问其它设备的过程,如何回应来自其它设备的请求,以及怎样侦测错误并记录。它制定了消息域格局和内容的公共格式。 当在一Modbus网络上通信时,此协议决定了每个控制器须要知道它们的设备地址,识别按地址发来的消息,决定要产生何种行动。如果需要回应,控制器将生成反馈信息并用Modbus协议发出。在其它网络上,包含了Modbus协议的消息转换为在此网络上使用的帧或包结构。这种转换也扩展了根据具体的网络解决节地址、路由路径及错误检测的方法。1、标准、开放,用户可以免费、放心地使用Modbus协议,不需要交纳许可证费,也不会侵犯知识产权。目前,佰马科技全系列产品均支持Modbus协议。2、Modbus可以支持多种电气接口,如RS-232、RS-485等,还可以在各种介质上传送,如双绞线、光纤、无线等。3、Modbus的帧格式简单、紧凑,通俗易懂。用户使用容易,厂商开发简单。佰马科技全系类产品均支持Modbus协议,BMG800边缘计算网关,兼容多种协议,如MQTT、OPC、MODBUS(MODBUS TCP、MODBUS RTU)、TCP、UDP等主流通信协议,提供模拟量/数字量等数据采集、视频/图像/语音采集、本地存储、安全通信管理、全网通/5G/4G/GPS/WiFi等无线通信、公有云&私有云对接、对设备实现本地与远程联动控制等功能。

MODBUS 的小问题

问题1:在实际使用中要将不同参数(包括数据位 停止位 起始位 波特率)的设备连接在不同的通讯总线中。问题2:通常485总线都是手拉手连接,不要接成星形的,因为每个结点的电位差不同,会影响通讯质量,另外问题1中已提到将不同参数的设备接到一个485通讯总线,虽然可以通讯,也会影响通讯质量。

MODBUS协议有哪几种

Modbus有下列三种通信方式以太网,对应的通信模式是MODBUS TCP。异步串行传输(各种介质如有线RS-232-/422/485/;光纤、无线等),对应的通信模式是MODBUS RTU或MODBUS ASCII。高速令牌传递网络,对应的通信模式是Modbus PLUS。ModBus协议是应用层报文传输协议(OSI模型第7层),它定义了一个与通信层无关的协议数据单元(PDU),即PDU=功能码+数据域。ModBus协议能够应用在不同类型的总线或网络。对应不同的总线或网络,Modbus协议引入一些附加域映射成应用数据单元(ADU),即ADU=附加域+PDU。

profibus和modbus的区别

* 回复内容中包含的链接未经审核,可能存在风险,暂不予完整展示! profibus是现场总线的通讯协议,西门子家的,用于分布式i/o,也就是设备之间的通讯,最后组态到工控机中。而modbus只是电子器件中的一种通讯协议,典型的就是plc与变频器通讯,它的范围比profibus小很多。详见:https://wenku.b***.com/view/9e5023ec19e8b8f67c1cb9db.html

modbus TCP故障代码的返回格式是什么,是TCP,不是RTU

格式还是modbusTCP是物理连接方式,就是以太网

modbus如何使用以及在什么场合下使用?

modbus是一种通讯方式,多用在工业设备上,如一个工业控制系统中,电脑为主站,PLC、变频器等设备为从站。

Modbus地址为什么会偏移

Modbus地址会偏移是为了给数据的传输提供准确的地址参数。通常Modbus地址由5位数字组成,包括起始的数据类型代号,以及后面的偏移地址,ModbusMaster协议库把标准的Modbus地址映射为所谓Modbus功能号读写从站的数据。Modbus地址偏移特点Modbus数据帧都是16进制的,而组态王中的寄存器地址是10进制的,因此需要对数据帧中的地址位做一个从16进制到10进制的转换,比如地址1004对应的就4100,前面再加上功能码对应的寄存器,从而构成变量的寄存器地址。其中03E8是数据转换成10进制后为1000,即读得该设备的心跳时间为1000,0004对应的10进制就是4在组态王中还需要做一个地址偏移,即寄存器地址需要加1就是0005,前面再加上功能码对应的寄存器4即40005,因此在组态王中的寄存器地址就是40005。

modbus和485的区别

modbus和485的区别是RS485是接线口,modbus是协议。他是建立在RS485是接线口的基础上进行通讯的。所以modbus离不开485,485也离不开MODBUS,前半部分说的基本正确,RS485是接线口与485也离不开MODBUS回答错误。RS485不不完全是接线口,它是一种电气标准,包含机械特性,电气特性等特点,可以找一些通信书籍看看,描述有很多特点。Modbus具有以下几个特点:1、标准、开放:用户可以免费、放心地使用Modbus协议,不需要交纳许可证费,也不会侵犯知识产权。目前,支持Modbus的厂家超过400家,支持Modbus的产品超过600种。2、Modbus可以支持多种电气接口:如RS-232、RS-485等,还可以在各种介质上传送,如双绞线、光纤、无线等。3、Modbus的帧格式简单、紧凑,通俗易懂。用户使用容易,厂商开发简单。

modbus缺点

modbus是一种通用工业数据通讯协议,应用面很广。如果非要说说MODBUS的缺点,那就是大数据量通讯效率很低。每次MODBUS读写,最多读写127个寄存器,如果上万寄存器全部读写一遍,需要将近一百次读写才能完成,按照TCP百兆以太连接计算,每次读写耗时0.2秒,需要20秒左右才能读完,如果是两台电脑直接传送同等的大数据包,用不了一秒就能完成。再有就是数据加密,MODBUS不支持数据加密传送,如果需要加密,需要在MODBUS数据包外部加壳,完成数据加密。

标准modbus通讯协议有哪些?

modbus-rtu是modbus协议的一部分,还有一部分是modbus-ascⅱ。这是这种通讯方式,适合不同的场合,前者适合传输数据,后者更适合传输字符。

Modbus地址是5位还是6位?3区和4区哪个用来读模拟量输入?

一、Modbus地址其实指的是各类寄存器的设备编号,为5位十进制数,各区的编号从1到9999,即: ● 00001 ~ 09999 :离散量输出继电器编号 ● 10001 ~ 19999 :离散量输入继电器编号 ● 30001 ~ 39999 :模拟量输入寄存器编号 ● 40001 ~ 49999 :保持型输出寄存器编号 二、3区是读模拟量输入寄存器,4区是用于写数据到输出寄存器。三、Modbus地址虽然是5位十进制数,但由于功能码的定向作用,如功能码01/05/15就只能操作0X区,不会操作其他区,所以编程时只需要后4位数,而且要把它换成16进制地址(地址从0开始),即:通讯帧里的设备地址=(4位十进制设备编号-1)转换成16进制如用功能码02读取1区中编号为10012的输入继电器的状态,通讯帧里的设备地址就要转换成:0012-1=(0011)十进制 =(000B)十六进制

profibus-DP和modbus的区别

一、主体不同1、modbus:是一种串行通信协议,是Modicon公司于1979年为使用可编程逻辑控制器(PLC)通信而发表。Modbus已经成为工业领域通信协议的业界标准(De facto),并且现在是工业电子设备之间常用的连接方式。2、rofibus-DP:具有高速低成本,用于设备级控制系统与分散式I/O的通信协议。与PROFIBUS-PA、PROFIBUS-FMS共同组成了PROFIBUS标准。二、协议特点不同1、modbus:在一个数据链路上只能处理247个地址,这种情况限制了可以连接到主控站点的设备数量。只有一个主机,所有通信都由他发出。网络可支持247个之多的远程从属控制器,但实际所支持的从机数要由所用通信设备决定。2、rofibus-DP:用于现场设备级的高速数据传送,主站周期地读取从站的输入信息并周期地向从站发送输出信息。总线循环时间必须要比主站(PLC)程序循环时间短。除周期性用户数据传输外,PROFIBUS-DP还提供智能化设备所需的非周期性通信以进行组态、诊断和报警处理。三、传输特点不同1、modbus:协议包括ASCII、RTU、TCP等,并没有规定物理层。此协议定义了控制器能够认识和使用的消息结构,而不管它们是经过何种网络进行通信的。数据通讯采用Maser/Slave方式,Master端发出数据请求消息,Slave端接收到正确消息后就可以发送数据到Master端以响应请求2、rofibus-DP:协议明确规定了用户数据怎样在总线各站之间传递,但用户数据的含义是在PROFIBUS行规中具体说明的。PROFIBUS主站之间采用令牌传送方式,主站与从站之间采用主从方式。令牌传递程序保证每个主站在一个确切规定的时间内得到总线存取权。参考资料来源:百度百科-Modbus通讯协议参考资料来源:百度百科-PROFIBUS-DP

请教modbus总线的通讯距离

modbus 属于 协议,软件层面的总线 应该是说 RS485 之类的,属于硬件485走双绞线的通讯距离 和速率有关系,通常 9600 可以达 1200米当然,可以转换为光纤传输,数千米

什么是MODBUS,有什么用处,怎么样应用.原理是什么?

什么是Modbus?作者:ICPDAS何谓Modbus协议?Modbus是MODICON公司于1979年开发的一种通讯协议。它是一种在工业领域被广为应用的真正开放、标准的网络通讯协议。SCADA和HMI通过Modbus协议可以很容易将带串行通讯口的设备集成在一起。 什么是Modbus/TCP协议?Modbus/TCP协议是不同于Modbus的另一种协议,产生于1999年。它允许因特网接入以太网设备。 什么软件支持Modbus和Modbus/TCP协议?大部分SCADA(SupervisorControlAndDataAcuisition)和HMI软件支持Modbus协议。例如:组态王、MCGS、Citect、ICONICS、iFIX、InduSoft、Intouch、EntivityStudio、EntivityLive、EntivityVLC、TraceMode、Wizcon、Wonderware...等 为何使用Modbus和Modbus/TCP协议?1.公开的协议,免收许可费用2.被SCADA和HMI软件广为支持3.简单易用4.易于集成不同的设备5.开发成本低6.广泛的知识资源支持 

MODBUS规定的内容,具体是什么意思

可以搜 百度文库有不少文档MODBUS 协议有几类的

modbus怎么读

莫得巴斯

modbus功能码详解

modbus功能码详解:Modbus功能码是Modbus消息帧(报文)的重要组成部分,是Modubs协议中通信事务处理的基础,代表消息将要执行的动作。简而言之,Modbus功能码占用一个字节,取值范围是1127,之所以127以上不能使用,是因为Modbus规定出现异常时,功能码+0x80(十进制128)代替异常状态,因此129(1+128)255(127+128)的取值代表异常码。读取从设备的线圈或离散量输出的状态,即各DO的ON/OFF状态。消息帧中指定了需读取的线圈起始地址和线圈数目。需要注意的一点是,在Modbus协议规定的PDU中,规定所有线圈或寄存器地址从0开始计算。

modbus协议和485协议有什么区别?

modbus和485的区别是RS485是接线口,modbus是协议。他是建立在RS485是接线口的基础上进行通讯的。所以modbus离不开485,485也离不开MODBUS,前半部分说的基本正确,RS485是接线口与485也离不开MODBUS回答错误。RS485不不完全是接线口,它是一种电气标准,包含机械特性,电气特性等特点,可以找一些通信书籍看看,描述有很多特点。Modbus具有以下几个特点:1、标准、开放:用户可以免费、放心地使用Modbus协议,不需要交纳许可证费,也不会侵犯知识产权。目前,支持Modbus的厂家超过400家,支持Modbus的产品超过600种。2、Modbus可以支持多种电气接口:如RS-232、RS-485等,还可以在各种介质上传送,如双绞线、光纤、无线等。3、Modbus的帧格式简单、紧凑,通俗易懂。用户使用容易,厂商开发简单。

我想问一下can和modbus区别是什么呢?

感谢题主的邀请,我来说下我的看法:can是一种总线类型,它拥有自己的总线协议,而MODBUS则是一种专门的协议类型,它们对比的话是这样的:一般来说,can协议规定了应用层、数据链路层和物理层。其价格比以太网低,但是比UART等RS232或者485要高。但是,实时性在10ms,传输距离远。这一点比别的多数网络都要好。不但用在汽车,工控、电梯等等各方面都有应用。Modbus协议建立在串行接口之上,规定了应用层。在PLC等工控领域有比较广泛的应用。Modbus可以支持多种电气接口,如RS-232、RS-485等,还可以在各种介质上传送,如双绞线、光纤、无线等。此协议决定了每个控制器须要知道它们的设备地址,识别按地址发来的消息,决定要产生何种行动。支持传统的RS-232、RS-422、RS-485和以太网设备。许多工业设备,包括PLC,DCS,智能仪表等都在使Modbus协议作为他们之间的通讯标准。为了能够更好的利用好CAN和MODBUS,工程师们有时候会想办法让这两种数据相互转化,由此便诞生了CAN转MODBUS网关工具,GCGD什么的就有,网上可以看到。因为CAN总线的发展前景太广阔了,所以这类工具的需求估计也会越来越大,是不是真的这样,我们拭目以待。如果你觉得我说的还行,采纳下啊!

modbus通讯协议是怎么回事?

MODBUS通讯协议及编程的简要概论: ModBus通讯协议分为RTU协议和ASCII协议,我公司的多种仪表都采用ModBus RTU通讯协议,如:CH2000智能电力监测仪、CH2000M电力参数采集模块、巡检表、数显表、光柱数显表等。下面就ModBus RTU协议简要介绍如下:一、通讯协议(一)、通讯传送方式: 通讯传送分为独立的信息头,和发送的编码数据。以下的通讯传送方式定义也与MODBUS RTU通讯规约相兼容: 编 码 8位二进制 起始位 1位 数据位 8位 奇偶校验位 1位(偶校验位) 停止位 1位 错误校检 CRC(冗余循环码) 初始结构 = ≥4字节的时间 地址码 = 1 字节功能码 = 1 字节数据区 = N 字节错误校检 = 16位CRC码 结束结构 = ≥4字节的时间 地址码:地址码为通讯传送的第一个字节。这个字节表明由用户设定地址码的从机将接收由主机发送来的信息。并且每个从机都有具有唯一的地址码,并且响应回送均以各自的地址码开始。主机发送的地址码表明将发送到的从机地址,而从机发送的地址码表明回送的从机地址。 功能码:通讯传送的第二个字节。ModBus通讯规约定义功能号为1到127。本仪表只利用其中的一部分功能码。作为主机请求发送,通过功能码告诉从机执行什么动作。作为从机响应,从机发送的功能码与从主机发送来的功能码一样,并表明从机已响应主机进行操作。如果从机发送的功能码的最高位为1(比如功能码大与此同时127),则表明从机没有响应操作或发送出错。 数据区:数据区是根据不同的功能码而不同。数据区可以是实际数值、设置点、主机发送给从机或从机发送给主机的地址。 CRC码:二字节的错误检测码。 (二)、通讯规约: 当通讯命令发送至仪器时,符合相应地址码的设备接通讯命令,并除去地址码,读取信息,如果没有出错,则执行相应的任务;然后把执行结果返送给发送者。返送的信息中包括地址码、执行动作的功能码、执行动作后结果的数据以及错误校验码。如果出错就不发送任何信息。1.信息帧结构地址码 功能码 数据区 错误校验码 8位 8位 N × 8位 16位 地址码:地址码是信息帧的第一字节(8位),从0到255。这个字节表明由用户设置地址的从机将接收由主机发送来的信息。每个从机都必须有唯一的地址码,并且只有符合地址码的从机才能响应回送。当从机回送信息时,相当的地址码表明该信息来自于何处。 功能码:主机发送的功能码告诉从机执行什么任务。表1-1列出的功能码都有具体的含义及操作。 代码 含义 操作 03 读取数据 读取当前寄存器内一个或多个二进制值 06 重置单一寄存器 把设置的二进制值写入单一寄存器 数据区:数据区包含需要从机执行什么动作或由从机采集的返送信息。这些信息可以是数值、参考地址等等。例如,功能码告诉从机读取寄存器的值,则数据区必需包含要读取寄存器的起始地址及读取长度。对于不同的从机,地址和数据信息都不相同。 错误校验码:主机或从机可用校验码进行判别接收信息是否出错。有时,由于电子噪声或其它一些干扰,信息在传输过程中会发生细微的变化,错误校验码保证了主机或从机对在传送过程中出错的信息不起作用。这样增加了系统的安全和效率。错误校验采用CRC-16校验方法。注:信息帧的格式都基本相同:地址码、功能码、数据区和错误校验码。2.错误校验 冗余循环码(CRC)包含2个字节,即16位二进制。CRC码由发送设备计算,放置于发送信息的尾部。接收信息的设备再重新计算接收到信息的 CRC码,比较计算得到的CRC码是否与接收到的相符,如果两者不相符,则表明出错。 CRC码的计算方法是,先预置16位寄存器全为1。再逐步把每8位数据信息进行处理。在进行CRC码计算时只用8位数据位,起始位及停止位,如有奇偶校验位的话也包括奇偶校验位,都不参与CRC码计算。 在计算CRC码时,8位数据与寄存器的数据相异或,得到的结果向低位移一字节,用0填补最高位。再检查最低位,如果最低位为1,把寄存器的内容与预置数相异或,如果最低位为0,不进行异或运算。 这个过程一直重复8次。第8次移位后,下一个8位再与现在寄存器的内容相相异或,这个过程与以上一样重复8次。当所有的数据信息处理完后,最后寄存器的内容即为CRC码值。CRC码中的数据发送、接收时低字节在前。 计算CRC码的步骤为:预置16位寄存器为十六进制FFFF(即全为1)。称此寄存器为CRC寄存器; 把第一个8位数据与16位CRC寄存器的低位相异或,把结果放于CRC寄存器; 把寄存器的内容右移一位(朝低位),用0填补最高位,检查最低位; 如果最低位为0:重复第3步(再次移位); 如果最低位为1:CRC寄存器与多项式A001(1010 0000 0000 0001)进行异或; 重复步骤3和4,直到右移8次,这样整个8位数据全部进行了处理; 重复步骤2到步骤5,进行下一个8位数据的处理; 最后得到的CRC寄存器即为CRC码。 3.功能码03,读取点和返回值:仪表采用Modbus RTU通讯规约,利用通讯命令,可以进行读取点(“保持寄存器”) 或返回值(“输入寄存器” )的操作。保持和输入寄存器都是16位(2字节)值,并且高位在前。这样用于仪表的读取点和返回值都是2字节。一次最多可读取寄存器数是60。由于一些可编程控制器不用功能码03,所以功能码03被用作读取点和返回值。从机响应的命令格式是从机地址、功能码、数据区及CRC码。数据区中的寄存器数据都是每两个字节高字节在前。4.功能码06,单点保存 主机利用这条命令把单点数据保存到仪表的存储器。从机也用这个功能码向主机返送信息。二、编程举例 下面是一个用VC编写的ModBus RTU通讯的例子 (一)、通讯口设置DCB dcb;hCom=CreateFile("COM1", GENERIC_READ|GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL);if(hCom==INVALID_HANDLE_VALUE){ MessageBox("createfile error,error");}BOOL error=SetupComm(hCom,1024,1024);if(!error) MessageBox("setupcomm error");error=GetCommState(hCom,&dcb);if(!error) MessageBox("getcommstate,error");dcb.BaudRate=2400;dcb.ByteSize=8;dcb.Parity=EVENPARITY;//NOPARITY;dcb.StopBits=ONESTOPBIT;Error=SetCommState(hCom,&dcb);(二)、CRC校验码计算UINT crcvoid calccrc(BYTE crcbuf){BYTE i;crc=crc ^ crcbuf;for(i=0;i<8;i++){BYTE TT;TT=crc&1;crc=crc>>1;crc=crc&0x7fff;if (TT==1)crc=crc^0xa001;crc=crc&0xffff;}}(三)、数据发送zxaddr=11;//读取地址为11的巡检表数据zxnum=10;//读取十个通道的数据writebuf2[0]=zxaddr;writebuf2[1]=3;writebuf2[2]=0;writebuf2[3]=0;writebuf2[4]=0;writebuf2[5]=zxnum;crc=0xffff;calccrc(writebuf2[0]);calccrc(writebuf2[1]);calccrc(writebuf2[2]);calccrc(writebuf2[3]);calccrc(writebuf2[4]);calccrc(writebuf2[5]);writebuf2[6]=crc & 0xff;writebuf2[7]=crc/0x100;WriteFile(hCom,writebuf2,8,&comnum,NULL);(四)、数据读取ReadFile(hCom,writebuf,5+zxnum*2,&comnum,NULL);//读取zxnum个通道数据,可增加错误处理程序,如地址码错误、CRC码错误判断、通讯故障处理等.

Modbus的有关定义和理解

Modbus协议最初由Modicon公司开发出来,现在Modbus已经是工业领域全球最流行的协议。协议支持传统的RS-232、RS-422、RS-485和以太网设备。许多工业设备,包括PLC,DCS,智能仪表等都在使用Modbus协议作为他们之间的通讯标准。Modbus协议包括ASCII、RTU、TCP等,并没有规定物理层。此协议定义了控制器能够认识和使用的消息结构,而不管它们是经过何种网络进行通信的。标准的Modicon控制器使用RS232C实现串行的Modbus。

modbus和485的区别是什么?

modbus和485的区别是RS485是接线口,modbus是协议。他是建立在RS485是接线口的基础上进行通讯的。所以modbus离不开485,485也离不开MODBUS,前半部分说的基本正确,RS485是接线口与485也离不开MODBUS回答错误。RS485不不完全是接线口,它是一种电气标准,包含机械特性,电气特性等特点,可以找一些通信书籍看看,描述有很多特点。Modbus具有以下几个特点:1、标准、开放:用户可以免费、放心地使用Modbus协议,不需要交纳许可证费,也不会侵犯知识产权。目前,支持Modbus的厂家超过400家,支持Modbus的产品超过600种。2、Modbus可以支持多种电气接口:如RS-232、RS-485等,还可以在各种介质上传送,如双绞线、光纤、无线等。3、Modbus的帧格式简单、紧凑,通俗易懂。用户使用容易,厂商开发简单。

用c语言编写modbus程序

#ifdef MODBUS////******************************************************************************// CRC 16 Data Table// *****************const unsigned int crc_tbl[256]={ 0x0000, 0xC0C1, 0xC181, 0x0140, 0xC301, 0x03C0, 0x0280, 0xC241, 0xC601, 0x06C0, 0x0780, 0xC741, 0x0500, 0xC5C1, 0xC481, 0x0440, 0xCC01, 0x0CC0, 0x0D80, 0xCD41, 0x0F00, 0xCFC1, 0xCE81, 0x0E40, 0x0A00, 0xCAC1, 0xCB81, 0x0B40, 0xC901, 0x09C0, 0x0880, 0xC841, 0xD801, 0x18C0, 0x1980, 0xD941, 0x1B00, 0xDBC1, 0xDA81, 0x1A40, 0x1E00, 0xDEC1, 0xDF81, 0x1F40, 0xDD01, 0x1DC0, 0x1C80, 0xDC41, 0x1400, 0xD4C1, 0xD581, 0x1540, 0xD701, 0x17C0, 0x1680, 0xD641, 0xD201, 0x12C0, 0x1380, 0xD341, 0x1100, 0xD1C1, 0xD081, 0x1040, 0xF001, 0x30C0, 0x3180, 0xF141, 0x3300, 0xF3C1, 0xF281, 0x3240, 0x3600, 0xF6C1, 0xF781, 0x3740, 0xF501, 0x35C0, 0x3480, 0xF441, 0x3C00, 0xFCC1, 0xFD81, 0x3D40, 0xFF01, 0x3FC0, 0x3E80, 0xFE41, 0xFA01, 0x3AC0, 0x3B80, 0xFB41, 0x3900, 0xF9C1, 0xF881, 0x3840, 0x2800, 0xE8C1, 0xE981, 0x2940, 0xEB01, 0x2BC0, 0x2A80, 0xEA41, 0xEE01, 0x2EC0, 0x2F80, 0xEF41, 0x2D00, 0xEDC1, 0xEC81, 0x2C40, 0xE401, 0x24C0, 0x2580, 0xE541, 0x2700, 0xE7C1, 0xE681, 0x2640, 0x2200, 0xE2C1, 0xE381, 0x2340, 0xE101, 0x21C0, 0x2080, 0xE041, 0xA001, 0x60C0, 0x6180, 0xA141, 0x6300, 0xA3C1, 0xA281, 0x6240, 0x6600, 0xA6C1, 0xA781, 0x6740, 0xA501, 0x65C0, 0x6480, 0xA441, 0x6C00, 0xACC1, 0xAD81, 0x6D40, 0xAF01, 0x6FC0, 0x6E80, 0xAE41, 0xAA01, 0x6AC0, 0x6B80, 0xAB41, 0x6900, 0xA9C1, 0xA881, 0x6840, 0x7800, 0xB8C1, 0xb981, 0x7940, 0xBB01, 0x7BC0, 0x7A80, 0xBA41, 0xBE01, 0x7EC0, 0x7F80, 0xBF41, 0x7D00, 0xBDC1, 0xBC81, 0x7C40, 0xB401, 0x74C0, 0x7580, 0xB541, 0x7700, 0xB7C1, 0xB681, 0x7640, 0x7200, 0xB2C1, 0xB381, 0x7340, 0xB101, 0x71C0, 0x7080, 0xB041, 0x5000, 0x90C1, 0x9181, 0x5140, 0x9301, 0x53C0, 0x5280, 0x9241, 0x9601, 0x56C0, 0x5780, 0x9741, 0x5500, 0x95C1, 0x9481, 0x5440, 0x9C01, 0x5CC0, 0x5D80, 0x9D41, 0x5F00, 0x9FC1, 0x9E81, 0x5E40, 0x5A00, 0x9AC1, 0x9B81, 0x5B40, 0x9901, 0x59C0, 0x5880, 0x9841, 0x8801, 0x48C0, 0x4980, 0x8941, 0x4B00, 0x8BC1, 0x8A81, 0x4A40, 0x4E00, 0x8EC1, 0x8F81, 0x4F40, 0x8D01, 0x4DC0, 0x4C80, 0x8C41, 0x4400, 0x84C1, 0x8581, 0x4540, 0x8701, 0x47C0, 0x4680, 0x8641, 0x8201, 0x42C0, 0x4380, 0x8341, 0x4100, 0x81C1, 0x8081, 0x4040};//#pragma end_abs_address//******************************************************************************//#define DEFAULT_ADDRESS 1 // all slaves start with this Modbus address// communication commands://#define CHOOSE_SLOT 0x80//#define POLL_SLOT 0x81//#define POLL_ACK 0x82// positions in a Modbus packet#define ADDR 0#define FCN 1#define REGHI 2#define REGLO 3#define NUMREGSHI 4#define NUMREGSLO 5#define OUTBYTES 2// Modbus exception codes#define FCN_NOT_SUPPORTED 1 // a Modbus function code we can"t handle#define BAD_ADDR_OR_CMD 2 // a Modbus "register" (command or address to us) we don"t know#define BAD_COUNT 3 // num regs != num bytes * 2#define CMD_NOT_COMPLETE 4 // command didn"t complete successfully// other defines#define IN 0#define OUT 1//// SLOT_NUMBER is the 2 byte device configuration// the first byte is the ID// the second byte is the transmission mode coded as follows:// bit 0x01: 0=19200, 1=9600 baud// bit 0x02: 0=even parity, 1=odd parity// bit 0x04: 0=parity, 1=no parity// bit 0x08: 0=1 stop bit, 1=2 stop bits// if bit 0x04 is set and bit 0x08 is not set then it"s 8 bit mode (vs 9 bit mode)////unsigned char receiveBuffer[32] = {0}; // Reserve 32 bytes for packet.unsigned char device_addr = DEFAULT_ADDRESS; // assigned device address - start with disconnected//unsigned char timeout_counter = 10;//unsigned char timeout_duration = 10; // seconds, default//unsigned char pkt_index = 0;// return number of bytes in packet, not including crcunsigned char MDB_get_length(unsigned char in_out, unsigned char* ptr){ if(comControlByte & 0x20) return 6; switch(*(ptr+FCN)) { case 0x06: // write single reg return 6; case 0x03: // read multiple regs if (in_out == IN) // incoming packet return 6; else return *(ptr+OUTBYTES) + 3; case 0x10: // write multiple regs return (*(ptr+NUMREGSLO) << 1) + 7; default: // assume error packet return 3; }}// calculate CRC16 on a packetunsigned int MDB_crc_calc(unsigned char in_out, unsigned char* ptr){ unsigned char c1, c2; unsigned int crc = 0xffff; // initial value unsigned char* ptr_pkt_hdr = ptr; c2 = MDB_get_length(in_out,ptr); for(c1=0; c1<c2; c1++) crc = ((crc >> 8) & 0xFF) ^ crc_tbl[(crc ^ *ptr_pkt_hdr++) & 0xFF]; return crc;}// check crc on an incoming packetunsigned char MDB_crc_check(unsigned char* ptr){ unsigned int i1; unsigned char c1, c2, c3; i1 = MDB_crc_calc(IN, ptr); c1 = *(ptr+MDB_get_length(IN,ptr)+1); // msb of incoming crc c2 = *(ptr+MDB_get_length(IN,ptr)); // lsb of incoming crc c3 = (i1 >> 8); // msb of calculated crc if((c2 == (i1 & 0x00FF)) && (c1 == c3)) // compare msb & lsb return 1; else return 0;}// send Modbus packetsvoid MDB_pkt_sender(unsigned char* ptr){ unsigned char idx, pkt_len; unsigned int i1;// append crc, lsb 1st i1 = MDB_crc_calc(OUT,ptr); pkt_len = MDB_get_length(OUT,ptr); *(ptr+pkt_len++) = (unsigned char)i1; // lsb *(ptr+pkt_len++) = (i1 >> 8); // msb //SCI1C2 = 0x08; // transmit enable //comLedOn(); PTGD |= 0x80; for (idx = 0; idx < pkt_len; idx++) { while(!(SCI1S1 & 0x80)); // wait for tdre=1 i1 = SCI1S1; SCI1D = *(ptr+idx); } while(!(SCI1S1 & 0x80)); while(!(SCI1S1 & 0x40)); //comLedOff(); PTGD &= 0x7f; //SCI1C2 = 0x2c; // back to receive mode}// return a Modbus error packetvoid MDB_error(unsigned char exp_code, unsigned char* ptr){ *(ptr+FCN) |= 0x80; // set error code *(ptr+FCN+1) = exp_code; // set exception code MDB_pkt_sender(ptr);}//void MDB_read_data(unsigned char* ptr){ if(get_data((ptr+2), *(ptr+3))) { // get_data() sticks the length of the data in receiveBuffer[2] // receiveBuffer[3] & on will have actual data // receiveBuffer[0] & receiveBuffer[1] unchanged MDB_pkt_sender(ptr); // appends CRC before sending } else MDB_error(BAD_ADDR_OR_CMD, ptr);}// handle data writesvoid MDB_write_data(unsigned char* ptr){ if((*(ptr+5)<<1) == *(ptr+6)) { switch(*(ptr+3))//receiveBuffer[3]) { //case 0x18: // new timeout value // timeout_duration = receiveBuffer[7]; // MDB_pkt_sender(); // echo received command // break; //case 0x63: // lamp test // clampTest = 40; // MDB_pkt_sender(); // echo received command // break; case ADDRESS: //if(receiveBuffer[8] && (receiveBuffer[8] < 248)) // valid addresses if(*(ptr+8) && (*(ptr+8) < 248)) { //device_addr = *(ptr+8); // not until reset nonvolatile[0] = *(ptr+8); // device ID nonvolatile[1] = *(ptr+7); // transmission mode nonvolatile[2] = ~nonvolatile[0]; nonvolatile[3] = ~nonvolatile[1]; writeToNonvolatile(SLOT_NUMBER, &nonvolatile[0]); comControlByte |= 0x20; MDB_pkt_sender(ptr); comControlByte &= 0xdf; } else MDB_error(BAD_ADDR_OR_CMD, ptr); break; case INSTALLATION_DATE: // installation date readFromNonvolatile(DATE_DATA, &nonvolatile[0]); nonvolatile[4] = *(ptr+7);//receiveBuffer[7]; nonvolatile[5] = *(ptr+8);//receiveBuffer[8]; nonvolatile[6] = *(ptr+9);//receiveBuffer[9]; nonvolatile[7] = *(ptr+10);//receiveBuffer[10]; nonvolatile[12] = ~nonvolatile[4]; nonvolatile[13] = ~nonvolatile[5]; nonvolatile[14] = ~nonvolatile[6]; nonvolatile[15] = ~nonvolatile[7]; writeToNonvolatile(DATE_DATA, &nonvolatile[0]); comControlByte |= 0x20; MDB_pkt_sender(ptr); // echo received command comControlByte &= 0xdf; break; default: MDB_error(BAD_ADDR_OR_CMD, ptr); break; } } else MDB_error(BAD_COUNT, ptr);}//void MDB_parse(char *bufPtr){ unsigned char i = 0; if(MDB_crc_check(bufPtr)) { if(*(bufPtr+ADDR) == device_addr) { switch(*(bufPtr+FCN)) { case 0x03: // modbus read multiple regs MDB_read_data(bufPtr); break; case 0x10: // modbus write multiple regs MDB_write_data(bufPtr); break; default: // modbus function not supported MDB_error(FCN_NOT_SUPPORTED, bufPtr); break; } } }}

RS485和MODBUS的区别是什么?

RS-485又名TIA-485-A, ANSI/TIA/EIA-485或TIA/EIA-485。RS485是一个定义平衡数字多点系统中的驱动器和接收器的电气特性的标准,该标准由电信行业协会和电子工业联盟定义。使用该标准的数字通信网络能在远距离条件下以及电子噪声大的环境下有效传输信号。RS-485使得廉价本地网络以及多支路通信链路的配置成为可能。[s1]RS485有两线制和四线制两种接线,四线制只能实现点对点的通信方式,现很少采用,现在多采用的是两线制接线方式,这种接线方式为总线式拓扑结构,在同一总线上最多可以挂接32个节点。在RS485通信网络中一般采用的是主从通信方式,即一个主机带多个从机。很多情况下,连接RS-485通信链路时只是简单地用一对双绞线将各个接口的“A”、“B”端连接起来,而忽悄升略了信号地的连接,这种连接方法在许多场合是能正常工作的,但却埋下了很大的隐患,原因1是共模干扰:RS-485接口采用差分方式传输信号方式,卜运蚂并不需要相对于某个参照点来检测信号,系统只需检测两线之间的电位差就可以了,但容易忽视了收发器有一定的共模电压范围,RS-485收发器共模电压范围为-7到+12V,只有满足上述条件,整个网络才能正常工作;当网络线路中共模电压超出此范围时就会影响通信的稳定可靠,甚至损坏接口型埋;原因二是EMI的问题:发送驱动器输出信号中的共模部分需要一个返回通路,如没有一个低阻的返回通道(信号地),就会以辐射的形式返回源端,整个总线就会像一个巨大的天线向外辐射电磁波。(来百度百科)工业控制已从单机控制走向集中监控、集散控制,如今已进入网络时代,工业控制器连网也为网络管理提供了方便。Modbus就是工业控制器的网络协议中的一种。1. 协议概述物理层:传输方式:RS485通讯地址:0-247通讯波特率:可设定通讯介质:屏蔽双绞线传输方式:主从半双工方式协议在一根通讯线上使用应答式连接(半双工),这意味着在一根单独的通讯线上信号沿着相反的两个方向传输。首先,主计算机的信号寻址到一台唯一的终端设备(从机),然后,在相反的方向上终端设备发出的应答信号传输给主机。协议只允许在主计算机和终端设备之间,而不允许独立的设备之间的数据交换,这就不会在它们初始化时占据通讯线路,而仅限于响应到达本机的查询信号。

profibus和modbus的区别

profibus是西门子推出的一种前端设备的现场联网标准,实现前端设备的组网通讯,实现分布式协同控制。modbus是用于前端设备,以及前端与上位机之间的一种数据通讯的对话协议。举个例子,profibus相当于联通,移动等通讯公司的通讯网络,modbus则是利用通讯网络打电话是,通讯双方所采用的语言。这两者不是同一类概念。

modbus协议和modbus tcp/ip协议有什么区别

TCP/IP协议是网络通讯协议。MODBUS是应用与工业现场(电子控制)的通讯协议。两者的应用范围和应用环境有所不同。两者关系不大,modbus是一种应用层的协议,tcp/ip是网络或传输层的协议,modbus可以架在TCP/IP上,也可不。

51单片机MODBUS通讯,RTU中的CRC校验

51默认的数据类型为字符型。这段程序是典型的CRC16查表速算,网上一搜一大把到处都是。

Modbus通讯协议的功能码定义

表1 ModBus功能码 01READ COIL STATUS02READ INPUT STATUS03READ HOLDING REGISTER04READ INPUT REGISTER05WRITE SINGLE COIL06WRITE SINGLE REGISTER15WRITE MULTIPLE COIL16WRITE MULTIPLE REGISTER

MBUS 和MODBUS 什么关系啊

暧昧关系

MODBUS协议有哪几种?

Modbus协议是应用于电子控制器上的一种通用语言。通过此协议,控制器相互之间、控制器经由网络(例如以太网)和其他设备之间可以通信,已经成为一种工业标准。有了它,不同厂商生产的控制设备可以连成工业网络,进行集中监控。这种协议定义了一种控制器能够认识使用的数据结构,而不管它们是经过何种网络进行通信的。它描述了控制器请求访问其他设备的过程,如何回应来自其他设备的请求,以及怎样侦测错误记录,它制定了通信数据的格局和内容的公共格式。在进行多机通信的时候,Modbus协议规定每个控制器必须要知道他们的设备地址,识别按照地址发送过来的数据,决定是否要产生动作,产生何种动作,如果要回应,控制器将生成的反馈信息用Modbus协议发出。Modbus协议允许在各种网络体系结构内进行简单通信,每种设备(PLC、人机界面、控制面板、驱动程序、输入输出设备)都能使用Modbus协议来启动远程操作,一些网关允许在几种使用Modbus协议的总线或网络之间的通信。Modbus有两种通信传输方式,一种是ASCII模式,一种是RTU模式。由于ASCII模式的数据字节是7bit数据位,51单片机无法实现,而且应用也相对较少,所以应用较多的RTU模式。一条典型的RTU数据帧如图所示。起始位和结束符:上图代表的是一个数据帧,前后都至少有3.5个字节的时间间隔,起始位和结束符实际上没有任何数据,T1-T2-T3-T4代表的是时间间隔3.5个字节以上的时间,而真正有意义的第一个字节是设备地址。设备地址:在多个传感器通信的时候,数据那么多,我们依靠什么判断这个数据帧是哪个设备的呢?没错,就是依靠这个设备地址字节。每个设备都有一个自己的地址,当设备接收到一帧数据后,程序首先对设备地址字节进行判断比较,如果与自己的地址不同,则对这帧数据直接不予理会,如果与自己的地址相同,就要对这帧数据进行解析,按照之后的功能码执行相应的功能。如果地址是0x00,则认为是一个广播命令,就是所有的从机设备都要执行的指令。功能代码:在第二个字节功能代码字节中,Modbus规定了部分功能代码,此外也保留了一部分功能代码作为备用或者用户自定义。

modbus和485有什么区别呢?哪个好用呢?

modbus和485的区别是RS485是接线口,modbus是协议。他是建立在RS485是接线口的基础上进行通讯的。所以modbus离不开485,485也离不开MODBUS,前半部分说的基本正确,RS485是接线口与485也离不开MODBUS回答错误。RS485不不完全是接线口,它是一种电气标准,包含机械特性,电气特性等特点,可以找一些通信书籍看看,描述有很多特点。Modbus具有以下几个特点:1、标准、开放:用户可以免费、放心地使用Modbus协议,不需要交纳许可证费,也不会侵犯知识产权。目前,支持Modbus的厂家超过400家,支持Modbus的产品超过600种。2、Modbus可以支持多种电气接口:如RS-232、RS-485等,还可以在各种介质上传送,如双绞线、光纤、无线等。3、Modbus的帧格式简单、紧凑,通俗易懂。用户使用容易,厂商开发简单。

如何启动modbus

需要在plc安装modbus协议,或者通过modbus路由装置进行映射实现。

Modbus通讯协议的特点

Modbus具有以下几个特点:(1)标准、开放,用户可以免费、放心地使用Modbus协议,不需要交纳许可证费,也不会侵犯知识产权。目前,支持Modbus的厂家超过400家,支持Modbus的产品超过600种。(2)Modbus可以支持多种电气接口,如RS-232、RS-485等,还可以在各种介质上传送,如双绞线、光纤、无线等。(3)Modbus的帧格式简单、紧凑,通俗易懂。用户使用容易,厂商开发简单。 标准的Modbus口是使用RS-232-C兼容串行接口,它定义了连接口的针脚、电缆、信号位、传输波特率、奇偶校验。控制器能直接或经由Modem组网。控制器通信使用主—从技术,即仅一设备(主设备)能初始化传输(查询)。其它设备(从设备)根据主设备查询提供的数据作出相应反应。典型的主设备:主机和可编程仪表。典型的从设备:可编程控制器。主设备可单独和从设备通信,也能以广播方式和所有从设备通信。如果单独通信,从设备返回一消息作为回应,如果是以广播方式查询的,则不作任何回应。Modbus协议建立了主设备查询的格式:设备(或广播)地址、功能代码、所有要发送的数据、一错误检测域。从设备回应消息也由Modbus协议构成,包括确认要行动的域、任何要返回的数据、和一错误检测域。如果在消息接收过程中发生一错误,或从设备不能执行其命令,从设备将建立一错误消息并把它作为回应发送出去。 在其它网络上,控制器使用对等技术通信,故任何控制器都能初始化和其它控制器的通信。这样在单独的通信过程中,控制器既可作为主设备也可作为从设备。提供的多个内部通道可允许同时发生的传输进程。在消息位,Modbus协议仍提供了主—从原则,尽管网络通信方法是“对等”。如果一控制器发送一消息,它只是作为主设备,并期望从从设备得到回应。同样,当控制器接收到一消息,它将建立一从设备回应格式并返回给发送的控制器。 (1)查询查询消息中的功能代码告之被选中的从设备要执行何种功能。数据段包含了从设备要执行功能的任何附加信息。例如功能代码03是要求从设备读保持寄存器并返回它们的内容。数据段必须包含要告之从设备的信息:从何寄存器开始读及要读的寄存器数量。错误检测域为从设备提供了一种验证消息内容是否正确的方法。(2)回应如果从设备产生一正常的回应,在回应消息中的功能代码是在查询消息中的功能代码的回应。数据段包括了从设备收集的数据:像寄存器值或状态。如果有错误发生,功能代码将被修改以用于指出回应消息是错误的,同时数据段包含了描述此错误信息的代码。错误检测域允许主设备确认消息内容是否可用。

modbus协议有几种传输模式?

Modbus是由Modicon(现为施耐德电气公司的一个品牌)在1979年发明的,是全球第一个真正用于工业现场的总线协议。为更好地普及和推动Modbus在基于以太网上的分布式应用,目前施耐德公司已将Modbus协议的所有权移交给IDA(Interface for Distributed Automation,分布式自动化接口)组织,并成立了Modbus-IDA组织,为Modbus今后的发展奠定了基础。在中国,Modbus已经成为国家标准GB/T19582-2008。据不完全统计:截止到2007年,Modbus的节点安装数量已经超过了1000万个。在ModBus系统中有2种传输模式可选择。这2种传输模式与从机PC通信的能力是同等的。选择时应视所用ModBus主机而定,每个ModBus系统只能使用一种模式,不允许2种模式混用。一种模式是ASCII(美国信息交换码),另一种模式是RTU(远程终端设备)DTU是无线数据传输模块,采用2G、3G网络进行远程数据传输的终端模块。其原理是将串口数据打包成TCP或者UDP包进行数据远传。RTU是模拟量采集终端模块,是将模拟变量采集后,经过A/D转化成数字格式的设备。DTU一般只能传输标准的232、485数据,RTU只能将模拟量采集后转化为串口数据。厦门,为,那公司的DTU采用工业端子接法,可以实现232、485数据传输,同时更具备了强大的功能:1、代替RTU,直接采集模拟量,做逻辑控制2、可以用手机短信配置、可以手机短信作为数据备份3、可以独立加密4、可以通过指示灯了解设备工作状态,信号状态。从功能上说,带DTU及RTU的一体机性价比更高!

modbusrtu与modbusserver区别

modbusrtu与modbusserver区别:1、概念不同:MODBUS是一种标准的工业控制数据交换协议,能通过RTU和ASCII交换协议数据。2、不同的通信方式:以太网的对应的通信模式是MODBUSTCP。

modbus协议rtu是什么

ModBus协议是应用层报文传输协议(OSI模型第7层),它定义了一个与通信层无关的协议数据单元(PDU),即PDU=功能码+数据域。ModBus协议能够应用在不同类型的总线或网络。对应不同的总线或网络,Modbus协议引入一些附加域映射成应用数据单元(ADU),即ADU=附加域+PDU。目前,Modbus有下列三种通信方式:1. 以太网,对应的通信模式是MODBUS TCP。2. 异步串行传输(各种介质如有线RS-232-/422/485/;光纤、无线等),对应的通信模式是MODBUS RTU或MODBUS ASCII。3. 高速令牌传递网络,对应的通信模式是Modbus PLUS。

MODBUS通信协议是什么标准协议

ModBus协议是应用层报文传输协议。1、Modbus 协议是应用于电子控制器上的一种通用语言。通过此协议,控制器相互之间、控制器经由网络(例如以太网)和其它设备之间可以通信。它已经成为一通用工业标准。有了它,不同厂商生产的控制设备可以连成工业网络,进行集中监控。2、此协议定义了一个控制器能认识使用的消息结构,而不管它们是经过何种网络进行通信的。它描述了一控制器请求访问其它设备的过程,如何回应来自其它设备的请求,以及怎样侦测错误并记录。它制定了消息域格局和内容的公共格式。3、当在一Modbus网络上通信时,此协议决定了每个控制器须要知道它们的设备地址,识别按地址发来的消息,决定要产生何种行动。如果需要回应,控制器将生成反馈信息并用Modbus协议发出。在其它网络上,包含了Modbus协议的消息转换为在此网络上使用的帧或包结构。这种转换也扩展了根据具体的网络解决节地址、路由路径及错误检测的方法。

modbus协议是否就是RS232或者RS485, 如果不是又有哪些区别

MODBUS是一种国际标准的通讯协议,用于不同厂商之间的设备交换数据(一般是工业用途);又分MODBUS RTU,MODBUS ASCII和后来发展的MODBUS TCP三种模式:其中前两种(MODBUS RTU,MODBUS ASCII)所用的物理硬件接口都是串行(Serial)通讯口(RS232,RS422,RS485)。RS485是一个物理接口,简单的说是硬件。

Modbus 是什么意思?怎么翻译?

Modbus 协议是应用于电子控制器上的一种通用语言。通过此协议,控制器相互之间、控制器经由网络(例如以太网)和其它设备之间可以通信。它已经成为一通用工业标准。有了它,不同厂商生产的控制设备可以连成工业网络,进行集中监控。此协议定义了一个控制器能认识使用的消息结构,而不管它们是经过何种网络进行通信的。它描述了一控制器请求访问其它设备的过程,如何回应来自其它设备的请求,以及怎样侦测错误并记录。它制定了消息域格局和内容的公共格式。 当在一Modbus网络上通信时,此协议决定了每个控制器须要知道它们的设备地址,识别按地址发来的消息,决定要产生何种行动。如果需要回应,控制器将生成反馈信息并用Modbus协议发出。在其它网络上,包含了Modbus协议的消息转换为在此网络上使用的帧或包结构。这种转换也扩展了根据具体的网络解决节地址、路由路径及错误检测的方法。

莫迪康与标准modbus区别

结构不同和作用不同。1、结构不同。莫迪康采用模块化结构和数字技术的应用。标准modbus采用了数据结构的形式。2、作用不同。莫迪康主要用于MCGS软件通过ModbusRTU 协议读写ModiconPLC设备的各种寄存器的数据。标准modbus应用于各种数据采集和过程监控。

modbus 是什么?

Modbus是由Modicon(现为施耐德电气公司的一个品牌)在1979年发明的,是全球第一个真正用于工业现场的总线协议。 Modbus具有以下几个特点:  (1)标准、开放,用户可以免费、放心地使用Modbus协议,不需要交纳许可证费,也不会侵犯知识产权。目前,支持Modbus的厂家超过400家,支持Modbus的产品超过600种。  (2)Modbus可以支持多种电气接口,如RS-232、RS-485等,还可以在各种介质上传送,如双绞线、光纤、无线等。  (3)Modbus的帧格式简单、紧凑,通俗易懂。用户使用容易,厂商开发简单。

什么是标准MODBUS协议

什么是Modbus? Modbus 协议是应用于电子控制器上的一种通用语言。通过此协议,控制器相互之间、控制器经由网络(例如以太网)和其它设备之间可以通信。Modbus 协议定义了一个控制器能认识使用的消息结构,而不管它们是经过何种网络进行通信的。它描述了一控制器请求访问其它设备的过程,如果回应来自其它设备的请求,以及怎样侦测错误并记录。它制定了消息域格局和内容的公共格式。关于Modbus参考资料:http://www.cnblogs.com/luomingui/archive/2013/06/14/Modbus.html

什么是modbus

Modbus 协议是应用于电子控制器上的一种通用语言。通过此协议,控制器相互之间、控制器经由网络(例如以太网)和其它设备之间可以通信。它已经成为一通用工业标准。有了它,不同厂商生产的控制设备可以连成工业网络,进行集中监控。此协议定义了一个控制器能认识使用的消息结构,而不管它们是经过何种网络进行通信的。它描述了一控制器请求访问其它设备的过程,如果回应来自其它设备的请求,以及怎样侦测错误并记录。它制定了消息域格局和内容的公共格式。当在一Modbus网络上通信时,此协议决定了每个控制器须要知道它们的设备地址,识别按地址发来的消息,决定要产生何种行动。如果需要回应,控制器将生成反馈信息并用Modbus协议发出。在其它网络上,包含了Modbus协议的消息转换为在此网络上使用的帧或包结构。这种转换也扩展了根据具体的网络解决节地址、路由路径及错误检测的方法。

modbus是什么?

RS-485又名TIA-485-A, ANSI/TIA/EIA-485或TIA/EIA-485。RS485是一个定义平衡数字多点系统中的驱动器和接收器的电气特性的标准,该标准由电信行业协会和电子工业联盟定义。使用该标准的数字通信网络能在远距离条件下以及电子噪声大的环境下有效传输信号。RS-485使得廉价本地网络以及多支路通信链路的配置成为可能。[s1]RS485有两线制和四线制两种接线,四线制只能实现点对点的通信方式,现很少采用,现在多采用的是两线制接线方式,这种接线方式为总线式拓扑结构,在同一总线上最多可以挂接32个节点。在RS485通信网络中一般采用的是主从通信方式,即一个主机带多个从机。很多情况下,连接RS-485通信链路时只是简单地用一对双绞线将各个接口的“A”、“B”端连接起来,而忽略了信号地的连接,这种连接方法在许多场合是能正常工作的,但却埋下了很大的隐患,原因1是共模干扰:RS-485接口采用差分方式传输信号方式,并不需要相对于某个参照点来检测信号,系统只需检测两线之间的电位差就可以了,但容易忽视了收发器有一定的共模电压范围,RS-485收发器共模电压范围为-7到+12V,只有满足上述条件,整个网络才能正常工作;当网络线路中共模电压超出此范围时就会影响通信的稳定可靠,甚至损坏接口;原因二是EMI的问题:发送驱动器输出信号中的共模部分需要一个返回通路,如没有一个低阻的返回通道(信号地),就会以辐射的形式返回源端,整个总线就会像一个巨大的天线向外辐射电磁波。(来百度百科)工业控制已从单机控制走向集中监控、集散控制,如今已进入网络时代,工业控制器连网也为网络管理提供了方便。Modbus就是工业控制器的网络协议中的一种。1. 协议概述物理层:传输方式:RS485通讯地址:0-247通讯波特率:可设定通讯介质:屏蔽双绞线传输方式:主从半双工方式协议在一根通讯线上使用应答式连接(半双工),这意味着在一根单独的通讯线上信号沿着相反的两个方向传输。首先,主计算机的信号寻址到一台唯一的终端设备(从机),然后,在相反的方向上终端设备发出的应答信号传输给主机。协议只允许在主计算机和终端设备之间,而不允许独立的设备之间的数据交换,这就不会在它们初始化时占据通讯线路,而仅限于响应到达本机的查询信号。

MODBUS RTU通讯协议中,功能码为15、16的请求格式怎么写,各个字节代表什么含义?

16码是站号,命令,地址,字数,字节数,写入数值 校验15码也是一样

为什么用串口测试工具读取Modbus设备数据时,寄存器地址要加1?

因为寄存器地址要加1是:MODBUS是MODCON公司开发的一个通讯协议。他的起始地址是从1开始的。别的都是从0开始的,正好错开一位。和第三方设备走MODBUS通讯的时候要加1。一、串口串行接口简称串口,也称串行通信接口或串行通讯接口(通常指COM接口)。串行是采用串行通信方式的扩展接口。串行接口 (Serial Interface) 是指数据一位一位地顺序传送。串行特点是通信线路简单,只要一对传输线就可以实现双向通信。二、串口由来串口的出现是在1980年前后,数据传输率是115kbps~230kbps。串口出现的初期是为了实现连接计算机外设的目的,初期串口一般用来连接鼠标和外置Modem以及老式摄像头和写字板等设备。串口也可以应用于两台计算机(或设备)之间的互联及数据传输。由于串口(COM)不支持热插拔及传输速率较低,目前部分新主板和大部分便携电脑已开始取消该接口。目前串口多用于工控和测量设备以及部分通信设备中。

modbus与485的区别?

modbus和485的区别是RS485是接线口,modbus是协议。他是建立在RS485是接线口的基础上进行通讯的。所以modbus离不开485,485也离不开MODBUS,前半部分说的基本正确,RS485是接线口与485也离不开MODBUS回答错误。RS485不不完全是接线口,它是一种电气标准,包含机械特性,电气特性等特点,可以找一些通信书籍看看,描述有很多特点。Modbus具有以下几个特点:1、标准、开放:用户可以免费、放心地使用Modbus协议,不需要交纳许可证费,也不会侵犯知识产权。目前,支持Modbus的厂家超过400家,支持Modbus的产品超过600种。2、Modbus可以支持多种电气接口:如RS-232、RS-485等,还可以在各种介质上传送,如双绞线、光纤、无线等。3、Modbus的帧格式简单、紧凑,通俗易懂。用户使用容易,厂商开发简单。

请问下,plc里的modbus和DP有什么区别吗

DP是Porfibus技术:支持主—从系统、纯主站系统、多主多从混合系统等几种传输方式。主站具有对总线的控制权,可主动发送信息。MODBUS硬件标准是RS485,但现在多用于POWERBUS总线芯片来替换RS485芯片的应用,因为RS485在现场传输的弊端有以下几点:1, 无带载能力。Rs485使用差分的方式进行信号传输,通过总线无法给后端设备供电,在很多施工现场,传感器端很难找到现场取电的电源,只能从主机端再拉两根24V电源线来供电。2, 有极性,且需要手拉手。这一问题导致施工非常繁琐,而且拓扑结构的固定也侧面反应了抗干扰能力不足,无法与其它种类的线共管,这也不符合现场实际情况。3, 需要加终端匹配电阻且从机需要隔离,成本高昂。这意味着每个从机需要一颗隔离电源B0505芯片,且长线需要加匹配电阻来确保最终总线回声的消除。而这些问题POWERBUS早已解决,现POWERBUS可以透传MODBUS等多种总线协议,在多年的现场应用中,被证明是一种替换485的有效解决方案。

无协议通信 MODBUS通信 有何区别

无协议通信?通信2端必须有协议的,可以简单,或者复杂MODBUS通信modcon的协议,现在成为事实标准,广泛使用

MODBUS 是总线还是协议?

到中国工控网论坛去看看吧。

Modbus地址是5位还是6位?3区和4区哪个用来读模拟量输入?

一、Modbus地址其实指的是各类寄存器的设备编号,为5位十进制数,各区的编号从1到9999,即: x0dx0a● 00001 ~ 09999 :离散量输出继电器编号 x0dx0a● 10001 ~ 19999 :离散量输入继电器编号 x0dx0a● 30001 ~ 39999 :模拟量输入寄存器编号 x0dx0a● 40001 ~ 49999 :保持型输出寄存器编号 x0dx0a二、3区是读模拟量输入寄存器,4区是用于写数据到输出寄存器。x0dx0a三、Modbus地址虽然是5位十进制数,但由于功能码的定向作用,如功能码01/05/15就只能操作0X区,不会操作其他区,所以编程时只需要后4位数,而且要把它换成16进制地址(地址从0开始),即:x0dx0a通讯帧里的设备地址=(4位十进制设备编号-1)转换成16进制x0dx0a如用功能码02读取1区中编号为10012的输入继电器的状态,通讯帧里的设备地址就要转换成:x0dx0a0012-1=(0011)十进制 =(000B)十六进制

Modbus和Profibus的区别

都是主问从答的通讯方式,profibus支持多主站,MODBUS只能单主站,modbus走RS232/422/485总线都可以,profibus走的是DP总线,相当于是加强版的RS485,所以速度比普通的串行总线高很多,理论最高12M/S
 1 2  下一页  尾页