咨詢電話
ENGLISH0755-88840386發(fā)布時間:2020-10-21 13:45:56 |來源:網(wǎng)絡轉(zhuǎn)載
0引言
隨著科學技術(shù)的進步及生產(chǎn)力水平的提高,工業(yè)生產(chǎn)朝著集成自動化方向發(fā)展[1],在許多工業(yè)現(xiàn)場中都會用到稱重設備,而現(xiàn)在使用的稱重儀表顯示字體較小,對操作者來說,遠距離讀數(shù)很不方便,特別是在工作量大、工作繁忙的時候,儀表顯示界面信息不夠清晰直觀將直接加重操作者的工作負擔,故采用具有一定技術(shù)集成的觸摸屏與儀表進行連接、通信,使之與儀表同步并大字號實時顯示測量數(shù)值,從而減輕操作者的負擔,間接達到提高工作效率的目的。
1硬件系統(tǒng)組成與功能
1.1硬件系統(tǒng)組成
該文硬件系統(tǒng)由觸摸屏、稱重儀表[2]、稱重傳感器、220V交流電源和24V直流電源構(gòu)成,硬件結(jié)構(gòu)如圖1所示
系統(tǒng)工作原理:稱重傳感器讀取稱重重量并在托利多稱重儀表顯示出來,供產(chǎn)品檢測人員記錄查看,托利多稱重儀表通過RS232串口數(shù)據(jù)線把重量數(shù)據(jù)傳到觸摸屏內(nèi)部的數(shù)據(jù)內(nèi)存區(qū)中,內(nèi)部處理器對傳來的數(shù)據(jù)進行截取、校驗、二次校驗,再轉(zhuǎn)換成有效信息,最后在觸摸屏上顯示出來,實現(xiàn)與稱重儀表的同步顯示,方便工作人員對工業(yè)現(xiàn)場稱重狀態(tài)的實時監(jiān)視。
1.2硬件系統(tǒng)功能
觸摸屏:由24V直流電源供電,通過RS232串口通信數(shù)據(jù)線接收稱重儀表傳來的實時數(shù)據(jù),然后對接收的數(shù)據(jù)進行截取、存儲、校驗、轉(zhuǎn)換,沒有錯誤后實時顯示出來,最后在觸摸屏上以大字號實時顯示稱重儀表上的數(shù)據(jù)值。
稱重儀表:由220V交流電源供電,通過信號線對稱重傳感器傳來的模擬量數(shù)據(jù)進行A/D轉(zhuǎn)換[3],存儲到稱重儀表中并顯示稱重值,并把轉(zhuǎn)換的數(shù)字量數(shù)據(jù)發(fā)送給觸摸屏。
稱重傳感器:用于稱重重量,獲得具體的重量測量信息,并通過RS232串口通信數(shù)據(jù)線將獲得的重量數(shù)據(jù)以模擬量的形式傳輸給稱重儀表。
2上位機程序設計
2.1程序設計流程
軟件設計流程如圖2所示,
基于威綸通EasyBuilderPro開發(fā)環(huán)境,一方面對組態(tài)界面開發(fā)環(huán)境的顯示進行合理地組態(tài)布局,另一方面對通信方式進行編程,借助內(nèi)部函數(shù)對儀表實時發(fā)過來的數(shù)據(jù)進行加工處理,進行數(shù)據(jù)截取、校驗、轉(zhuǎn)換、顯示等步驟。
2.2通信數(shù)據(jù)傳送與處理
為使硬件系統(tǒng)與軟件系統(tǒng)很好地結(jié)合,兩者通信方式的參數(shù)設置需要一致,上電后對與通信數(shù)據(jù)有關(guān)的稱重儀表進行參數(shù)設置,而軟件編程的算法是保證系統(tǒng)準確實時顯示的核心部分。
2.2.1對IND236稱重儀表通信設置
IND236稱重儀表通過RS232接口進行數(shù)據(jù)傳輸[4],選擇相應型號的觸摸屏MT8121iE/MT8150iE(1024×768)進行開發(fā),IND236稱重儀表支持兩種串行端口,分別為主板上的標準串口COM1和可選串口COM2,該文選用COM1為通信端口,并將其設為連續(xù)輸出的模式,IND236稱重儀表具有連續(xù)輸出模式的特點,在傳輸中可以連續(xù)發(fā)送重量數(shù)據(jù)和稱重狀態(tài)信息,通過數(shù)據(jù)線把數(shù)據(jù)提供給觸摸屏,該數(shù)據(jù)含有17或18個字節(jié),按標準連續(xù)輸出的格式輸出[5],如表1所示,信息的起始標志為STX,可查ASCII碼表得到,即0x02作為文本的開始,CR為結(jié)束標志,即
為0x0D。
連續(xù)輸出格式說明:
1)ASCII文本開始字符(0x02),始終發(fā)送。
2)顯示的重量,可以是毛重或是凈重,6位,沒有小數(shù)點或符號,不足6位前補空格。
3)皮重,具有6位皮重數(shù)據(jù),在此顯示的字段中沒有小數(shù)點。
4)ASCII回車<CR>字符(0x0D)。
5)啟用和校驗時需要校檢位的發(fā)送,校驗和用于檢測數(shù)據(jù)發(fā)送中的錯誤[6]。
由于觸摸屏MT8150iE使用COM1口與托利多儀表進行通信,故將接口類型設置為“RS232”,然后對COM1口進行通信參數(shù)設置,點擊COM1口對應的“設置”,根據(jù)IND236對參數(shù)配置的要求,選用其默認參數(shù)配置,將波特率設定為“9600”,數(shù)據(jù)位設定為“8Bits”,校驗位設定為“None”,停止位設為“1Bits”,超時設為“1.0”,設備屬性窗口和通信端口設置如圖3所示。
2.2.2利用內(nèi)建函數(shù)接收數(shù)據(jù)
首先用到通信相關(guān)的函數(shù)即INPORT為內(nèi)建函數(shù),使得觸摸屏可以接收儀表數(shù)據(jù),具體格式為:IN ̄PORT(read_data[start],"device_name",read_count,return_value),從串行端口或者以太網(wǎng)絡讀取數(shù)據(jù)至HMI,這些資料保存在read_data[start]~read_data[start+read_count-1]一維數(shù)組中,device必須選擇為“FreeProtocol”PLC類型,read_count是設定需要讀取的命令位組長度,可以是常數(shù)或者變量,若此函數(shù)能夠成功的從PLC或者控制器中讀取數(shù)據(jù),則return_value值為1,否者為0,觸摸屏每個周期從儀表獲得數(shù)據(jù)后,根據(jù)開始標志與結(jié)束標志從中提取出所需信息,存入數(shù)組中等待進行下一步解讀,程序語句如下:
INPORT(response1[0],"toledp",40,return_value)
∥數(shù)據(jù)讀至HMI取40位至數(shù)組,返回值為1
i=StringLength(response1[0])
∥變量i為取數(shù)組response1[0]字符串長度
2.2.3數(shù)據(jù)截取與校驗程序
為保證數(shù)據(jù)同步顯示,需要對儀表發(fā)來的數(shù)據(jù)實時處理,通過INPORT內(nèi)建函數(shù)對稱重儀表發(fā)來的數(shù)據(jù)進行截取、校驗、轉(zhuǎn)換處理,才能保證截取的數(shù)據(jù)達到同步顯示的效果,是保證稱重儀表同步正常顯示的關(guān)鍵一步,程序如下:
Ifi>=40then∥對于response1[0]長度大于40位的則清空緩存區(qū)
PURGE(1)∥i為短整型變量,如果大于40則清空COM1的緩沖區(qū)
jj=0∥給短整型變量jj賦初始值
forii=0to39∥ii的值從0~39,共40個
ifresponse1[ii]==0x02then∥對數(shù)組中的數(shù)據(jù)進行判斷,哪個為0x02
jj=ii∥jj為短整型變量,代表第幾位是0x02,并跳出循環(huán)體
breakendif
next
forj=0to16∥把截取數(shù)據(jù)進行賦值,i為短整型變量
ji1=ji+j
response[j]=response1[ji1]∥把截?。保肺粯藴蔬B續(xù)輸出存到response[0]一維數(shù)組中
next
endif
為保證稱重數(shù)據(jù)在觸摸屏上顯示正確無誤,又增加了二次校驗功能,使得顯示更加穩(wěn)定,經(jīng)過實驗,在半年多的實際應用中,沒出現(xiàn)任何錯誤,保證了用戶在實際應用中的體驗,程序段如下:
ifresponse[0]==0x02andresponse[16]==0x0Dthen//檢驗數(shù)組第1位、第17位是否滿足條件
GETBIT(response[1],A0,0)∥位狀態(tài)轉(zhuǎn)換,解析出A位數(shù)位0的數(shù)值
GETBIT(response[1],A1,1)∥位狀態(tài)轉(zhuǎn)換,解析出A位數(shù)位1的數(shù)值
GETBIT(response[1],A2,2)∥位狀態(tài)轉(zhuǎn)換,解析出A位數(shù)位2的數(shù)值
GETBIT(response[2],B1,1)∥位狀態(tài)轉(zhuǎn)換,解析出狀態(tài)字節(jié)B位數(shù)位1的值
GETBIT(response[2],B4,4)∥位狀態(tài)轉(zhuǎn)換,解析出狀態(tài)字節(jié)B位數(shù)位4的值
GETBIT(response[3],C0,0)∥位狀態(tài)轉(zhuǎn)換,解析出狀態(tài)字節(jié)C位數(shù)位4的值
GETBIT(response[3],C1,1)∥位狀態(tài)轉(zhuǎn)換,解析出狀態(tài)字節(jié)C位數(shù)位4的值
GETBIT(response[3],C2,2)∥位狀態(tài)轉(zhuǎn)換,解析出狀態(tài)字節(jié)C位數(shù)位4的值
ASCII2FLOAT(response[4],read_data,6)
endif
當完成二次校驗時,則需要對截取的數(shù)據(jù)分段進行譯碼處理,把帶有負數(shù)的單位以及稱重儀表中的單位對應起來的數(shù)據(jù)進行轉(zhuǎn)換處理,當完成這些必要的步驟后,需要在觸摸屏上對應位置正確顯示。
出稱重數(shù)值以及單位,根據(jù)IND236的連續(xù)輸出格式,數(shù)組中第5~第10為重量的數(shù)值信息,故從數(shù)組中取出第5~第10的數(shù)據(jù),因組態(tài)軟件提供了眾多十分方便的轉(zhuǎn)換函數(shù),故在此可直接調(diào)用組態(tài)軟件攜帶的函數(shù)ASCII2FLOAT,將數(shù)據(jù)由ASCII碼轉(zhuǎn)為浮點數(shù),再從數(shù)組中分別取出3個狀態(tài)位對應的數(shù)據(jù),即數(shù)組中的第2~第4個數(shù)據(jù),根據(jù)表提供的參數(shù)設置手冊,對IND236的狀態(tài)字節(jié)位的定義分別確定小數(shù)點位置、數(shù)值的正負和單位,對數(shù)值進行相應的處理并傳送到相應的地址,程序如下:ASCII2FLOAT(response[4],read_data,6)
ifB1==1then∥狀態(tài)字節(jié)B位符號定義,B1為1則為負號,為0則是正號
read_data=read_data∗(-1)∥顯示數(shù)據(jù)數(shù)值的正負號轉(zhuǎn)換
endif
ifA2==0andA1==1andA0==0then∥010代表小數(shù)點后沒有數(shù)值
result=readdata
_
endif
ifA2==0andA1==1andA0==1then∥011代表小數(shù)點后有一位數(shù)值
result=readdata/10
_
endif
ifA2==1andA1==0andA0==0then∥100代表小數(shù)點后有兩位數(shù)值
result=readdata/100
_
endif
SetData(result,"LocalHMI",LW,20,1)
ifB4==0then∥B4字符型變量,狀態(tài)字節(jié)B
位數(shù)位4,lb=0weightunit[0]=′l′weightunit[1]=′b′endif
ifB4==1then∥B4字符型變量,狀態(tài)字節(jié)B
位數(shù)位4,kg=1weightunit[0]=′K′weightunit[1]=′g′endif
ifC2==0andC1==0andC0==1then∥對應的數(shù)位為001時,重量單位為克(g)
weightunit[0]=′′weightunit[1]=′g′endif
ifC2==0andC1==1andC0==1then∥對應的數(shù)位為011時,重量單位為盎司(oz)
weightunit[0]=′o′weightunit[1]=′z′endif
2.3觸摸屏與稱重儀表大字號實時顯示
把需要的數(shù)據(jù)都解析出來后,調(diào)用內(nèi)建函數(shù),使傳過來的數(shù)據(jù)以與稱重儀表上的稱重值和所對應的單位在觸摸屏中顯示出來[7],實物圖如圖4所示,不需要再連接任何型號的PLC等設備,既減少了設備成本又能準確、實時傳輸并大字號顯示,滿足了客戶在多變化的工廠環(huán)境下的使用需求。
3結(jié)語
該文依托威綸通觸摸屏,使用梅特勒-托利多的工業(yè)電子秤為硬件基礎(chǔ),借助威綸通觸摸屏自帶的開發(fā)工具,使得系統(tǒng)上下位機更穩(wěn)定地配合,使用RS232串口通信接口來傳輸數(shù)據(jù),實現(xiàn)對稱重儀表數(shù)據(jù)大字號同步顯示,該系統(tǒng)經(jīng)調(diào)試運行后現(xiàn)已投入使用,經(jīng)過半年多的現(xiàn)場運行,表明該文數(shù)據(jù)傳輸可靠,效果理想,滿足了生產(chǎn)需求,程序代碼可移植性好,具有較大的市場推廣價值,系統(tǒng)設計方案簡單,經(jīng)濟、有效,同步性穩(wěn)定可靠,也提高了設備的可維護性,成本低,使用方便。
文章來源于網(wǎng)絡轉(zhuǎn)載,侵刪