gkket 发表于 2020-8-27 22:02:01

西门子1200PLC实用定位控制程序案例

1. 引言本文是一篇综合性非常强的文章,从PLC输入输出及步进电机接线开始,到PLC运动控制程序编写,再到后续的ModbusTCP通信协议及上位机编程实现最终控制,涉及知识面比较广,能够让我们很好地将所学知识结合起来。
2. 项目开发平台采用西门子TIA Portal V15编程软件编写运动控制程序,实现PLC(S7-1200系列:CPU1214C DC/DC/DC )对步进电机的控制,再通过编写ModbusTCP程序,将控制地址进行映射,从而方便上位机(VS 2019开发)与PLC进行通信,最终实现步进电机的运动方向、速度及距离的灵活控制。涉及硬件:开关电源、S7-1200PLC、步进驱动器、步进电机、单轴模组、限位开关涉及软件:TIA Portal V15、VS2019、ModbusPoll(用于测试通信)3. 硬件接线http://p6-tt-ipv6.byteimg.com/large/pgc-image/398c260667a541079112444507f61581

4. PLC编程步 骤操作说明1通过博图软件创建一个新的PLC项目,
根据硬件型号插入新设备,这里为
CPU 1214C DC DC DChttp://p3-tt-ipv6.byteimg.com/large/pgc-image/e4c1433ca710429f95e1a4879051d76f

2双击PLC的以太网口,设置IP地址,
这里设置为192.168.2.210http://p9-tt-ipv6.byteimg.com/large/pgc-image/56cc03c2cc994fbeb276f403dae77a14

3双击CPU,在脉冲发生器PTO/PWM选项中设置信号类型为PTO,脉冲输出为Q0.0,方向输出为Q0.1http://p6-tt-ipv6.byteimg.com/large/pgc-image/911185fda7ef486e93e9238605fa5076

4新建一个工艺对象,名称为轴1,通过基本参数>驱动器,设置脉冲输出为Pulse1http://p26-tt.byteimg.com/large/pgc-image/d13ac1f8645244e38ef27bc3b0d6d453

5通过扩展参数>位置限制,设置上下限位分别为I0.1和I0.2http://p3-tt-ipv6.byteimg.com/large/pgc-image/b1200a5c717f496f83f0d44e83a34fa6

6通过扩展参数>回原点>主动,设置原点开关为I0.0http://p9-tt-ipv6.byteimg.com/large/pgc-image/c44b14947a834a23b6f7ae1ab52aaae9

7程序段1,调用MC_Power使能,各个引脚填写如图所示,其中Asix选择轴1http://p6-tt-ipv6.byteimg.com/large/pgc-image/4cd56ff2fbe44fe6be9330b523c4efbe

8程序段2,调用MC_MoveRelative,各个引脚填写如图所示,该程序段主要用于执行相对运动http://p9-tt-ipv6.byteimg.com/large/pgc-image/4cd56ff2fbe44fe6be9330b523c4efbe

9程序段3,调用MC_MoveAbsolute,各个引脚填写如图所示,该程序段主要用于执行绝对运动http://p26-tt.byteimg.com/large/pgc-image/126a6e1d86b244498bbc33ba6837fb14

10程序段4,调用MC_MoveJog,各个引脚填写如图所示,该程序段主要用于执行前进和后退点动http://p3-tt-ipv6.byteimg.com/large/pgc-image/5b23d3b9619d4fa8936a4ce89c65df6f

11程序段5,调用MC_Home,各个引脚填写如图所示,该程序段主要用于执行归零http://p1-tt-ipv6.byteimg.com/large/pgc-image/e5dc65578ce04bc6b183a270b8de788f

12程序段6,调用MC_Reset,各个引脚填写如图所示,该程序段主要用于执行复位功能http://p6-tt-ipv6.byteimg.com/large/pgc-image/d2a844033bb74d80a7e1841ade588ce5

13程序段7,调用MC_Halt,各个引脚填写如图所示,该程序段主要用于执行暂停功能http://p26-tt.byteimg.com/large/pgc-image/9b3f0825a7c845ac9ebcea9f6ef922b2

14程序段8,调用MC_ReadParam,来读取相关参数,各个引脚填写如图所示,该程序段主要用于读取实时脉冲http://p9-tt-ipv6.byteimg.com/large/pgc-image/94ffaebd862a408397f5e724a1d09977

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。
http://p9-tt-ipv6.byteimg.com/large/pgc-image/75f350c4e53740659d54ca2538ffa255


[*]Modbus地址与PLC地址的映射(控制位)
http://p6-tt-ipv6.byteimg.com/large/pgc-image/a956955d15914af6a2c6097625182080


[*]Modbus地址与PLC地址的映射(参数地址)
http://p9-tt-ipv6.byteimg.com/large/pgc-image/dd4f2af54f2d49e093199309fc607283


[*]ModbusServer程序编写
http://p9-tt-ipv6.byteimg.com/large/pgc-image/3ee7ad2c3d6a46d9b4f4756cb3fbebca


[*]上位机UI界面设计
http://p9-tt-ipv6.byteimg.com/large/pgc-image/63f5220c1c084b34aca1cdf104d3a2f3


[*]ModbusTCP通信库上位机开发功能实现的核心在于ModbusTCP通信库编写,由于Modbus协议是公开免费,可以自己根据Modbus协议来开发,也可以使用开源的Modbus库,如NModbus等,有了ModbusTCP通信库之后,我们可以将更多的精力放在业务处理及逻辑处理上面。
6. 上位机功能开发
[*]首先创建一个Windows窗体应用项目,项目名称为thinger.com.MotionPro。
[*]日志显示功能:日志显示采用ListView进行显示,绑定一个ImageList用来区分信息、报警、错误,添加日志方法的参数包含日志等级及日志内容。
[*]自己开发ModbusTCP通信库或者使用开源库,该库应该具备建立连接、断开连接、预置寄存器、读取寄存器的功能。
[*]建立连接和断开连接:这里通过按钮实现建立连接和断开连接2个功能。
[*]相对位置运动:设置相对运动速度和相对运动位置,实现电机的相对运动。
[*]绝对位置运动:设置绝对运动速度和绝对运动位置,实现电机的相对运动。
[*]点动运动模式:设置点动运动速度,按住正向点动或者反向点动,实现电机的点动运动。
[*]回原点模式:点击回原点,可以控制物体回到原点位置并停止。
[*]运动停止、运动暂停、复位相关功能。

在人间 发表于 2020-8-27 22:02:02

好东西一定要看看!

在路上^จ 发表于 2020-10-12 19:53:20

无私奉献,好工控人,32个赞送给你!!

Electronics 发表于 2025-11-14 03:50:53

不请自来,就想夸一句:太顶了!

198366809 发表于 2025-11-14 04:11:35

这波分析到位,逻辑满分!

HansLiu888 发表于 2025-11-14 04:21:25

说得对!狠狠赞同,没毛病~

JHW 发表于 2025-11-14 05:11:21

同款经历!我当初也这么过来的😂

起风了_KkeWp 发表于 2025-11-14 05:24:18

评论区人才辈出,笑到停不下来😂

gk1314 发表于 2025-11-14 07:49:18

蹲个后续,楼主记得更新呀,在线等挺急的~

金鑫 发表于 2025-11-14 09:28:46

原来还有这种操作,长见识了!
页: [1] 2
查看完整版本: 西门子1200PLC实用定位控制程序案例