在進行PLC與PC進行TCP通訊時如何運用CP傳過來的數(shù)值呢?
下面我做兩種方式的解析: 1.簡單粗暴!2.精簡功能塊.
1.簡單粗暴!
ASCII字符和等價的十六進制值
簡單粗暴的轉(zhuǎn)換方式:
有時我們會用PC給西門子PLC發(fā)送幾個字符,我們?nèi)绾巫x取字符呢?
我們先要進行一個BCD轉(zhuǎn)2進制的轉(zhuǎn)換,然后再運用減法取出我們需要的數(shù)
1.將字符存儲的字節(jié)轉(zhuǎn)存到字里
MOVE (分配值)通過啟用EN輸入來激活。在IN輸入端指定的值將復制到在OUT輸出端指定的地址。ENO與EN的邏輯狀態(tài)相同。MOVE只能復制BYTE、WORD或DWORD數(shù)據(jù)對象。
2.使 BCD碼轉(zhuǎn)換整數(shù)
BCD_I (BCD碼轉(zhuǎn)換為整型)將參數(shù)IN的內(nèi)容以三位BCD碼數(shù)字(+/- 999)讀取,并將其轉(zhuǎn)換為整型值(16位)。整型值的結(jié)果通過參數(shù)OUT輸出。
3. 三進行減數(shù)運算將字符格式的標示30減去,剩下的就是字符的數(shù)轉(zhuǎn)化成了整數(shù)
SUB_I 減去整數(shù):在啟用(EN)輸入端通過邏輯"1"激活SUB_I (減去整數(shù))。從IN1中減去IN2,并通過OUT查看結(jié)果。如果該結(jié)果超出了整數(shù)(16位)允許的范圍,OV位和OS位將為"1"并且ENO為邏輯"0",這樣便不執(zhí)行此數(shù)學框后由ENO連接的其它函數(shù)(層疊排列)。
2.精簡功能塊.
使用西門子標準塊:
專門轉(zhuǎn)換字符為16進制的FC97
FC94
ATH功能將IN指向的ASCII字符串轉(zhuǎn)換為壓縮十六進制數(shù)字,然后將其存儲在OUT指向的目標表格中。由于ASCII字符需要8位,而十六進制數(shù)字只需要4位,輸出字長度僅是字長度的一半。按其讀入順序轉(zhuǎn)換ASCII字符并將結(jié)果置于十六進制輸出中。如果ASCII字符數(shù)為奇數(shù),則最后轉(zhuǎn)換的十六進制數(shù)字的最右側(cè)半個字節(jié)以零填充。
IN :*Pointer 指向ASCII字符串的起始位置。
N :INT 要轉(zhuǎn)換的ASCII輸入字符數(shù)
OUT :*Pointer 指向表格的起始位置。
如果輸入I0.0的信號狀態(tài)為1 (激活),則執(zhí)行ATH指令。在本例中,輸入?yún)?shù)N為5表示要轉(zhuǎn)換五個ASCII字符。ASCII字符以IN指針位置DB1.DBX10.0為起點,存儲在數(shù)據(jù)塊1中。輸出字符串將以OUT指針位置DB2.DBX0.0 (數(shù)據(jù)塊2)為起點存儲。由于ASCII輸入字符數(shù)為奇數(shù),最后一個十六進制位最右邊的半個字節(jié)中的值全部為零,從而生成十六進制值0xC0。(有關每個ASCII字符的等價十六進制值,請參考下表。)
給入的字符
輸出的16進制數(shù)
例子:
DB1里的字符數(shù)
DB2里的給定值
原文標題:西門子PLC-如何讀取字符里數(shù)
文章出處:【微信公眾號:機器人及PLC自動化應用】歡迎添加關注!文章轉(zhuǎn)載請注明出處。
責任編輯:haq
-
plc
+關注
關注
5037文章
13919瀏覽量
474540 -
西門子
+關注
關注
98文章
3173瀏覽量
118245 -
PC
+關注
關注
9文章
2151瀏覽量
156535
原文標題:西門子PLC-如何讀取字符里數(shù)
文章出處:【微信號:gh_a8b121171b08,微信公眾號:機器人及PLC自動化應用】歡迎添加關注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
工業(yè)智能網(wǎng)關可以采集西門子PLC嗎
OPC UA數(shù)采網(wǎng)關實現(xiàn)西門子PLC數(shù)據(jù)采集到MES平臺

PLC邊緣計算網(wǎng)關采集西門子PLC數(shù)據(jù)過程
Profinet轉(zhuǎn)Profinet網(wǎng)關應用在霍尼韋爾DCS與西門子1500PLC通訊案例

西門子PLC S7-1500系列介紹

Profinet 轉(zhuǎn) EtherNet/IP 網(wǎng)關怎樣化解西門子 S7 - 1500 PLC 與 AB PLC 之間的通訊難題

NPN和PNP器件與西門子PLC的連接與選型

評論