自动化行业正在慢慢逼近软件行业。

许多PLC工程师慢慢意识到掌握编程语言变得越来越重要。

那么PLC工程师学习编程后会有什么样的体验呢?

我想最直接的体会就是:原理性的东西了解更多了,技术栈更全面了,可以独立完成项目评估、绘图、选型、PLC程序开发调试,到上位机开发,甚至更高——级WEB端。 、移动终端。

言归正传,本文主要分享一个工业现场常用的运动控制案例,从硬件选型到程序设计,再从本地调试到上位机开发调试。

本案例比较简单,但可以有效地将PLC与上位机结合起来。 是一个比较适合初学者的训练项目。

1、硬件选型

控制器:西门子200Smart PLC,型号ST20(DC-DC-DC)

驱动器:步进驱动器

电机:42mm步进电机

限位:3个限位开关,分别对应原点、左限位、右限位

平台:单轴模块

按钮指示灯:启动、停止、运行状态、3个行程开关(模拟完成信号)

2、硬件接线图

运动控制工程师需要掌握什么_运动控制工程_工控运动控制

3.PLC程序开发

S7-200智能PLC的运动控制需要使用运动控制向导来实现。 核心程序如下:

运动控制工程师需要掌握什么_工控运动控制_运动控制工程

工控运动控制_运动控制工程师需要掌握什么_运动控制工程

4、上位机程序开发

(1)I/O表:PLC编程时,会预留上位机接口。 上位机I/O表如下:

工控运动控制_运动控制工程师需要掌握什么_运动控制工程

(2)界面设计:PC UI界面设计

运动控制工程师需要掌握什么_运动控制工程_工控运动控制

(3)功能实现:上位机主要包括实时状态和数据监控、速度和位置参数设置、系统日志显示、通讯参数设置等。

本案例与西门子PLC的通讯方式采用S7通讯,使用开源通讯库s7.net实现。 基于多线程实现实时数据采集,并结合实际I/O进行数据分析。

        private void PLCCommunication()        {            while (!cts.IsCancellationRequested)            {                byte[] result = plc.ReadBytes(StoreType.DataBlock, 1, 0, 23);                if (result != null && result.Length == 23)                {                    this.Invoke(new Action(() =>                    {                        //这里进行实时状态更新                    }));                    Thread.Sleep(10);                }            }        }

参数设置采用独立的设置接口,通过表单传值实现。

运动控制工程师需要掌握什么_工控运动控制_运动控制工程

代码如下所示:

        ///        /// 设定值        /// 

public string setValue = string.Empty; private void btn_Set_Click(object sender, EventArgs e) { this.setValue = this.txt_SetValue.Text; this.DialogResult = DialogResult.OK; this.Close(); }

系统日志基于ListView控件开发,实现日志、报警、警告三种不同状态的差异化显示,并可同时存入数据库,方便后续追溯。

        private string CurrentTime        {            get { return DateTime.Now.ToString("HH:mm:ss"); }        }        //写入日志        private void AddLog(int index, string log)        {            if (this.lstInfo.InvokeRequired)            {                this.lstInfo.Invoke(new Action(() =>                {                    ListViewItem lst = new ListViewItem(CurrentTime, index);                    lst.SubItems.Add(log);                    this.lstInfo.Items.Insert(0, lst);                }));            }            else            {                ListViewItem lst = new ListViewItem(CurrentTime, index);                lst.SubItems.Add(log);                this.lstInfo.Items.Insert(0, lst);            }        }

通讯参数为系统参数,采用Winform的Settings进行配置和存储,简单快捷。

界面设计如下:

运动控制工程_运动控制工程师需要掌握什么_工控运动控制

代码如下所示:

        public SaveDefaultSettingDelegate SaveDefaultSetting;        private void btn_Set_Click(object sender, EventArgs e)        {            CommSet set = new CommSet();            try            {                set.IPAddress = this.txt_IPAddress.Text;                set.CPUType = this.cmb_CPUType.Text;                set.StoreTime = Convert.ToInt32(this.txt_StoreTime.Text);                set.AutoStore = this.chk_AutoStore.Checked;            }            catch (Exception)            {                MessageBox.Show("请检查数据格式是否正确","格式错误");                return;            }            SaveDefaultSetting(set);            MessageBox.Show("配置成功,立即生效", "配置成功");            this.Close();                                                          }

5.写在背面

近年来,随着越来越多的设备开始加入IIoT网络(工业物联网,简称IIoT),IT和OT之间的界限将逐渐消失,直至成为一个或同一个系统。

因此,越来越多的电气工程师开始转向PC开发。 因为在现有的电气技能基础上,如果掌握了PC开发技能,工资达到20K甚至30K就会变得更容易。

By admin