浔之漫智控技术(上海)有限公司
西门子PLC模块 , CPU模块 , DP通讯电缆 , 6GK交换机
西门子授权代理商|交换机总代理
发布时间:2023-10-26

本文是一篇综合性比较强的文章,从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



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,来读取相关参数,各个引脚填写如图所示,该程序段主要用于读取实时脉冲


上位机开发思路

为了便于操作,需要配一个HMI人机界面来进行使用。这个的HMI形式是比较多样化的,如触摸屏、组态软件等,但是这里,我们采用目前比较流行的方式——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程序编写如下所示:


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通信库之后,我们可以将更多的精力放在业务处理及逻辑处理上面。 

展开全文
优质商家推荐 拨打电话