3 采用 Modbus 通信协议,如何以非循环通讯方式读取与修改S200 PTI驱动器参数?
SINAMICS S200 PTI 驱动器支持通过数据组 47(寄存器 40601 … 40722)进行参数数据的非循环通讯。寄存器 40601 控制非循环通讯功能。寄存器 40602 包含子功能代码(始终 47 = 2F hex)。寄存器 40603 … 40722 存储用户数据。
其中,表格3-1简单描述了寄存器从40601到40722的内容格式。
表格 3-1 通过 DS47 进行非循环通讯
3.1 读取参数值
为了读取参数值,PLC 首先会向对应的寄存器 40601 至 40722 发送读取参数的请求任务。驱动器在接收到该读参数任务后,会发送应答信息。随后,PLC 会再次发送读取任务,从而从这些寄存器中读取具体的数值。其中,表格3-2 描述了实现读参数任务的发送数据格式。
表格 3-2参数的读任务
其中,表格3-3描述了实现读参数任务的发送数据后,S200 PTI对读参数任务应答的数据格式。
表格 3-3 驱动器对读参数任务的应答
3.2 修改参数值
若要修改多个参数值,PLC 会先向对应的寄存器 40601 至 40722 发送修改多个参数值的任务请求。驱动器接收到该修改多个参数的任务请求后,会向 PLC 发送应答信息。其中,表格3-4描述了实现参数修改任务的发送数据格式。
表格 3-4 参数修改任务
其中,表格3-5描述了实现修改多个参数任务的发送数据成功后,S200 PTI对修改多个参数任务应答的数据格式。
表格 3-5 驱动器执行修改任务后的应答
其中,表格3-6描述了实现修改多个参数任务的发送数据不能完全执行任务后,S200 PTI对修改多个参数任务应答的数据格式。
表格 3-6 驱动器不能完全执行修改任务时的应答
3.3 非循环模式下参数读取与修改的示例
3.3.1 示例一、读取多个参数
在 Modbus RTU 通信协议中,功能码用于指示主站请求从站执行的操作类型。S200 PTI 驱动器支持以下三种标准功能码:
FC3(读取保持寄存器)
FC6(写入单个寄存器)
FC16(写入多个寄存器)
使用 FC16 非循环实现读取多个参数。以下是从设备 1 读取 p1215 和 p1120 的示例。
第一步,如图3-1所示,PLC通过MW40到MW58, 发送请求读多个参数任务的报文内容如下:

图3-1 请求读参数任务的报文
第二步,如图3-2所示,PLC调用Modbus_Master功能块,将请求读 p1215 和 p1120两个参数读任务按照图3-1的内容写入 DS47 寄存器40601到40610里。

图3-2写任务:将请求读参数任务写入 DS47 寄存器
第三步,如图3-3所示,再次调用Modbus_Master功能块,PLC 向S200 PTI发送读任务,从 DS47 寄存器40601到40609读取这两个参数的数值大小。

图3-3读任务:从 DS47 寄存器读取参数值
最后,如图3-4所示,PLC得到驱动器S200 PTI发送的应答内容,包括了所需参数的数值。这样完成读参数的任务。

图3-4成功读取参数时的应答p1120=10.0 和p1215 =0
另外,如图3-5所示,可以通过网络服务器查看PLC读取的两个参数,得到的结果与PLC程序得到的数值是一致的。

图3-5 在网络服务器中S200PTI的参数值
3.3.2 示例二、修改多个参数
使用 FC16 非循环写入参数。以下是设置 p1130 = 1.28 和 p29130 = 2 的示例。
第一步,如图3-6所示,PLC通过MW110到MW138,发送请求修改多个参数任务的报文内容如下:

图3-6 请求修改参数任务的报文
第二步,如图3-7所示,PLC调用Modbus_Master功能块,将修改p1130 和 29130 的参数值通信任务按照图3-6的内容写入到 DS47 寄存器40601到40615里。

图3-7 将需要修改的参数值写入 DS47 寄存器
第三步,如图3-8所示,PLC再次调用Modbus_Master功能块,PLC向寄存器发送读任务,从寄存器40601到40607读取数值。

图3-8 从 DS47 寄存器读取修改参数任务的应答
最后,如图3-9所示,S200 PTI驱动器发送以下应答内容,完成了修改多个参数的任务。

图3-9 成功修改参数时的应答
如图3-10 同时通过网络服务器查看所修改的参数值,与执行PLC程序的结果相一致。

图3-10 在网络服务器中S200PTI的参数值