0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何進(jìn)行PLC字符與數(shù)據(jù)之間轉(zhuǎn)換的詳細(xì)資料概述

1bGT_GKYXT1508 ? 來源:未知 ? 2019-04-03 10:59 ? 次閱讀

學(xué)習(xí)PLC編程過程中不可避免會(huì)接觸到數(shù)據(jù)運(yùn)算、比較等操作,當(dāng)兩個(gè)操作數(shù)類型不同時(shí)就需要進(jìn)行轉(zhuǎn)換,所以數(shù)據(jù)轉(zhuǎn)換指令也是編程的重要指令。但是很多人往往不是太了解ASCII字符及字符與數(shù)據(jù)之間如何轉(zhuǎn)換,本文就著重介紹字符與數(shù)據(jù)之間如何進(jìn)行轉(zhuǎn)換。

有些設(shè)備在通信過程中發(fā)送的報(bào)文是ASCII形式,那么就需要將其轉(zhuǎn)換成數(shù)據(jù)。

一、名詞認(rèn)識(shí)

1. ASCII字符字符是指計(jì)算機(jī)中使用的字母、數(shù)字、字和符號(hào),包括:1、2、3、A、B、C、~!·#¥%……—*()——+等等。在ASCII編碼中,一個(gè)英文字母字符存儲(chǔ)需要1個(gè)字節(jié)

2.字符串

字符串變量是一個(gè)字符序列,其中的每個(gè)字符均以字節(jié)形式存儲(chǔ)。STRING數(shù)據(jù)類型的第一個(gè)字節(jié)定義字符串的長度,即字符字節(jié)數(shù)。

下圖所示為存儲(chǔ)器中以變量形式存儲(chǔ)的STRING數(shù)據(jù)類型。字符串的長度可以是0到254個(gè)字符。變量字符串的最大存儲(chǔ)要求為255個(gè)字節(jié)(長度字節(jié)加上254個(gè)字符)。

如果直接在程序編輯器中輸入常數(shù)字符串參數(shù)(最多126個(gè)字符),或在數(shù)據(jù)塊編輯器中初始化變量字符串(最多254個(gè)字符),則字符串賦值必須以雙引號(hào)字符開始和結(jié)束。

3.字符組

ASCII字符數(shù)組指令的字符輸入輸出采用BYTE數(shù)據(jù)類型。ASCII字符數(shù)組為被引用的字節(jié)地址序列,與字符串類似,只是沒有指定長度。由于未使用長度字節(jié),因此該數(shù)組并不是STRING數(shù)據(jù)類型??墒褂肁SCII字符串指令處理STRING數(shù)據(jù)類型的變量。

二、字符轉(zhuǎn)換指令類型

1)整數(shù)轉(zhuǎn)字符串(I_S):將整數(shù)字IN轉(zhuǎn)換為長度為8個(gè)字符的ASCII字符串。

格式(FMT)分配小數(shù)點(diǎn)右側(cè)的轉(zhuǎn)換精度,并指定小數(shù)點(diǎn)顯示為逗號(hào)還是句點(diǎn)。結(jié)果字符串會(huì)寫入從OUT處開始的9個(gè)連續(xù)字節(jié)中。

nnn表示小數(shù)點(diǎn)右側(cè)的位數(shù),可設(shè)置為0-5。c位指定使用逗號(hào)(c=1),使用小數(shù)點(diǎn)(c=0)作為整數(shù)部分與小數(shù)部分之間的分隔符。

下圖還給出了值的示例,其格式為:使用小數(shù)點(diǎn)(c = 0),小數(shù)點(diǎn)右側(cè)有三位數(shù)(nnn=011)。OUT處的值為下一字節(jié)地址中存儲(chǔ)的字符串的長度。

2)雙整數(shù)轉(zhuǎn)字符串(DI_S)

雙整數(shù)轉(zhuǎn)換為字符串的指令會(huì)將雙整數(shù)IN 轉(zhuǎn)換為長度為12個(gè)字符的ASCII字符串。格式(FMT) 分配小數(shù)點(diǎn)右側(cè)的轉(zhuǎn)換精度,并指定小數(shù)點(diǎn)顯示為逗號(hào)還是句點(diǎn)。結(jié)果字符串會(huì)寫入從OUT處開始的13個(gè)連續(xù)字節(jié)中。

輸出字符串的長度始終為12個(gè)字符。輸出緩沖區(qū)中小數(shù)點(diǎn)右側(cè)的位數(shù)由nnn字段指定。nnn字段的有效范圍是0到5。如果分配0位數(shù)到小數(shù)點(diǎn)右側(cè),則該值不顯示小數(shù)點(diǎn)。對于nnn大于5的值,輸出為12個(gè)ASCII空格字符組成的字符串。c位指定使用逗號(hào)(c=1)還是小數(shù)點(diǎn)(c=0)作為整數(shù)與小數(shù)部分之間的分隔符。格式的高4位必須是零。

下圖還給出了一個(gè)值的示例,其格式為:使用小數(shù)點(diǎn)(c = 0),小數(shù)點(diǎn)右側(cè)有四位數(shù)(nnn=100)。OUT處的值為下一字節(jié)地址中存儲(chǔ)的字符串的長度。

3)浮點(diǎn)數(shù)轉(zhuǎn)字符串(R_S)

實(shí)數(shù)轉(zhuǎn)換為字符串的指令會(huì)將實(shí)數(shù)值IN轉(zhuǎn)換為ASCII字符串。格式(FMT)分配小數(shù)點(diǎn)右側(cè)的轉(zhuǎn)換精度、小數(shù)點(diǎn)顯示為逗號(hào)還是點(diǎn)以及輸出字符串的長度。轉(zhuǎn)換結(jié)果放置在以O(shè)UT開頭的字符串中。結(jié)果字符串的長度在格式中指定,可以是3到15個(gè)字符。

CPU使用的實(shí)數(shù)格式最多支持7位有效數(shù)字。嘗試顯示7位以上有效數(shù)字會(huì)產(chǎn)生舍入錯(cuò)誤。輸出字符串的長度由ssss字段指定。0、1或2個(gè)字節(jié)大小無效。輸出緩沖區(qū)中小數(shù)點(diǎn)右側(cè)的位數(shù)由nnn字段分配。nnn字段的有效范圍是0到5。如果分配0位數(shù)到小數(shù)點(diǎn)右側(cè),則該值不顯示小數(shù)點(diǎn)。如果nnn大于5,或者因分配的輸出字符串長度太小而無法存儲(chǔ)轉(zhuǎn)換的值,則會(huì)用ASCII空格字符填充輸出字符串。c位指定使用逗號(hào)(c=1)還是小數(shù)點(diǎn)(c=0)作為整數(shù)與小數(shù)部分之間的分隔符。

下圖還給出了一個(gè)值的示例,其格式為:小數(shù)點(diǎn)(c = 0),小數(shù)點(diǎn)右側(cè)有一位數(shù)(nnn = 001),輸出字符串的長度為6個(gè)字符(ssss=0110)。OUT處的值為下一字節(jié)地址中存儲(chǔ)的字符串的長度。

4)字符串轉(zhuǎn)整數(shù)(S_I)

INDX 轉(zhuǎn)換的起始字符參數(shù),INDX值通常設(shè)為1,從字符串的第一個(gè)字符開始轉(zhuǎn)換。INDX值可設(shè)置為其它值,以在字符串中的不同點(diǎn)處開始轉(zhuǎn)換。當(dāng)輸入字符串包含不屬于要轉(zhuǎn)換的數(shù)字一部分的文本時(shí),可采用此方法,遇到不可轉(zhuǎn)換的將自動(dòng)終止。例如,如果輸入字符串為“Temperature:77.8”,可將INDX設(shè)置為13來跳過字符串開頭的單詞“Temperature:”轉(zhuǎn)換結(jié)果77。

如果INDX為1,則IN輸入字符串“12345”轉(zhuǎn)換成12345。如果INDX為2,則轉(zhuǎn)換為2345

5)字符串轉(zhuǎn)雙整數(shù)(S_DI):與S_I類似,此處不復(fù)述。

6)字符串轉(zhuǎn)浮點(diǎn)數(shù)(S_R)

將字符串轉(zhuǎn)換為實(shí)數(shù)的指令不會(huì)轉(zhuǎn)換以科學(xué)記數(shù)法或指數(shù)形式表示實(shí)數(shù)的字符串。該指令不會(huì)產(chǎn)生溢出錯(cuò)誤(SM1.1),但會(huì)將字符串轉(zhuǎn)換為指數(shù)之前的實(shí)數(shù),然后終止轉(zhuǎn)換。例如,字符串“1.234E6”會(huì)轉(zhuǎn)換為實(shí)數(shù)值1.234,而不會(huì)出現(xiàn)錯(cuò)誤。

7)整數(shù)轉(zhuǎn)ASCII字符組(ITA)

將整數(shù)值IN轉(zhuǎn)換為ASCII字符數(shù)組。格式參數(shù)FMT將分配小數(shù)點(diǎn)右側(cè)的轉(zhuǎn)換精度,并指定小數(shù)點(diǎn)顯示為逗號(hào)還是句點(diǎn)。得出的轉(zhuǎn)換結(jié)果將存入以O(shè)UT 分配的地址開始的8個(gè)連續(xù)字節(jié)中。

8)雙整數(shù)轉(zhuǎn)ASCII字符組(DTA)

將雙字IN轉(zhuǎn)換為ASCII字符數(shù)組。格式參數(shù)FMT指定小數(shù)點(diǎn)右側(cè)的轉(zhuǎn)換精度。得出的轉(zhuǎn)換結(jié)果將存入以O(shè)UT開頭的12個(gè)連續(xù)字節(jié)中。

輸出緩沖區(qū)的大小始終為12個(gè)字節(jié)。輸出緩沖區(qū)中小數(shù)點(diǎn)右側(cè)的位數(shù)由nnn字段分配。nnn字段的有效范圍是0到5。如果分配0位數(shù)到小數(shù)點(diǎn)右側(cè),則轉(zhuǎn)換后的值無小數(shù)點(diǎn)。對于nnn值大于5的情況,將使用ASCII空格字符填充輸出緩沖區(qū)。c位指定使用逗號(hào)(c=1)還是小數(shù)點(diǎn)(c=0)作為整數(shù)部分與小數(shù)部分之間的分隔符。4個(gè)最高有效位必須始終為零。

9)浮點(diǎn)數(shù)轉(zhuǎn)ASCII字符組(RTA)

將實(shí)數(shù)值IN轉(zhuǎn)換成ASCII字符。格式參數(shù)FMT指定小數(shù)點(diǎn)右側(cè)的轉(zhuǎn)換精度、小數(shù)點(diǎn)顯示為逗號(hào)還是點(diǎn)以及輸出緩沖區(qū)大小。得出的轉(zhuǎn)換結(jié)果會(huì)存入以O(shè)UT開頭的輸出緩沖區(qū)中。

得出的ASCII字符數(shù)(或長度)就是輸出緩沖區(qū)的大小,它的值在3到15個(gè)字節(jié)或字符之間。實(shí)數(shù)格式最多支持7位有效數(shù)字。嘗試顯示7位以上的有效數(shù)字將導(dǎo)致舍入錯(cuò)誤。

下圖顯示了RTA指令的格式操作數(shù)(FMT)。通過ssss字段分配輸出緩沖區(qū)的大小。0、1或2個(gè)字節(jié)大小無效。輸出緩沖區(qū)中小數(shù)點(diǎn)右側(cè)的位數(shù)由nnn字段分配。nnn字段的有效范圍是0到5。如果分配0位數(shù)到小數(shù)點(diǎn)右側(cè),則轉(zhuǎn)換后的值無小數(shù)點(diǎn)。如果nnn的值大于5或者分配的輸出緩沖區(qū)太小以致無法存儲(chǔ)轉(zhuǎn)換后的值,則使用ASCII空格填充輸出緩沖區(qū)。c位指定使用逗號(hào)(c=1)還是小數(shù)點(diǎn)(c=0)作為整數(shù)部分與小數(shù)部分之間的分隔符。

下圖給出了一個(gè)數(shù)值作為示例,其格式為使用小數(shù)點(diǎn)(c=0)、小數(shù)點(diǎn)右側(cè)有一位(nnn=100)、緩沖區(qū)的大小為六個(gè)字節(jié)(ssss=0111)。

10)十六進(jìn)制數(shù)轉(zhuǎn)ASCII(HTA)

將從輸入字節(jié)IN開始的十六進(jìn)制數(shù)轉(zhuǎn)換為從OUT開始的ASCII字符。由長度LEN分配要轉(zhuǎn)換的十六進(jìn)制數(shù)的位數(shù)。可以轉(zhuǎn)換的ASCII字符或十六進(jìn)制數(shù)的最大數(shù)目為255。

上圖vb20=16#4E,vb21=16#2D,轉(zhuǎn)換后VB30,VB31,VB32,VB33分別為‘4’‘E’‘2’‘D’。

11)ASCII轉(zhuǎn)十六進(jìn)制數(shù)(ATH)

將從IN開始,LEN個(gè)長度的 ASCII字符轉(zhuǎn)換為從OUT開始的十六進(jìn)制數(shù)??赊D(zhuǎn)換的最大ASCII字符數(shù)為255個(gè)字符。

如果VB0,VB1,VB2,VB3為‘3’,‘5’,‘8’,‘6’則轉(zhuǎn)換

后VB10=16#35,VB11=16#86。

以上介紹了所有與字符相關(guān)的轉(zhuǎn)換指令。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • plc
    plc
    +關(guān)注

    關(guān)注

    5001

    文章

    12942

    瀏覽量

    459193
  • 存儲(chǔ)器
    +關(guān)注

    關(guān)注

    38

    文章

    7365

    瀏覽量

    163088
  • ASCII
    +關(guān)注

    關(guān)注

    5

    文章

    171

    瀏覽量

    34947

原文標(biāo)題:PLC字符與數(shù)據(jù)之間如何進(jìn)行轉(zhuǎn)換?

文章出處:【微信號(hào):GKYXT1508,微信公眾號(hào):工控云學(xué)堂】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    關(guān)于PLC字符數(shù)據(jù)之間何進(jìn)行轉(zhuǎn)換

    學(xué)習(xí)PLC編程過程中不可避免會(huì)接觸到數(shù)據(jù)運(yùn)算、比較等操作,當(dāng)兩個(gè)操作數(shù)類型不同時(shí)就需要進(jìn)行轉(zhuǎn)換,所以數(shù)據(jù)
    的頭像 發(fā)表于 05-02 09:45 ?2.4w次閱讀
    關(guān)于<b class='flag-5'>PLC</b>中<b class='flag-5'>字符</b>與<b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>之間</b>如<b class='flag-5'>何進(jìn)行</b><b class='flag-5'>轉(zhuǎn)換</b>

    三角積分轉(zhuǎn)換器中的轉(zhuǎn)換延遲的詳細(xì)資料概述

    本文主要介紹的是Δ-Σ模數(shù)轉(zhuǎn)換器中的轉(zhuǎn)換延遲的詳細(xì)資料概述
    發(fā)表于 05-29 16:11 ?1次下載

    如何操作多臺(tái)過采樣數(shù)據(jù)轉(zhuǎn)換器的詳細(xì)資料概述

     本文的主要內(nèi)容介紹的是TI的資料如何操作多臺(tái)過采樣數(shù)據(jù)轉(zhuǎn)換器的詳細(xì)資料概述
    發(fā)表于 05-29 16:15 ?5次下載
    如何操作多臺(tái)過采樣<b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>轉(zhuǎn)換</b>器的<b class='flag-5'>詳細(xì)資料</b><b class='flag-5'>概述</b>

    LabVIEW在信捷PLC通訊上的應(yīng)用詳細(xì)資料概述

    本文檔詳細(xì)介紹的是LabVIEW在信捷PLC通訊上的應(yīng)用詳細(xì)資料概述
    發(fā)表于 06-07 08:00 ?321次下載

    西門子PLC應(yīng)用案例解析的詳細(xì)資料概述

    本文檔的主要內(nèi)容介紹的是西門子PLC應(yīng)用案例解析的詳細(xì)資料概述
    發(fā)表于 06-08 08:00 ?0次下載

    PLC常用基本環(huán)節(jié)梯形圖和詳細(xì)文字說明詳細(xì)資料概述

    PLC常用基本環(huán)節(jié)梯形圖和詳細(xì)文字說明詳細(xì)資料概述
    的頭像 發(fā)表于 07-06 11:41 ?9135次閱讀
    <b class='flag-5'>PLC</b>常用基本環(huán)節(jié)梯形圖和<b class='flag-5'>詳細(xì)</b>文字說明<b class='flag-5'>詳細(xì)資料</b><b class='flag-5'>概述</b>

    LabVIEW數(shù)值數(shù)組轉(zhuǎn)換二進(jìn)制字符串的詳細(xì)資料概述

    本文檔的主要內(nèi)容詳細(xì)介紹的是LabVIEW數(shù)值數(shù)組轉(zhuǎn)換二進(jìn)制字符串的詳細(xì)資料免費(fèi)下載,需要的下載吧。
    發(fā)表于 11-29 08:00 ?60次下載
    LabVIEW數(shù)值數(shù)組<b class='flag-5'>轉(zhuǎn)換</b>二進(jìn)制<b class='flag-5'>字符</b>串的<b class='flag-5'>詳細(xì)資料</b><b class='flag-5'>概述</b>

    數(shù)據(jù)庫教程之如何進(jìn)行數(shù)據(jù)更新和視圖的詳細(xì)資料說明

    本文檔的主要內(nèi)容詳細(xì)介紹的是數(shù)據(jù)庫教程之如何進(jìn)行數(shù)據(jù)更新的詳細(xì)資料說明。主要內(nèi)容包括了:1 插入數(shù)據(jù)2 修改
    發(fā)表于 12-18 15:07 ?2次下載

    數(shù)據(jù)庫教程之如何進(jìn)行數(shù)據(jù)查詢的詳細(xì)資料說明

    本文檔的主要內(nèi)容詳細(xì)介紹的是數(shù)據(jù)庫教程之如何進(jìn)行數(shù)據(jù)查詢的詳細(xì)資料說明主要內(nèi)容包括了:1 單表查詢2 連接查詢3 嵌套查詢4 集合查詢5 SELECT語句的一般形式
    發(fā)表于 12-18 15:07 ?8次下載

    何進(jìn)行51單片機(jī)的AD和DA轉(zhuǎn)換

    本文檔的主要內(nèi)容詳細(xì)介紹的是如何進(jìn)行51單片機(jī)的AD和DA轉(zhuǎn)換詳細(xì)資料說明。
    發(fā)表于 06-17 17:44 ?18次下載
    如<b class='flag-5'>何進(jìn)行</b>51單片機(jī)的AD和DA<b class='flag-5'>轉(zhuǎn)換</b>

    何進(jìn)行集成電路異或門電路的設(shè)計(jì)詳細(xì)資料說明

    本文檔的主要內(nèi)容詳細(xì)介紹的是如何進(jìn)行集成電路異或門電路的設(shè)計(jì)詳細(xì)資料說明。
    發(fā)表于 05-07 16:12 ?24次下載
    如<b class='flag-5'>何進(jìn)行</b>集成電路異或門電路的設(shè)計(jì)<b class='flag-5'>詳細(xì)資料</b>說明

    何進(jìn)行編碼器的長度設(shè)定及換算的詳細(xì)資料說明

    本文檔的主要內(nèi)容詳細(xì)介紹的是如何進(jìn)行編碼器的長度設(shè)定及換算的詳細(xì)資料說明。
    發(fā)表于 05-15 08:00 ?5次下載
    如<b class='flag-5'>何進(jìn)行</b>編碼器的長度設(shè)定及換算的<b class='flag-5'>詳細(xì)資料</b>說明

    何進(jìn)行PLC控制程序的設(shè)計(jì)詳細(xì)資料PPT說明

    本文檔的主要內(nèi)容詳細(xì)介紹的是如何進(jìn)行PLC控制程序的設(shè)計(jì)詳細(xì)資料PPT說明
    的頭像 發(fā)表于 07-28 09:47 ?5776次閱讀

    PLC編程電纜制作大全詳細(xì)資料概述

    本文檔的主要內(nèi)容詳細(xì)介紹的是PLC編程電纜制作大全詳細(xì)資料概述。
    發(fā)表于 04-26 08:00 ?4次下載
    <b class='flag-5'>PLC</b>編程電纜制作大全<b class='flag-5'>詳細(xì)資料</b><b class='flag-5'>概述</b>

    PLC控制系統(tǒng)的設(shè)計(jì)與應(yīng)用實(shí)例詳細(xì)資料概述

    本文檔的主要內(nèi)容詳細(xì)介紹的是PLC控制系統(tǒng)的設(shè)計(jì)與應(yīng)用實(shí)例詳細(xì)資料概述包括了:1.PLC控制系統(tǒng)設(shè)計(jì)的內(nèi)容和步驟,2.
    發(fā)表于 09-10 17:16 ?65次下載
    <b class='flag-5'>PLC</b>控制系統(tǒng)的設(shè)計(jì)與應(yīng)用實(shí)例<b class='flag-5'>詳細(xì)資料</b><b class='flag-5'>概述</b>