《Direct I/O in DOSBOX for COMM serial communications with QBasic, TBasic or Pbasic》筆記中記錄了在DOSBOX砂箱下,對串口編程的DOS程式和WINx16程式,以及讓WINx16位程式在WINx64下直接運行的方法,接下來是分離DOS程式與主機通訊程式,讓它們互相配合,各盡其職,將邊緣計算與現代化展現與網路結合起來,從而形成可發揮作用的系統,

對于區域控制,ISA是優秀的工業標準總線,它不需要所謂高速SerDes串并轉換,硬體控制非常透明,是老一代工業系統開發者的優選,基于ISA總線的SBC卡、CPU卡、ADC、DAC、DIO、COUNTERS、FREQUENCY、PWM、NETWORK、PC-CARDS等等,幾乎是應有盡有,非常完善,如果把它們聚集到母板上,將DOS和其下的串口直接埠操作程式放上去,再通過串行總線與WIN64、LINUX64按指令互動,就是基本的簡單系統,為了讓它更清晰,不妨把它放在一個殼子里,讓黑殼子開機就自己運行,無需顯示等任何其它輔助設備,

全套區域系統的組成應包括:
1. 傳感器和執行機構
2. 配線架和端子接入箱
3. 信號處理箱
4. 用戶終端、桌面,
區域系統之間可以通過工業總線聯網,RS485、HART、CAN、PROFIBUS、ETHERNET等等,這類總線幾十種,我們國家也制訂有相應的總線,就連現在的汽車中也使用標準總線,就不細述了,它本身就是一套值得研究和發展的領域,國內目前做得還不夠好,努力空間很廣闊,
有了SCADA分布式系統,只是程序處理的自動化和簡單的智能化,還達不到智慧工廠要求,所以,要通過物聯網將不同城市間的SCADA系統連起來,再與管理運營與生結合起來,

工業控制開發人員在工廠智慧化上的作用是非常大的,主要是在系統系統層級發力,而其它兩個維度要既懂技術又清楚管理的總監,才能共同完成智慧工廠建設和之后的持續改進,《Direct I/O in DOSBOX for COMM serial communications with QBasic, TBasic or Pbasic》主要是硬體通訊內核的筑助,用戶層的通訊內核也有,
典型方式:WINDOWS API, MSCOMM, SERIALPORT
遇到問題最多的是斷線或受干擾中斷通訊死鎖問題
當發送完指令后,往往要等待暫存器資料準備好后才能讀取,否則資料無效,一些控制元件在發送和接收時做了處理,對位元組進行組裝,如果在組裝程序中線路中斷,用戶很難處理這類錯誤,程式就不動了,
解決方法1. 最好就是用BYTE發送、BYTE接收,自己組裝指令和資料,
解決方法2. 程式死鎖往往是單執行緒式,可在主行程中設定FLAG1,在線路資料處理部分清除FLAG1,主執行緒發現FLAG1很長時間或很多次不清時,則關閉通訊口,然后再打開通訊口,強制處理通訊口例外,
解決方法3. 發送資料前也設定FLAG2,接收成功后清除FLAG2,FLAG2不清除就能再發送資料,主發送和接收在FLAG2握手下進行,避免Overwrite發生,
控制元件的使用
MSCOMM是WINx32自帶的ActiveX COM組件,VB、XE、C++Builder等,都可以Import了使用它,采取上述措施后還是宜用的,
SerialPort是VS自帶的,在NET平臺上直接可用,注意事項是一樣的,
值得一提的是Lazarus帶的SerialPort組件,還是要用它,不要費勁的呼叫其它COM組件,因為Lazarus是跨平臺編譯的,用了平臺相關組件就失去了程式跨平臺編譯能力,是很可惜的事情,唯一遇到的問題是行程死鎖產生超時錯誤,中斷了程式運行,
找到PAS檔案的237行,將ProcessMessage這個回圈提前兩行開始,問題就解了,
原來它是發出結束行程就在那ProcessMessage死等結束標記,不如再發結束指令再讀結束標記,就像我們手工關閉表單,一次關不了就多點幾個次關閉,不要點一次就等到晚,



9600下發指令、收指令加校驗,幾十次至上百次指令與資料互動,穩定、迅速,中間斷線斷電后自動恢復互動,串口,用好了出奇跡,用不好出麻煩,是個既讓人愛又讓人恨的悠久存在,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/342294.html
標籤:其他
上一篇:串口通信小試牛刀——GPIO埠完成3只LED燈的周期閃爍
下一篇:2021最新 北京互聯網公司排名
