數(shù)據(jù)源是組態(tài)軟件的核心靈魂,少了數(shù)據(jù)源,組態(tài)就是個花架子沒卵用,一般數(shù)據(jù)源有三種方式獲取,串口、網(wǎng)絡(luò)、數(shù)據(jù)庫,至于數(shù)據(jù)規(guī)則是什么,這個用戶自己指定,本設(shè)計器全部采用第一個字節(jié)作為數(shù)據(jù)來演示。
串口通信在大量的工業(yè)控制領(lǐng)域用的最多,就因為穩(wěn)定兩個字,長期霸占了幾十年的通信規(guī)則,現(xiàn)在還有大量的工業(yè)控制設(shè)備使用的就是串口通信,Qt5以后封裝了串口通信的類,不過據(jù)說不大好用,也不大穩(wěn)定,本人在早期的Qt版本比如Qt5.3時代用過幾次,是有點莫名其妙的問題,后面索性就不在用自帶的了,而是用的第三方開源的qextserialport,主要還是因為本人做過的硬件設(shè)備上面大量的還是Qt4.8的Qt版本,沒法用Qt5,還沒升級到Qt5可能也是考慮到穩(wěn)定性的原因。
1. 自動加載插件文件中的所有控件生成列表,默認(rèn)自帶的控件超過120個。
2. 拖曳到畫布自動生成對應(yīng)的控件,所見即所得。
3. 右側(cè)中文屬性欄,改變對應(yīng)的屬性立即應(yīng)用到對應(yīng)選中控件,直觀簡潔,非常適合小白使用。
4. 獨創(chuàng)屬性欄文字翻譯映射機制,效率極高,可以非常方便拓展其他語言的屬性欄。
5. 所有控件的屬性自動提取并顯示在右側(cè)屬性欄,包括枚舉值下拉框等。
6. 支持手動選擇插件文件,外部導(dǎo)入插件文件。
7. 可以將當(dāng)前畫布的所有控件配置信息導(dǎo)出到xml文件。
8. 可以手動選擇xml文件打開控件布局,自動根據(jù)xml文件加載控件。
9. 可拉動滑動條、勾選模擬數(shù)據(jù)復(fù)選框、文本框輸入,三種方式來生成數(shù)據(jù)應(yīng)用所有控件。
10. 控件支持八個方位拉動調(diào)整大小,自適應(yīng)任意分辨率,可鍵盤上下左右微調(diào)位置。
11. 打通了串口采集、網(wǎng)絡(luò)采集、數(shù)據(jù)庫采集三種方式設(shè)置數(shù)據(jù)。
12. 代碼極其精簡,注釋非常詳細(xì),可以作為組態(tài)的雛形,自行拓展更多的功能。
13. 純Qt編寫,支持任意Qt版本+任意編譯器+任意系統(tǒng)。
void frmData::initServer() { //實例化串口類,綁定信號槽 com=new QextSerialPort(QextSerialPort::EventDriven, this); connect(com, SIGNAL(readyRead()), this, SLOT(readDataCom())); //實例化網(wǎng)絡(luò)通信客戶端類,綁定信號槽 tcpClient=new QTcpSocket(this); connect(tcpClient, SIGNAL(readyRead()), this, SLOT(readDataClient())); //實例化網(wǎng)絡(luò)通信服務(wù)端類,綁定信號槽 tcpSocket=NULL; tcpServer=new QTcpServer(this); connect(tcpServer, SIGNAL(newConnection()), this, SLOT(newConnection())); //開啟定時器讀取數(shù)據(jù)庫采集數(shù)據(jù) timer=new QTimer(this); connect(timer, SIGNAL(timeout()), this, SLOT(readDataDb())); timer->setInterval(1000); } void frmData::on_btnOpenCom_clicked() { if (ui->btnOpenCom->text()=="打開") { com->setPortName(App::PortName); bool ok=com->open(QIODevice::ReadWrite); if (ok) { com->setBaudRate((BaudRateType)App::BaudRate); setEnable(ui->btnOpenCom, false); ui->btnOpenCom->setText("關(guān)閉"); } } else { com->close(); setEnable(ui->btnOpenCom, true); ui->btnOpenCom->setText("打開"); } } void frmData::readDataCom() { QByteArray data=com->readAll(); if (data.length() <=0) { return; } //默認(rèn)取第一個字節(jié)解析,可以自行更改 quint8 value=data.at(0); ui->txtValue->setText(QString::number(value)); append(1, data.toHex()); }
1. 超過150個精美控件,涵蓋了各種儀表盤、進度條、進度球、指南針、曲線圖、標(biāo)尺、溫度計、導(dǎo)航條、導(dǎo)航欄,flatui、高亮按鈕、滑動選擇器、農(nóng)歷等。遠(yuǎn)超qwt集成的控件數(shù)量。
2. 每個類都可以獨立成一個單獨的控件,零耦合,每個控件一個頭文件和一個實現(xiàn)文件,不依賴其他文件,方便單個控件以源碼形式集成到項目中,較少代碼量。qwt的控件類環(huán)環(huán)相扣,高度耦合,想要使用其中一個控件,必須包含所有的代碼。
3. 全部純Qt編寫,QWidget+QPainter繪制,支持Qt4.6到Qt5.12的任何Qt版本,支持mingw、msvc、gcc等編譯器,支持任意操作系統(tǒng)比如windows+linux+mac+嵌入式linux等,不亂碼,可直接集成到Qt Creator中,和自帶的控件一樣使用,大部分效果只要設(shè)置幾個屬性即可,極為方便。
4. 每個控件都有一個對應(yīng)的單獨的包含該控件源碼的DEMO,方便參考使用。同時還提供一個所有控件使用的集成的DEMO。
5. 每個控件的源代碼都有詳細(xì)中文注釋,都按照統(tǒng)一設(shè)計規(guī)范編寫,方便學(xué)習(xí)自定義控件的編寫。
6. 每個控件默認(rèn)配色和demo對應(yīng)的配色都非常精美。
7. 超過130個可見控件,6個不可見控件。
8. 部分控件提供多種樣式風(fēng)格選擇,多種指示器樣式選擇。
9. 所有控件自適應(yīng)窗體拉伸變化。
10. 集成自定義控件屬性設(shè)計器,支持拖曳設(shè)計,所見即所得,支持導(dǎo)入導(dǎo)出xml格式。
11. 自帶activex控件demo,所有控件可以直接運行在ie瀏覽器中。
12. 集成fontawesome圖形字體+阿里巴巴iconfont收藏的幾百個圖形字體,享受圖形字體帶來的樂趣。
13. 所有控件最后生成一個動態(tài)庫文件(dll或者so等),可以直接集成到qtcreator中拖曳設(shè)計使用。
14. 目前已經(jīng)有qml版本,后期會考慮出pyqt版本,如果用戶需求量很大的話。
15. 自定義控件插件開放動態(tài)庫使用(永久免費),無任何后門和限制,請放心使用。
16. 目前已提供26個版本的dll,其中包括了qt5.12.3 msvc2017 32+64 mingw 32+64 的。
17. 不定期增加控件和完善控件,不定期更新SDK,歡迎各位提出建議,謝謝!
18. Qt入門書籍推薦霍亞飛的《Qt Creator快速入門》《Qt5編程入門》,Qt進階書籍推薦官方的《C++ GUI Qt4編程》。
19. 強烈推薦程序員自我修養(yǎng)和規(guī)劃系列書《大話程序員》《程序員的成長課》《解憂程序員》,受益匪淺,受益終生!
力/光伏電站箱變測控裝置華世智能HS2002概述:
一、華世智能HS2002箱變測控裝置的基本參數(shù):
?交流電壓:100V、315V、480V、520V、690V、800V自適應(yīng)
?交流電流:5A或1A
?交、直流裝置電源:220V或110V
?頻率:50Hz
二、華世智能HS2002箱變測控裝置的適用范圍:
適用于風(fēng)電或光伏箱變低壓側(cè)、光伏分裂變壓器低壓側(cè)的模擬量采集、電量保護、非電量保護、遠(yuǎn)方控制和通訊功能;實現(xiàn)升壓站對風(fēng)電或光伏箱變的遠(yuǎn)程管理和自動化監(jiān)控,滿足“無人值班,少人值守”運行管理要求
三、華世智能HS2002箱變測控裝置的主要特點:
3.1、全密封設(shè)計,精心設(shè)計的抗干擾組件,讓抗振和抗電磁干擾能力得到很大提高,以適應(yīng)惡劣環(huán)境。其可分散安裝于開關(guān)柜上運行
3.2、工業(yè)級集成電路,保障裝置的穩(wěn)定性和可靠性
3.3、高性能處理器ARM和高分辨率A/D轉(zhuǎn)換器,能就地實時完成電流、電壓、有功功率、無功功率、功率因數(shù)、頻率、電度等的計算;可實時完成保護、測量等
3.4、保護功能完全不依賴通訊網(wǎng),網(wǎng)絡(luò)癱瘓與否,不影響保護正常運行
3.5、軟硬件雙看門狗功能,系統(tǒng)同時具有較高的測量精度和抗干擾能力
3.6、友好的人機界面,全漢化大屏幕液晶顯示,跳閘報告,告警報告,遙信,遙測,定值整定等,都可在液晶上有明確的漢字標(biāo)識,便于用戶使用和掌握
3.7、RS-485通信、以太網(wǎng)通信、光纖通信接口(選配);組網(wǎng)經(jīng)濟方便:RS485口可接入?yún)R流箱、逆變器等智能設(shè)備,并可完成規(guī)約轉(zhuǎn)換;具CPU插件自有串口,向外提供規(guī)約接口;以太網(wǎng)通訊RJ45口,以太網(wǎng)光口(選配)可組成自愈式光纖環(huán)網(wǎng)
光伏電站故障位置信號集中報警裝置HS-MFA系列▼
天焊好了之前設(shè)計的一塊板子,打算燒錄上程序看看效果。
因為之前設(shè)計的方案是用串口作為信號輸出,所以燒完了就直接接在pc上看串口繪圖了,可是竟然一個數(shù)也沒有
打開串口監(jiān)視器發(fā)現(xiàn)它發(fā)來的全是一串又一串的亂碼。
我找來了好多之前在別的板子上跑過沒問題的程序,燒錄,發(fā)現(xiàn)輸出都變成了亂碼,而這些程序在原有的板子上工作的及其正常。
我用仿真器進了debug,watch window里面的數(shù)幾乎每個都正常,直到串口發(fā)出的前一刻,每次運算都在我的計劃之中。
那至少可以初步猜測單片機工作應(yīng)該是正常的,問題出在了串口模塊上。
我首先懷疑了波特率,不過不管是我的單片機程序還是接受的上位機,波特率都是115200,毫無差錯
我又把程序改成了不同的幾個波特率,從9600、14400到56000,都沒有解決掉亂碼的問題。
難道我遇到傳說中的電磁兼容問題了嗎?應(yīng)該不會啊就這么簡單的板子,頻率也不高,不過我還是換了更短的串口線,而且在看串口的時候斷掉了仿真器,防止有什么我不知道的干擾,甚至還讓它離電腦遠(yuǎn)了一些
當(dāng)然了,毫無作用。
整個一上午大概就是這樣在反復(fù)的嘗試中消失掉的。
臨近下班的時候,我問工程師大哥這種串口亂碼的問題一般要怎么解決,不管是收還是發(fā),獲得的都是亂碼。大哥和我說,這一般是波特率的問題,我講我已經(jīng)檢查過了,波特率都是匹配的,而且我也換過好幾種了。
大哥讓我把tx和rx短接起來,看看自發(fā)自收的效果。
下午來了之后,我嘗試了短接,最簡單的串口收發(fā)程序,發(fā)現(xiàn)是可以的,watch window里面接受的消息和發(fā)送的消息完美的匹配。
那真的是波特率的問題嗎?難道是電壓不穩(wěn)晶振的頻率不對了?
我換用了更穩(wěn)定的電源,后來又嘗試自己手動一點一點的改波特率,看看能不能碰出來它現(xiàn)在的波特率是多少。
很遺憾沒有成功。
我?guī)缀跸胍艞墸匦屡獕K板子了,準(zhǔn)備最后看下晶振是不是虛焊
就在這個時候,隨手拿起來板子我的發(fā)現(xiàn)了異常!
上面寫的是12M而不是我一直使用的8M!!!
謎題豁然開朗,我按8M外部時鐘設(shè)計的115200Hz的波特率,實際上在12M時鐘的驅(qū)動下變成了172800Hz,果然最終還是波特率不匹配的問題,只是引起波特率變化的地方在硬件上。
好嘛,原來是我早上焊晶振的時候順手拿的晶振是12Mhz包里面的,直接給我整懵了半天。。。
再吐槽一波焊接的事情
我的焊接水平是太差了
焊單片機的時候那引腳上的錫死活去不掉,張工都教我好多次了,最后還是勞煩張工給我焊好的
(貼片單片機太難焊了啊)
當(dāng)然了,之前非常愚蠢的先焊接上的幾個直插件因為礙事先取掉了,孔里留著錫。
我要重新焊上自然得先把孔通了
于是就得用上這個大寶貝——吸錫器
我看人家老哥用的賊熟練,烙鐵一燙,然后吸錫器砰的一聲孔就通了,干干凈凈,我尋思我也試試
誒怎么錫沒動啊,誒怎么又沒動,啊我這焊盤怎么都看不見了
反反復(fù)復(fù)終于通了幾個孔,但是也有好幾個孔焊盤讓我給干廢了
焊上元件以后拿萬用表一量,得嘞,果然不通。
不通咋辦呢,飛線唄
還把電位器的塑料封裝焊壞了一塊。
都弄完了好好測試一下吧
發(fā)現(xiàn)單片機使能ad的引腳是懸空的
仔細(xì)看了看發(fā)現(xiàn)對應(yīng)采樣電阻的焊盤是一點沒剩
好嘛,這要從單片機的引腳飛線嗎
飛唄,還能咋地
當(dāng)然我這愚蠢的手藝肯定不能只連一個腳上,不過還好旁邊那個引腳沒用,就這樣吧
啊我的這塊板子也太丑了,看著自己造的丑陋怪物真是無語凝噎。。。。
*請認(rèn)真填寫需求信息,我們會在24小時內(nèi)與您取得聯(lián)系。