Modbus TCP/IP通讯编程,该怎么解决
如果你对Modbus稍有了解,对VB编程有一定基础,以下的解答会有帮助。 Modbus是应用层协议,它定义了一个与基础通信层无关的简单协议数据单元(PDU):功能码+数据单元。Modbus要用于特定的总线或网络上,必须在PDU上引入一些附加域组成应用数据单元(ADU),例如用于以太网时,其传输模式是ModbusTCP,这时ADU=MBAP报文头+PDU。编程组成符合ADU格式的帧,就是常说的“数据打包”,一般在用户定义的发送缓冲区(使用字节数组)中完成。对于接收到的数据帧,需要按ADU格式去理解并编程处理,这就是常说的“数据解包”。在VB中编程实现Modbus TCP通信,使用以太网通信控件,端口号是502。至于TCP/IP协议如何实现,不需要费心。编程重点还是ADU数据帧的打包、解包及事务处理。

接口Modbus-TCP协议,开放三个端口502,503,504,是不是要做3个通讯?
不用,只需做一个就行。

c#中MODBUS的502端口一直被莫名占用其妙占用
使用命令行工具 查看端口占用情况 netstat -a -n 找到后 使用 两个命令行工具“tasklist、taskkill” 释放占用的端口

请教如何在LabVIEW中使用Modbus通信
(1)Modbus是由Modicon(现为施耐德电气公司的一个品牌)在1979年发明的,是全球第一个真正用于工业现场的总线协议。在NI的产品中,Modbus主要用于实现PLC的通信。LabVIEW和PLC通信最简单的方式有两种: Modbus 或者 NI OPC Server. 前者需要PLC安装Modbus模块;后者需要对特定PLC设备支持才能保证正常连接, http://zone.ni.com/devzone/cda/tut/p/id/10857网址为OPC Server支持的设备列表。在实现方面,Modbus实现方式的物理接口有以太网与串口两种,在LabVIEW编程中也得到了体现。(2)需要安装LabVIEW Datalogging and Supervisory Control Module,NI官方网站上现在只能搜索到DSC-2011以及DSC-8.6 Module的下载,客户可以点击下载后,将下载地址最后改为2010即可下载2010版本。(3)Modbus地址为包含数据类型和偏移量的6个字符的数值。左边两个字符决定数据类型,右边四个字符是该数据类型中的序号。客户所描述的40001~4xxxx是美国modicon公司和ge公司plc使用的Modbus地址,它是基于1的地址,即同类元件的首地址为1。西门子plc的Modbus地址是基于0的地址。美国的Modbus地址左起第2位用来表示元件的类型,例如i0.0的Modbus地址为010001。因为数据类型已经包含在功能码中了,西门子的i0.0的Modbus地址实际上为000000,i2.0的Modbus地址为000016(或十六进制数16#0010),而不是010017。某些时候,Modbus地址的后4位被标记为偏置。这时,可能在第一位和第二位之间添0致使5位地址变为6位。比如,如果您的用户手册上建议您使用地址40001和某个寄存器通信,你可以在LabVIEW DSC或者在Modbus I/O服务器上使用400001来与之通信。(4)首先是如何创建Modbus I/O Server?步骤如下:首先,新建一个工程,命名为”Modbus Server”。然后新建一个I/O Server,方法是在新建里面选择“I/O Server”,见图1。然后选择”Modbus”,建立”Modbus Server”,如果需要建立以太网通信,可以在以下的对话框中选择”Modbus Ethernet”。设定好需要的配置信息,IP地址如果是本机就设定为127.0.0.1。这里客户可能有个疑问:在DSC中的Modbus端口怎么设置,为什么只有IP地址号而没有端口号?这里的回答是DSC下默认的端口号就是502,用户在DSC下不允许进行配置。客户可以参考NI官网上的“MODBUS libraries for LabVIEW”免费库,提供的范例进行进一步配置。接下来需要创建Modbus寄存器地址,也就是约束变量。在约束变量中,选择“添加范围”,将需要的约束变量的项数添加进去,这时候就会在I/O Server中创建出来对应数目的约束变量,对应的为6位Modbus地址,见图4。之后,在新建的VI中,将约束变量拖入。至此,Modbus Server创建完毕。接下来,为了验证通信是否成功,可以使用范例“Modbus Simulator”,见图5。在图5中,可以看到通过Modbus协议modbus Server中的约束变量000001可以控制Modbus Simulator中的指示灯显示红色,而Modbus Simulator中约束变量400001转盘可以控制modbus Server中400001控件。其次是如何创建Modbus I/O Slave的?这个问题的产生是由于需要自行建立范例中“Modbus Simulator”。范例中“Modbus Simulator”其实是一个“Modbus Slave”,创建步骤如下:前面的几个步骤与“Modbus Server”相同,只是在I/O Server创建后选择“Modbus Slave”,如图6。在Slave地址设置中,配置需要与Server通信地址一致,设置为1,见图7。接下来创建约束变量的方式与“Modbus Server”相同,最终的通信效果见图8。 (5)这个错误发生的原因是:在一台没有安装DSC Run-Time System的计算机上运行使用了DSC模块和I/O服务器的LabVIEW可执行程序。与LabVIEW不同的是,DSC模块需要一个单独的运行许可证以允许你在其他计算机上安装DSC Run-Time System。一旦你购买了该许可证并且将Run-Time System安装在目标计算机上,这个错误就会消失。

如何在LabVIEW中使用Modbus通信
(1)Modbus是由Modicon(现为施耐德电气公司的一个品牌)在1979年发明的,是全球第一个真正用于工业现场的总线协议。在NI的产品中,Modbus主要用于实现PLC的通信。LabVIEW和PLC通信最简单的方式有两种: Modbus 或者 NI OPC Server. 前者需要PLC安装Modbus模块;后者需要对特定PLC设备支持才能保证正常连接, http://zone.ni.com/devzone/cda/tut/p/id/10857网址为OPC Server支持的设备列表。在实现方面,Modbus实现方式的物理接口有以太网与串口两种,在LabVIEW编程中也得到了体现。(2)需要安装LabVIEW Datalogging and Supervisory Control Module,NI官方网站上现在只能搜索到DSC-2011以及DSC-8.6 Module的下载,客户可以点击下载后,将下载地址最后改为2010即可下载2010版本。(3)Modbus地址为包含数据类型和偏移量的6个字符的数值。左边两个字符决定数据类型,右边四个字符是该数据类型中的序号。客户所描述的40001~4xxxx是美国modicon公司和ge公司plc使用的Modbus地址,它是基于1的地址,即同类元件的首地址为1。西门子plc的Modbus地址是基于0的地址。美国的Modbus地址左起第2位用来表示元件的类型,例如i0.0的Modbus地址为010001。因为数据类型已经包含在功能码中了,西门子的i0.0的Modbus地址实际上为000000,i2.0的Modbus地址为000016(或十六进制数16#0010),而不是010017。某些时候,Modbus地址的后4位被标记为偏置。这时,可能在第一位和第二位之间添0致使5位地址变为6位。比如,如果您的用户手册上建议您使用地址40001和某个寄存器通信,你可以在LabVIEW DSC或者在Modbus I/O服务器上使用400001来与之通信。(4)首先是如何创建Modbus I/O Server?步骤如下:首先,新建一个工程,命名为”Modbus Server”。然后新建一个I/O Server,方法是在新建里面选择“I/O Server”,见图1。然后选择”Modbus”,建立”Modbus Server”,如果需要建立以太网通信,可以在以下的对话框中选择”Modbus Ethernet”。设定好需要的配置信息,IP地址如果是本机就设定为127.0.0.1。这里客户可能有个疑问:在DSC中的Modbus端口怎么设置,为什么只有IP地址号而没有端口号?这里的回答是DSC下默认的端口号就是502,用户在DSC下不允许进行配置。客户可以参考NI官网上的“MODBUS libraries for LabVIEW”免费库,提供的范例进行进一步配置。接下来需要创建Modbus寄存器地址,也就是约束变量。在约束变量中,选择“添加范围”,将需要的约束变量的项数添加进去,这时候就会在I/O Server中创建出来对应数目的约束变量,对应的为6位Modbus地址,见图4。之后,在新建的VI中,将约束变量拖入。至此,Modbus Server创建完毕。接下来,为了验证通信是否成功,可以使用范例“Modbus Simulator”,见图5。在图5中,可以看到通过Modbus协议modbus Server中的约束变量000001可以控制Modbus Simulator中的指示灯显示红色,而Modbus Simulator中约束变量400001转盘可以控制modbus Server中400001控件。其次是如何创建Modbus I/O Slave的?这个问题的产生是由于需要自行建立范例中“Modbus Simulator”。范例中“Modbus Simulator”其实是一个“Modbus Slave”,创建步骤如下:前面的几个步骤与“Modbus Server”相同,只是在I/O Server创建后选择“Modbus Slave”,如图6。在Slave地址设置中,配置需要与Server通信地址一致,设置为1,见图7。接下来创建约束变量的方式与“Modbus Server”相同,最终的通信效果见图8。 (5)这个错误发生的原因是:在一台没有安装DSC Run-Time System的计算机上运行使用了DSC模块和I/O服务器的LabVIEW可执行程序。与LabVIEW不同的是,DSC模块需要一个单独的运行许可证以允许你在其他计算机上安装DSC Run-Time System。一旦你购买了该许可证并且将Run-Time System安装在目标计算机上,这个错误就会消失。

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