FB651 用于 多語(yǔ)言轉(zhuǎn)換
用于在三種語(yǔ)言之間切換消息視圖(數(shù)據(jù)庫(kù)視圖)和消息歸檔(數(shù)據(jù)庫(kù)歸檔)中的消息文本。在數(shù)據(jù)庫(kù)視圖和數(shù)據(jù)庫(kù)歸檔中僅交換包含該字符串的兩個(gè)長(zhǎng)度信息的消息文本(字符串[54])。數(shù)據(jù)庫(kù)視圖中的所有其他數(shù)據(jù)和
數(shù)據(jù)庫(kù)存檔保持不變。
通過(guò)相應(yīng)國(guó)家/地區(qū)標(biāo)志中的按鈕在HMI上切換語(yǔ)言。
控制器的CPU中每種語(yǔ)言都有八個(gè)數(shù)據(jù)塊(TextLib)。每個(gè)數(shù)據(jù)塊包含最大1024條消息,長(zhǎng)度為54個(gè)字符(STRING [54])。
數(shù)據(jù)塊包(每個(gè)語(yǔ)言變體1個(gè)包,每個(gè)DB 8個(gè)DB)僅在消息文本的語(yǔ)言上有所不同。結(jié)構(gòu),結(jié)構(gòu)和消息號(hào)/ MsgID相同。
FB802可以最大實(shí)現(xiàn)3種語(yǔ)言變體。語(yǔ)言變體最初設(shè)置為:
-1:德語(yǔ)
-2:通用語(yǔ)言,例如英語(yǔ)
-3:簡(jiǎn)體中文
語(yǔ)言變體“ 1:德語(yǔ)”和“ 2:通用”對(duì)應(yīng)于單字節(jié)字符(SBC)。簡(jiǎn)體中文的語(yǔ)言變體需要幾(3)個(gè)字節(jié)來(lái)表示一個(gè)中文字符。
TextLib的DB號(hào)在關(guān)聯(lián)的背景數(shù)據(jù)塊(FB650的STAT區(qū)域)中指定為初始值。定義了以下數(shù)據(jù)庫(kù)編號(hào):
第一語(yǔ)言 第二語(yǔ)言 第三語(yǔ)言
TextLib:德語(yǔ), 英文 中文
TextLib0 DB804 DB814 DB824
TextLib1 DB805 DB815 DB825
TextLib2 DB806 DB816 DB826
TextLib3 DB807 DB817 DB827
TextLib4 DB808 DB818 DB828
TextLib5 DB809 DB819 DB829
TextLib6 DB810 DB820 DB830
TextLib7 DB811 DB821 DB831
Notes DB文本庫(kù):
為了避免有關(guān)CPU上內(nèi)存空間的可能瓶頸,“屬性->通用部分2”中的DB文本庫(kù)應(yīng)具有“非保留”屬性/復(fù)選標(biāo)記。DB文本庫(kù)不必存儲(chǔ)在“數(shù)據(jù)保持存儲(chǔ)器”中。
定義FB651,DB:
-----------------------------------------
-與所使用的(目標(biāo))語(yǔ)言無(wú)關(guān)(對(duì)于每個(gè)中文字符為3Byte的中文),消息文本長(zhǎng)度也與字符串40相同。
-TextLib結(jié)構(gòu)保持不變。
因此,對(duì)于每種(目標(biāo))語(yǔ)言,總是有8個(gè)DB TextLib,每個(gè)DB TextLib具有1024條消息,消息長(zhǎng)度為字符串40。
-DB視圖(DB802)包含20條消息。
-DB歸檔文件(DB803)包含250條消息。
一直使用的WINCC信息語(yǔ)言
FB651 用于信息語(yǔ)言的DB塊切換
L 'LMsg'
T #Packet_ID.ID_1 傳送字符串'LMsg'到#Packet_ID.ID_1里
U #Freigabe 如果有允許條件跳轉(zhuǎn)到 IDOn處
SPB IDOn
L 'Libs'
SPA IDEn
IDOn: L '-On-' 將ON字符串傳送到#Packet_ID.ID_2里
IDEn: T #Packet_ID.ID_2
16#850008a0 = P#DBX 276.0 使用的當(dāng)前地址
L P##AktGewaehlteSprache
TAR2
UD DW#16#FFFFFF
+D
T #AnfangsAdresse.AktGewaehlteSprache 保存DB651的DBX276.0地址
16#85000920 = P#DBX 292.0
L P##SprachTextLibs
TAR2
UD DW#16#FFFFFF
+D
T #AnfangsAdresse.TextLibs_1_SBC_Deutsch 德語(yǔ)地址
L P#16.0 P#DBX308.0
+D
T #AnfangsAdresse.TextLibs_2_SBC_Weitere 英語(yǔ)地址
L P#16.0 P#DBX324.0
+D
T #AnfangsAdresse.TextLibs_3_xBC_ChinaVRC 中文地址
XBC1: LAR1 P##Temp_ANYPOINTER_1
L #Konstanten.AnzahlDBsXBC 長(zhǎng)度8
T W[AR1,P#2.0]
L #AnfangsAdresse.TextLibs_3_xBC_ChinaVRC 存儲(chǔ)中文的地址P#DBX324.0
T D[AR1,P#6.0] 都存在這個(gè)ANY類型的變量里
Cop1: L B#16#10
T B[AR1,P#0.0]
L B#16#5 INT
T B[AR1,P#1.0]
L #IDB_Nummer DB651
T W[AR1,P#4.0]
P#DB651 .DBX324.0 INT 8
CALL "BLKMOV" SFC20數(shù)據(jù)傳輸
SRCBLK:=#Temp_ANYPOINTER_1 將 P# DB651 .DBX324.0 INT 8 的數(shù)據(jù)發(fā)出
RET_VAL:=#SFCParameter.SFC20View_BLKMOV
DSTBLK:=#AktGewaehlteSprache 傳到P# DB651 .DBX292.0 INT 8
CALL "BLKMOV"
SRCBLK:=#AktGewaehlteSprache 發(fā)送P# DB651 .DBX292.0 INT 8 的數(shù)據(jù)
RET_VAL:=#SFCParameter.SFC20View_BLKMOV
DSTBLK:=#Temp_ANYPOINTER_2 傳到P# DB650 .DBX2.0 INT 8 用來(lái)改變語(yǔ)言
FB650: 語(yǔ)言轉(zhuǎn)換MeldeFB
使用此功能塊,將在中央消息歸檔和中央報(bào)告角度中輸入塊功能塊的消息。
該塊通常是稱為DB650的單獨(dú)的實(shí)例數(shù)據(jù)塊。
該塊針對(duì)用戶程序集中執(zhí)行一次,F(xiàn)B“ MeldeFB”不具有多實(shí)例功能,因此需要一個(gè)背景數(shù)據(jù)塊。該功能塊用于在中央消息歸檔和中央消息視圖中輸入來(lái)自模塊FB的消息。
輸入參數(shù):
COM_RST:該信號(hào)是重啟信號(hào),并與注釋“ restart”相連。
文本Lib0到文本Lib3:在此指定生成的文本庫(kù)。庫(kù)DB的符號(hào)名稱應(yīng)作為參數(shù)值(例如“ TextLib0”)。必須互連所有四個(gè)參數(shù)。
畫(huà)面Meldeanzeige 是顯示DB802里的內(nèi)容
畫(huà)面Meldearchiv_250 是顯示DB803里的內(nèi)容
通道參數(shù):
MsgV:此參數(shù)絕對(duì)必要,因?yàn)樗挟?dāng)前打開(kāi)的消息都在此輸入,并且可以由可視化系統(tǒng)顯示。
MsgQ:用于建立與實(shí)際消息通道的連接,通過(guò)指定UDT類型為“ MsgQueue”的DB,可以評(píng)估ModulFB提供的緩沖區(qū)。
MsgA:如果需要?dú)w檔,則必須提供類型為“ MsgArchive”的消息歸檔DB。該歸檔文件包含一個(gè)1000元素的純文本消息環(huán)形緩沖區(qū)。
DB801 信息緩沖
DB802 信息觀看
DB803 信息檔案
FC650 信息傳輸MeldSend
DB804-DB811 德語(yǔ)報(bào)警數(shù)據(jù)庫(kù)由SiVArc 生成
DB814-DB821中文報(bào)警數(shù)據(jù)庫(kù)由SiVArc 生成
LAR1 P##TextLib0 // TextLib0地址 例如: DB814
L DIW[AR1,P#0.0] // TextLib0 保存DB814
T #DBNr 保存DB塊號(hào)
SPA FLiS 跳轉(zhuǎn)到FliS -----找到的TextLib的DB號(hào)
FLiS: L #DBNr 814
L 0 //判斷DB塊是否是0
<>I
SPBN DTX4
如果DB塊是0 去這步DTX4: LAR1 P##UnDef 保存沒(méi)有報(bào)警信息號(hào)
AUF DB [#DBNr] //打開(kāi)DB塊DB814
L 1
BIS6: T #Index_S //搜索二進(jìn)制文件的索引
L DBW 8 //最大消息數(shù)1024
<=i??
SPBN EBS6
L #Index_S
+ -1
L #Konstanten.GroesseFeldInTextLib // TextLib中字段元素的大?。ㄒ宰止?jié)為單位)初始值是62
+ L#10
SLD 3
LAR1 //消息條目上的AR1
L DBD[AR1,P#0.0] // TextLib的field元素中消息的ID
L #MSG_ID //要搜索的消息ID
<>D
U(
L DBD[AR1,P#0.0] // TextLib的field元素中消息的ID
L 0
<>D
)
SPBN EBS6 //結(jié)束搜尋
L #MSG_ID
L DBD[AR1,P#0.0] // extLib的field元素中消息的ID
>D //搜索的元素大于當(dāng)前元素
L #Index_S
SLD 1 //Index_S := 2 * Index_S
SPBN BIS6 //左移
+ 1 //Index_S := 2 * Index_S + 1
SPA BIS6 //右移
------傷腦筋的一集,德國(guó)大眾的標(biāo)準(zhǔn)程序總是喜歡跳來(lái)跳去.但是邏輯性的穩(wěn)定性很好,這個(gè)塊我接觸了7年,還沒(méi)出過(guò)漏洞.
責(zé)任編輯:lq
-
控制器
+關(guān)注
關(guān)注
112文章
16416瀏覽量
178775 -
cpu
+關(guān)注
關(guān)注
68文章
10889瀏覽量
212400 -
數(shù)據(jù)庫(kù)
+關(guān)注
關(guān)注
7文章
3839瀏覽量
64544
原文標(biāo)題:MELD報(bào)警信息提示/存儲(chǔ)-解讀FB651
文章出處:【微信號(hào):gh_a8b121171b08,微信公眾號(hào):機(jī)器人及PLC自動(dòng)化應(yīng)用】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論