自動化行業,正在慢慢往軟件行業靠近。
很多PLC工程師也開始慢慢意識到,掌握一門編程語言,變得越來越重要。
那么PLC工程師學會編程之后,會是一種什么樣的體驗?
我覺得最直接的體驗就是:原理性的東西懂得更多,技術棧更全面,可以自己獨立完成項目評估、制圖、選型、PLC程序開發調試,到上位機開發,甚至于更上層的WEB端、移動端。
言歸正傳,本文主要是分享一個工業現場常用的運動控制案例,從硬件選型到程序設計,再從本地調試到上位機開發調試。
這個案例算是一個比較簡單的案例,但是可以有效地將PLC與上位機結合起來,對于初學者來說,是一個比較適合的練手項目。
1、硬件選型控制器:西門子200Smart PLC,型號為ST20(DC-DC-DC)
驅動器:步進驅動器
電機:42mm步進電機
限位:3個限位開關,分別對應原點、左限位、右限位
平臺:單軸模組
按鈕指示燈:啟動、停止、運行狀態、3個行程開關(模擬完成信號)
2、硬件接線圖3、PLC程序開發S7-200 Smart PLC運動控制需要使用運動控制向導來實現,核心程序如下:
4、上位機程序開發(1)I/O表:PLC程序編程中,會預留上位機接口,上位機I/O表如下所示:
(2)界面設計:上位機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); } } }速度及位置參數設置
參數設置采用獨立的設置界面,通過窗體傳值來實現。
代碼如下所示:
/// <summary> /// 設定值 /// </summary> public string tValue = string.Empty; private void btn_Set_Click(object nder, EventArgs e) { this.tValue = this.txt_SetValue.Text; this.DialogResult = DialogResult.OK; this.Clo(); }系統日志顯示
系統日志基于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.Inrt(0, lst); })); } el { ListViewItem lst = new ListViewItem(CurrentTime, index); lst.SubItems.Add(log); this.lstInfo.Items.Inrt(0, lst); } }通信參數設置
通信參數為系統參數,采用Winform的Settings來進行配置存儲,簡單快捷。
界面設計如下所示:
代碼如下所示:
public SaveDefaultSettingDelegate SaveDefaultSetting; private void btn_Set_Click(object nder, EventArgs e) { CommSet t = new CommSet(); try { t.IPAddress = this.txt_IPAddress.Text; t.CPUType = this.cmb_CPUType.Text; t.StoreTime = Convert.ToInt32(this.txt_StoreTime.Text); t.AutoStore = this.chk_AutoStore.Checked; } catch (Exception) { MessageBox.Show("請檢查數據格式是否正確","格式錯誤"); return; } SaveDefaultSetting(t); MessageBox.Show("配置成功,立即生效", "配置成功"); this.Clo(); }5、寫在后面
近幾年, 隨著越來越多的設備開始加入IIoT 網絡(Industrial Internet of Things,工業物聯網簡稱IIoT),IT與OT之間的界限將逐漸消失,直到成為一個或相同的系統為止。
所以,越來越多的電氣工程師開始轉型上位機開發。因為在已有電氣技能的基礎上,如果掌握了上位機開發技能,薪資達到20K,甚至30K,都會變得更容易。
需要這個小項目資料的同學,可以在評論區留言或者私信我聯系方式,相關的資料會給到你。
本文發布于:2023-02-28 21:07:00,感謝您對本站的認可!
本文鏈接:http://www.newhan.cn/zhishi/a/167772695999681.html
版權聲明:本站內容均來自互聯網,僅供演示用,請勿用于商業和其他非法用途。如果侵犯了您的權益請與我們聯系,我們將在24小時內刪除。
本文word下載地址:dialogresult(dialogresult屬性).doc
本文 PDF 下載地址:dialogresult(dialogresult屬性).pdf
| 留言與評論(共有 0 條評論) |