国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于C#的自動上料機監(jiān)控軟件開發(fā)

2019-01-08 08:37王東
數字技術與應用 2019年10期
關鍵詞:上位機串口監(jiān)控

王東

摘要:利用C#語言基于MODBUS通信協議開發(fā)了自動上料機監(jiān)控系統(tǒng),該系統(tǒng)實現了對設備的手動、自動控制和監(jiān)視,并能對相關的運行參數進行設置,介紹了系統(tǒng)開發(fā)中的主要方案及關鍵技術,經實際驗證,該系統(tǒng)穩(wěn)定可靠,達到了預期的目標。

關鍵詞:上位機;MODBUS-ASCII;串口;監(jiān)控

中圖分類號:TP39 文獻標識碼:A 文章編號:1007-9416(2019)10-0008-02

某自動上料機用于將工件傳輸給測試設備進行測試,該上料機有3個放料區(qū),分別為待測區(qū)、PASS區(qū)、FAIL區(qū),完成從待測區(qū)取料,送料給測試設備,測試完成后取回并根據測試結果(好或壞)將工件自動進行分撿放置到PASS區(qū)和FAIL區(qū);3個放料區(qū)都由馬達和相應的傳感器來控制,根據物料的高度自動升降料臺,以使料臺保持在合適的高度,方便上料機抓取和存放物料。該設備涉及啟動按鈕、安全光柵、限位開關等輸入端口40個,氣缸控制、直流電機控制等輸出端口16個,并由下位機直接控制,為了便于對設備進行操作、監(jiān)視、控制和設置參數,開發(fā)了自動上料機的監(jiān)控軟件,采用串口與下位機進行通信,為了確保通信的穩(wěn)定可靠,采用了MODBUS-ASCII通信協議。

1 上位機功能介紹

根據上料機的工藝要求,本監(jiān)控軟件由自動運行,工藝設置,輸出狀態(tài),輸入狀態(tài),手動控制,報警信息,電機參數等七個模塊構成,各自完成相應的功能,具體功能需求如圖1所示。

其中:自動運行主要用于監(jiān)視運行時物料及測試相關的2個主要參數,設置錯開放板數量和測試速度,顯示當前測試通過和測試失敗的數量信息,以及對設備的緊急控制和啟動等。

工藝設置主要是進行馬達控制、行程設定、氣缸控制以及馬達的參數設置。

輸出狀態(tài):主要是各電機的正反轉控制,以及各端口的輸出狀態(tài)。

輸入狀態(tài):主要顯示各輸入端口的狀態(tài),用于顯示監(jiān)控。

手動控制:主要用于手動控制各執(zhí)行機構的動作。

電機參數:主要用于設置各驅動軸的各項電機控制、氣缸控制參數等。

2 上位機系統(tǒng)設計

本系統(tǒng)運行環(huán)境為WINDOS 7及以上系統(tǒng),C#語言是微軟公司發(fā)布的一種面向對象的、運行于.NET Framework和.NET Core(完全開源,跨平臺)之上的高級程序設計語言。能使用SerialPort類庫直接進行串口通信程序的開發(fā),并且提供了事件驅動模式,開發(fā)方便,WINFORM程序開發(fā)非常適合上位機軟件開發(fā),所以本系統(tǒng)采用C#語言開發(fā)。

2.1 界面設計思路及關鍵方法

根據上位機的功能需求,使用WINFORM繪制所需要的界面及相關的控件,具體如圖2(以自動運行為例)。

由上圖可知,軟件分為左側的功能選擇區(qū)和右側的功能實現區(qū),左側功能選擇區(qū)包含7個按鈕(鎖定除外),對應右側會包含7個界面,但任一時刻只顯示和左側選擇的功能相對應的一個功能實現界面,為方便后期各功能界面之間的切換,每一個功能實現區(qū)所有控件組合成一個用戶自定義控件(UserControl)放到一個Panel控件中,故將整個界面分為兩部分:一是workbench,即整個軟件的主要界面,該workbench左側包含了各功能選擇按鈕區(qū)和右側的一個大的Panel控件,其中Panel控件用來作為各功能實現區(qū)用戶控件的容器;二是右側的功能實現區(qū),功能實現區(qū)實際是前面所述用戶自定義控件(UserControl),是放在Panel中的一個控件,每個控件對應左側的一個功能按鈕,所以一共需要定義7個用戶自定義控件。

為了保證軟件的可靠性和可維護性,軟件界面只能有一個實例,所以使用singleton模式來構建用戶界面(workbench),對應的界面類名MainFrom,定義singleton類:WorkBenchSingleTon,并定義MainFrom類型的私有類成員workBench,同時定義公開的靜態(tài)屬性WorkBench,但只提供外部對workBench的獲取,方便在整個軟件中其它控件對workBench訪問的同時又保證了只有一個workbench,具體代碼如下:

public class WorkBenchSingleTon

{

private static MainForm workBench = new MainForm();

public static MainForm WorkBench {

get{

if (workBench == null) {

workBench = new MainForm();

}

return workBench;

}

}

}

2.2 通信功能實現

根據該系統(tǒng)的整體設計方案,上位機與下位機之間的通信采用串口通信,且為了保證通信的可靠性使用MODBUS-ASCII通信協議。為了開發(fā)的方便,使用開源的類庫NMODBUS,NMODBUS基于.NET封裝了MODBUS協議的各項功能,使用方便,在此將NMODBUS提供的Master類作為workBench的成員,同時提供公開訪問器,不提供賦值,也確保整個系統(tǒng)中只有一個Master被實例化。各項參數的初始化都在MainForm的構造函數中進行。

由前面的分析可知,右側的功能實現區(qū),都需要和下位機通過MODBUS進行通信,而MODBUS的特點是通信由主機發(fā)起,從機不能主動發(fā)起通信,在此系統(tǒng)中,上位機為主機,下位機為從機,所以所有的通信都由上位機發(fā)起。上位機要實時獲取從機的數據,必須以一定的時間間隔不停地向從機發(fā)送查詢命令,而本系統(tǒng)中,每個功能選擇都對應一個功能實現區(qū),但同一時刻只有一個功能實現區(qū)才被顯示,故只需要查詢被顯示的功能實現區(qū)中所需要的數據,其它的不用顯示,也就不需要向從機查詢。根據MODBUS通信的特性,需要定時向從機查詢數據,若每個功能實現區(qū)均使用定時器定時查詢,則需要判斷自己當前是否被顯示來確定是否訪問下位機,容易造成多個功能實現區(qū)同時訪問從機造成軟件通信不穩(wěn)定,軟件不易維護等問題,因此定義一個接口IBaseControl,作為各功能實現區(qū)的接口約束,其中ReadModbusInfo用于實現各功能實現區(qū)需要向從機讀取數據的函數,而Title用于標識各功能實現區(qū)的名稱,其接口如下:

interface IBaseControl : IDisposable

{

string Title{get;set;}

bool ReadModbusInfo();

}

因此在各功能實現區(qū)只需要實現ReadModbusInfo成員函數,實現需要讀取下位機數據的邏輯,而自身并不需要調用該成員函數。而將所有調用該函數的職責放到workBench中,在workBench中定義一個定時器,在定時器的事件響應函數中調用當前顯示的功能實現區(qū)的ReadModbusInfo接口函數即可,這樣所有功能實現區(qū)讀取從機數據的函數調用都集中在了一處,會自動根據當前顯示的功能實現區(qū)而自動調用相應的ReadModbusInfo實現函數,方便軟件維護的同時提高了穩(wěn)定性。需要注意的是,由于使用了串口通信,其數據接收在另一個線程中實現,所以在更新界面數據時,需要使用到委托才能更新數據。

對從機的控制命令,同樣集中在workBench中,功能實現區(qū)的用戶控件需要向從機寫數據時只需通過WorkBenchSingleTon.WorkBench.Master.WriteSingleCoil()語句調用workbench中定義的寫寄存器函數向從機寫入相應的數據即可實現向下位機發(fā)送命令。

3 結語

通過對自動上料機功能的分析,合理劃分軟件功能和實現方式,提高了軟件的可維護性和穩(wěn)定性,經現場測試,本上位機軟件系統(tǒng)運行穩(wěn)定,與下位機的通信可靠達到了預期的目標。

參考文獻

[1] 李植鵬,徐政.設計模式在高壓直流輸電設計軟件包中的應用[J].電力建設,2013,34(11):17-21.

[2] 夏浩波.單例模式的設計與應用[J].電腦開發(fā)與應用,2011,24(01):58-59.

[3] 代濤,楊麗紅.基于C#的空調壓縮機聲強測試平臺設計與實現[J].農業(yè)裝備與車輛工程,2019,57(01):75-79.

[4] 呂志剛,魯可心,李亮亮.基于C#的變電站運行參數監(jiān)控系統(tǒng)設計[J].工業(yè)控制計算機,2018,31(07):32-33+36.

[5] 楊少朋,趙龑驤.基于C#的溫濕度傳感器串口通信程序的實現[J].中國新通信,2019,21(15):22.

猜你喜歡
上位機串口監(jiān)控
The Great Barrier Reef shows coral comeback
淺談AB PLC串口跟RFID傳感器的通訊應用
你被監(jiān)控了嗎?
Zabbix在ATS系統(tǒng)集中監(jiān)控中的應用
USB接口的多串口數據并行接收方法探索
基于藍牙串口適配器的GPS接收機與AutoCAD的實時無線通信
PDCA循環(huán)法在多重耐藥菌感染監(jiān)控中的應用
基于并行控制的FPGA多串口拓展實現
牟定县| 常德市| 偏关县| 介休市| 镇原县| 株洲县| 正定县| 景泰县| 洪江市| 尼玛县| 菏泽市| 鲁山县| 金堂县| 喀喇| 房山区| 哈尔滨市| 衡南县| 寻乌县| 安达市| 长子县| 灵石县| 元江| 安仁县| 合肥市| 平利县| 天长市| 哈密市| 来凤县| 白水县| 甘南县| 仙桃市| 扎赉特旗| 靖远县| 朝阳市| 荥阳市| 理塘县| 绥中县| 建湖县| 张家口市| 霍城县| 九龙坡区|