改造西门子S7-200 Smart之Modbus TCP客户端指令库及其应用

[复制链接]
查看77905 | 回复0 | 2024-8-22 08:27:25 | 显示全部楼层 |阅读模式
一、前言:
实际应用当中,多数Modbus TCP服务器设备给出的均是寄存器实际地址,而非寄存器编号,且西门子Modbus TCP客户端指令库对于从站离散输入、离散输出和输入寄存器读写的寄存器起始地址和数量均达不到Modbus规定的最大化,使用起来有诸多不便,特此封装此库,方便自己使用!
二、系统概述:
拧紧轴由提供动力源的伺服电机、提供输出扭矩的减速机和用以检测扭矩之传感器组成,另外还需要外接控制器,用以控制、显示。其原理是利用伺服电机做为动力单元,连接减速机构,增大输出力矩,连接扭矩传感器用以检测力矩。扭矩传感器和伺服电机组成闭环控制,就可以精确的控制输出力矩等参数。本文所介绍之拧紧轴驱动器支持Modbus TCP以太网协议,我们使用西门子S7-200 Smart系列PLC和拧紧轴驱动器实现Modbus TCP以太网通信,西门子S7-200 Smart系列PLC可对拧紧轴目标扭矩进行相关操作。

三、通信连接:

1、西门子S7-200 Smart系列PLC内置以太网口通过网线连接至交换机LAN接口;

2、拧紧轴驱动器网口通过网线连接至交换机LAN接口。

四、西门子S7-200 Smart系列PLC内置以太网口通信参数:

1、通信协议:Modbus TCP Client

2、IP地址:192.168.1.162

3、端口号:3000

参数设置如下所示:



端口中有关服务器通信参数通过编程实现,详情见PLC编程。

五、拧紧轴驱动器网口通信参数:

1、通信协议:Modbus TCP Server

2、IP地址:192.168.1.75

3、端口号:502

其Modbus通信地址表如下所示:



我们这里对测量扭矩(寄存器地址15010)进行实时读操作。

六、相关功能块安装:

西门子S7-200 Smart相关Modbus TCP客户端、Modbus TCP服务器、Modbus RTU主站和Modbus RTU从站功能块需要提前安装,如下所示:



七、西门子S7-200 Smart系列PLC编程详解:

1、网络1:初始化复位各个标志位



2、网络2:连接建立后置位M1.0,然后开始执行读写操作



3、网络3:连接断开后复位各个标志位



4、网络4:调用MTC_LINK_0指令,可实现与服务器建立连接或者断开连接,各参数含义如下所示:

(1)EN:使能端,要求每个扫描周期都接通,所以一般使用SM0.0;

(2)EConnectionSet:建立TCP连接操作,这里我们使用M0.0来建立TCP连接;

(3)DConnectionSet:断开TCP连接操作,这里我们使用M0.1来断开TCP连接;

(4)IP01Addressset:服务器IP地址第1段,这里拧紧轴驱动器IP地址第1段为192;

(5)IP02Addressset:服务器IP地址第2段,这里拧紧轴驱动器IP地址第2段为168;

(6)IP03Addressset:服务器IP地址第3段,这里拧紧轴驱动器IP地址第3段为1;

(7)IP04Addressset:服务器IP地址第4段,这里拧紧轴驱动器IP地址第4段为75;

(8)RemoPortNumber:服务器端口号,这里拧紧轴驱动器端口号为502;

(9)LocaPortNumber:本地端口号,即就是PLC作为客户端时的端口号,这里设定为3000;

(10)TimeoutSetting:服务器超时时间设定,单位为毫秒,这里设定为10000毫秒。

(11)CompletionMark:完成标志位,当连接建立成功后,该标志位被置位;

(12)BusyLinOutMark:忙线标志位,连接断开或者未建立时,该标志位被置位;

(13)ErroCodeOutput:错误代码,该错误代码为参考开放式用户通信库指令错误代码,具体请参考STEP 7-Micro/WIN SMART在线帮助或者PLC系统手册相关篇章。



5、网络5:扫描周期,连接建立后M1.0被置位,延时10ms后置位M1.1,然后执行读取测量扭矩。



6、网络6:调用MTC_TRAN_0指令,调用该指令可对拧紧轴驱动器执行读写操作,各参数如下所示:

(1)EN:使能端,同一时刻只能有一条MTC_TRAN_0指令使能,EN 输入参数必须一直接通直到 MTC_TRAN_0 指令CompletionMark位被置 1;

(2)CommandWSwitch:读写请求开关,每一条新的读写请求需要使用信号沿触发;

(3)SlaveAddressID:单元标识符,一般由客户端设定,特殊情况亦可根据服务器进行设定;

(4)ModbusFunction:Modbus功能码,支持01、02、03、04、05、06、15、16等8个功能码;

(5)RegisterAddres:寄存器地址,设定范围为0~65535,即就是16进制0000~FFFF;

(6)RegisterNumber:寄存器数量,

对于01和02功能码,设定范围为1~2000个位

对于03和04功能码,设定范围为1~125个字

对于05和06功能码,设定为1

对于15功能码,设定范围为1~1968个位

对于16功能码,设定范围为1~123个字

(7)RegisterBuffer:读写缓冲区,参数RegisterBuffer是间接地址指针,指向 CPU 中与读/写请求相关的数据的 V 存储器地址。

(8)CompletionMark:完成标志位,当MTC_TRAN_0指令执行完成后,该标志位被置位

(9)ErroCodeOutput:错误代码,主要错误代码如下所示:



这里我们利用MTC_TRAN_0指令对拧紧轴驱动器测量扭矩进行读取操作:



7、网络7:MTC_TRAN_0指令执行完成后,完成标志位被置位,完成一次操作,然后复位相关标志位,置位M1.0,为下一次操作做好准备:



八、Modbus TCP服务器(拧紧轴驱动器)的测试:

调试助手发送命令:12 34 00 00 00 06 01 04 3A A2 00 02

拧紧轴驱动器返回:12 34 00 00 00 07 01 04 04 42 DE 00 00



九、Modbus TCP客户端测试(西门子S7-200 Smart):

将服务器IP地址修改为电脑IP地址,电脑上使用Modbus Slave调试助手模拟拧紧轴进行测试

PLC发送命令:09 14 00 00 00 06 01 04 3A A2 00 02

调试助手返回:09 14 00 00 00 07 01 04 04 00 00 13 88



十、系统联调:

经过调试,西门子S7-200 Smart系列PLC和拧紧轴驱动器完美实现Modbus TCP以太网通信,PLC中可以对拧紧轴测量扭矩实现读取操作,程序编写调试成功,程序截图如下所示:











本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册哦

x
您需要登录后才可以回帖 登录 | 注册哦

本版积分规则