朱海建
(蘇州創(chuàng)發(fā)人力資源有限公司,蘇州 215008)
目前造紙生產(chǎn)過程中的助劑配料一般使用兩種方法,第一種方法采用人工稱重配料,由于人工配料極易使人體吸入粉塵等雜物,同時(shí)人工配料很容易出現(xiàn)誤配,質(zhì)量難以保證,也會導(dǎo)致管理成本增加。另一種方法是自動(dòng)稱重,自動(dòng)配料。為了保證配置的造紙助劑溶液質(zhì)量,提高生產(chǎn)效率,現(xiàn)在多數(shù)生產(chǎn)現(xiàn)場配料均要求采用準(zhǔn)確、可靠的自動(dòng)配料系統(tǒng)。HBM WE2107稱重顯示控制器具有兩個(gè)通訊串口,其中串口2(RS-232接口)用于連接串行打印機(jī)或外部大屏幕顯示器。本文中使用WE2107串口2通過RS232轉(zhuǎn)RS485轉(zhuǎn)換器與S7-200可編程控制器(下稱PLC)建立硬件通訊,在建立通訊之前,先設(shè)置WE2107串口2功能為外部大屏幕輸出,波特率為9.6Kbps,無奇偶校驗(yàn),起始字符位88,報(bào)文輸出格式為1,校驗(yàn)和開。通信程序設(shè)計(jì)主要包含四個(gè)部分,第一部分為設(shè)置PLC的通信接口并建立PLC接受字符中斷。第二部分主要是建立字符接受指針,將接受的字符存儲到相應(yīng)區(qū)域中。因?yàn)閃E2107稱重顯示器輸出的數(shù)據(jù)為ASCⅡ字符,因此第三部分的程序主要是針對接受的字符進(jìn)行轉(zhuǎn)換。WE2107輸出報(bào)文包括開始字符,符號字符,數(shù)據(jù)字符(含小數(shù)點(diǎn))、結(jié)束字符及檢驗(yàn)和等一系列字符。故第四部分的程序針對已接受并轉(zhuǎn)換為十六進(jìn)制的字符進(jìn)行數(shù)學(xué)處理。通過上述一系列處理后,從而保證PLC上顯示的數(shù)據(jù)與WE2107實(shí)際數(shù)據(jù)的一致。
要實(shí)現(xiàn)WE2107與PLC的通訊,PLC與WE2107的通訊方式必須設(shè)置一致。PLC通訊口的設(shè)置通過上電初始程序進(jìn)行設(shè)置,在上電初始化程序中對端口1控制寄存器SMB130寫入十六進(jìn)制值09,從而設(shè)置端口1執(zhí)行自由端口協(xié)議,通訊波特率位9.6Kbps,無奇偶校驗(yàn)。并在初始化程序中啟動(dòng)PLC端口1的接受字符全局中斷,使PLC在運(yùn)行過程中對WE2107傳送的每個(gè)ASCⅡ字符進(jìn)行接受。
LD SM0.1//PLC上電初始掃描
MOVB 16#09,SMB130//端口1為自由端口協(xié)議,通訊波特率位9.6Kbps,無奇偶校驗(yàn)
ATCH INT0,25//將端口1接受字符中斷(事件25)連接到中斷程序INT0
ENI//全局中斷啟用
當(dāng)PLC啟用接受字符中斷后,PLC端口1每接受一個(gè)WE2107輸出的字符調(diào)用一次中斷程序。SMB2是PLC自由端口1字符接受緩沖區(qū),PLC端口1每次接收到的字符都存放在這里。WE2107輸出的字符包括起始字符,符號字符,以及包含小數(shù)點(diǎn)的數(shù)據(jù)字符等。在PLC接受到一個(gè)字符之后,需要將接受緩沖區(qū)的字符傳送到相應(yīng)的存儲地址,本文中將接受到的ASCⅡ字符存儲到以VB3000為起始的存儲器中。因在WE2107設(shè)置起始字符為88,故當(dāng)PLC接收到的字符為16#58時(shí),后續(xù)接受到的一系列字符將是一次完整的WE2107字符輸出。為了將接受到的字符分別存儲到不同的字節(jié)地址中,本文中通過建立一個(gè)地址指針,每接受一個(gè)字符通過地址指針增一將字符存儲地址指向下一個(gè)字節(jié),從而實(shí)現(xiàn)接受字符的分別存儲。
LDB=SM2,16#58//當(dāng)接受到起始字符時(shí)
MOVD &VB3000,VD3050//建立一個(gè)指向存儲字符的地址指針,字符存儲地址從VB3000開始
LD SM0.0//啟動(dòng)字符傳送使能
MOVB SMB2,*VD3050//將字符接收緩沖器中的字符傳送到指針指定的存儲地址
INCD VD3050//指針指向下一個(gè)字符的存儲地址
由于WE2107輸出的字符為ASCⅡ碼,故需要使用ATH指令將ASCⅡ碼轉(zhuǎn)換為十六進(jìn)制數(shù),在該子程序中局部變量表中定義了兩個(gè)局部變量,用于在子程序中傳遞參數(shù),分別為輸入?yún)?shù)#ASC_I、輸出參數(shù)#ASC_O,分別對應(yīng)局部變量LB0和LD1。因在后續(xù)數(shù)據(jù)處理中需進(jìn)行實(shí)數(shù)類型數(shù)據(jù)計(jì)算,故在該子程序中將字符全部轉(zhuǎn)換為對應(yīng)實(shí)數(shù)。
LD SM0.0//啟動(dòng)字符轉(zhuǎn)換使能
ATH #ASC_I:LB0,LB5,1//將輸入的ASCⅡ碼字符轉(zhuǎn)換為十六進(jìn)制數(shù)
BTI LB5,LW5//將字節(jié)轉(zhuǎn)換成整數(shù)
ITD LW5,LD5//將整數(shù)轉(zhuǎn)換成雙整數(shù)
DTR LD5,#ASC_O:LD1//將雙整數(shù)轉(zhuǎn)換為實(shí)數(shù)
當(dāng)WE2107報(bào)文發(fā)送格式選擇為1時(shí),WE2107輸出ASCⅡ碼字符的順序依次為開始字符,符號字符(正或負(fù)號),數(shù)據(jù)字符(含小數(shù)點(diǎn)),檢驗(yàn)和字符。檢驗(yàn)和字符為對所有輸出的字符進(jìn)行XOR計(jì)算的結(jié)果,本文限于篇幅,不對校驗(yàn)校驗(yàn)字符進(jìn)行贅述。在WE2107中設(shè)置重量數(shù)據(jù)精確到小數(shù)點(diǎn)后一位,最大重量為6000.0kg,因此傳送的重量數(shù)據(jù)最大為6個(gè)字符(6000.0),最小為3個(gè)字符(0.0)。若傳送的數(shù)據(jù)字符為0.1時(shí),PLC按照讀數(shù)順序?qū)ⅰ?”、“.”、“1”三個(gè)ASCⅡ字符存儲到字節(jié)VB3002、VB3003和VB3004中。若傳送的數(shù)據(jù)字符為1234.5時(shí),PLC按照讀數(shù)順序?qū)ⅰ?”、“2”、“3”、“4”、“.”及“5”六個(gè) ASC Ⅱ字符存儲到字節(jié)VB3002~VB3007中。因?yàn)槊看蝹魉偷淖址麄€(gè)數(shù)不盡相同,因此需要根據(jù)小數(shù)點(diǎn)字符位置對傳送的數(shù)據(jù)進(jìn)行判斷和處理。在所有傳送的重量字符中,起始字符及符號字符占用存儲字節(jié)VB3000及VB3001,若字節(jié)VB3004中存儲的字符為十六進(jìn)制2E(表示小數(shù)點(diǎn)字符),則小數(shù)點(diǎn)前分別有一個(gè)十位和個(gè)位重量數(shù)據(jù)字符,小數(shù)點(diǎn)后有一個(gè)十分位重量數(shù)據(jù)字符。在數(shù)據(jù)處理程序中通過調(diào)用字符轉(zhuǎn)換子程序?qū)SCⅡ碼字符轉(zhuǎn)換成十六進(jìn)制數(shù),再將轉(zhuǎn)換后的各數(shù)位上的重量數(shù)值與位權(quán)相乘后進(jìn)行累加即可得到實(shí)際的重量數(shù)據(jù)。
LD SM0.0//啟用字符轉(zhuǎn)換子程序使能
由于西門子S7-200系列PLC具有高可靠性,通用性強(qiáng),編程簡單,在小型設(shè)備控制中得到了廣泛應(yīng)用。利用PLC的自由通訊口與WE2107進(jìn)行通訊,讀取稱量數(shù)據(jù)準(zhǔn)確穩(wěn)定。兩者組成的自動(dòng)配料系統(tǒng),能有效提高了配料的自動(dòng)化程度,減少了人工誤配的幾率,降低生產(chǎn)過程成本,設(shè)備在現(xiàn)場應(yīng)用后,設(shè)備運(yùn)行穩(wěn)定,得到用戶的普遍好評。