上位机编程系列开发语言C#,与PLC通信
什么是C#语言?
C#是一种安全的、稳定的、简单的、优雅的,由C和C++衍生出来的面向对象的编程语言。它在继承C和C++强大功能的同时去掉了一些它们的复杂特性(例如没有宏以及不允许多重继承)。C#综合了VB简单的可视化操作和C++的高运行效率,以其强大的操作能力、优雅的语法风格、创新的语言特性和便捷的面向组件编程的支持成为.NET开发的首选语言。
C#是面向对象的编程语言。它使得程序员可以快速地编写各种基于MICROSOFT .NET平台的应用程序,MICROSOFT .NET提供了一系列的工具和服务来最大程度地开发利用计算与通讯领域。C#使得C++程序员可以高效的开发程序,且因可调用由 C/C++ 编写的本机原生函数,而绝不损失C/C++原有的强大的功能。因为这种继承关系,C#与C/C++具有极大的相似性,熟悉类似语言的开发者可以很快的转向C#。
C#旨在设计成为一种“简单、现代、通用”,以及面向对象的程序设计语言,此种语言的实现,应提供对于以下软件工程要素的支持:强类型检查、数组维度检查、未初始化的变量引用检测、自动垃圾收集(Garbage Collection,指一种自动内存释放技术)。软件必须做到强大、持久,并具有较强的编程生产力。此种语言为在分布式环境中的开发提供适用的组件开发应用。
为使程序员容易迁移到这种语言,源代码的可移植性十分重要,尤其是对于那些已熟悉C和C++的程序员而言。对国际化的支持非常重要。C#适合为独立和嵌入式的系统编写程序,从使用复杂操作系统的大型系统到特定应用的小型系统均适用。
随着科技的发展,工业控制也朝着个性化、智能化、数据化的方向发展,上位机的地位也越来越重要,而如何快速进行数据的采集、存储、利用尤其重要。
C#是工业控制中常用的上位机开发语言,具有开发速度快,运行速度快,扩展库丰富,开发门槛低,使用范围广的特点。
下面我们就来了解一下C#开发软件的安装配置,如何快速读写数据、解析数据、结合Sqlite存储数据以及导入导出Excel表格!
C#编程与PLC通信
示例图
所需基础
1.自动化/IT相关专业师生
2.电气工程师
3.系统集成及应用工程师
4.有意向学习上位机开发的爱好者
学习,必须学会的几个知识点:
1.C语言基础
2.了解西门子PLC
课程大纲
讲师简介
李福来
李福来老师长期从事电气自动化及其上位机开发工作,有着长年的产品知识的积累、掌握丰富的现场应用案例,以及多种复杂疑难案例的处理经验。
对PLC与上位机的结合有着独到的见解和丰富的经验,开发过多款上位机软件,精通Sqlite、Sqlserver等工控常用数据库。
「C#上位机」西门子1200PLC实用定位控制程序案例
引言
本文是一篇综合性非常强的文章,从PLC输入输出及步进电机接线开始,到PLC运动控制程序编写,再到后续的ModbusTCP通信协议及上位机编程实现最终控制,涉及知识面比较广,能够让我们很好地将所学知识结合起来。
项目开发平台
采用西门子TIA Portal V15编程软件编写运动控制程序,实现PLC(S7-1200系列:CPU1214C DC/DC/DC )对步进电机的控制,再通过编写ModbusTCP程序,将控制地址进行映射,从而方便上位机(VS 2019开发)与PLC进行通信,最终实现步进电机的运动方向、速度及距离的灵活控制。
涉及硬件: 开关电源、S7-1200PLC、步进驱动器、步进电机、单轴模组、限位开关
涉及软件: TIA Portal V15、VS2019、ModbusPoll(用于测试通信)
硬件接线
PLC编程
1.通过博图软件创建一个新的PLC项目,根据硬件型号插入新设备,这里为CPU 1214C DC DC DC
2.双击PLC的以太网口,设置IP地址,这里设置为192.168.2.210
3.双击CPU,在脉冲发生器PTO/PWM选项中设置信号类型为PTO,脉冲输出为Q0.0,方向输出为Q0.1
4.新建一个工艺对象,名称为轴1,通过基本参数>驱动器,设置脉冲输出为Pulse1
5.通过扩展参数>位置限制,设置上下限位分别为I0.1和I0.2
6.通过扩展参数>回原点>主动,设置原点开关为I0.0
7.程序段1,调用MC_Power使能,各个引脚填写如图所示,其中Asix选择轴1
8.程序段2,调用MC_MoveRelative,各个引脚填写如图所示,该程序段主要用于执行相对运动
9.程序段3,调用MC_MoveAbsolute,各个引脚填写如图所示,该程序段主要用于执行绝对运动
10.程序段4,调用MC_MoveJog,各个引脚填写如图所示,该程序段主要用于执行前进和后退点动
11.程序段5,调用MC_Home,各个引脚填写如图所示,该程序段主要用于执行归零
12.程序段6,调用MC_Reset,各个引脚填写如图所示,该程序段主要用于执行复位功能
13.程序段7,调用MC_Halt,各个引脚填写如图所示,该程序段主要用于执行暂停功能
14.程序段8,调用MC_ReadParam,来读取相关参数,各个引脚填写如图所示,该程序段主要用于读取实时脉冲
上位机开发思路
目前比较主流开发上位机的方式,主要是组态软件(触摸屏)、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。
上位机开发功能实现的核心在于ModbusTCP通信库编写,由于Modbus协议是公开免费,可以自己根据Modbus协议来开发,也可以使用开源的Modbus库,如NModbus等,有了ModbusTCP通信库之后,我们可以将更多的精力放在业务处理及逻辑处理上面。
上位机功能开发
首先创建一个Windows窗体应用项目,项目名称为thinger.com.MotionPro。日志显示功能:日志显示采用ListView进行显示,绑定一个ImageList用来区分信息、报警、错误,添加日志方法的参数包含日志等级及日志内容。自己开发ModbusTCP通信库或者使用开源库,该库应该具备建立连接、断开连接、预置寄存器、读取寄存器的功能。建立连接和断开连接:这里通过按钮实现建立连接和断开连接2个功能。相对位置运动:设置相对运动速度和相对运动位置,实现电机的相对运动。绝对位置运动:设置绝对运动速度和绝对运动位置,实现电机的相对运动。点动运动模式:设置点动运动速度,按住正向点动或者反向点动,实现电机的点动运动。回原点模式:点击回原点,可以控制物体回到原点位置并停止。运动停止、运动暂停、复位相关功能。(来源:网络,版权归原作者所有,侵删)
相关问答
上位机如何控制plc?
上位机可以通过以下几种方式来控制PLC(可编程逻辑控制器):1.使用编程软件:PLC通常使用特定的编程软件进行编程和控制。上位机可以使用相应的编程软件,通过...
作为老电工,先学上位机好,还是PLC?为何?
作为老电工,先学上位机好,还是PLC?为何?我的建议是先学PLC,而后再去学习上位机,当然这个先后顺序是更侧重的意思,建议首先更侧重对PLC的学习,而后再侧重...作为...
dd马达如何用plc控制。?
要使用PLC(可编程逻辑控制器)控制DD马达,可以按照以下步骤进行:步骤1:连接硬件将PLC连接到DD马达和其他必要的设备,如传感器、按钮和检测器。确保正确地将...
西门子怎么做上位机?
要使用西门子的上位机,可以按照以下步骤进行操作:1.安装相应的软件:西门子的上位机软件有多种,常用的有WinCC、WinCCflexible等。根据项目需求和PLC型号选...
1500plc冗余系统如何连接上位机?
要连接1500plc冗余系统上位机,需要通过以太网口或PROFINET接口进行通讯。可以使用通讯模块与上位机通讯,也可以在PLC中配置通讯协议进行通讯。在连接之前,需...
CP1H使用2路模拟量输入AD模块,如何在PLC里编程?
首先,你需要的PLC中去设定需要的量程,以及对应的分辨率:1、如果你使用内建的AD输入,那么对应的模拟量输入地址就是:200CH~203CH例如如果使用AD0的话,对...
电脑与PLC怎么通过网口通讯并发送数据上位机例程?
每家公司的PLC都不一样的,并且通讯协议也不一样常规来说,想通过网口通讯,一般都需要有以太网模块,设置IP地址,根据各家公司特定的协议编程每家公司的PLC都不...
电气工程师想学习上位机编程,怎么入手?
大家好,我是华山自控编程的朱老师,看到最近很多同学都在讨论上位机运动控制卡与机器视觉编程的问题,所以今天写了干货,希望可以帮助到你们!一.入门上位机编...
如何实现欧姆龙PLC与上位机的以太网通讯?
产品品牌:欧姆龙产品名称:晶体管输入模块产品型号:DRT2-ID16-1晶体管。16点输入。PNP(-common)。I/O连接:M3螺钉终端。额定内部电路电源电压:通信连...
你是怎么设置上位机与PLC(台达)通信设置的参数的?
台达跟三菱的几乎一样包括编程软件台达所有产品支持MODBUS协议1、上位机如果支持台达PLC驱动那么直接用就好了2、上位机不支持你就用modbusopc做一个桥梁...