基于ModbusTCP实现西门子1200PLC定位控制案例

tech2026-10-09  1

1、引文

上一篇文章中,我们主要阐述了《西门子1200PLC实用定位控制程序案例》的接线部分及PLC程序部分。【公众号dotNet工控上位机:thinger_swj】

【C#上位机】西门子1200PLC实用定位控制程序案例

本篇主要针对上位机部分开发进行详细阐述。

2、项目通信变量表

Modbus地址PLC地址变量名称备注说明40001DB1.DBW0正向点动1=True,0=False40002DB1.DBW2反向点动1=True,0=False40003DB1.DBW4相对运动1=True,0=False40004DB1.DBW6绝对运动1=True,0=False40005DB1.DBW8回原点1=True,0=False40006DB1.DBW10系统复位1=True,0=False40007DB1.DBW12系统暂停1=True,0=False40008-40009DB1.DBD14点动速度浮点型40010-40011DB1.DBD18相对速度浮点型40012-40013DB1.DBD22相对距离浮点型40014-40015DB1.DBD26绝对速度浮点型40016-40017DB1.DBD30绝对位置浮点型40018-40019DB1.DBD34实时位置浮点型

 

3、上位机功能开发

首先创建一个Windows窗体应用项目,项目名称为thinger.com.MotionPro,并按照功能完成UI界面的搭建。

自己开发ModbusTCP通信库或者使用开源库,该库应该具备建立连接、断开连接、预置寄存器、读取寄存器的功能。这里采用开源Modbus通信库NModbus4,通过NuGet下载安装NModbus通信库。【公众号dotNet工控上位机:thinger_swj】

建立连接和断开连接:这里通过按钮实现建立连接和断开连接2个功能,代码如下所示:

参数实时显示:需要实时显示的参数包括点动速度、相对速度、相对距离、绝对速度、绝对位置以及实时位置,因此需要开启一个定时器实时读取从40008开始的12个寄存器,读取完成之后再解析成浮点型数据,代码如下所示:

相对位置运动:设置好相对运动速度和相对运动距离,实现电机的相对运动,相对运动只需要给相对运动变量40003写1再写0即可。

绝对位置运动:设置好绝对运动速度和绝对运动位置,实现电机的绝对运动,绝对运动只需要给绝对运动变量40004写1再写0即可。

点动运动模式:设置点动运动速度,按住正向点动或者反向点动,实现电机的点动运动,代码如下所示:

回原点模式:点击回原点,可以控制物体回到原点位置并停止,回原点只需要给回原点变量40005写1再写0即可。

运动暂停、复位相关功能。

参数设置:需要设置的参数包括点动速度、相对速度、相对距离、绝对速度、绝对位置,这里通过将设定的浮点数转换成ushort数组,再通过调用WriteMultipleRegisters实现,以点动速度设置为例,代码如下所示:

最新回复(0)