引言

本文是一篇综合性比较强的文章,从PLC输入输出及步进电机接线开始,到PLC运动控制程序编写,再到后续的ModbusTCP通信协议及上位机编程实现最终控制,涉及知识面比较广,能够让我们很好地将所学知识结合起来。

开发平台

采用西门子TIA Portal V16编程软件编写运动控制程序,实现PLC(S7-1200系列:CPU1214C DC/DC/DC )对步进电机的控制,再通过编写ModbusTCP程序,将控制地址进行映射,从而方便上位机(VS 2019开发)与PLC进行通信,最终实现步进电机的运动方向、速度及距离的灵活控制。

涉及硬件:开关电源、S7-1200PLC、步进驱动器、步进电机、单轴模组、限位开关

涉及软件:TIA Portal V16、VS2019、ModbusPoll(用于测试通信)

硬件接线

PLC编程

上位机开发思路

为了便于操作,需要配一个HMI人机界面来进行使用。这个的HMI形式是比较多样化的,如触摸屏、组态软件等,但是这里,我们采用目前比较流行的方式——C#开发上位机,来供用户使用。C#开发上位机相对于传统的组态软件,各自都有自己的优缺点,主要体现在如下三个方面:

  1. 功能限制:组态软件对于一些特定的需求或者逻辑,会有一定的局限性,使用上也受到软件本身的约束;C#开发上位机完全自主开发,几乎不存在功能上的限制,并且扩展方便。

  2. 技术要求:组态软件最大的优势在于方便,因为它本身都集成了一些通用协议和元件,只需要按照使用说明进行组态配置即可;C#开发需要完全自己搭建框架和实现底层代码,对开发者的技术要求会更高一些。

  3. 价格成本:组态软件需要按套、按点位收费,意味着每个项目无形中都有一个基础成本;C#开发上位机自主开发,不需要二次授权费用,并且开发一套之后,可以快速应用到其他项目中。

采用C#上位机开发,首先需要考虑的是通信问题。西门子S7-1200支持很多种不同的通信协议,包括S7、ModbusTCP、TCP/IP、UDP、OPC等,从开发成本上来说,我们优先考虑S7和ModbusTCP,对于S7和ModbusTCP通信协议,比较一下两者的优缺点:

  1. S7协议为西门子内部协议,协议本身不公开,需要调用或者自己开发通信库,使用S7通信协议需要勾选CPU中的允许来自远程对象的PUT/GET通信访问。

  2. ModbusTCP为公开、免费协议,可以自己开发通信库或者使用开源库,使用ModbusTCP通信协议需要编写一定的PLC程序来实现地址映射。

从公开免费和使用范围的角度来考虑,这里采用ModbusTCP通信协议,因为你学会了ModbusTCP,意味着市场上的大部分仪表、PLC通信你都可以搞得定,PLC程序编写如下所示:

1、创建DB块

这里首先创建一个DB块,里面包含了常用的一些操作和参数设置,值得注意的是,由于Modbus保持型寄存器的Bit位操作比较麻烦,因此这里我们统一使用Word类型来代替Bit。

2、Modbus地址与PLC地址的映射(控制位)

3、Modbus地址与PLC地址的映射(参数地址)

4、ModbusServer程序编写

5、上位机UI界面设计

6、ModbusTCP通信库

上位机开发功能实现的核心在于ModbusTCP通信库编写,由于Modbus协议是公开免费,可以自己根据Modbus协议来开发,也可以使用开源的Modbus库,如NModbus等,有了ModbusTCP通信库之后,我们可以将更多的精力放在业务处理及逻辑处理上面。

7、ModbusTCP通信点表

上位机开发功能

1、首先创建一个Windows窗体应用项目,项目名称为thinger.cn.MotionPro。

2、日志显示功能:日志显示采用ListView进行显示,绑定一个ImageList用来区分信息、报警、错误,添加日志方法的参数包含日志等级及日志内容。

3、自己开发ModbusTCP通信库或者使用开源库,该库应该具备建立连接、断开连接、预置寄存器、读取寄存器的功能。

4、建立连接和断开连接:这里通过按钮实现建立连接和断开连接2个功能。

5、相对位置运动:设置相对运动速度和相对运动位置,实现电机的相对运动。

6、绝对位置运动:设置绝对运动速度和绝对运动位置,实现电机的相对运动。

7、点动运动模式:设置点动运动速度,按住正向点动或者反向点动,实现电机的点动运动。

8、回原点模式:点击回原点,可以控制物体回到原点位置并停止。

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

写在最后

这个项目整体来说难度不是很大,但是涉及的知识面比较广,非常适合上位机初学者进行学习和练手。

西门子1200PLC实用定位控制程序案例相关推荐

  1. 上位机多个下位机modbustcp通讯_【C#上位机】西门子1200PLC实用定位控制程序案例...

    1. 引言 新阁教育这篇文章是一篇综合性非常强的文章,从PLC输入输出及步进电机接线开始,到PLC运动控制程序编写,再到后续的ModbusTCP通信协议及上位机编程实现最终控制,涉及知识面比较广,能够 ...

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

    引言 本文是一篇综合性比较强的文章,从PLC输入输出及步进电机接线开始,到PLC运动控制程序编写,再到后续的ModbusTCP通信协议及上位机编程实现最终控制,涉及知识面比较广,能够让我们很好地将所学 ...

  3. C#工控上位机实例_「C#上位机」西门子1200PLC实用定位控制程序案例

    ​1. 引言 本文是一篇综合性非常强的文章,从PLC输入输出及步进电机接线开始,到PLC运动控制程序编写,再到后续的ModbusTCP通信协议及上位机编程实现最终控制,涉及知识面比较广,能够让我们很好 ...

  4. 西门子1200plc轴运动控制程序模板

    西门子1200plc轴运动控制程序模板 介绍:此程序是之前给海康威视做的一台装路由器壳子的机器. 程序有以下: 1):调用轴控制块做的控制3个伺服, 2):1个电缸, 3):用PUT GET块与上下游 ...

  5. 西门子1200plc轴运动控制程序,程序包括有调用轴控制块做的控制3个伺服,1个电缸

    西门子1200plc轴运动控制程序,此程序是之前给海康威视做的一台装路由器壳子的机器,程序包括有调用轴控制块做的控制3个伺服,1个电缸,还有用PUT GET块与上下游plc通讯,轴控制块和气缸报警块都 ...

  6. 西门子1200plc轴运动控制程序模板 调用轴控制块做的控制3个伺服

    SIEMENS/西门子西门子1200plc轴运动控制程序模板 介绍:此程序是之前给海康威视做的一台装路由器壳子的机器. 程序有以下: 1):调用轴控制块做的控制3个伺服, 2):1个电缸, 3):用P ...

  7. 西门子S7-1200PLC 四轴定位控制程序(自动螺丝机)

    西门子S7-1200PLC 四轴定位控制程序(自动螺丝机) 程序是基于S7-1200 PLC (CPU 1214C ),博途V 13 SP 1编写. 程序中利用 TO AXIS 运动控制指令编写4轴定 ...

  8. 【应用】西门子1200PLC 之 装配流水线,交通灯

    使用西门子1200PLC来完成应用案例:装配流水线和交通灯 前言 本篇文章主要写一下,装配流水线(传送带)程序以及交通灯程序的实现. 一.装配流水线(传送带) 1.控制要求 要求:按下启动按钮启动整个 ...

  9. 【应用】西门子1200PLC 之 自动售货机

    用西门子1200PLC来完成应用案例:自动售货机 前言 本篇文章主要写一下,自动售货机程序的实现. 装配流水线(传送带) 1.控制要求自动售货机可投1元.2元.5元钱币.当投入的钱币总值等于或超过6元 ...

最新文章

  1. (0004) H5开发之导入JQuery库以及使用。
  2. memcache nginx
  3. 30KVA UPS电源安装电线的配置
  4. JAVA_OA(五):SpringMVC接受传入页面的参数值
  5. yolov3 python_Python 3 Keras YOLO v3解析与实现
  6. boid模型的Matlab程序,动物集群运动行为模型系列之五-—本科毕业设计.doc
  7. 阿里云轻应用服务器 宝塔面板 mongodb 配置外网连接 其二 配置账号密码
  8. java8 list 去重_Java8-Stream在集合中的8种应用案例
  9. Ionic Angular自动捕获错误 配置Angular2.x +
  10. MySQL 基础知识(基本架构、存储引擎差异)
  11. VisualStudio2019 DLL生成并使用教程(C++)最详细Demo教程
  12. 树形结构叶子节点的作用_树形结构的算法
  13. 记录一下所了解的一些第三开源框架
  14. 如何在没有域的环境中搭建AlwaysOn(一)
  15. shell函数显式的返回值
  16. 电子技术基础数字部分第六版_电子技术基础 数字部分 第六版课后参考答案 (康华光 高等教育)...
  17. SQL注入工具-----sqlmap
  18. 次世代3D游戏建模高效技巧,高薪不会跑!
  19. 关于微信公众号的迁移,在此记录一下
  20. python常用数学符号_ML-常用数学符号(示例代码)

热门文章

  1. 有了蒲公英智能组网我对向日葵、TeamViewer等远程控制软件说拜拜
  2. 大学生计算机专业求职信,计算机专业应届大学生求职信
  3. 【idea2018调节字体大小】
  4. 0040__node.js中Express简介
  5. linux图形界面能,linux图形界面基本知识
  6. ROS新手教程【一】ROS开源机器人操作系统简介
  7. MySQL 学习篇(一) 到底是什么影响了MYSQL性能
  8. clearfix清除浮动进化史
  9. 低通滤波器的截止频率设置概述
  10. 2019春招前端实习面经