999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

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

2019-01-08 08:37:44王東

王東

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

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

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

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

1 上位機功能介紹

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

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

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

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

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

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

電機參數(shù):主要用于設(shè)置各驅(qū)動軸的各項電機控制、氣缸控制參數(shù)等。

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

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

2.1 界面設(shè)計思路及關(guān)鍵方法

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

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

為了保證軟件的可靠性和可維護性,軟件界面只能有一個實例,所以使用singleton模式來構(gòu)建用戶界面(workbench),對應(yīng)的界面類名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 通信功能實現(xiàn)

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

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

interface IBaseControl : IDisposable

{

string Title{get;set;}

bool ReadModbusInfo();

}

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

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

3 結(jié)語

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

參考文獻

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

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

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

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

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

主站蜘蛛池模板: 四虎免费视频网站| 狠狠色丁香婷婷| 成人在线观看一区| 欧美精品在线看| 啊嗯不日本网站| 亚洲美女一级毛片| 亚洲乱码在线视频| 日韩在线永久免费播放| 精品三级网站| 亚洲欧美综合在线观看| 国产青榴视频| 韩日免费小视频| 四虎影视国产精品| 五月天在线网站| 在线色国产| 国产香蕉国产精品偷在线观看| 国产午夜人做人免费视频中文| 婷婷在线网站| 日韩免费成人| 亚洲无码电影| 国产不卡一级毛片视频| 尤物成AV人片在线观看| 青草精品视频| 人妻精品久久无码区| 国产天天色| 午夜福利网址| 亚洲成在线观看| 久久不卡国产精品无码| 午夜免费小视频| 伊人无码视屏| 91九色视频网| 国产十八禁在线观看免费| 九色91在线视频| 久久影院一区二区h| 人妻丰满熟妇啪啪| 国产91透明丝袜美腿在线| 成人91在线| 日本欧美一二三区色视频| 99热最新网址| 精品一区二区无码av| 亚洲精品午夜天堂网页| 在线免费a视频| 国产精品三级av及在线观看| 久久伊人色| 久久综合五月婷婷| 全色黄大色大片免费久久老太| 狠狠亚洲五月天| 日韩少妇激情一区二区| 97se亚洲综合不卡| 成人免费视频一区| 99热这里只有精品久久免费| 国产成人高清精品免费5388| 欧美日韩激情在线| 99热精品久久| 亚洲成人网在线播放| 国外欧美一区另类中文字幕| 激情综合婷婷丁香五月尤物| 婷婷六月在线| 免费又爽又刺激高潮网址| 久久semm亚洲国产| 日本免费福利视频| 在线观看国产精品日本不卡网| 激情无码视频在线看| 一级不卡毛片| 国产成人精品男人的天堂| 亚洲欧美另类色图| 国产视频欧美| 91精品小视频| 这里只有精品免费视频| 亚洲欧洲自拍拍偷午夜色| 全部无卡免费的毛片在线看| 日韩久草视频| 久久人人97超碰人人澡爱香蕉| 韩国自拍偷自拍亚洲精品| 无遮挡一级毛片呦女视频| 日本免费a视频| 精品欧美一区二区三区在线| 国产在线视频欧美亚综合| 日韩国产综合精选| 波多野结衣一区二区三区88| 1769国产精品视频免费观看| 大乳丰满人妻中文字幕日本|