施耐德技术服务中心TSC
5.PLC编程
5.1 Modbus协议简介
Modbus协议是Modicon公司于1978年开发的一个用于PLC和编程器之间通信的协议,1980年起,为众多制造商所采用而完全开放,成为“事实上的工业标准”。它实现控制器相互之间、控制器经由网络和其它设备之间的通信,支持传统的RS一232/422/ 485设备和最新发展出来的以太网设备。
该协议定义了一个控制器能识别的消息结构,描述了控制器如何请求访问其它设备, 如何回应来自其它设备的请求,以及怎样侦测错误并记录。它是一种应用层报文传输协议,与底层的物理接口及电气规范无关, 这是其目前生命力仍很强的原因。
Modbus 协议是一个分级结构 (主从式) 异步串行通信协议,为客户机/服务器方式,可使主站对一个或多个从站进行访问,主站和从站之间允许多点连接。 ? 主站和从站可以有两种对话方式:
?查询方式:主站对一个从站进行对话并等待其回应 ?广播方式:主站对所有从站进行对话 (不等待回应) ? Modbus 的协议中有两种传输方式: ?RTU 方式格式: 地址 命令 数据 CRC 校检 ?ASCII 方式格式: 头码 地址 命令 数据 LRC 校检 尾码 说明:
?RTU (Remote Terminal Unit,远程终端单元) ?CRC (Cyclical Redundancy Check,循环冗余校验)
?LRC (Longitudinal Redundancy Check,纵向冗余校验)
5.2 交换数据表
Twido作为主站进行Modbus通信时,必须编程通信程序,而程序的编写是通过填写字表的方式进行的,以下就Modbus字表进行详细阐述。另外,Twido作为Modbus从站时,是不需要编程的,只需要配置通信参数即可。 读N个字-%MW(功能码03) 表 索引 控制表 0 1 发送表 2 3 4 接收表 5 6 7 8 ? N+6 01(发送/接收) 03(接收偏移) 从站地址(1?247) 读取的第一个字的地址 读取的字数N 从站地址(1?247) 00(接收偏移值) 读取的第一个字 读取的第二个字 ? 读取的第N个字 ? 03(请求码) 2×N 所读的值占用的字节数 06(发送长度)* 00(发送偏移) 03(请求码) 高字节 低字节 *在应答后,长度会变为接收到的字节长度
Twido与Masterpace MT的Modbus串行通信向导 11
施耐德技术服务中心TSC
写N个字-%MW(功能码16) 表 索引 控制表 0 1 发送表 接收表 2 3 4 5 6 7 ? N+5 N+6 N+7 N+8 01(发送/接收) 00(接收偏移) 从站地址(1?247) 所写第一个字地址 所写字的个数N 00(发送偏移值) 所写的第一个字 所写的第二个字 所写第N个字 从站地址(1?247) 所写第一个字地址 所写的字数 16(请求码) 2×N所写字节数 8+(2×N)发送长度 07(发送偏移) 16(请求码16进制10) 高字节 低字节 有多条EXCH指令时,要使用分时控制 5.3 MASTERPACT MT Modbus变量说明
在Twido PLC中编写程序,将断路器的内部变量用功能块Read_var/Write_var映射到本地寄存器,通过对本地寄存器进行读写,来完成对断路器的监控。 5.3.1 MASTERPACT MT Modbus内部字
Masterpact MT断路器内部结构和地址简介
MT断路器需要配置的通讯选件分为两部分:本体通讯模块(BCM)和抽架通讯模块(CCM)。 ●本体通讯模块(BCM)包括三个管理器(寄存器): ○断路器管理器 ○测量管理器 ○保护管理器
●抽架通讯模块(CCM)只有一个管理器(寄存器): ○抽架管理器
管理器的Modbus地址设定如下: ○断路器管理器—XX ○测量管理器—XX+200 ○保护管理器—XX+100 ○抽架管理器—XX+50
注:断路器管理器的地址XX是通过Micrologic控制单元设定的,其它管理器的地址会自动生成。缺省时,XX=47。
地址规则表如下:
Twido与Masterpace MT的Modbus串行通信向导 12
施耐德技术服务中心TSC
XX XX+50 XX+100 XX+200 断路器管理器 抽架管理器 保护管理器 测量管理器 范围1-47 范围51-97 范围101-147 范围201-247
断路器管理器(Modbus地址:XX)寄存器范围表如下: 寄存器范围 530-535 543-554 622-623 650-669 670-714 717-739 7699-7729 描述 Modbus配置及标识 诊断计数器及Modbus密码 保护管理器中事件文件的状态 跳闸原因及断路器状态 上次状态变化的时间标记 断路器管理器的事件记录 断路器管理器的命令接口 抽架管理器(Modbus地址:XX+50)寄存器范围表如下: 寄存器范围 530-535 543-554 660-663 678-714 7699-7729 描述 Modbus配置及标识 诊断计数器及Modbus密码 断路器抽架状态 上次状态变化的时间标记 断路器管理器的命令接口 保护管理器(Modbus地址:XX+100)寄存器范围表如下: 寄存器范围 8749-8752 8753-8802 8826-8841 8842-8864 8999-9598 9599-9627 9628-9798 9799-9898 9899-9927 描述 保护管理器的特性 对长延时、短延时、瞬时、接地故障和漏电保护整定值的微调 保护管理器进行的测量 保护管理器的状态 时间标记及历史记录 Micrologic配置 保护整定值 继电器的配置 事件记录 Twido与Masterpace MT的Modbus串行通信向导 13
施耐德技术服务中心TSC
测量管理器(Modbus地址:XX+200)寄存器范围表如下: 寄存器范围 999-1298 1299-1598 1599-1898 1999-2198 2199-2298 2299-3298 3299-3598 描述 实时测量值 寄存器999-1298测量结果的最小值 寄存器999-1298测量结果的最大值 电度 需求值 时间标记 测量管理器的配置 在此仅列出本例中使用的MASTERPACT MT内部寄存器以及对应功能,见下表: 类型 地址 661 读出变量 7714 7715 552 7719 7720 写入变量 7721 7722 7723 描述 断路器状态 标志位 激活的标志位 命令控制字 写入命令寄存器 写入命令寄存器 写入命令寄存器 写入命令寄存器 写入命令寄存器 说明 该寄存器数值非零时才可以进行下一步操作 MASTERPACT MT断路器Micrologic控制单元Modbus通信过程中使用到的寄存器说明如下: 对MASTERPACT MT断路器实现Modbus通信控制的状态字寄存器661说明如下:
位 Bit0 Bit1 描述 OF SD 说明 For Compact and Masterpact : 0= Breaker is opened, 1 = Breaker is closed For Compact : 0 = no trip, 1 = Breaker has tripped due to electrical fault or Shunt trip For Masterpact : always 0 For Compact and Masterpact : 0 = no trip, 1 = Breaker has tripped due to electrical fa For Compact : always 0 For Masterpact : 0 = Spring discharged, 1 = Spring loaded 备用 备用 0 = Compact NS , 1 = Masterpact 备用 Bit2 Bit3 SDE CH Bit4 Bit5 Bit6 Bit7-Bit15 Reserved (internal use only) Reserved (internal use only) Compact / Masterpact differenciation Reserved (internal use only) 注:有关寄存器的详细内容请见《MT通讯协议用户使用手册》中常用寄存器表和结果代码表。
Twido与Masterpace MT的Modbus串行通信向导 14
施耐德技术服务中心TSC
5.3.2 MASTERPACT MT 跳闸/合闸的Modbus通讯流程
分闸流程
当对MASTERPACT MT进行Modbus通信分闸/合闸时,需要分别进行如下通讯流程: 断路器分闸(举例说明) 步骤 1 名称 请求标志位(必需) 内容 读取7114(十进制)地址的值 判断结果 只有当接收到的数据不为0,才可以对其进行下面操作,否则该从站正处于另一个主站的管理之下。 此处接收到的数据为上电后随机形成,后面对其进行操作时必须写入该值到7722地址。 分别写入如下: 7719=16#E593;7720=16#0004(P1);7721=16#0004(P2);7722=上一步中读取552号寄存器的值;7723=16#000A(P4)。 如果7717中的数据与上一步的命令16#E593相同,表示16#E593号命令已经被执行。 分别写入如下: 7719=16#E591;7720=16#0004(P1);7721=16#0004(P2);7722=第二步中读取552号寄存器的值;7723=16#0001(P4)。 如果7717中的数据与上一步的命令16#E591相同,表示16#E591号命令已经被执行。 分别写入如下: 7719=16#E594;7720=16#0004(P1);7721=16#0004(P2);7722=第二步中读取552号寄存器的值;7723=16#000A(P4)。 如果7717中的数据与上一步的命令16#E594相同,表示16#E594号命令已经被执行。 分别写入如下: 7719=16#E864;7720=16#0003(P1);7721=16#0004(P2);7722=第一步中读取7714号寄存器的值。 2 3 读取控制字(必需) 读取552(十进制)地址的值。 使MX线圈可操作(必需) 往MT的命令寄存器7719-7723写入命令。 4 等待命令执行(可省略) 5 6 检查代码结果(可省略) 断路器分闸(必需) 读取7716、7717(十进制)地址的值,判断上一步是否执行。 读取7118(十进制)地址的值 往MT的命令寄存器7719-7723写入命令。 7 等待命令执行(可省略) 8 9 检查代码结果(可省略) 使MX线圈不可操作(必需) 读取7716、7717(十进制)地址的值,判断上一步是否执行。 读取7118(十进制)地址的值 往MT的命令寄存器7719-7723写入命令。 10 等待命令执行(该步骤可以省略) 检查代码结果(该步骤可以省略) 清标志位(必需) 11 12 读取7716、7717(十进制)地址的值,判断上一步是否执行。 读取7118(十进制)地址的值 往MT的命令寄存器7719-7723写入命令。 Twido与Masterpace MT的Modbus串行通信向导 15