上位机多个下位机modbustcp通讯_【C#上位机】西门子1200PLC实用定位控制程序案例...
1. 引言
新阁教育这篇文章是一篇综合性非常强的文章,从PLC输入输出及步进电机接线开始,到PLC运动控制程序编写,再到后续的ModbusTCP通信协议及上位机编程实现最终控制,涉及知识面比较广,能够让我们很好地将所学知识结合起来。【dotNet工控上位机:thinger_swj】
2. 项目开发平台
采用西门子TIA Portal V15编程软件编写运动控制程序,实现PLC(S7-1200系列:CPU1214C DC/DC/DC )对步进电机的控制,再通过编写ModbusTCP程序,将控制地址进行映射,从而方便上位机(VS 2019开发)与PLC进行通信,最终实现步进电机的运动方向、速度及距离的灵活控制。
涉及硬件:开关电源、S7-1200PLC、步进驱动器、步进电机、单轴模组、限位开关
涉及软件:TIA Portal V15、VS2019、ModbusPoll(用于测试通信)
3. 硬件接线
4. PLC编程
5. 上位机开发思路
目前比较主流开发上位机的方式,主要是组态软件(触摸屏)、C#开发上位机,C#开发上位机与传统的组态软件之间的区别,主要体现在如下三个方面:
- 功能限制:组态软件对于一些特定的需求或者逻辑,会有一定的局限性,使用上也受到软件本身的约束;C#开发上位机完全自主开发,几乎不存在功能上的限制,并且扩展方便。
- 技术要求:组态软件最大的优势在于方便,因为它本身都集成了一些通用协议和元件,只需要按照使用说明进行组态配置即可;C#开发需要完全自己搭建框架和实现底层代码,对开发者的技术要求会更高一些。
- 价格成本:组态软件需要按套、按点位收费,意味着每个项目无形中都有一个基础成本;C#开发上位机自主开发,不需要二次授权费用,并且开发一套之后,可以快速应用到其他项目中。
采用C#上位机开发,首先需要考虑的是通信问题。西门子S7-1200支持很多种不同的通信协议,包括S7、ModbusTCP、TCP/IP、UDP、OPC等,从开发成本上来说,我们优先考虑S7和ModbusTCP,对于S7和ModbusTCP通信协议,比较一下两者的优缺点:
- S7协议为西门子内部协议,协议本身不公开,需要调用或者自己开发通信库,使用S7通信协议需要勾选CPU中的允许来自远程对象的PUT/GET通信访问。
- ModbusTCP为公开、免费协议,可以自己开发通信库或者使用开源库,使用ModbusTCP通信协议需要编写一定的PLC程序来实现地址映射。
从公开免费和使用范围的角度来考虑,这里采用ModbusTCP通信协议,因为学会了ModbusTCP,意味着市场上的大部分仪表、PLC通信都可以搞得定,PLC程序编写如下如下所示:
- 创建DB块
这里首先创建一个DB块,里面包含了常用的一些操作和参数设置,值得注意的是,由于Modbus保持型寄存器的Bit位操作比较麻烦,因此这里我们统一使用Word类型来代替Bit。
- Modbus地址与PLC地址的映射(控制位)
Modbus地址与PLC地址的映射(参数地址)
ModbusServer程序编写
上位机UI界面设计
- ModbusTCP通信库
上位机开发功能实现的核心在于ModbusTCP通信库编写,由于Modbus协议是公开免费,可以自己根据Modbus协议来开发,也可以使用开源的Modbus库,如NModbus等,有了ModbusTCP通信库之后,我们可以将更多的精力放在业务处理及逻辑处理上面。
6. 上位机功能开发
- 首先创建一个Windows窗体应用项目,项目名称为thinger.com.MotionPro。
- 日志显示功能:日志显示采用ListView进行显示,绑定一个ImageList用来区分信息、报警、错误,添加日志方法的参数包含日志等级及日志内容。
- 自己开发ModbusTCP通信库或者使用开源库,该库应该具备建立连接、断开连接、预置寄存器、读取寄存器的功能。
- 建立连接和断开连接:这里通过按钮实现建立连接和断开连接2个功能。
- 相对位置运动:设置相对运动速度和相对运动位置,实现电机的相对运动。
- 绝对位置运动:设置绝对运动速度和绝对运动位置,实现电机的相对运动。
- 点动运动模式:设置点动运动速度,按住正向点动或者反向点动,实现电机的点动运动。
- 回原点模式:点击回原点,可以控制物体回到原点位置并停止。
- 运动停止、运动暂停、复位相关功能。
7. 写在最后
这个项目整体来说难度不是很大,但是涉及的知识面比较广,非常适合上位机初学者进行学习和练手。【dotNet工控上位机:thinger_swj】
上位机多个下位机modbustcp通讯_【C#上位机】西门子1200PLC实用定位控制程序案例...相关推荐
- 【C#上位机】西门子1200PLC实用定位控制程序案例
引言 本文是一篇综合性比较强的文章,从PLC输入输出及步进电机接线开始,到PLC运动控制程序编写,再到后续的ModbusTCP通信协议及上位机编程实现最终控制,涉及知识面比较广,能够让我们很好地将所学 ...
- C#工控上位机实例_「C#上位机」西门子1200PLC实用定位控制程序案例
1. 引言 本文是一篇综合性非常强的文章,从PLC输入输出及步进电机接线开始,到PLC运动控制程序编写,再到后续的ModbusTCP通信协议及上位机编程实现最终控制,涉及知识面比较广,能够让我们很好 ...
- 西门子S7-1200PLC 四轴定位控制程序(自动螺丝机)
西门子S7-1200PLC 四轴定位控制程序(自动螺丝机) 程序是基于S7-1200 PLC (CPU 1214C ),博途V 13 SP 1编写. 程序中利用 TO AXIS 运动控制指令编写4轴定 ...
- winpcapp配置c++网口通讯_(经验)西门子PLC的Modbus TCP通讯的一些经验
Modbus是一种协议公开的工业通讯,被广泛使用.通过串口的是Modbus-RTU协议,通过以太网的是Modbus TCP通讯.现在的PLC都开始支持以太网通讯,因此,Modbus TCP也越来越重要 ...
- fanuc机器人与plc的通讯_三菱PLC与西门子PLC有什么区别?
点击↑↑技成培训 ,关注并置顶即可长期免费订阅20万+工控人关注的微信平台:技术分享.学习交流.工控视频三菱PLC与西门子PLC有什么区别?分别有什么优点和缺点?该如何选择?学习哪种品牌?首先它们的编 ...
- Modbus通信从入门到精通_2_Modbus TCP通信详解及仿真(搭建ModbusTCP仿真环境:创建虚拟PLC并进行ModbusTCP通讯;寄存器与PLC中映射关系;适合理解如何编写上位机)
本篇将会以西门子PLC软件搭建ModbusTCP仿真环境,并通过仿真环境,介绍基础知识及模拟实际应用中写一个简单的通信读取PLC数据方法,并简介了编写上位机的方法. 文章目录 1. 搭建ModbusT ...
- python编程与下位机通讯_如何使用Python开发串口通讯上位机(一)
用Python开发串口通讯型上位机,其实并非最优解,本系列更新只为个人学习与总结.如果有C语言底子,嵌入式层面的上位机开发,C++ Builder,C#才是更加好用的利器.1 什么是上位机 从事过嵌入 ...
- C#上位机开发源码基于RS485通讯总线的ModbusRtu协议,支持用户权限管理
C#上位机开发源码 上位机项目源代码 采用基于RS485通讯总线的ModbusRtu协议,支持用户权限管理.sqlite数据库.实时曲线.历史曲线.历史报表.导出Excel.主界面布局可调带记忆等功能 ...
- 上位机与PLC 通讯源码 上位机与三菱PLC,西门子PLC通讯 同时一起通讯,单独控制,三菱采用官方MX 通讯,支持三菱FX系列,
上位机与PLC 通讯源码 上位机与三菱PLC,西门子PLC通讯 同时一起通讯,单独控制,三菱采用官方MX 通讯,支持三菱FX系列,A系列,Q系列,L系列,R系列,全系系列,各种串口和各种网口通讯,, ...
最新文章
- BZOJ 2142 礼物(拓展Lucas,中国剩余定理)【BZOJ修复工程】
- 推荐8个能极大提高办公效率的软件,让你告别加班
- 收藏这10个办公神器,让你的职场办公更高效!
- Android adb常用命令
- 如何查看ubuntu的版本信息和查看几位 32 or 64位
- c语言选择法排序案例,谁能给我一个c语言选择排序法的简单例子
- VideoMatch: Matching based Video Object Segmentation
- 思维导图github地址
- 内存映射文件的优势劣势体会
- jemalloc 使用
- vant实现Select效果--单选和多选
- Docker部署程序员简历
- 带“小弟”其实是一种投资
- contour()函数的理解
- canvas实现英雄联盟战力图
- 如何让在国内访问github网站的速度变快
- typescript基础学习
- 计算机组成原理实验箱D7,计算机组成原理实验(实验箱).doc
- 用于设定表格样式的附加css,Dreamweaver使用CSS样式表设置网页文本格式
- python中计算区间内的质子数
热门文章
- 对于按成本组件结构(要素)还原
- Weblogic常见配置
- 如何批量删除会计科目、供应商、客户的主数据
- 大数据时代企业如何保障数据安全?这款工具值得一看
- 你羡慕的「自由职业者」,都在焦虑没有保障的退休生活
- 122亿元消费券引爆首都初夏,京东618如何成为经济复苏加速引擎
- java entries_Java leveldb遍历特定前缀的entries
- java开发变化_十年编程语言变化,大众程序员的路在哪里?
- java使用druid maven_SpringMVC+Spring+Mybatis整合,使用druid连接池,声明式事务,maven配置...
- css 浮动在最上层_CSS编码规范