1 引言
在傳統(tǒng)的plc——變頻控制集成系統(tǒng)中,變頻器的啟動(dòng)/停止與故障監(jiān)控由plc通過開關(guān)量實(shí)現(xiàn)端對端控制。變頻器頻率是由plc通過模擬量輸出端口輸出0~5(10)v或4~20ma信號控制,需要plc配置昂貴的模擬量輸出端口模塊。變頻器出現(xiàn)故障時(shí)由plc讀取變頻器的故障報(bào)警觸點(diǎn),對具體故障原因并不清楚,需查詢變頻器報(bào)警信息后再閱讀變頻器說明書才知道。隨著交流變頻控制系統(tǒng)及通訊技術(shù)的發(fā)展,可以利用plc及變頻器的串行通訊的方式來實(shí)現(xiàn)plc對變頻器的控制。
2 變頻器的選型
danfoss vlt系列變頻調(diào)速器提供串行通訊技術(shù)的支持。它所支持的串行通訊技術(shù)包括標(biāo)準(zhǔn)rs-485、profidrive、lonworks在內(nèi)的多種現(xiàn)場總線方式。其中,rs-485通訊方式為用戶提供了無需附加任何費(fèi)用的、最為廉價(jià)實(shí)用的串行通訊方式。只需按照danfoss vlt變頻器規(guī)定的通訊數(shù)據(jù)結(jié)構(gòu)、控制字和狀態(tài)字格式發(fā)送數(shù)據(jù)即可實(shí)現(xiàn)與vlt變頻的通訊。vlt為用戶提供了兩種控制字和狀態(tài)字格式標(biāo)準(zhǔn):即danfoss標(biāo)準(zhǔn)的danfoss fc協(xié)議和profibus標(biāo)準(zhǔn)的profidrive協(xié)議。其中fc協(xié)議為用戶提供了更多的與vlt有關(guān)的控制信息和狀態(tài)信息。本項(xiàng)目中選用danfoss fc協(xié)議。
3 plc的選型
西門子工控產(chǎn)品在工控領(lǐng)域應(yīng)用市場中有較高的占有率。s7-200系列是西門子simatic plc家族中的小規(guī)模plc成員,自由通訊口方式是s7-200 plc的一個(gè)特色的功能,它使s7-200 plc可以由用戶自己定義通訊協(xié)議。利于自由通訊口方式,在本系統(tǒng)中plc可以與變頻器和方便連接。plc通過自由通訊口方式與變頻器通訊,控制變頻器的運(yùn)行,讀取變頻器自身的電壓、電流、功率、頻率和過壓、過流、過負(fù)荷等全部報(bào)警信息等參數(shù),這比通過外部端口控制變頻器的運(yùn)行具有較高的可靠性,節(jié)省了plc寶貴的i/o端口,又獲的了大量變頻器的信息。在本例中,作者將按照danfoss fc協(xié)議來對s7-200的自由口進(jìn)行編程。
4 vlt串行通訊
4.1 vlt通訊原理
vlt變頻器的串行通訊為異步半雙工的方式,使用字節(jié)奇偶校驗(yàn)和塊傳送異或校驗(yàn)方法。每個(gè)變頻器都配備有一個(gè)標(biāo)準(zhǔn)的rs-485通訊端口,使協(xié)議可以通過rs-485電氣接口來進(jìn)行傳輸。plc為主機(jī),變頻器為從機(jī),系統(tǒng)電碼的傳輸由主機(jī)控制,主機(jī)不斷發(fā)出某個(gè)地址的電碼給從機(jī),等待從機(jī)的響應(yīng)。主機(jī)最多能帶31個(gè)從機(jī),在有中繼器的情況下,可以增加到126個(gè)從機(jī),也就是從機(jī)的地址最多可以設(shè)定到126。通訊時(shí),每一個(gè)字節(jié)從一個(gè)起始位開始實(shí)行傳送,然后再傳遞8個(gè)數(shù)據(jù)位,相應(yīng)地組成一個(gè)字節(jié),每個(gè)字節(jié)由一個(gè)奇偶校驗(yàn)位來驗(yàn)證傳送的正確性,然后由一個(gè)終止位結(jié)束。這樣一個(gè)字節(jié)共由11個(gè)位組成。
4.2 vlt電碼結(jié)構(gòu)
每個(gè)電碼由一個(gè)起始字節(jié)(stx)開始,這個(gè)起始字節(jié)為stx=02h。隨后緊跟一個(gè)表示電碼長度(lge)的字節(jié)和表示變頻器地址的字節(jié)(adr)。然后是一些數(shù)據(jù)字節(jié)(隨電碼類型而變)。整個(gè)電碼由一個(gè)數(shù)據(jù)控制字節(jié)(bcc)來結(jié)束。結(jié)構(gòu)如附表。
[align=center]
附表 vlt電碼結(jié)構(gòu)[/align]
在上述數(shù)據(jù)結(jié)構(gòu)中:
(1) pke占用兩個(gè)字節(jié),包括參數(shù)命令類型和參數(shù)數(shù)目;
(2) ind為索引,也占用兩個(gè)字節(jié),索引字節(jié)用于表明它是一個(gè)讀命令還是寫命令。在讀命令中必須具有0400h的格式,在寫命令中必須具有0500h的格式;
(3) pwe為參數(shù)值塊。占用四個(gè)字節(jié),分為高字(pwe h)和低字(pwe l)?!氨热缰鳈C(jī)要改變當(dāng)前的變頻器參數(shù),新的參數(shù)就應(yīng)寫在參數(shù)pwe中發(fā)送給變頻器;”
(4) pcd為過程塊,占用4個(gè)字節(jié)。它有兩種狀態(tài),當(dāng)主機(jī)發(fā)給從機(jī)時(shí),pcd1為控制字,pcd2為參考值;當(dāng)從機(jī)發(fā)給主機(jī)時(shí),pcd1為狀態(tài)字,pcd2為當(dāng)前的輸出頻率;
(5) bcc為數(shù)據(jù)控制字節(jié)。由它來對接收到的命令進(jìn)行檢驗(yàn)正確與否。它的初始值為0,然后對該字節(jié)以前的所有字節(jié)進(jìn)行異或。
5 plc編程示例
5.1 變頻器初始化子程序
plc在第一次掃描時(shí)執(zhí)行初始化子程序,對端口及rcv指令進(jìn)行初始化。為了增加程序的可靠性,在初始化完成后,如果檢測到端口空閑時(shí)則運(yùn)行rcv指令使端口處于接受狀態(tài)。初始化子程序如下:
network 1 // 網(wǎng)絡(luò)標(biāo)題
檢測端口空閑可編在主程序中
// 設(shè)定端口屬性
ld sm0.0
movb 73, smb30
network 2
// 接收信息狀態(tài)
ld sm0.0
movb 102, smb87
network 3
ld sm0.0
movb 16#02, smb88
movb 50, smb92
movb 50, smb94
r sm87.2, 1
network 4
ld sm0.0
atch int1, 23
//連接口0接收完成的中斷
network 5
ld sm0.0
atch int0, 9
//連接口0發(fā)送完成的中斷
network 6
ld sm0.0
eni
//中斷允許
network 7
ld sm0.0
movd &vb250, vd220
//裝入地址指針
movb 0, vb242
//bcc碼寄存器清零
movd &vb300, vd224
//裝入地址指針
movb 0, vb246
//bcc碼寄存器清零
5.2 變頻器參數(shù)修改子程序
當(dāng)要改變當(dāng)前變頻狀態(tài)的信息需傳送時(shí),調(diào)用“控制子程序”。首先它要禁止端口的接收,然后對控制電碼進(jìn)行編輯和bcc檢驗(yàn)碼計(jì)算,并發(fā)送;當(dāng)沒有改變當(dāng)前變頻狀態(tài)的信息需傳送時(shí),調(diào)用“空命令”子程序。因?yàn)閜lc如果要讀取變頻器的當(dāng)前工作狀態(tài),就要給變頻器發(fā)送命令,而“控制子程序”代碼繁瑣,執(zhí)行效率不高,我們可以將“空命令”程序需傳送的電碼預(yù)先編排好(可以用短電碼),“控制子程序”程序代碼如下:
network 1
ld sm0.0 //停止端口0的接收
r sm87.7, 1
rcv vb300, 0
network 2
ld l0.0
movw 16#047c, vw211
movw lw1, vw213
network 3
ld l0.1
movw 16#0434, vw211
movw 0, vw213
network 4
ld sm0.0
movw lw1, vw213
network 5 // 網(wǎng)絡(luò)標(biāo)題
// 網(wǎng)絡(luò)注釋
ld sm0.0
movb 16#02, vb200
movb 16#0e, vb201
movb lb3, vb202
movd 0, vd203
movd 0, vd207
hta vb200, vb250, 15
network 6
ld sm0.0 //計(jì)算bcc校驗(yàn)碼
for vw240, +1, +15
network 7
ld sm0.0
xorb *vd220, vb242
network 8
ld sm0.0
incd vd220
network 9
next
network 10
ld sm0.0
hta vb242, vb265, 1
//bcc校驗(yàn)碼寫入發(fā)送緩沖區(qū)
network 11
ldb= vb251, 16#0e
//發(fā)送緩沖區(qū)準(zhǔn)備好后進(jìn)行發(fā)送
s s0.1, 1
network 12
lscr s0.1
network 13
ld sm4.5
xmt vb250, 0
network 14
scre
5.3 變頻器通訊完成處理
發(fā)送完成后執(zhí)行發(fā)送完成中斷程序,它的操作包括:允許rcv;bcc碼寄存器清零;重新裝入用于計(jì)算bcc校驗(yàn)碼的地址指針;接收緩沖區(qū)中存放指令結(jié)束字符的字節(jié)清零,用來判斷下一條指令格式是否正確。
接收完成后執(zhí)行接收完成中斷程序,它會(huì)將接收緩沖區(qū)中的十六進(jìn)制ascii碼還原成數(shù)據(jù)并保存。然后調(diào)用“接收處理”子程序。它主要是求出接收緩沖區(qū)中指令的bcc校驗(yàn)碼并與指令中的bcc校驗(yàn)碼進(jìn)行比對,并對電碼中的數(shù)據(jù)進(jìn)行處理。
6 結(jié)束語
使用此方法采用西門子plc通過自由口使用danfoss fc協(xié)議對danfoss變頻器進(jìn)行控制,極大地減少了線路連接的復(fù)雜性,避免了現(xiàn)場可能的各種電磁干擾對控制設(shè)備的影響。