1、引文
上一篇文章中,我们主要阐述了《西门子1200PLC实用定位控制程序案例》的接线部分及PLC程序部分。【公众号dotNet工控上位机:thinger_swj】
本篇主要针对上位机部分开发进行详细阐述。
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实现,以点动速度设置为例,代码如下所示: