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

1、引文

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

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

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

2、项目通信变量表

Modbus地址 PLC地址 变量名称 备注说明
40001 DB1.DBW0 正向点动 1=True,0=False
40002 DB1.DBW2 反向点动 1=True,0=False
40003 DB1.DBW4 相对运动 1=True,0=False
40004 DB1.DBW6 绝对运动 1=True,0=False
40005 DB1.DBW8 回原点 1=True,0=False
40006 DB1.DBW10 系统复位 1=True,0=False
40007 DB1.DBW12 系统暂停 1=True,0=False
40008-40009 DB1.DBD14 点动速度 浮点型
40010-40011 DB1.DBD18 相对速度 浮点型
40012-40013 DB1.DBD22 相对距离 浮点型
40014-40015 DB1.DBD26 绝对速度 浮点型
40016-40017 DB1.DBD30 绝对位置 浮点型
40018-40019 DB1.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实现,以点动速度设置为例,代码如下所示:

猜你喜欢

转载自blog.csdn.net/xiketangAndy/article/details/108408211