一、概述
工業(yè)控制系統(tǒng)使用中,上位機(jī)組態(tài)軟件、HMI觸摸屏等顯示設(shè)備與控制設(shè)備PLC按指定通訊協(xié)議進(jìn)行數(shù)據(jù)交換是最為基本的功能了,以施耐德Modbus TCP協(xié)議為例,只要提供了支持此協(xié)議的PLC中變量的Modbus寄存器地址和數(shù)據(jù)類(lèi)型,不管此PLC是哪個(gè)廠家的,都能實(shí)現(xiàn)HMI與PLC之間的數(shù)據(jù)交換。
二、問(wèn)題的引出
目前PLC編程的主流思路不再是使用基于絕對(duì)地址的定位變量了,而是使用變量名+數(shù)據(jù)類(lèi)型的非定位變量方式。以施耐德M580為例,其X80的I/O模塊的通道值都是用Device DDT非定位變量表示的,并且不能直接指定%M、%MW等地址與其對(duì)應(yīng)上。
這種表示方式對(duì)于OPC DA/UA及施耐德自己的HMI觸摸屏來(lái)說(shuō)沒(méi)有什么問(wèn)題,可以直接對(duì)應(yīng)上,但是對(duì)于支持標(biāo)準(zhǔn)Modbus TCP協(xié)議的其它廠家觸摸屏和上位機(jī)組態(tài)軟件來(lái)說(shuō)就不方便了,因?yàn)樾枰兞繉?duì)應(yīng)上標(biāo)準(zhǔn)Modbus寄存器地址才行。
三、解決辦法
孔乙己說(shuō)過(guò),回字有四種寫(xiě)法。同樣的,解決上述問(wèn)題也有多種方法可以實(shí)現(xiàn)。思路是將M580里面的DDT地址對(duì)應(yīng)到%M及%MW寄存器中,從而能和HMI進(jìn)行MODBUS TCP通訊,
3.1復(fù)制 Device DDT變量類(lèi)型直接鏈接絕對(duì)地址
此種方法的思路是新建一個(gè)結(jié)構(gòu)體變量,類(lèi)型輸入與X80 I/O模塊數(shù)據(jù)類(lèi)型一致如T_U_DIS_STD_IN_32,然后編寫(xiě)程序鏈接上絕對(duì)地址如%MW10,詳見(jiàn)下圖:
3.2 ST編程FOR循環(huán)鏈接絕對(duì)地址
第一種方法比較費(fèi)地址數(shù)量,適用于I/O模塊不多,地址富余的工程項(xiàng)目。
如果I/O模塊過(guò)多,可以嘗試?yán)肍OR循環(huán)編程批量鏈接地址的方式,如下圖:每一個(gè)I/O模塊使用一個(gè)FOR循環(huán)指令,將通道值(.VALUE)鏈接到%M或者%MW寄存器地址。
這種方式的優(yōu)勢(shì)在于省寄存器地址,不像方法1,不管開(kāi)關(guān)量還是模擬量,都必須關(guān)聯(lián)%MW寄存器地址,而且不需要的狀態(tài)等DDT變量也必須鏈接%MW寄存器地址。不過(guò),ST編程FOR循環(huán)鏈接絕對(duì)地址有一個(gè)缺點(diǎn),就是因?yàn)镈DT變量名稱(chēng)太過(guò)接近并且I/O模塊通道數(shù)不一樣,修改的時(shí)候容易眼花誤操作。
3.3編寫(xiě)自定義DFB功能塊鏈接絕對(duì)地址
舉例32通道點(diǎn)X80的DI模塊,DDT中變量眾多,我們只需要轉(zhuǎn)換32個(gè)通道數(shù)值即可;
新建DFB塊DI_EXCHANGE,輸入管腳DI_INT,數(shù)據(jù)類(lèi)型T_U_DIS_STD_IN_32(調(diào)用DFB時(shí),輸入就可只填寫(xiě)MOD_DIS_32_2),輸出管腳DO_OUT,數(shù)據(jù)類(lèi)型ARRAY[0..31] OF EBOOL;
編寫(xiě)邏輯程序,采用ST編程方式,把輸入點(diǎn)的值一個(gè)一個(gè)賦值到輸出,鏈接到%M寄存器,然后在MAST里面程序段中調(diào)用DI_EXCHANG即可,實(shí)現(xiàn)32點(diǎn)的DI模塊的通道值批量鏈接到了%M中。
同樣的,32點(diǎn)DO模塊的處理方法是類(lèi)似的,新建X80_DDO_32,定義輸入IN1,數(shù)據(jù)類(lèi)型T_U_DIS_STD_OUT_32,輸出OUT1,OUT2,數(shù)據(jù)類(lèi)型INT,編寫(xiě)ST程序鏈接上%M寄存器,在MAST里面調(diào)用新建的功能塊X80_DDO_32即可。
這些DFB功能塊做好后直接右鍵導(dǎo)出的功能塊類(lèi)型XDB格式,可以再導(dǎo)入到其它程序段中直接調(diào)用即可,移植方便,無(wú)須再次制作此DFB塊。
四 小結(jié)
針對(duì)M580的X80 I/O模塊的通道值都是用Device DDT非定位變量表示,并且不能直接指定%M、%MW等地址與其對(duì)應(yīng)上,但是觸摸屏和上位機(jī)組態(tài)軟件來(lái)說(shuō)需要變量對(duì)應(yīng)上標(biāo)準(zhǔn)Modbus寄存器地址的問(wèn)題,提出了3種解決方法。這3種方法特點(diǎn)明確,各有優(yōu)劣。
復(fù)制 Device DDT變量類(lèi)型直接鏈接絕對(duì)地址法簡(jiǎn)單明晰,適合剛?cè)胧┠偷戮幊檀箝T(mén)的初級(jí)工程師;ST編程FOR循環(huán)鏈接絕對(duì)地址法和編寫(xiě)自定義DFB功能塊鏈接絕對(duì)地址法對(duì)工程師編程水平要求稍高,通用性更強(qiáng),適合對(duì)施耐德Unity軟件編程操作有一定了解的工程師使用。
不管白貓還是黑貓,能夠抓住老鼠的貓就是好貓,同樣,不管使用何種方法操作,能耐解決實(shí)際問(wèn)題就是工程師能力的體現(xiàn),解決上述問(wèn)題的方法也不止這三種,更多的可能性等待你去探索實(shí)踐。
編輯:jq
-
plc
+關(guān)注
關(guān)注
5012文章
13304瀏覽量
463600 -
DFB
+關(guān)注
關(guān)注
1文章
25瀏覽量
9928 -
OPC
+關(guān)注
關(guān)注
7文章
344瀏覽量
46205 -
HMI
+關(guān)注
關(guān)注
9文章
589瀏覽量
48566
原文標(biāo)題:施耐德M580系列的X80 I/O模塊通道值非定位Device DDT變量鏈接到定位變量方法
文章出處:【微信號(hào):TalkBT,微信公眾號(hào):藍(lán)牙】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論