5. 上位機(jī)開發(fā)思路
目前比較主流開發(fā)上位機(jī)的方式,,主要是組態(tài)軟件(觸摸屏),、C#開發(fā)上位機(jī),C#開發(fā)上位機(jī)與傳統(tǒng)的組態(tài)軟件之間的區(qū)別,,主要體現(xiàn)在如下三個方面:
功能限制:組態(tài)軟件對于一些特定的需求或者邏輯,,會有一定的局限性,,使用上也受到軟件本身的約束;C#開發(fā)上位機(jī)完全自主開發(fā),,幾乎不存在功能上的限制,,并且擴(kuò)展方便。
技術(shù)要求:組態(tài)軟件最大的優(yōu)勢在于方便,,因為它本身都集成了一些通用協(xié)議和元件,,只需要按照使用說明進(jìn)行組態(tài)配置即可;C#開發(fā)需要完全自己搭建框架和實現(xiàn)底層代碼,,對開發(fā)者的技術(shù)要求會更高一些,。
價格成本:組態(tài)軟件需要按套、按點位收費,,意味著每個項目無形中都有一個基礎(chǔ)成本,;C#開發(fā)上位機(jī)自主開發(fā),不需要二次授權(quán)費用,,并且開發(fā)一套之后,,可以快速應(yīng)用到其他項目中。
采用C#上位機(jī)開發(fā),,需要考慮的是通信問題,。
西門子S7-1200支持很多種不同的通信協(xié)議,包括S7,、ModbusTCP,、TCP/IP、UDP,、OPC等,,從開發(fā)成本上來說,我們優(yōu)先考慮S7和ModbusTCP,,對于S7和ModbusTCP通信協(xié)議,,比較一下兩者的優(yōu)缺點:
S7協(xié)議為西門子內(nèi)部協(xié)議,協(xié)議本身不公開,,需要調(diào)用或者自己開發(fā)通信庫,,使用S7通信協(xié)議需要勾選CPU中的允許來自遠(yuǎn)程對象的PUT/GET通信訪問,。
ModbusTCP為公開,、免費協(xié)議,可以自己開發(fā)通信庫或者使用開源庫,,使用ModbusTCP通信協(xié)議需要編寫一定的PLC程序來實現(xiàn)地址映射,。
從公開免費和使用范圍的角度來考慮,這里采用ModbusTCP通信協(xié)議,,因為學(xué)會了ModbusTCP,,意味著市場上的大部分儀表,、PLC通信都可以搞得定,PLC程序編寫如下如下所示:
創(chuàng)建DB塊
這里創(chuàng)建一個DB塊,,里面包含了常用的一些操作和參數(shù)設(shè)置,,由于Modbus保持型寄存器的Bit位操作比較麻煩,這里我們統(tǒng)一使用Word類型來代替Bit,。
Modbus地址與PLC地址的映射(控制位)Modbus地址與PLC地址的映射(參數(shù)地址)ModbusServer程序編寫上位機(jī)UI界面設(shè)計
ModbusTCP通信庫
上位機(jī)開發(fā)功能實現(xiàn)的核心在于ModbusTCP通信庫編寫,,由于Modbus協(xié)議是公開免費,可以自己根據(jù)Modbus協(xié)議來開發(fā),,也可以使用開源的Modbus庫,,如NModbus等,有了ModbusTCP通信庫之后,,我們可以將更多的精力放在業(yè)務(wù)處理及邏輯處理上面,。
6. 上位機(jī)功能開發(fā)創(chuàng)建一個Windows窗體應(yīng)用項目,項目名稱為thinger.com.MotionPro,。
日志顯示功能:日志顯示采用ListView進(jìn)行顯示,,綁定一個ImageList用來區(qū)分信息、報警,、錯誤,,添加日志方法的參數(shù)包含日志等級及日志內(nèi)容。
自己開發(fā)ModbusTCP通信庫或者使用開源庫,,該庫應(yīng)該具備建立連接,、斷開連接、預(yù)置寄存器,、讀取寄存器的功能,。
建立連接和斷開連接:這里通過按鈕實現(xiàn)建立連接和斷開連接2個功能。
相對位置運動:設(shè)置相對運動速度和相對運動位置,,實現(xiàn)電機(jī)的相對運動,。
juedui位置運動:設(shè)置juedui運動速度和juedui運動位置,實現(xiàn)電機(jī)的相對運動,。
點動運動模式:設(shè)置點動運動速度,,按住正向點動或者反向點動,實現(xiàn)電機(jī)的點動運動,。
回原點模式:點擊回原點,,可以控制物體回到原點位置并停止。
運動停止,、運動暫停,、復(fù)位相關(guān)功能。