施耐德PLC与变频器Modbus通讯学习笔记

  • 格式:pdf
  • 大小:852.21 KB
  • 文档页数:11
AddrTable
保持为上一个值。
功能块需要上升沿才能进行初始化。功能块需要首先将
Execute
输入视为 False,才能检测后续的上升沿。
功能描述
WRITE_VAR
功能块将对象写入采用 Modbus 协议的外部设备中。 图形表示形式
特定于 WRITE_VAR 的参数介绍
输入
类型
注释
ObjType ObjectType ObjType
特定于 READ_VAR 的参数介绍
输入
类型
注释
ObjType ObjectType ObjType
是要读取的对象的类型(MW、I、IW 和 Q)。
FirstObj DINT
FirstObj
为要读取的第一个对象的索引。
Quantity UINT
Quantity
为要读取的对象的数量:
1-125: 寄存器(MW 和 I Nhomakorabea 类型) 1-2000: 位(I 和 Q 类型)
图 1.6
涉及相关知识:
功能描述
ADDM
功能块可将显示为字符串的目标地址转换成可用作通讯功能块中的条目的 ADDRESS 结构。 图形表示形式
特定于 ADDM 的参数介绍
输入/输出
类型
AddrTable
ADDRESS
注释 这是由功能块填充的 ADDRESS 结构。
输入
类型 注释
Execute BOOL 在上升沿执行功能
介绍要写入的对象的类型(MW、Q)。
FirstObj DINT
FirstObj
为要写入的第一个对象的索引。
Quantity UINT
Quantity
为要读取的对象数:
1-123: 寄存器(MW 类型) 1-1968: 位(Q 类型)
Buffer
POINTER TO BYTE
Buffer
为将在其中存储对象值的缓冲器的地址。
Buffer
POINTER TO BYTE
Buffer
为将在其中存储对象值的缓冲器的地址。
ADR
标准功能是定义关联指针的必用功能。(请参见下面的示例。) 缓冲器是一个表,用于接收在设备中读取的值。例如,4 个寄存 器的读取存储在包含 4 个字的表中,而 32 位的读取则需要包含 2 个字或 4 个字节的表,其中每个位都设置为远程设备的对应 值。
图 1.3 (*检查传送变频器运行控制 第一步检查是否有故障*) VFD1_Fault:=((status1 AND 16#000F)=16#0008) ;//检查变频器是否有故障 IF(bpgzfw AND VFD1_Fault)THEN CMD1:=16#0080; END_IF;//如果有故障,则 故障复位; IF(16#0040=(status1 AND 16#00FF))AND(NOT VFD1_Fault)THEN CMD1:=16#0006; END_IF;
硬件连接
M258 的 RJ45 串行口与 ATV312 的 RJ45 端连接, 具体为 M258 的 RJ45 串行口的 2、5、8 对应连接 ATV312 的 RJ45 端的 2、5、8 (注:只接 2、5、8 其他线不接)
ATV312 变频器设置
控制和给定通道以及通信参数设置 如表 1.1 表 1.1
【modbus】modbus 控制正反转、modbus 给定频 率
代码
说明
CTL-FCS-INI 初始化变频参数
CTL-LAC
访问等级
CTL-FR1
给定通道
CTL-CD1
命令通道
CTL-CHCF
模式
SET-ACC
加速时间
SET-DEC
减速时间
CON-ADD
地址
CON-tbr
通讯速率
CON-tfo
通讯格式
MODBUS 多台 ATV312) to 配置 to 选择合适的 M258 型号如图 1.1
图 1.1 2. 点击“程序”进入编程界面 如图 1.2
图 1.2 3. 组态 MODBUS 串口
双击“串行线路”如图 1.3 所示: 设置 modbus 通讯速率,通讯格式 与 ATV312 设置相对应如表 1.1。
Addr
STRING 要转换为 ADDRESS 类型的 STRING 类地址(参见下面的详细信息)
输出
Done
类型 注释
BOOL
功能成功完成后,
Done
设置为
TRUE
。 注意: 当使用 Abort 输入中止操作后,Done 不设置为 1(仅限
Aborted
)。
Error
BOOL
当功能由于检测到错误而停止时,
注:设置完毕后断电重新上电设置参数才能生效。
变频器
L3 ndb ndb SEP 0.5S 0.1S
2 19200 8E1
PLC 编程
PLC 编程主要分为硬件组态和软件编程两部分。
Modbus 通信介绍:
在 somachine 控制器中,可以通过 modbus 通信读、写连接在总线上的从设
备,或作为从设备与主设备通信。这种读、写可以通过两种方式实现:一种是
采用 IO 扫描方式,即 IOScanner。在这种方式下,数据是自动交换的,要交换 的数据需要事先组态;另一种方式是直接请求,按需进行数据交换,需要在程 序组织单元中编辑程序实现。借助功能快 read_var 进行数据读出。
因此我们知道 modbus 的两种通信方式:一种是 IOScanner,另一种是直接 请求。这里的这两种方式就像是 CANopen 总线的两种通信方式:一种 PDO,另 一种 SDO;在 CANopen 总线中我们使用了 PDO(过程数据对象)PDO 也是实时的。 我们在 modbus 中采用直接请求,在程序中编程实现通过 READ_VAR 读出, WRITE_VAR 写入进行控制。具体编程如下: 1. 打开 somachine to 创建新机器 to 使用空项目启动 to 将项目另存为(例:
ADR
标准功能是定义关联指针的必用功能。(请参见下面的示例。) 缓冲器是一个表,用于接收必须在设备中写入的值。例如,4 个 寄存器的写入值存储在包含 4 个字的表中,而 32 位的写入值则 需要包含 2 个字或 4 个字节的表,其中每个位都设置为对应值。
功能描述
READ_VAR
功能块从采用 Modbus 协议的外部设备中读取数据。 图形表示形式
Error
设置为
TRUE
。当检测到错误时,
CommError

OperError
包含有关检测到的错误的信息。
CommError BYTE CommError
包含通讯错误代码。
注意:
Execute
输入上的上升沿执行转换,并返回
AddrTable
的立即更新。但是,当检测到错误时(即当
Addr
字符串不正确时),
图 1.4
图 1.5 相关的模块的介绍我们从“涉及相关知识”中可知。
图 1.5 程序简单介绍
通过 addm 程序块把地址转换为 read_var、write_var 能读懂的格式,然后 传送给 read_var、write_var。通过图 1.8 知读状态字在 read_var 程序块中 FRISTOBJ 引脚应该是 3201,命令字在 write_var 程序块中 FRISTOBJ 引脚应该 是 8501,我们把 read_var 读到的状态值在图 1.6 的程序中执行,命令通过 write_var 写入控制变频器。
//变频器没有故障且变频器处于接通禁止状态然时命令字为 6 使变频器处于准 备接通状态 VFD1_Ready:=((16#0021=(status1 AND 16#00FF))OR(16#0023=(status1 AND 16#00FF))); //中间的 or 说明 MSK=21 HE MSK=23 在这里是可以等同起来的; IF VFD1_Ready THEN //如果状态字为 16#0021 和 16#0023 变频器就能通过控 制字来控制正反转了。 IF FW1 THEN CMD1:=16#000F; END_IF;//正转 IF RE1 THEN CMD1:=16#080F; END_IF;//反转 END_IF; IF(NOT VFD1_Fault)AND(NOT FW1)AND(NOT RE1)THEN CMD1:=16#0007; END_IF; //就是没有故障信号 正转 反转信号就让 变频器禁止运行 IF speedref1 THEN REF1:=speed1;END_IF//赋值给频率 速度 PLC 程序: 全局变量声明如图 1.4
DRIVECOM state diagram 图 1.7(此图来源 ATV31 communication variables-en)
图 1.8(此图来源 ATV31 communication variables-en)
M258 与 ATV312 通过 Modbus 学习笔记 内容简介
PLC 通过 Modbus 监控变频器的运行是工业中较常见的应用,本文以施耐德 M258PLC 与 ATV312 变频器为例, 简要介绍 PLC 与变频器之间 Modbus 串行通信 的过程, 包括硬件接线、变频器参数设置、硬软件组态、上电调试等,实现在 PLC 上远程控制 ATV312 变频器的故障初始化,启动/停止,正转/反转,频率给 定等。