abplcmodbus通讯.docx

上传人:b****2 文档编号:17850295 上传时间:2023-08-04 格式:DOCX 页数:26 大小:995.41KB
下载 相关 举报
abplcmodbus通讯.docx_第1页
第1页 / 共26页
abplcmodbus通讯.docx_第2页
第2页 / 共26页
abplcmodbus通讯.docx_第3页
第3页 / 共26页
abplcmodbus通讯.docx_第4页
第4页 / 共26页
abplcmodbus通讯.docx_第5页
第5页 / 共26页
abplcmodbus通讯.docx_第6页
第6页 / 共26页
abplcmodbus通讯.docx_第7页
第7页 / 共26页
abplcmodbus通讯.docx_第8页
第8页 / 共26页
abplcmodbus通讯.docx_第9页
第9页 / 共26页
abplcmodbus通讯.docx_第10页
第10页 / 共26页
abplcmodbus通讯.docx_第11页
第11页 / 共26页
abplcmodbus通讯.docx_第12页
第12页 / 共26页
abplcmodbus通讯.docx_第13页
第13页 / 共26页
abplcmodbus通讯.docx_第14页
第14页 / 共26页
abplcmodbus通讯.docx_第15页
第15页 / 共26页
abplcmodbus通讯.docx_第16页
第16页 / 共26页
abplcmodbus通讯.docx_第17页
第17页 / 共26页
abplcmodbus通讯.docx_第18页
第18页 / 共26页
abplcmodbus通讯.docx_第19页
第19页 / 共26页
abplcmodbus通讯.docx_第20页
第20页 / 共26页
亲,该文档总共26页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

abplcmodbus通讯.docx

《abplcmodbus通讯.docx》由会员分享,可在线阅读,更多相关《abplcmodbus通讯.docx(26页珍藏版)》请在冰点文库上搜索。

abplcmodbus通讯.docx

abplcmodbus通讯

Logix5000控制器ModbusRTU主从通信

一、适用的控制器

Logix5000控制器通过自带的串行口可以实现ModbusRTU主从通信。

这里提到的Logix5000控制器,包括:

·ControlLogix控制器(1756)

·CompactLogix控制器(1769)

·FlexLogix控制器(1794)

当此串行口组态为用户模式实现ModbusRTU主从通信时,那么此端口不能再用于编程连接。

二、机械接口与功能特性

Logix5000控制器自带的串行口接口方式为常见的DB-9,RS232C,接口功能特性如下:

三、接线方式

1、接入RS232-Modbus通信

当需要将Logix5000控制器接入RS232-Modbus实现点到点Modbus通信,可以订购以下电缆实现Logix5000控制器与通信设备的连接:

·1747-CP3(用于SLC系列,使用后控制器盖无法关闭)

·1756-CP3(用于Logix5000控制器)

这两种电缆都可以实现RS232C连接,长度为3米。

当然,你也可以自制通信电缆来实现Modbus通信,但长度限制为15米。

接线方法如下:

2、接入RS485-Modbus通信

可以通过AIC+高级接口转换器(1761-NET-AIC)将Logix5000控制器连接

到RS485网络实现Modbus一主多从通信。

接线方法如下:

四、波特率和通信距离

Logix5000控制器串行口的通信波特率有110bps、300bps、600bps、1200bps、2400bps、4800bps、9600bps、19200bps、38400bps。

默认为19200bps。

通信距离与接口转换器质量、电缆材质和线径、波特率、从站数量和现场环境有关,遵循Modbus协议规定。

五、支持的功能码

Logix5000控制器串行口实现Modbus通信仅支持以下功能码:

六、需要准备的软件

·RSLogix5000V17(PLC编程软件)

·RSLinx(PLC通信软件)

·例程(从AB官方网站下载)

·例程(从AB官方网站下载)

七、ModbusRTU主站通信

文件帮助你使用Logix5000控制器作为Modbus主站,ACD文件包括:

·11个控制器标签

·1个周期性任务

·2个用户自定义数据类型

使用Logix5000控制器作为Modbus主站,你必须完成下面的步骤:

1、从文件中复制用户自定义数据类型到你的RSLogix5000工程。

2、从文件中复制控制器标签到你的RSLogix5000工程。

3、从文件中复制周期任务到你的RSLogix5000工程。

4、配置控制器通讯端口。

5、配置新的控制器标签。

6、使用新的程序。

7、校验工程并下载到控制器。

复制用户自定义数据类型

[1]、启动RSLogix5000。

[2]、打开文件。

[3]、在另一个RSLogix5000窗口中,打开你的RSLogix5000工程。

[4]、复制用户自定义数据类型:

·Mod_Command_Structure

·Mod_Status

[5]、粘贴用户自定义数据类型到你的RSLogix5000工程。

[6]重复上面的步骤完成第二个用户自定义数据类型的复制和粘贴。

复制控制器标签

[1]、在文件中复制所有控制器标签。

[2]将复制的所有控制器标签粘贴到你的RSLogix5000工程。

[3]至此,所有的11个控制器标签都已经复制到你的RSLogix5000工程。

下面是这11个控制器标签的描述:

标签名称

标签类型

描述

有效值

Mod_Active

BOOL

Modbus通讯使能位

0=不使能

1=使能

Mod_Cmd_Number

DINT

有效的命令数量

1-40

Mod_Commands

Command[40]

Modbus命令数组

Mod_Commands[x].Enable

 

INT

命令使能

0=不使能

1=始终使能

2=按扫描使能

3=仅使能1次

Mod_Commands[x].EchoReceived

INT

如执行成功,则响应

一个值和Enbale相同

Mod_Commands[x].ScanNumber

INT

确定从站在哪一次扫描

执行命令

0-12

缺省为12

Mod_Commands[x].AddressOffsetin

Master

INT

主站数据表字级别

的偏移量

0=不偏移

0≠有偏移

Mod_Commands[x].SlaveAddress

INT

指定从站地址

0-255

Mod_Commands[x].FunctionCode

INT

指定功能码

支持1、2、3、4

5、6、15、16

Mod_Commands[x].StartingAddress

INT

起始地址

根据应用指定

Mod_Commands[x].Numberofpoints

INT

指定读/写数据数量

位:

1-2000

寄存器:

1-120

Mod_Commands[x].Spare1

INT

不用

Mod_Commands[x].Spare2

INT

不用

Mod_CommdMax

DINT

最大的命令数量

缺省40

Mod_Data_Array_Max

DINT

数据寄存器最大长度

1-65537

Mod_Data_Coils0

INT[250]

主站发送的输出位

Mod_Data_Contacts1

INT[250]

主站接收的输入位

Mod_Data_InpReg3

INT[250]

输入寄存器

Mod_Data_HoldReg4

INT[250]

保持寄存器

Mod_Echo_MaxTime

DINT

响应超时时间ms

默认350

Mod_Scan_Preset

DINT

主站将要执行的扫描数

0-40

推荐至少为2

复制周期任务

完成上面的动作后,你必须复制ModTask任务和相应的Modbus_Interface

程序到你的工程。

[1]、从文件中复制ModTask任务

[2]、粘贴ModTask任务到你的RSLogix5000工程。

[3]、从文件中复制Modbus_Interface程序。

[4]、将Modbus_Interface程序粘贴到你的RSLogix5000工程中的ModTask任务中。

配置控制器通讯端口

完成以上的步骤后,下一步就是配置控制器通讯端口。

[1]、访问控制器属性

[2]、配置SerialPort(串行口)选项卡。

[3]、配置UserProtocol(用户协议)选项卡,如果需要。

配置新的控制器标签

一旦你的控制器标签被复制到你的RSLogix5000工程,你需要配置下表中

的标签:

配置上述标签之前,确保你已经理解如何从主站数据表和从站之间读写数据。

Modbus主站数据表标签数组

Modbus主站数据表有四个标签组:

·线圈数据(Mod_Data_Coils0标签)数据以位格式从读或写入这个数组。

·触点数据(Mod_Data_Contacts1标签)数据以位格式写入这个数组。

·输入寄存器数据(Mod_Data_InpReg3标签)数据以字格式写入这个数组。

·保持寄存器数据((Mod_DataHoldReg4标签)数据以字格式从读或写入这个数组。

在这个解决方案中,Mod_Commands标签根据你的配置,Modbus主站:

·使用四个数组中的一个(决定于功能码)

·读/写数据从/到一个指定的位置(决定于地址偏移和起始地址)

·读/写一个指定的数据量(决定于numberofpoints)

·读数据(写到一个从站)或写数据(从一个从站读)到指定位置。

例子

如果你希望以下命令被执行:

·命令总是被使能

·主站从线圈数据表中字2开始写入数据

·从Modbus从站节点2读取线圈数据

·主站在线圈数据表中字2从位3开始写入

·从一个从站读取32位线圈数据

配置通信命令标签如下:

·Mod_Commands[0].Enable=1

·Mod_Commands[0].AddressOffsetinMaster=2

·Mod_Commands[0].SlaveAddress=2

·Mod_Commands[0].FunctionCode=1

·Mod_Commands[0].StartingAddress=4

·Mod_Commands[0].Numberofpoints=32

使能新的程序

最后,在运行程序之前,你必须使能新的程序。

为了使能新的程序,你必须改

变控制器标签Mod_Active的值为1。

校验程序并下载运行

一旦你从文件中复制了所有部件到你的RSLogix5000工程

中,并对新的控制器标签作了相应的配置,然后使能新的程序后,那么你需要对新

的程序进行校验,然后下载运行。

从站数据地址与主站数据表对应关系

Modbus主站与从站通信,实现位或字类型的数据的读写操作。

当进行读操作时,Modbus主站将读取的数据放置到主站的分类数据表中;当进行写操作时,Modbus主站将需要写出的数据也放置到对应的分类数据表中。

主站分类数据表作为控制器标签,数据格式为整型数组,有四个,包括:

线圈、离散输入、保持寄存器和输入寄存器,如下图所示:

Mod_Data_Coils0数据表为线圈数据,适用于功能码1、5和15。

Mod_Data_Contacts1数据表为离散输入数据,适用于功能码2。

Mod_Data_HoldReg4数据表为保持寄存器数据,适用于功能码3、6和16。

Mod_Data_InpReg3数据表为输入寄存器数据,适用于功能码4。

当Modbus主站从某些从站读取到位或字类型的数据时,它们被放置到了哪里怎么让这些数据像我们希望的那样在分类数据表中放置当Modbus主站要向某些从站写入位或字类型的数据时,它们应该被放置到哪里如何准确地将数据写入到从站的正确位置

在这里要提到命令中的两个标签:

Mod_Commands[x].AddressOffsetinMaster和Mod_Commands[0].StartingAddress。

前一个表示在主站数据表的地址偏移,后一个表示相应从站的起始地址。

两个标签都是以字为单位进行操作的。

实例1:

读取5个离散输入状态(功能码2)

情况一:

Mod_Commands[x].AddressOffsetinMaster=0

Mod_Commands[0].StartingAddress=0

命令设置如下:

主站读取的离散量状态放置位置图,如下:

在这种情况下,从站数据没

有任何偏置,主站数据表的数据也没有偏移。

情况二:

Mod_Commands[x].AddressOffsetinMaster=2

Mod_Commands[0].StartingAddress=0

命令设置如下:

主站读取的离散量状态放置位置图,如下:

在这种情况下,从站数据没有任何偏置,主站数据表的数据偏移2个字。

情况三:

Mod_Commands[x].AddressOffsetinMaster=0

Mod_Commands[0].StartingAddress=3

命令设置如下:

主站读取的离散量状态放置位置图,如下:

在这种情况下,从站数据偏置3位,主站数据表的数据偏移3位。

情况三:

Mod_Commands[x].AddressOffsetinMaster=2

Mod_Commands[0].StartingAddress=3

命令设置如下:

主站读取的离散量状态放置位置图,如下:

在这种情况下,从站数据偏置3位,主站数据表的数据偏移2个字3位。

实例2:

向从站写5个保持寄存器(功能码16)

情况一:

Mod_Commands[x].AddressOffsetinMaster=0

Mod_Commands[0].StartingAddress=0

命令设置如下:

主站向从站写保持寄存器数据位置如下:

在这种情况下,从站保持寄存器不偏移,主站保持寄存器数据表也不偏移。

情况二:

Mod_Commands[x].AddressOffsetinMaster=2

Mod_Commands[0].StartingAddress=0

命令设置如下:

主站向从站写保持寄存器数据位置如下:

在这种情况下,从站保持寄存器不偏移,主站保持寄存器数据表偏移2个字。

情况三:

Mod_Commands[x].AddressOffsetinMaster=0

Mod_Commands[0].StartingAddress=3

命令设置如下:

主站向从站写保持寄存器数据位置如下:

在这种情况下,从站保持寄存器偏移3个字,主站保持寄存器数据表偏移3个字。

情况四:

Mod_Commands[x].AddressOffsetinMaster=2

Mod_Commands[0].StartingAddress=3

命令设置如下:

主站向从站写保持寄存器数据位置如下:

在这种情况下,从站保持寄存器偏移3个字,主站保持寄存器数据表偏移5个字。

八、ModbusRTU从站通信

文件帮助你使用一个Logix5000控制器作为一个Modbus从站。

ACD文件包含:

·10个控制器标签

·1个周期性任务

使用Logix5000控制器作为Modbus从站,你必须完成下面的步骤:

1、从文件复制控制器标签到你的RSLogix5000工程。

2、从文件复制ModTask任务到你的RSLogix5000工程。

3、配置新的控制器标签。

4、使能新的程序。

5、校验程序并下载运行。

复制控制器标签

1、启动RSLogix5000。

2、打开文件。

3、另外启动一个RSLogix5000,打开你的工程。

4、从文件中复制控制器标签。

5、粘贴控制器标签到你的RSLogix5000工程。

6、粘贴完成后,如图所示:

7、新的控制器标签的说明

复制ModTask任务

1、从文件中复制ModTask任务。

2、将ModTask任务粘贴到你的RSLogix5000工程中。

3、从文件中复制Modbus_Slave程序

4、将Modbus_Slave程序粘贴到你的RSLogix5000工程中。

使能新的程序

最后,在运行程序之前,你必须使能新的程序。

为了使能新的程序,你必须改

变控制器标签Mod_Active的值为1。

校验程序并下载运行

一旦你从文件中复制了所有部件到你的RSLogix5000工程

中,并对新的控制器标签作了相应的配置,然后使能新的程序后,那么你需要对新

的程序进行校验,然后下载运行。

九、通信状态与故障诊断

当你使用Logix5000控制器作为Modbus主站或从站时,你可能希望运行时能够监控程序,以此确保你的应用在正确的执行。

在ModbusMaster和ModbusSlaveACD文件中,都提供了诊断特性来校验:

·一条命令的执行

·一条命令的传输

·在接收到主站命令后从站正确的应答

·从站拒绝命令并返回错误代码

在这个解决方案的两个ACD文件都提供了诊断功能,但文件提供的诊断功能比文件相对要多一些。

校验成功的命令执行

当Modbus主站发送命令到从站时,你可以用Mod_Commands[x].EchoReceived标签来校验命令时否执行成功。

1、在发送命令到从站前,设置Mod_Commands[x].EchoReceived标签=0。

2、发送命令到从站。

3、监控Mod_Commands[x].EchoReceived标签的值。

如果和

Mod_Commands[x].Enable标签的值一致,表示命令执行成功,从站返回了有效的响应。

如果还是等于0,表示命令没有成功执行。

使用程序标签

对于此解决方案的ModbusMaster和ModbusSlave文件的一部分,即周期性任

务,可以复制到你的RSLogix5000工程。

每个任务都包含了程序标签,可以用来监

控你的程序的运行状况。

以下是适用于Modbus主从站诊断的程序标签:

以下是仅适用于Modbus主站诊断的程序标签:

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2