Modbus RTU网络通信协议议详解以及与Modbus TCP网络通信协议议

Modbus协议完全资料与程序解析
单片机&嵌入式
单片机应用
嵌入式操作系统
学习工具&教程
学习和开发单片机的必备工具
(有问必答)
(带你轻松入门)
电子元件&电路模块
当前位置: >>
>> 浏览文章
Modbus协议完全资料与程序解析
1简述,modbus是一种工业用的多设备之间的主从通信协议。只要两台设备之间,是采用modbus协议的主从关系,并连接到相同网络,即可互相通信。因为Modbus只是协议,而且只规定了数据帧,底层连接,可以是232,485或者以太网。设备一般采用232和485进行通信,因为成本低。当然要是考虑远距离传输和多卖钱的话,也会采用以太网,不过应该就会相应复杂一些了。
2模式,modbus有两种模式,一种叫RTU模式,另一种叫acsii模式,RTU模式是纯二进制的,而acsii模式,一个信息中的每8位字节作为2个ascii字符传输的,这种模式的主要优点时允许字符之间的时间间隔长达1秒,也不会出现错误。而较acsii模式,RTU模式的优点是用最少的字节,表达更多的内容。但同时也要求设备必须连续传输。
3通讯,modbus属于主从通讯,可以是一主一从或者一主多从。通讯的方式为主机向从机发送命令(或者叫请求)从机向主机发送响应。主机不发送,从机不返回,一发,一收,不发不收。而且一个时间,只有一个机器发送请求或者响应,否则的话,则会出错。
4信息帧,由于项目上没有涉及到acsii模式,所以本文只讨论RTU模式,不讨论acsii模式,以后如果要是用的上,肯定会继续讨论。用不上,就不讨论了。RTU帧,开始时,必须要有3.5个静止的时间,也就是时间间隔,用来区分上一帧和下一帧,如果没有时间间隔的话,则会分辨不出哪里是帧开始,哪里是帧结束了。3.5个时间间隔依据波特率不同而不同。同样,结束时也需要时间。除了时间以外,还有地址,功能码,数据,crc校验四个部分,每个部分的字节数不同,地址功能码各1个字节,crc是2个字节其完整表达如下:
n字节 n*8b
4.1、地址:主要用于区分从机,在下位机程序中,的宏定义中设置不同的从机地址。
&&&&&& #define Modbus_addr&0x01
设备响应时,第一位也是本机地址。地址的范围是从0-247,地址0为广播地址,所有机器均可以识别。
&&&&&& 4.2、功能码:表示主机要命令这个设备的什么功能,执行什么程序。我看了一下正规的modbus的功能码多达24个,不同厂家生产的不同型号的设备,可能会支持不同的功能码,所以买之前需要注意一下。具体功能如下:
01 读线圈状态&&&&&&&&&&& 02 读输入状态&&&&&&&&&&& 03 读保持寄存器&&&&&&&& 04 读输入寄存器&&&&&&&& 05 强制单个线圈
06 预置单个寄存器&&&& 07 读不正常状态&&&&&&&& 08 诊断&&&&&&&&&&&&&&&&&&& 09 程序484&&&&&&&&&&&&&&&& 10 查询484
11 通讯事件控制&&&&&&&& 12 通讯事件记录&&&&&&&& 13 程序控制器&&&&&&&&&&& 14 查询控制器&&&&&&&&&&& 15 强制多个寄存器
16 预置多个寄存器&&&& 17 报告从机id&&&&&&&&&&& 18 程序884/M84&&&&&&&& 19 通讯链路复位 &&&&&& 20 读通用参考值
21 写通用参考值&&&&&&&& 22 Mask Write 4X Register&&&&&&&&&& 23 Read/Write 4X Registers&&&&&&&&& 24 Read FIFO 队列
虽然看着功能很多,但实际上有用的,只有01 02 03 04 05 06 15 和16功能码。
&&&&&& 4.3、数据区,根据功能码的不同数据的长度是不同的。
&&&&&& 4.4、crc校验 包含两个字节,发送端发送时,一帧的所有数据统一计算出一个crc校验码,然后加在一帧的最后两位中,然后等到发送到接收端时接收端重新计算一次除最后两位的一帧所有数据,然后根据两个数据的对比,来判断接收到的数据是否正确。
&&&&&& 5、程序,以下位机为程序对象,主要使用c语言编写,首先,先从变量入手,既然modbus接受以帧为单位,所以就要设置两个缓冲区,用来接收数据,我们这里使用数组来存储接收来的数据Modbus_send_buf[Modbus_max_send_buf];//数据发送缓冲 和 Modbus_recevie_buf[Modbus_max_recevie_buf];//数据接收缓冲 ,其中Modbus_max_send_buf,和Modbus_max_recevie_buf ,为宏定义,这样可以方便的修改一帧最大的存储数据。有了发送接收缓冲,就可以写中断函数了,进入中断后,首先做一些必要的工作,清ES ,判断IR,清IR,做完后,就可以开始接收数据了,但有个问题?如果设备处于空闲状态,那么接收数据后按命令执行,但如果当设备正在执行指令的时候,则不应该再继续的接收指令,那样的话,会让程序进入混乱状态。所以要在基础工作做完后,增加一个判断,来确定设备的忙闲。if((Modbus_cmd_flag == 0) && (Modbus_exe_flag == 0)),判断完以后就可以继续下面的工作了。如果通讯中包含奇偶校验的话,那么则判断奇偶校验。下面就是接收数据。Modbus_recevie_buf[Modbus_recevie_count] = SBUF; ,将接收来的数据存入数组并记录存入的数据个数Modbus_recevie_count,由于modbus是通过时间来判断一帧的结束的,所以在程序中,必须要有一个定时器函数,这个定时器用来判断程序是正在接受,还是已经接受完成了。所以中断的最后所做的是计数器自加Modbus_recevie_count++;,定时器清0 Modbus_timeout_cnt = 0;&& ,将设备状态转入接收状态Modbus_recevie_flag = 1;。此时,串口中断的工作就完成了。
&&&&&& && 下面开始分析定时器,定时器的目的其实就1个,判断一帧是否接收完毕,如果完毕,则进入下一步。在定时器中断函数中,首先要对定时器值进行初始化,这个就不多说了,然后是判断程序是否处于接受状态if(Modbus_recevie_flag == 1),这个状态只有在串口中断函数中才会被置位,其他的情况不会被置位。若程序不是接收状态,则直接跳出定时器中断,若程序处于接收状态,则定时计数自加Modbus_timeout_cnt++;,自加后进入判断if(Modbus_timeout_cnt &= Modbus_max_timeout_cnt),判断的值即为modbus接收一帧传输完成所需要的时间间隔。至于是多少时间,可以通过修改Modbus_max_timeout_cnt来确定。可以将定时器终端设置为1ms1次,在9600的情况下将超时时间设为4,#define Modbus_max_timeout_cnt&& 4,这样如果串口中断不在接收数据时,定时计数将不会清0,当到达设定的超时时间后即判断接收结束,转向命令解析状态。
&&&&&& 接收来的数据可以经过一个函数来执行,同时也可以经过两个函数,解析与执行两步来分别执行。我喜欢后者,因为这样可以把解析的过程和执行的过程分开来写。程序显得更加清晰与明朗。
&&&&&& 在主函数中就执行1个函数,
&&&&&&&&&&& &Modbus_proc();
这个函数是经过打包的两个函数,进入这个函数
void Modbus_proc()
&&& &&&&&& Modbus_cmd();
&&& &&&&&& Modbus_exe();&&&
可以看到,程序分为cmd解析,exe执行。
Cmd&& 命令解析函数
有这么几个问题是需要判断的,命令解析状态,接收来的数据个数,crc,地址,这几个问题是命令解析时需要注意的,顺序可以稍做变化。但最好是这个顺序。
首先判断程序是否处于命令解析状态if(Modbus_cmd_flag == 1)。命令解析状态标志只有在超时后置位,其他情况下不置位。之后是判断接收数据是否大于4字节,if(Modbus_recevie_count & 4)。当程序接收数据小于4字节则说明接收发生错误,抛弃它。下一步则是判断crc校验,由于crc在一帧的最后两位,所以crc应该取缓冲的最后两位
modbus_crc_h=Modbus_recevie_buf[Modbus_recevie_count-2];&&&&&&&&&&&&&&&&&&&&
modbus_crc_l = Modbus_recevie_buf[Modbus_recevie_count-1];
然后将取来的数据合并成一个16位数据,得到接收的crc
modbus_crc = ((unsigned int)(modbus_crc_h) && 8) | modbus_crc_l;
重新计算1帧的crc,得到自己的crc
modbus_crc_b = crc16(Modbus_recevie_buf,Modbus_recevie_count - 2);
最后进行对比,将自己算的crc和接收的crc进行比较,来判断接收的数据是否正确。
if( modbus_crc_b == modbus_crc )
在crc判断正确后,就可以判断地址了
if(Modbus_recevie_buf[0] == Modbus_addr)&&&&& // Modbus_addr为一个宏定义的本机地址,若多机可以在此处修改。
当地址,crc,等全判断正确以后,就可以判断最重要的功能码了。由于功能码很多,所以1可以用宏定义来定义功能码增加程序的可读性,2可以利用switch来命令的模式
#define Modbus_read_coil&0x01&//功能码01 读可读写数字量寄存器(线圈状态):
switch (Modbus_recevie_buf[1])
case Modbus_read_coil:
Modbus_mode = Modbus_read_
&&&& default:&&&&&&&&&&&&&&& //非法命令准备报异常&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&& Modbus_exe_flag = 1;
&&&&&& 解析后,将执行标志置位即可。
Exe 执行函数,
执行函数在解析函数后面,而不是在里面,所以,若没有解析,照样可以进入执行函数,但由于执行函数中有判断执行标志位if( modbus_crc_b == modbus_crc ),所以若标志为0,则直接退出函数。若标志为1,则执行Modbus_mode中对应的函数函数中依然用switch来选择具体功能函数
switch(Modbus_mode)&&&&& //通过判断模式来进行对响应的发送
case Modbus_read_coil:
read_coil_proc();&&&
这样的做的话,就可以吧解析函数,执行函数和具体的实施函数分开来弄,层次多多少少要清晰一些
下面就是针对01,02,03,04,05,06,15,16几个功能码的执行及返回进行说明
在说明各功能函数之前,先说说响应。
上面说的那两个函数只不过是对一帧的外围进行解析与判断,至于具体的参数,还需要功能函数去解析与返回,功能函数要做的事情有3个,1个是参数的解析,2是执行,3是返回响应。
先说响应,响应是有特点的,第一个字节肯定是自己的本机地址,第二个字节肯定是功能码,最后两个字节肯定是crc校验,所以说,在发送缓冲中,基本上4个字节已经定死了
Modbus_send_buf[0] = Modbus_&&&&&&&&
Modbus_send_buf[1] = Modbus_read_input_ &//相应的功能码,每个功能寒暑都不一样
再经过执行函数最后算crc
modbus_crc = crc16(Modbus_send_buf,temp);&&& //计算发送crc数据
Modbus_send_buf[temp] = modbus_crc && 8;&&&& //计算
temp++;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
Modbus_send_buf[temp] = modbus_crc & 0&& //return&num 高位
5.1&01 读线圈状态
#define Modbus_read_coil&0x01&
&&&&&& 其实表面上挺难理解的,啥线圈啥的,但你仔细看看就可以了解,就是读输出数字量,如果你写下位机的话,其实就是控制读取输出io,说白了,就是把目前的io输出状态返回给主机。这些io连接的可能是继电器,也可能是一些开关之类的东西,也就是些数字信号。读数字输出信号。
计算机发送命令:[设备地址] [命令号01] [起始寄存器地址高8位] [低8位] [读取的寄存器数高8位] [低8位]
设备响应:[设备地址] [命令号01] [返回的字节个数][数据1][数据2]...[数据n][CRC校验的低8位] [CRC校验的高8位]
简单的说就是返回所有的输出io的值,放在一个或者几个字节里,可以用判断的方法来实现,当然,也可以用与或的方式实现。
&&& if(P1_0 == 1)
&&&&&&& temp |= (1&&8);
&&&&&&& temp &= (1&&8);
将temp的值放入第四个缓冲区,当然这根据设备的io口,编程时就已经确定了的。接下来就可以进行crc计算了。最后发送即可。
Modbus_send_buf[3] =
modbus_crc = crc16(Modbus_send_buf,4);
Modbus_send_buf[4] = modbus_crc && 8;&&&
Modbus_send_buf[5] = modbus_crc & 0&&&&& //return&num 高位&
5.2&02 读只可读数字量寄存器(输入状态)
基本上和01意思差不多,只不过这个功能码返回的数据是输入io的数据,和01的区别是01可读可改,而02只可读不可改。也就是输入的状态。数据不可由设备本身控制。程序方面和01程序一样。
5.3&03读可读写模拟量寄存器(保持寄存器)
说简单点就是读da,da属于模拟量,也可以输出,但是以模拟量的方式来进行传输的
计算机发送命令:[设备地址] [命令号03] [起始寄存器地址高8位] [低8位] [读取的寄存器数高8位] [低8位] [CRC校验的低8位] [CRC校验的高8位]
设备响应:[设备地址] [命令号03] [返回的字节个数][数据1][数据2]...[数据n][CRC校验的低8位] [CRC校验的高8位]
其中返回字节个数,为读取寄存器数乘2
写程序时,首先要注意数据个数,temp = Modbus_recevie_buf[5];一般寄存器个数不会超过255,个数取读取寄存器个数的低八位即可。返回即乘2,temp = temp && 1;,下面要做的就是一个循环for(i = 0;i & i += 2),把需要的数据放入发送数组。其内容是
Modbus_send_buf[i+3]=(data_v&0xff00)&&8;
Modbus_send_buf[i+4]=data_v&0x0
由于帧的前面3个是地址,功能码,和返回字节个数,所以循环从第四个数据开始存放。data_v为读取的数据,在程序中还需要其他语句配合。比如:data_v = updateValue();
&&& 循环后就可以进入crc校验了可以利用返回字节数来确定crc的校验个数temp = temp + 3;,最后计算发送字节的个数
&&& send_cnt = Modbus_recevie_buf[5]*2 + 5 ; //数据发送个数&& 数据+地址+命令+返回数据个数+crc低+crc高
&&&&&& 最后将数据发送出去即可。
&&& 5.4&04读只可读模拟量寄存器(输入寄存器)
&&&&&& 和03的区别是04就是读ad,ad输入输入模拟两,只能读,不能改,同样也是以模拟两的方式来进行传输的。其程序&&&&&& 与03类似
&&&&&& 5.5&05写数字量(线圈状态)
&&&&&& 05则是修改io口输出状态,数字量输出。
计算机发送命令:[设备地址] [命令号05] [需下置的寄存器地址高8位] [低8位] [下置的数据高8位] [低8位] [CRC校验的低8位] [CRC校验的高8位]
设备响应:若执行成功,则原样返回
写程序时,首先确定需要修改的io口,然后根据0xff00或0x0000来置位或清零该数据位。执行完成后,将接收到的数据重新发送即可 Uart0_senddata(Modbus_recevie_buf,8);
5.6&06写单个模拟量寄存器(保持寄存器)
06为修改设备da数据,模拟量传输数据。
计算机发送命令:[设备地址] [命令号06] [需下置的寄存器地址高8位] [低8位] [下置的数据高8位] [低8位] [CRC校验的低8位] [CRC校验的高8位]
设备响应:若执行成功,原样返回即可
5.7&16主机设置寄存器
简单的说,就是一次设置多个da,以一个偏移量为准,一次设置多个输出模拟里量
计算机发送命令:[设备地址] [命令号10] [开始地址高8位] [低8位] [寄存器个数高8位] [低8位] [第一个寄存器数据高][第一个寄存器数据低][第二个寄存器数据高][第二个寄存器数据低]&&[CRC校验的低8位] [CRC校验的高8位]
命令响应:功能码[0x10],寄存器起始地址高字节,低字节,要写的寄存器数量的高字节,低字节,CRC校验低字节,高字节
在程序中,首先要获取寄存器个数
num = Modbus_recevie_buf[6] - 2;
然后进入循环,一次把寄存器数据提取出来for(i = 0; i & i = i + 2)
在循环的内部提取数据temp = (((unsigned int)(Modbus_recevie_buf[i+7])&&8)|(Modbus_recevie_buf[i+8]));
以上就是我在项目中涉及到的一点modbus的通讯的下位机程序,不全,但总体的思路,接收数据并解析,解析后提取数据在设备上加载或采集,然后再按照响应的方式发送回去。
下回改进的方向,1,增加功能码2,增加宏定义及编译定义,3增加单片主机的程序,和pc主从机的程序。4,增加ascii的程序,和rtu同时设置。Pc机程序,采用c#号编写。
完整的程序请参考:
【】【】【】【】
上一篇:下一篇:
CopyRight @
单片机教程网
, All Rights Reserved捷配欢迎您!
微信扫一扫关注我们
当前位置:&>>&&>>&&>>&UDP / IP协议下Modbus协议的研究与实现
&&&& 摘要: 工业以太网中M odbus /TCP已经成为以太网通信行业事实上的标准。本文对该通信标准进行深入的研究并进行改进,提出在UDP/ IP协议上实施M odbus协议,随后从实时性和可靠性两个方面分析了M odbus /UDP协议栈的优点,然后结合实验室开发的一个测控终端组建对该协议栈进行实验检验。理论和实际表明: M odbus/UDP协议可操作性好容易实现、实时性和可靠性高,组网方便灵活。
  随着以太网技术以及Internet的迅速发展,基于TCP / IP协议的工业以太网的研究已经成为现场研究的亮点,特别是Modbus /TCP协议以其协议简单、开放、易于理解和稳定的性能成为以太网工业通信事实上的标准。目前,国内外众多厂商的、测控终端、组态软件等产品都使用Modbus/RTU 和Modbus/TCP协议,但是伴随着工业以太网技术向纵深发展以及关键问题的突破,越来越多的工控厂家采用UDP作为传输层协议,以满足实时性和确定性通信的需求,如: 的ProF ibnet、倍加莱的Pow erlink、Modbus- IDA等,都在工业以太网实时通信中采用了UDP协议。本文介绍一种新的通信协议Modbus /UDP,传输层采用UDP协议,与Modbus /TCP相比进一步提高了系统的实时性和组网的灵活性。
  1& Modbus /UDP协议
  1.1& Modbus协议介绍
  M odbus协议采用请求/应答的方式进行客户端和的应用层通信,协议规定了一个与基础通信层无关的简单协议数据单元PDU,PDU 帧结构包括功能码、数据域和差错校验域; 特定的现场在PDU 的基础上引入一些头部信息构成应用数据单元ADU。图1所示为一个通用的Modbus帧。
  首先对于不同物理介质上实现的Modbus协议,其PDU 单元是统一的,而附加地址域及差错校验域需根据不同总线或网络的特定要求和格式组织实施。其次Modbus定义了三类功能码: 公共功能码、用户定义的功能码和保留功能码。
图1& M odbus帧结构
  1.2& UDP上Modbus协议介绍
  与M odbus/TCP协议类似,M odbus/UDP是在TCP / IP协议的基础上应用层使用Modbus数据,传输层采用UDP协议,网络层采用IP协议。UDP / IP协议上的Modbus应用数据单元MBAP采用与TCP / IP同样的结构,包括2字节的事务处理标识符、2字节的协议标识符、2字节的长度字节和1字节的单元标识符。UDP协议是面向非连接的,通信时不需要与对方建立连接,适用于可靠性要求不是非常高的场合,实时性高,通信效果好。采用UDP来发送Modbus消息帧,正是为了利用UDP协议简洁和高效的通信效果。实际应用中把封装好的Modbus消息帧作为UDP的数据部分直接发送到的502端口,服务器端解析收到的Modbus/UDP数据报,将M odbus响应帧回转给请求数据的客户端。
全文PDF下载:&&来源:
技术资料出处:hui7744
该文章仅供学习参考使用,版权归作者所有。
因本网站内容较多,未能及时联系上的作者,请按本网站显示的方式与我们联系。
【】【】【】【】
上一篇:下一篇:
本文已有(0)篇评论
发表技术资料评论,请使用文明用语
字符数不能超过255
暂且没有评论!
暂且没有信息...
12345678910
0引言  人机交互界面的种类较多,如键盘、数码管显示器、液晶显示器及带触摸的液晶屏等。决定人机交互接口方式的主要因素是成本和实际应用的需要。近十年来,以功耗低、重量轻、精度高和良好的人机界面等技术特点,在电子设备特别是手持类电子产品中得到了普遍应用。带触摸的液晶屏,只要能测量出[][][][][][][][][][]
IC热门型号
IC现货型号
推荐电子百科在单位,部门领导要求每周交工作报告,但我不想写,或不愿意认真的去写,每次写也是敷
之前在一线干了将近3年,因个人原因辞职,现在想转销售,南京这边化工贸易公司有许多
查看: 8147|回复: 3
RS232.422.485与modbus-rtu是什么关系啊
阅读权限40
积分帖子主题
加入海川与三百六十万化工人交流互动(支持手机号、微信、QQ号一键注册)
才可以下载或查看,没有帐号?
是同一个东西吗?
阅读权限20
积分帖子主题
modbus协议是基于RS485接口协议上建立的一种现场总线协议,通俗的讲就是RS485是铁轨,modbus协议是在铁轨上跑的火车。RTU是modbus协议的一种,只是与modbus ACSII的解码方式不同而已,也就相当于不同类型的火车。
积分帖子主题
modbus协议支持传统的RS-232(单工)、RS-422(全双工)、RS-485(半双工)、等串口和以太网设备。许多工业设备,包括PLC,DCS,智能仪表等都在使用Modbus协议作为他们之间的通讯标准。有了它,不同厂商生产的控制设备可以连成工业网络,进行集中监控。Modbus协议包括ASCII、RTU、TCP等Modbus协议需要对数据进行校验,串行协议中除有奇偶校验外,ASCII模式采用LRC校验,RTU模式采用16位CRC校验,但TCP模式没有额外规定校验。
阅读权限30
积分帖子主题
学习了,呵呵,正好公司用到,在线含水分析好像就用到R485与计算机进行通信
安全漫画( 10.26)
熟视无睹看图查隐患(10.26)泵的小管线作用?(重谢)关于论坛版块发红包的花样玩法说明(只限休安全的化工厂
独在异乡为异客,每逢佳节倍思亲。一年一度的重阳节就要来临了,作为中国历史悠久的一个假期当然要认真对待啊!
有对象的小伙
在线QQ客服&&
&(电话工作日09:00--17:00受理咨询,信箱和QQ号全天受理咨询)
三百六十万海川人欢迎您的参与 化工技术交流第一社区,共同学习 共同提高!
版权所有 海川网-海川化工论坛 -2004
Discuz!---
本站法律顾问 : 辽宁好谋律师事务所 谢晨曦 主任律师
&&&&&&&&&&Modbus RTU
描述:C#NModbus&&Modbus&RTU通信
一个小软件,用于读取Modbus通讯里slave&的寄存器的值。
本人已经花费好几个月的时间了,但是还是不能实现实时读取数据,现在只能一次性读取。
请问各位大侠们,谁知道怎么实时读取,本人试过timer,&thread。都没有实现。本人菜鸟一个,感觉程序实在没有问题,但是就是不能正常运行。请各位亲们,谁要是愿意伸手相助,本人将大大重谢。
请各位大侠,帮个忙。实在是筋疲力尽了现在,几个月下去都没有搞定...解决方案1:
不知道楼上解决了吗.我可以帮你看看.
以上介绍了“C#
Modbus RTU”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:/itwd/1020035.html
上一篇: 下一篇:Modbus网关
&&&&Modbus网关可以实现Modbus TCP协议到Modbus RTU协议的转化,卓岚Modbus网关同时具有普通串口服务器的功能。
&&&&卓岚Modbus网关分为普通型多主机和储存型。普通型多主机含有ZLAN5142、ZLAN3140等,虽然可以支持多个主机同时访问,但是每次Modbus TCP的查询都要转化为串口数据,等串口返回后才能给主机返回查询结果,所以反应时间较慢,一般在30~50ms。而储存型Modbus网关可以自动记录Modbus主机所需要的数据,每时每刻主动从串口查询RTU设备,更新自己缓存的数据。当主机需要数据是只从缓存中返回,查询时间约为1ms,大大加快了多主机的处理能力。详细可以参考《》
普通多主机型Modbus网关
RS232/RS485串口Modbus TCP转RTU转换器
RS485/422串口Modbus TCP转RTU转换器
高性能 串口转WIFI串口服务器,9~24V供电,支持Modbus TCP转RTU。
数据实时性高、易用性强。
储存型Modbus网关
储存型Modbus网关。支持RS232/485/422三种方式的串口。Modbus TCP查询反应时间快,性能高。
储存型Modbus网关。支持wifi和以太网。支持RS232/485/422三种方式的串口。Modbus TCP查询反应时间快,性能高。
多串口Modbus网关
(两口),(4口),(8口),(16口)
RS232/422/485多串口Modubs TCP转Modbus RTU转换器
支持全双工、高速率数据转发,不丢包。
经济型价格。
支持TCP Server、TCP Client,UDP模式,与ZLVirCom通信时自动切换为Real Com Driver模式。
波特率支持1200bps~460800bps(可定制1M或者1.5M波特率),数据位支持5~8位,校验位可以为全部五种方式,支持CTS/RTS硬件流控。
免费配备Windows虚拟串口&设备管理工具ZLVircom,支持虚拟串口,并可以一键式搜索NETCOM2000,修改参数。
提供设备管理函数库(Windows DLL动态链接库),方便用户用VC、VB、Delphi、C++Builder开发应用程序。
创新的断网检测机制,保证了数据实时可达性。
适合Modbus RTU的网络化升级,可与三维力控模态组件配合;并支持直接将Modbus TCP转化为Modbus RTU的功能。
功耗低,最大功率小于0.25W。
支持DHCP,解决IP管理、IP冲突问题。
支持DNS,满足通过域名实现通信的要求。
支持多TCP连接,可达100个TCP连接同时和联网模块通信(需定制)。
灵活的串口数据分帧设置,满足用户各种分包需求。
高强度抗电磁干扰,外壳采用抗辐射的SECC板。
地址:上海市徐汇区漕宝路80号光大会展D幢11、12层 电话:021- 非工作日联系电话: 传真:021-
沪ICP备号 版权所有@上海卓岚信息技术有限公司

我要回帖

更多关于 modbus通信协议 的文章

 

随机推荐