呂文豹
(安徽理工大學(xué) 材料科學(xué)與工程學(xué)院,安徽 淮南 232001)
浮選和濃縮是選煤廠內(nèi)煤泥水處理的主要環(huán)節(jié),捕收劑、起泡劑、絮凝劑等的用量是影響浮選、濃縮效果的重要因素,故保證這些藥劑用量準確非常重要。SCL-61D超聲水表具有靈敏度高、精度高的特點,在煤泥水藥劑檢測中應(yīng)用廣泛。由于SCL-61D超聲水表采用SCL-61D超聲水表通信協(xié)議,無法直接與S7-200可編程控制器(PLC)通信,但S7-200 PLC支持自由口通信[1],故可在S7-200 PLC內(nèi)通過軟件程序采用自由口通信模式來實現(xiàn)SCL-61D超聲水表數(shù)據(jù)的讀取。
S7-200 PLC的自由口通信模式是由用戶自定義的通信協(xié)議,用于與其他支持串行通信的設(shè)備進行通信[2]。如果將S7-200 PLC通信口設(shè)置成自由口通信模式,在S7-200 PLC處于RUN狀態(tài)后,用戶程序就可完全控制通信端口的操作,通信協(xié)議完全受用戶程序控制[3]。S7-200 PLC的通信接口在電氣上是標準的RS-485特性,采用半雙工異步通信方式,故需要在相關(guān)的特殊存儲器上進行通信模式和參數(shù)的設(shè)置[4]。
SCL-61D超聲水表的通信接口是RS-485,與S7-200 PLC的通信接口電氣特性一致,因此在硬件連接方面,只需將SCL-61D超聲水表通信接口的A、B端接到S7-200 PLC的PORT0口的引腳8(RS-485信號A)、3(RS-485信號B)。SCL-61D超聲水表的通信參數(shù)為波特率默認2 400 bps,數(shù)據(jù)位8位,停止位1位,校驗位無[5-7]。SCL-61D超聲水表通信協(xié)議的命令格式為:請求命令:2AH 41H 4AH,響應(yīng)命令:26H 41H 4AH LL(BCD碼) ZZH。
LL(BCD碼)共有13字節(jié)的數(shù)據(jù),其具體字節(jié)內(nèi)容見表1。ZZH為數(shù)據(jù)校驗字節(jié),即不包括控制和命令字節(jié)的所有數(shù)據(jù)內(nèi)容按字節(jié)進行累加,不計超出FF的數(shù)值。
表1 LL(BCD碼)表
根據(jù)SCL-61D超聲水表的通信參數(shù)設(shè)置S7-200 PLC相關(guān)特殊存儲器。選擇S7-200 PLC通信端口,在其自由端口控制器SMB30設(shè)置協(xié)議選擇、波特率、數(shù)據(jù)位、校驗位。根據(jù)SCL-61D超聲水表的通信協(xié)議命令格式可知:當(dāng)S7-200 PLC發(fā)出請求命令后,才有超聲水表數(shù)據(jù)響應(yīng),即超聲水表數(shù)據(jù)響應(yīng)與主機下次發(fā)出請求命令的這段時間內(nèi)總線是空閑的,故定義S7-200 PLC接收數(shù)據(jù)的起始條件為空閑線檢測。結(jié)束條件使用字符間隔定時器,即在接收到字符后,字符間隔定時器重新啟動,如一個字符的結(jié)尾到下一個字符的結(jié)尾之間的時間間隔超過SMW92設(shè)定時間,則數(shù)據(jù)接收結(jié)束。在特殊存儲器SMB87上設(shè)置接收消息的相關(guān)參數(shù),并在特殊存儲器SMW90上設(shè)置空閑線時間(單位:ms),空閑線時間過后接收的第一個字符即為新信息的開始。特殊存儲器SMW92表示字符間定時器超時值(單位:ms),如果超過該時間,則停止接收消息。在特殊存儲器SMB94上設(shè)置需要接收的最大字符數(shù),最大為255字節(jié)。具體設(shè)置見表2。
表2 自由口通信模式和參數(shù)設(shè)置
S7-200 PLC與SCL-61D超聲水表的通信程序主要流程為[8]:
(1)將S7-200 PLC的PORT0端口設(shè)置成自由口通信模式。
(2)初始化自由口通訊模式參數(shù),即將參數(shù)寫入PORT0端口的自由口特殊存儲器,設(shè)置發(fā)送中斷條件,規(guī)定數(shù)據(jù)接收的起始條件和結(jié)束條件。
(3)定時執(zhí)行XMT發(fā)送指令,將SCL-61D超聲水表的數(shù)據(jù)請求命令發(fā)送給SCL-61D超聲水表。
(4)執(zhí)行XMT發(fā)送指令中斷程序,執(zhí)行RCV接收指令程序;完成數(shù)據(jù)接收,并對接收到的SCL-61D超聲水表響應(yīng)數(shù)據(jù)進行校驗,等待下一個XMT發(fā)送指令的執(zhí)行。
自由口通信流程如圖1所示。
圖1 自由口通信流程
S7-200 PLC通過自由口模式與SCL-61D超聲水表通信的核心指令為發(fā)送(XMT)和接收(RCV)指令[9-10]。XMT用于在自由口模式下通過S7-200 PLC的通信接口PORT0發(fā)送數(shù)據(jù),其參數(shù)設(shè)置和程序編寫較為簡單,XMT指令的TBL(數(shù)據(jù)緩沖區(qū))第一個字節(jié)數(shù)據(jù)指明了發(fā)送數(shù)據(jù)的字節(jié)數(shù)(即VB200中的3),其后發(fā)送的為信息字符(即VB201中的16#2A、VB202中的16#41、VB203中的16#4A)。將需要通過S7-200 PLC自由口發(fā)送到SCL-61D超聲水表的數(shù)據(jù)請求命令(2AH 41H 4AH)分別保存在S7-200 PLC中的VB201、VB202、VB203內(nèi),S7-200PLC主程序通過XMT指令定時發(fā)送SCL-61D超聲水表數(shù)據(jù)請求命令。具體程序為:
LD SM0.0
MOVB 3,VB200
MOVB 16#2A,VB201
MOVB 16#41,VB202
MOVB 16#4A,VB203
在主程序中利用定時器定時向超聲水表發(fā)出請求命令,其程序為:
LD T100
EU
XMT VB200,0
XMT指令發(fā)送后需要對數(shù)據(jù)發(fā)送情況進行判斷,為此選用發(fā)送完成中斷。選用S7-200 PLC的PORT0通信端口對應(yīng)中斷事件9產(chǎn)生一個中斷,通過中斷連接指令A(yù)TCH進入對應(yīng)的中斷程序INT_1,并執(zhí)行相應(yīng)的用戶程序,具體為:
ATCH INT_1:INT1,9
ENI
當(dāng)XMT指令完成請求命令發(fā)送后,發(fā)送完緩沖區(qū)中的最后一個字符時產(chǎn)生中斷,并進入中斷程序,在中斷程序內(nèi)通過自由口接收指令RCV,實現(xiàn)接收SCL-61D超聲水表數(shù)據(jù)的響應(yīng)。S7-200PLC通過XMT指令完成請求命令后,等待SCL-61D超聲水表響應(yīng),響應(yīng)數(shù)據(jù)到達S7-200 PLC數(shù)據(jù)緩沖區(qū)后,通過自由口接收指令RCV進行數(shù)據(jù)的接受和存儲,具體程序為:
LD SM0.0
RCV VB300,0
自由口接收指令RCV的參數(shù)設(shè)置與發(fā)送指令XMT一致,RCV指令的TBL的最大字節(jié)為255,接收緩沖格式為第一個字節(jié)表示接受的字符數(shù)(VB300),其后為接受的數(shù)據(jù)字符(即VB301-VB317,表3)。
在完成數(shù)據(jù)接收后,對接收的數(shù)據(jù)按照SCL-61D超聲水表通信協(xié)議進行校驗。如果其與接收的校驗數(shù)據(jù)一致,則數(shù)據(jù)接收正確;如果其與接收的校驗數(shù)據(jù)不一致,則接收數(shù)據(jù)有問題,應(yīng)棄之不用,等待SCL-61D超聲水表下一次的響應(yīng)數(shù)據(jù)。
通過圖2、圖3可以看出:VB304-VB307的數(shù)據(jù)為105,其縮小至1/1 000即為實際瞬時流量0.105 m3/h,與圖3左側(cè)的超聲水表顯示的瞬時流量一致;VB308-VB311的數(shù)據(jù)為9 432,其縮小至1/10即為實際瞬時流量943.20 m3,與圖3右側(cè)的超聲水表顯示的累計流量一致??梢奡7-200PLC的自由口模式可以安全、實時、可靠地獲取SCL-61D超聲水表的流量等相關(guān)數(shù)據(jù)。
表3 接收數(shù)據(jù)存儲表
圖2 S7-200PLC狀態(tài)表中的超聲水表響應(yīng)數(shù)據(jù)
圖3 超聲水表的瞬時流量和累計流量
針對S7-200可編程控制器無法通過編程軟件STEP 7-Microwin 4預(yù)設(shè)的通信協(xié)議直接讀取SCL-61D超聲水表數(shù)據(jù)的問題,提出了S7-200PLC在自由口模式下與SCL-61D超聲水表通信的思路和方法。這種方法可靠性高、實時性強、穩(wěn)定性好,投資成本低,可為其他通信協(xié)議不兼容的智能儀器儀表與S7-200 PLC之間的數(shù)據(jù)交換提供一種的手段和方法。