上位机软件(上位机软件开发用什么语言)

介绍本文是一篇非常全面的文章,从PLC的输入输出和步进电机的接线,到PLC运动控制程序的编程,再到后续的ModbusTCP通讯协议和上位机编程实现最终的控制,涉

介绍

本文是一篇非常全面的文章,从PLC的输入输出和步进电机的接线,到PLC运动控制程序的编程,再到后续的ModbusTCP通讯协议和上位机编程实现最终的控制,涉及的知识非常广泛,使我们能够很好的结合所学。

项目开发平台

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

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

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

硬件布线

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

PLC编程

1.通过薄涂软件创建一个新的PLC项目,根据硬件型号插入一个新的器件,这里是CPU 1214C DC DC DC。

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

2.双击PLC的以太网端口,设置IP地址,这里设置为192.168.2.210。

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

3.双击CPU,在脉冲发生器的PTO/PWM选项中设置信号类型为PTO,脉冲输出为Q0.0,方向输出为Q0.1。

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

4.创建一个名为Axis 1的新流程对象,并传递基本参数>:一个将脉冲输出设置为Pulse1的驱动程序。

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

5.通过扩展参数>:位置限制,将上限和下限分别设置为I0.1和I0.2。

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

6.通过扩展参数>:Back to origin >: Active,将原点开关设置为I0.0

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

7.程序段1,调用MC_Power使能,如图填写各引脚,其中Asix选择1轴。

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

8.第2节,调用MC_MoveRelative,如图填写每个pin。该部分主要用于执行相对运动。

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

9.程序段3,调用MC_MoveAbsolute,如图填写每个pin。这个程序段主要用于执行绝对运动。

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

10.程序段4,调用MC_MoveJog,如图填写各引脚,此程序段主要用于前后点动。

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

11.程序段5,调用MC_Home,如图填写每个pin,这个程序段主要用来执行归零。

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

12.程序段6,调用MC_Reset,如图填写每个管脚。该程序段主要用于执行复位功能。

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

13.过程第7节,调用MC_Halt,如图所示填写每个pin。本程序部分主要用于执行暂停功能。

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

14.第8节,调用MC_ReadParam读取相关参数。如图所示,填写每个pin。该部分主要用于读取实时脉冲。

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

上位机的开发思路

目前开发PC的主流方式主要是组态软件(触摸屏),C#开发PC,C#开发PC与传统组态软件的区别主要体现在以下三个方面:

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

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

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

使用C# PC进行开发时,首先要考虑的是通信。西门子-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 hold寄存器的Bit操作比较麻烦,所以我们这里用Word type代替Bit。

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

Modbus地址与PLC地址的映射(控制位)「C#上位机」西门子1200PLC实用定位控制程序案例

Modbus地址与PLC地址的映射(参数地址)「C#上位机」西门子1200PLC实用定位控制程序案例

ModbusServer程序编写「C#上位机」西门子1200PLC实用定位控制程序案例

上位机UI界面设计「C#上位机」西门子1200PLC实用定位控制程序案例

ModbusTCP通信库

上位机开发功能的核心在于ModbusTCP通信库的编写。因为Modbus协议是开放免费的,我们可以根据Modbus协议自己开发,也可以使用开源的Modbus库,比如NModbus。有了ModbusTCP通信库,我们可以更专注于业务处理和逻辑处理。

上位机功能开发

首先创建一个Windows窗体应用项目,项目名称为thinger.com.MotionPro。日志显示功能:日志显示采用ListView进行显示,绑定一个ImageList用来区分信息、报警、错误,添加日志方法的参数包含日志等级及日志内容。自己开发ModbusTCP通信库或者使用开源库,该库应该具备建立连接、断开连接、预置寄存器、读取寄存器的功能。建立连接和断开连接:这里通过按钮实现建立连接和断开连接2个功能。相对位置运动:设置相对运动速度和相对运动位置,实现电机的相对运动。绝对位置运动:设置绝对运动速度和绝对运动位置,实现电机的相对运动。点动运动模式:设置点动运动速度,按住正向点动或者反向点动,实现电机的点动运动。回原点模式:点击回原点,可以控制物体回到原点位置并停止。运动停止、运动暂停、复位相关功能。

(来源:互联网,版权归原作者所有,侵删)

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

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。

作者:美站资讯,如若转载,请注明出处:https://www.meizw.com/n/163312.html

发表回复

登录后才能评论