周桂存
(中國(guó)石化儀征化纖股份有限公司,江蘇 儀征 211900)
在紡織化纖行業(yè),絲束張力是一個(gè)十分重要的參數(shù),一般將該參數(shù)的檢測(cè)作為質(zhì)量控制的重要手段之一。在線(xiàn)張力傳感器在化纖生產(chǎn)中應(yīng)用廣泛,德國(guó)施密特公司生產(chǎn)的FS系列在線(xiàn)張力傳感器在化纖行業(yè)有很多應(yīng)用,F(xiàn)S系列在線(xiàn)張力傳感器設(shè)有RS-422數(shù)字輸出信號(hào)接口,通過(guò)配置RS-422/RS-232轉(zhuǎn)換器和該公司開(kāi)發(fā)的張力檢測(cè)軟件,即可實(shí)現(xiàn)在PC機(jī)上顯示在線(xiàn)張力傳感器采集的數(shù)據(jù)。但是此張力檢測(cè)軟件的用戶(hù)界面比較單一,靈活性不夠,而且要單獨(dú)采購(gòu),增加了生產(chǎn)成本。
筆者通過(guò)對(duì)FS系列在線(xiàn)張力傳感器數(shù)字輸出接口通信協(xié)議ASCII的研究,采用基于CP341的串口通信模塊,將其信號(hào)采集到現(xiàn)有的S7-300 PLC上,在上位監(jiān)控系統(tǒng)中將在線(xiàn)張力傳感器信號(hào)進(jìn)行實(shí)時(shí)采集和記錄,以方便生產(chǎn)管理和絲束張力對(duì)質(zhì)量影響的追蹤分析。在此,基于ASCII通信協(xié)議,介紹采用RS-422全雙工模式,通過(guò)CP341串口通信模塊對(duì)FS系列在線(xiàn)張力傳感器檢測(cè)數(shù)據(jù)實(shí)時(shí)采集的實(shí)現(xiàn)方法。
FS系列在線(xiàn)張力傳感器的數(shù)據(jù)采集系統(tǒng)分為現(xiàn)場(chǎng)層、控制層和上位監(jiān)控層,如圖1所示。現(xiàn)場(chǎng)層由FS張力傳感器組成,張力傳感器采用RS-422通信接口,單段RS-422總線(xiàn)上可以接1~32個(gè)張力傳感器;控制層由S7-300 PLC組成,PLC系統(tǒng)配置有CP341串口通信模塊,與FS張力傳感器進(jìn)行RS-422通信,實(shí)現(xiàn)數(shù)據(jù)采集;監(jiān)控層采用iFIX監(jiān)控組態(tài)軟件構(gòu)成操作員站,對(duì)所采集的數(shù)據(jù)進(jìn)行實(shí)時(shí)顯示與超限報(bào)警,并形成歷史記錄,用于事后數(shù)據(jù)分析等。
圖1 數(shù)據(jù)采集系統(tǒng)結(jié)構(gòu)示意圖
圖2是FS-422張力傳感器和CP341串口模塊之間的RS-422電氣連接示意圖,采用全雙工模式。FS張力傳感器需外部供電,多臺(tái)FS張力傳感器之間通過(guò)RJ45網(wǎng)線(xiàn)并聯(lián)連接。
圖2 張力傳感器與CP341的硬件連接示意圖
FS系列在線(xiàn)張力傳感器出廠前如無(wú)特別要求,RS-422接口默認(rèn)設(shè)置為:波特率57 600bit/s,8位數(shù)據(jù)位,1位停止位,無(wú)校驗(yàn)。通信設(shè)定參數(shù)用戶(hù)不能修改。
S7-300 PLC的硬件組態(tài)中需對(duì)CP341進(jìn)行參數(shù)設(shè)置,通信協(xié)議選ASCII,波特率、數(shù)據(jù)位、停止位、校驗(yàn)方式設(shè)置成與FS-422張力傳感器一致,字符延時(shí)時(shí)間4ms,接口界面模式選全雙工(四線(xiàn)制),其他采用默認(rèn)設(shè)置,保存編譯下載到S7-300 CPU硬件組態(tài)。
FS張力傳感器的ASCII通信發(fā)送/接收數(shù)據(jù)命令格式如下:
a. 發(fā)送數(shù)據(jù)格式,地址+功能碼,無(wú)CR或LF;
b. 接收數(shù)據(jù)格式,值+CRLF。
FS張力傳感器ASCII協(xié)議的通信代碼見(jiàn)表1。
表1 FS-422張力傳感器的ASCII代碼
采用ASCII協(xié)議驅(qū)動(dòng)實(shí)現(xiàn)多站點(diǎn)輪詢(xún)通信。S7-300 PLC作為主站發(fā)出數(shù)據(jù)請(qǐng)求,張力傳感器各站作為從站應(yīng)答響應(yīng),主站通過(guò)發(fā)送不同地址站點(diǎn)的信息幀輪詢(xún)不同從站,從站根據(jù)地址站點(diǎn)信息來(lái)判斷是否是發(fā)給自己的信息,是發(fā)給自己的信息即做出相應(yīng)處理,否則不做處理。響應(yīng)數(shù)據(jù)幀中不含地址信息,通過(guò)定時(shí)輪詢(xún),完成后延時(shí)直接啟動(dòng)下一個(gè)作業(yè)。發(fā)送或接收數(shù)據(jù)無(wú)數(shù)據(jù)校驗(yàn)處理。發(fā)送數(shù)據(jù)幀和響應(yīng)數(shù)據(jù)幀的格式如圖3所示,發(fā)送數(shù)據(jù)幀占2個(gè)字節(jié),Byte1為從站地址,Byte2為功能碼;響應(yīng)數(shù)據(jù)幀7個(gè)字節(jié),Byte1~Byte5為響應(yīng)值;Byte6為CR字符;Byte7為L(zhǎng)F字符。
圖3 發(fā)送和接收數(shù)據(jù)幀格式
正確完成硬件接線(xiàn)與模塊參數(shù)設(shè)置后,通過(guò)編寫(xiě)PLC程序完成與在線(xiàn)張力傳感器數(shù)據(jù)采集通信,S7-300 PLC主站發(fā)送數(shù)據(jù)幀由CP341的功能塊FB8實(shí)現(xiàn),接收數(shù)據(jù)幀由功能塊FB7實(shí)現(xiàn)。為了實(shí)現(xiàn)對(duì)多個(gè)在線(xiàn)張力傳感器從站的輪詢(xún),PLC程序中設(shè)計(jì)了一個(gè)輪詢(xún)計(jì)數(shù)器,通過(guò)修改輪詢(xún)計(jì)數(shù)器的值,來(lái)修改主站發(fā)送數(shù)據(jù)幀中的從站地址標(biāo)識(shí)字符。
程序發(fā)送/接收數(shù)據(jù)輪詢(xún)時(shí)序如圖4所示,當(dāng)T1=T2時(shí)占空比1∶1,T1開(kāi)始時(shí),發(fā)送數(shù)據(jù)準(zhǔn)備,延時(shí)T11,發(fā)送數(shù)據(jù)同時(shí)清除接收數(shù)據(jù)緩沖區(qū);T2開(kāi)始時(shí)接收數(shù)據(jù),延時(shí)T21,將數(shù)據(jù)從接收緩沖區(qū)轉(zhuǎn)移到指定的從站數(shù)據(jù)存儲(chǔ)區(qū)中,延時(shí)T22,修改輪詢(xún)計(jì)數(shù)器,準(zhǔn)備輪詢(xún)下一個(gè)從站。
圖4 程序發(fā)送或接收數(shù)據(jù)的輪詢(xún)時(shí)序
從在線(xiàn)張力傳感器接收到的數(shù)據(jù)為ASCII字符,需將其轉(zhuǎn)換成整數(shù)類(lèi)型,便于在上位機(jī)顯示記錄。如發(fā)送請(qǐng)求命令“d”或“s”,則從站返回?cái)?shù)據(jù)Byte1~Byte5中Byte5為空格,Byte1~Byte4為實(shí)際響應(yīng)數(shù)據(jù),響應(yīng)數(shù)據(jù)表如圖5所示。
圖5 張力傳感器響應(yīng)數(shù)據(jù)表
圖5中,Byte1(千位)有3種類(lèi)型的ASCII字符響應(yīng):“1~9”為數(shù)字符號(hào);“-”為負(fù)數(shù)符號(hào);“sp”為空格符號(hào),表示數(shù)字“0”。對(duì)應(yīng)的Byte2~Byte4響應(yīng)ASCII字符如圖5所示。Byte1~Byte4字符(CHAR)轉(zhuǎn)換成整數(shù)(INT)的FC部分程序如下:
//Byte1變量轉(zhuǎn)換成整數(shù)
L #char1//檢查字符1(Byte1)的值是否在30H~39H之間
L 57
>I
JC err
TAK
L 48
JC err//如不,則轉(zhuǎn)到err
-I//計(jì)算Byte1
L 1000
*I
T #char1tmp
//Byte2變量轉(zhuǎn)換成整數(shù)
L #char2//檢查字符2(Byte2)的值是否在30H~39H之間
L 57
>I
JC err
TAK
L 48
JC err//如不,則轉(zhuǎn)到err
-I//計(jì)算Byte2
L 100
*I
T #char2tmp
//Byte3變量轉(zhuǎn)換成整數(shù)
L #char3//檢查字符3(Byte3)的值是否在30H~39H之間
L 57
>I
JC err
TAK
L 48
JC err//如不,則轉(zhuǎn)到err
-I//計(jì)算Byte3
L 10
*I
T #char3tmp
//Byte4變量轉(zhuǎn)換成整數(shù)
L #char4//檢查字符4(Byte4)的值是否在30H~39H之間
L 57
>I
JC err
TAK
L 48
JC err//如不,則轉(zhuǎn)到err
-I//計(jì)算Byte43
L 1
*I
T #char4tmp
L #char1tmp//Byte1~Byte4相加
L #char2tmp
+I
L #char3tmp
+I
L #char4tmp
+I
T #Result//Byte1~Byte4整數(shù)轉(zhuǎn)換結(jié)果
BEU
err:NOP 0
上述程序給出了當(dāng)Byte1為“1~9”、Byte2~Byte4為“0~9”的ASCII字符時(shí),字符(CHAR)轉(zhuǎn)換成整數(shù)(INT)的程序?qū)崿F(xiàn)方法。
上位監(jiān)控系統(tǒng)采用iFIX組態(tài)軟件,通過(guò)OPC與S7-300 PLC進(jìn)行以太網(wǎng)通信,將采集到的PLC在線(xiàn)張力傳感器數(shù)據(jù)在上位機(jī)上顯示、記錄、超限報(bào)警,并形成歷史記錄便于數(shù)據(jù)分析和跟蹤追溯。
基于ASCII通信的在線(xiàn)張力傳感器數(shù)據(jù)采集系統(tǒng),可對(duì)多臺(tái)張力傳感器檢測(cè)數(shù)據(jù)進(jìn)行實(shí)時(shí)采集,通過(guò)張力傳感器的數(shù)字輸出接口將其集成到現(xiàn)有的基于PLC的DCS系統(tǒng)中,組網(wǎng)方便,人機(jī)交互界面友好,數(shù)據(jù)處理靈活,系統(tǒng)投資成本也得以降低?,F(xiàn)場(chǎng)實(shí)際使用表明,基于CP341串口通信模塊的RS-422全雙工數(shù)據(jù)采集系統(tǒng),實(shí)時(shí)性好、穩(wěn)定性高,為化纖產(chǎn)品的質(zhì)量監(jiān)控提供了有效手段。