「C#上位机」西门子1200PLC实用定位控制程序案例
本文是一篇综合性比较强的文章,从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编程—
1.通过博图软件创建一个新的PLC项目,根据硬件型号插入新设备,这里为CPU 1214C DC DC DC
2.双击PLC的以太网口,设置IP地址,这里设置为192.168.2.210
3.双击CPU,在脉冲发生器PTO/PWM选项中设置信号类型为PTO,脉冲输出为Q0.0,方向输出为Q0.1
关注+后台私信:【资料】
立即免费领取24门PLC入门教程
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,来读取相关参数,各个引脚填写如图所示,该程序段主要用于读取实时脉冲
关注+后台私信:【资料】
立即免费领取24门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、运动停止、运动暂停、复位相关功能。
(来源:网络,版权归原作者所有,侵删)
这样学PLC的定位控制、模拟量应用、通信功能,保准事倍功半~
关于如何学习西门子PLC这个问题。上次说到,有了电工基础之后,需要掌握PLC入门的基础知识和PLC编程指令知识, 了解这两大方面,你对PLC编程基础和逻辑控制顺序的设置就掌握的八九不离十了!
接下来要攻克的是PLC的各种扩展功能的应用。为什么是这个部分?因为学习PLC的最终目的就是学会用PLC来操作应用,这部分内容中有各种指令、通信以及编程,这是重中之重。总共有三大部分,分别是:PLC的定位控制功能应用、PLC模拟量应用、PLC的通信功能应用...
说起定位控制,高频脉冲输入输出 必不可少,它主要用于步进电机和伺服电机的控制上,一般用于运动控制,就像S7-200PLC,它所提供的PWM、PTO和EM253模块,这三种方式都能实现速度、位置的开环运动控制。
此外还涉及到高速计数器的应用 ,高速计数器一般与编码器或光栅尺配合使用来测量转速或是位移,且高速计数器不同于普通计数器,你会遇到选择0-5中哪个高速计数器?8种模式中选用哪种?启用它并让它计数等问题,这就涉及到它的两条指令。此外,PLC的高速计数器如何使用?如何接收编码器的信号?这是重点。
总之,高速脉冲输入输出这方面涉及的知识很多,而且也很重要,建议大家先了解一些运动控制和运动组态的基本知识,然后再学习运动控制指令,比如:初始化运动指令、手动控制指令、回原点指令、RUN指令等等,这些指令在编程时都是能用到的。
接着要解决PLC模拟量功能应用 这块了,会遇到传说中的PID,PID 在工业控制领域属于常用的控制,它就是闭环控制系统的比例-积分-微分控制算法,大家可以理解为是一种数学算法,PLC如何实现PID控制?这是大家要掌握的内容。
就比如上图,这是S7-200PLC实现PID控制的三种方式,分别是PID向导、PID指令以及自行编程,其实PID向导和PID指令没有很大区别,唯一的不同是能使用的工具不同。
PID向导一般是比较常见且提倡的方法(重要),需要了解PID调节控制面板,再就是PID指令了,会涉及到PID回路表,自行编写PID算法的话,要用到很多公式,这些东西大家要各有侧重。
最后,PLC的通信功能应用,主要是串行通信和以太网通信。
首先清楚串行通信的分类,按传输方式分、接口类型分等等。在这块,你会遇到自由口通信、MODBUS通信、USS协议通讯等。
MODBUS通信 很多设备能用上,这个必须掌握。此外,USS协议通讯和MODBUS通信都是基于自由口通讯而来的,所以串行通讯的重点就是自由口通讯 ,如何按照协议去编写程序,或者如何定义协议?这是大家在学习自由口通信时要解决的内容。
比如:S7-200SMART PLC的串行通讯就是基于485接口上的通讯,同时也能扩展一个串行通信口,扩展通信口可支持232和485接口,但究竟用哪个接口这就取决于软件中的硬件配置了。
再说说以太网通信 吧,S7-200SMART PLC有标配以太网通信接口,大家经常会用它来编程、下载程序、连接触摸屏,此外其实也支持其他通讯,比如:S7通信、TCP/IP通信、MODBUS TCP/IP通信等等...
总结:各行各业的机型不同,使用的指令也不同,所以大家不用要求自己学的很全面,了解所有的机型以及背会所有指令。大家只要清楚这个系列的CPU能提供给大家什么功能,如何能用技巧来灵活运用指令, 用的时候借助手册等工具来使用相关指令,达到举一反三的效果才是王道~(技成培训原创,未经授权不得转载,违者必究!)
上期同系列文章回顾:
西门子PLC知识点这么多,我该从哪开始学?【快速掌握PLC诀窍】
相关问答
信捷plc定位编程实例?
以下为一种信捷PLC定位编程的实例:设备描述:-使用信捷PLC进行控制的一个轴(例如,伺服电机控制的滑台)。-一个编码器用于反馈轴的位置信息。目标:-控制轴...
PLC上的定位模块是如何用的?
定位模块上的点,可以按照普通I/O那样的连接,也可以走通讯,DOG可以在软件上设置,不过一般在定位模块上也可以设置。三菱PLCQ系列定位模块:1,外...定位模块...
plc模块有定位查找功能吗?
国产plc里面基本是没有定位模块的,这样子会加大成本投入,竞争优势减少。而且,plc主要功能是执行指令,所以很少有定位模块加入里面。国产plc就是打价格战,除...
plc定位控制实例?
1、脉冲定位编程:(1)首先配置脉冲定位模块,确定脉冲定位模块的通道号、脉冲定位方向、脉冲定位频率和脉冲定位位置等信息;(2)编写PLC程序,控制脉冲定位...1...
在plc控制系统里面,定位模块起的是什么作用?
简单说一下PLC全称可编程逻辑控制器,可见其本质就是一种控制器,这种控制器可大致看作由处理器、寄存器、输入输出组成。PLC编程的本质就是制定一套程序,让控...
plc定位控制系统主要包括?
伺服电机与步进电机,还有传感器,伺服电机与步进电机,还有传感器,
求问plc如何控制伺服电机与步进电机速度与定位?
PLC控制步进电机容易!1:一般来讲控制步进电机是开环控制,也就是说你只要连接好A+、A-、B+、B-、写好程序就基本完成。2:私服控制一般采用闭环控制:除了上...
普通电动机加编码器用PLC控制。可以实现定位和计数吗?
不一定。其实,PLC从来不是伺服电机的直接控制者。伺服电机是通过伺服驱动器,或者叫做伺服放大器来驱动的。PLC通过PTO(脉冲串)或者通信(总线,串口等)的...
什么叫plc定位器指令?
DDRVI是三菱PLC32位的相对定位指令。x2——DDRVIK10000K1000Y0Y2意思为:当X2接通时,以当前的位置为起点,向Y0以1KHz的频率发送10000个脉冲,电机方向...
三菱plc绝对定位指令?
三菱PLC有多种绝对定位指令可供选择,并不是唯一的一种。其中比较常见的有MOV(AbsoluteAddressing)、MOV(High-Speed,AbsoluteAddressing)等指...