Logix5000控制器ModbusRTU主从通信OK要点 - 图文
更新时间:2023-12-19 13:45:01 阅读量: 教育文库 文档下载
Logix5000控制器Modbus RTU主从通信
一、适用的控制器
Logix5000控制器通过自带的串行口可以实现Modbus RTU主从通信。这里提到的Logix5000控制器,包括:
·ControlLogix控制器(1756) ·CompactLogix控制器(1769) ·FlexLogix控制器(1794)
当此串行口组态为用户模式实现Modbus RTU主从通信时,那么此端口不能再用于编程连接。
二、机械接口与功能特性
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、300 bps、600 bps、1200 bps、2400 bps、4800 bps、9600 bps、19200 bps、38400 bps。默认为19200 bps。
通信距离与接口转换器质量、电缆材质和线径、波特率、从站数量和现场环境有关,遵循Modbus协议规定。
五、支持的功能码
Logix5000控制器串行口实现Modbus通信仅支持以下功能码:
六、需要准备的软件
·RSLogix5000 V17(PLC编程软件) ·RSLinx V2.54(PLC通信软件)
·ModbusMaster.ACD例程(从AB官方网站下载) ·ModbusSlave.ACD例程(从AB官方网站下载)
七、Modbus RTU主站通信
ModbusMaster.ACD文件帮助你使用Logix5000控制器作为Modbus主站,ACD文件包括:
·11个控制器标签 ·1个周期性任务
·2个用户自定义数据类型
使用Logix5000控制器作为Modbus主站,你必须完成下面的步骤:
1、从ModbusMaster.ACD文件中复制用户自定义数据类型到你的RSLogix5000工程。
2、从ModbusMaster.ACD文件中复制控制器标签到你的RSLogix5000工程。 3、从ModbusMaster.ACD文件中复制周期任务到你的RSLogix5000工程。 4、配置控制器通讯端口。 5、配置新的控制器标签。 6、使用新的程序。
7、校验工程并下载到控制器。
复制用户自定义数据类型 [1]、启动RSLogix5000。
[2]、打开ModbusMaster.ACD文件。
[3]、在另一个RSLogix5000窗口中,打开你的RSLogix5000工程。 [4]、复制用户自定义数据类型:
·Mod_Command_Structure ·Mod_Status
[5]、粘贴用户自定义数据类型到你的RSLogix5000工程。
[6]重复上面的步骤完成第二个用户自定义数据类型的复制和粘贴。
复制控制器标签
[1]、在ModbusMaster.ACD文件中复制所有控制器标签。
[2]将复制的所有控制器标签粘贴到你的RSLogix5000工程。
[3]至此,所有的11个控制器标签都已经复制到你的RSLogix5000工程。下面是这11个控制器标签的描述:
标签名称 Mod_Active Mod_Cmd_Number 标签类型 BOOL DINT 描述 Modbus通讯使能位 有效的命令数量 有效值 0=不使能 1=使能 1-40
Mod_Commands Mod_Commands[x].Enable Command[40] INT Modbus命令数组 命令使能 0=不使能 1=始终使能 2=按扫描使能 3=仅使能1次 Mod_Commands[x].EchoReceived Mod_Commands[x].ScanNumber Mod_Commands[x].AddressOffsetin INT INT INT INT INT INT INT INT INT DINT DINT INT[250] INT[250] INT[250] INT[250] DINT DINT 如执行成功,则响应 一个值和Enbale相同 确定从站在哪一次扫描 执行命令 主站数据表字级别 的偏移量 指定从站地址 指定功能码 0-12 缺省为12 0=不偏移 0≠有偏移 0-255 支持1、2、3、4 5、6、15、16 Master Mod_Commands[x].SlaveAddress Mod_Commands[x].FunctionCode Mod_Commands[x].StartingAddress Mod_Commands[x].Numberofpoints Mod_Commands[x].Spare1 Mod_Commands[x].Spare2 起始地址 指定读/写数据数量 根据应用指定 位:1-2000 寄存器:1-120 不用 不用 最大的命令数量 数据寄存器最大长度 主站发送的输出位 主站接收的输入位 输入寄存器 保持寄存器 响应超时时间ms 主站将要执行的扫描数 缺省40 1-65537 默认350 0-40 推荐至少为2 Mod_CommdMax Mod_Data_Array_Max Mod_Data_Coils0 Mod_Data_Contacts1 Mod_Data_InpReg3 Mod_Data_HoldReg4 Mod_Echo_MaxTime Mod_Scan_Preset 复制周期任务
完成上面的动作后,你必须复制ModTask任务和相应的Modbus_Interface
程序到你的工程。
[1]、从ModbusMaster.ACD文件中复制ModTask任务
[2]、粘贴ModTask任务到你的RSLogix 5000工程。
[3]、从ModbusMaster.ACD文件中复制Modbus_Interface程序。
[4]、将Modbus_Interface程序粘贴到你的RSLogix 5000工程中的ModTask任务中。
配置控制器通讯端口
完成以上的步骤后,下一步就是配置控制器通讯端口。 [1]、访问控制器属性
[2]、配置Serial Port(串行口)选项卡。
[3]、配置User Protocol(用户协议)选项卡,如果需要。
配置新的控制器标签
一旦你的控制器标签被复制到你的RSLogix 5000工程,你需要配置下表中
的标签:
配置上述标签之前,确保你已经理解如何从主站数据表和从站之间读写数据。
Modbus主站数据表标签数组
Modbus主站数据表有四个标签组:
·线圈数据(Mod_Data_Coils0标签)数据以位格式从读或写入这个数组。 ·触点数据(Mod_Data_Contacts1标签)数据以位格式写入这个数组。
·输入寄存器数据(Mod_Data_InpReg3标签)数据以字格式写入这个数组。
·保持寄存器数据((Mod_DataHoldReg4标签)数据以字格式从读或写入这个数组。 在这个解决方案中,Mod_Commands标签根据你的配置,Modbus主站: ·使用四个数组中的一个(决定于功能码)
·读/写数据从/到一个指定的位置(决定于地址偏移和起始地址) ·读/写一个指定的数据量(决定于number of points)
·读数据(写到一个从站)或写数据(从一个从站读)到指定位置。 例子
如果你希望以下命令被执行: ·命令总是被使能
·主站从线圈数据表中字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。
校验程序并下载运行
一旦你从ModbusMaster.ACD文件中复制了所有部件到你的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
个字。
八、Modbus RTU从站通信
ModbusSlave.ACD文件帮助你使用一个Logix5000控制器作为一个Modbus从站。ACD文件包含:
·10个控制器标签 ·1个周期性任务
使用Logix5000控制器作为Modbus从站,你必须完成下面的步骤:
1、 从ModbusSlave.ACD文件复制控制器标签到你的RSLogix5000工程。 2、从ModbusSlave.ACD文件复制ModTask任务到你的RSLogix5000工程。 3、配置新的控制器标签。 4、使能新的程序。
5、校验程序并下载运行。
复制控制器标签
1、启动RSLogix5000。
2、打开ModbusSlave.ACD文件。
3、另外启动一个RSLogix5000,打开你的工程。 4、从ModbusSlave.ACD文件中复制控制器标签。
5、 粘贴控制器标签到你的RSLogix5000工程。
6、 粘贴完成后,如图所示:
7、 新的控制器标签的说明
复制ModTask任务
1、 从ModbusSlave.ACD文件中复制ModTask任务。
2、 将ModTask任务粘贴到你的RSLogix5000工程中。
3、 从ModbusSlave.ACD文件中复制Modbus_Slave程序
4、 将Modbus_Slave程序粘贴到你的RSLogix5000工程中。
使能新的程序
最后,在运行程序之前,你必须使能新的程序。为了使能新的程序,你必须改 变控制器标签Mod_Active的值为1。
校验程序并下载运行
一旦你从ModbusSlave.ACD文件中复制了所有部件到你的RSLogix5000工程 中,并对新的控制器标签作了相应的配置,然后使能新的程序后,那么你需要对新 的程序进行校验,然后下载运行。
九、通信状态与故障诊断
当你使用Logix5000控制器作为Modbus主站或从站时,你可能希望运行时能够监控程序,以此确保你的应用在正确的执行。
在ModbusMaster和ModbusSlave ACD文件中,都提供了诊断特性来校验: ·一条命令的执行 ·一条命令的传输
·在接收到主站命令后从站正确的应答 ·从站拒绝命令并返回错误代码
在这个解决方案的两个ACD文件都提供了诊断功能,但ModbusMaster.ACD文件提供的诊断功能比ModbusSlave.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主站诊断的程序标签:
正在阅读:
Logix5000控制器ModbusRTU主从通信OK要点 - 图文12-19
12浙江中小企业的特点及现状分析论文04-05
友情微小说1000字左右11-21
书法与中国哲学9001-25
消防水泵房操作规程及管理制度04-15
Ps处理出普通风景片的干净通透效果03-28
毕业论文(设计)--110kv变电站电气一次部分设计 发电厂课程设计报06-28
幕墙打胶作业指导书08-06
班组安全岗前教育01-21
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 主从
- 控制器
- 要点
- Logix5000
- ModbusRTU
- 通信
- 图文
- (初中记叙文)心中的大自然
- 2017-2018学年度第一学期期末练习卷五年级品德与社会
- 如何在小学英语教学中开展心理健康教育
- 监控系统用常见的故障现象及解决方法
- 消防安全教育示范学校汇报材料(政教处)
- 常见经典排序算法
- 商场规章制度管理篇
- 妇产科专业英语词汇
- 前台接待的礼仪与用语(1)
- 保险合同告知义务研究
- 范本:四年级品德与生活教学工作计划
- 南京在长三角领先城市中的经济地位分析与发展路径选择
- 城市规划中环境保护应该成为我们的共识
- 临床检验危急值一览表
- 现代分析测试技术复习题
- 大学计算机基础教程习题参考答案
- 考勤管理制度修改
- 部编一年级道德与法治教案上册 - 图文
- 2009年高考文综试题及答案(宁夏卷)
- 温全科组办〔2010〕2号