衡阳派盒市场营销有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

關于PLC中字符與數據之間如何進行轉換

1X4o_GKB1508 ? 來源:fqj ? 2019-05-02 09:45 ? 次閱讀

學習PLC編程過程中不可避免會接觸到數據運算、比較等操作,當兩個操作數類型不同時就需要進行轉換,所以數據轉換指令也是編程的重要指令。但是很多人往往不是太了解ASCII字符及字符與數據之間如何轉換,本文就著重介紹字符與數據之間如何進行轉換。

有些設備在通信過程中發送的報文是ASCII形式,那么就需要將其轉換成數據。

一、名詞認識

1. ASCII字符字符是指計算機中使用的字母、數字、字和符號,包括:1、2、3、A、B、C、~!·#¥%……—*()——+等等。在ASCII編碼中,一個英文字母字符存儲需要1個字節

2.字符串

字符串變量是一個字符序列,其中的每個字符均以字節形式存儲。STRING數據類型的第一個字節定義字符串的長度,即字符字節數。

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

關于PLC中字符與數據之間如何進行轉換

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

3.字符組

ASCII字符數組指令的字符輸入輸出采用BYTE數據類型。ASCII字符數組為被引用的字節地址序列,與字符串類似,只是沒有指定長度。由于未使用長度字節,因此該數組并不是STRING數據類型。可使用ASCII字符串指令處理STRING數據類型的變量。

二、字符轉換指令類型

1)整數轉字符串(I_S):將整數字IN轉換為長度為8個字符的ASCII字符串。

關于PLC中字符與數據之間如何進行轉換

格式(FMT)分配小數點右側的轉換精度,并指定小數點顯示為逗號還是句點。結果字符串會寫入從OUT處開始的9個連續字節中。

關于PLC中字符與數據之間如何進行轉換

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

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

關于PLC中字符與數據之間如何進行轉換

2)雙整數轉字符串(DI_S)

雙整數轉換為字符串的指令會將雙整數IN 轉換為長度為12個字符的ASCII字符串。格式(FMT) 分配小數點右側的轉換精度,并指定小數點顯示為逗號還是句點。結果字符串會寫入從OUT處開始的13個連續字節中。

關于PLC中字符與數據之間如何進行轉換

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

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

關于PLC中字符與數據之間如何進行轉換

關于PLC中字符與數據之間如何進行轉換

3)浮點數轉字符串(R_S)

實數轉換為字符串的指令會將實數值IN轉換為ASCII字符串。格式(FMT)分配小數點右側的轉換精度、小數點顯示為逗號還是點以及輸出字符串的長度。轉換結果放置在以OUT開頭的字符串中。結果字符串的長度在格式中指定,可以是3到15個字符。

關于PLC中字符與數據之間如何進行轉換

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

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

關于PLC中字符與數據之間如何進行轉換

關于PLC中字符與數據之間如何進行轉換

4)字符串轉整數(S_I)

關于PLC中字符與數據之間如何進行轉換

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

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

5)字符串轉雙整數(S_DI):與S_I類似,此處不復述。

關于PLC中字符與數據之間如何進行轉換

6)字符串轉浮點數(S_R)

將字符串轉換為實數的指令不會轉換以科學記數法或指數形式表示實數的字符串。該指令不會產生溢出錯誤(SM1.1),但會將字符串轉換為指數之前的實數,然后終止轉換。例如,字符串“1.234E6”會轉換為實數值1.234,而不會出現錯誤。

關于PLC中字符與數據之間如何進行轉換

7)整數轉ASCII字符組(ITA)

將整數值IN轉換為ASCII字符數組。格式參數FMT將分配小數點右側的轉換精度,并指定小數點顯示為逗號還是句點。得出的轉換結果將存入以OUT 分配的地址開始的8個連續字節中。

關于PLC中字符與數據之間如何進行轉換

關于PLC中字符與數據之間如何進行轉換

關于PLC中字符與數據之間如何進行轉換

8)雙整數轉ASCII字符組(DTA)

將雙字IN轉換為ASCII字符數組。格式參數FMT指定小數點右側的轉換精度。得出的轉換結果將存入以OUT開頭的12個連續字節中。

關于PLC中字符與數據之間如何進行轉換

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

關于PLC中字符與數據之間如何進行轉換

關于PLC中字符與數據之間如何進行轉換

9)浮點數轉ASCII字符組(RTA)

將實數值IN轉換成ASCII字符。格式參數FMT指定小數點右側的轉換精度、小數點顯示為逗號還是點以及輸出緩沖區大小。得出的轉換結果會存入以OUT開頭的輸出緩沖區中。

關于PLC中字符與數據之間如何進行轉換

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

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

關于PLC中字符與數據之間如何進行轉換

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

關于PLC中字符與數據之間如何進行轉換

10)十六進制數轉ASCII(HTA)

將從輸入字節IN開始的十六進制數轉換為從OUT開始的ASCII字符。由長度LEN分配要轉換的十六進制數的位數。可以轉換的ASCII字符或十六進制數的最大數目為255。

關于PLC中字符與數據之間如何進行轉換

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

11)ASCII轉十六進制數(ATH)

將從IN開始,LEN個長度的 ASCII字符轉換為從OUT開始的十六進制數。可轉換的最大ASCII字符數為255個字符。

關于PLC中字符與數據之間如何進行轉換

如果VB0,VB1,VB2,VB3為‘3’,‘5’,‘8’,‘6’則轉換

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

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • plc
    plc
    +關注

    關注

    5016

    文章

    13387

    瀏覽量

    465385
  • 數據
    +關注

    關注

    8

    文章

    7139

    瀏覽量

    89574
  • 指令
    +關注

    關注

    1

    文章

    611

    瀏覽量

    35812

原文標題:PLC中字符與數據之間如何轉換

文章出處:【微信號:GKB1508,微信公眾號:工控幫】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    運用Labview如何進行圖像采集與字符識別?

    運用Labview如何進行圖像采集與字符識別?
    發表于 04-27 16:06

    模擬地和數字地之間是如何進行連接的

    模擬地和數字地之間是如何進行連接的?電感與磁珠的區別在哪?電感和磁珠的什么聯系與區別呢?
    發表于 11-04 06:15

    stm32與GPS模塊之間數據是如何進行傳輸的呢

    什么是GPS模塊?GPS數據類型及格式有哪些?stm32與GPS模塊之間數據是如何進行傳輸的呢?
    發表于 12-10 06:07

    何進行字符顏色更改和高亮

    在做第九屆省賽電子定時器的時候,里面有一個要求是高亮顯示某個字符,然后就研究了一下如何進行字符顏色更改和高亮。
    發表于 12-16 07:13

    應用程序和驅動程序之間是如何進行數據交換的

    應用程序和驅動程序之間是如何進行數據交換的?
    發表于 12-23 08:05

    何進行AD模數轉換

    什么是模擬信號和數字信號呢?如何進行AD模數轉換呢?AD轉換的主要性能指標是什么?
    發表于 01-20 07:11

    講解變頻器與PLC之間何進行配合控制

    我們以西門子V20變頻器為例,來講解變頻器與PLC之間何進行配合控制。由于PLC標配不帶模擬量輸入輸出功能,所以選用一個模擬量輸入輸出模塊EMAM06
    的頭像 發表于 08-08 17:46 ?2.5w次閱讀

    何進行GB2312、 BIG5、UTF8和Unicode之間的互換

    本文檔的主要內容詳細介紹的是如何進行GB2312、 BIG5、UTF8和Unicode之間的互換。先轉成寬字符
    發表于 04-16 17:27 ?14次下載

    何進行PLC字符數據之間轉換的詳細資料概述

    學習PLC編程過程不可避免會接觸到數據運算、比較等操作,當兩個操作數類型不同時就需要進行轉換,所以數據
    的頭像 發表于 04-03 10:59 ?1.2w次閱讀
    如<b class='flag-5'>何進行</b><b class='flag-5'>PLC</b><b class='flag-5'>字符</b>與<b class='flag-5'>數據</b><b class='flag-5'>之間</b><b class='flag-5'>轉換</b>的詳細資料概述

    頁面之間何進行傳值詳細方法

    本文檔的主要內容詳細介紹的是頁面之間何進行傳值詳細方法。
    發表于 10-23 17:20 ?5次下載
    頁面<b class='flag-5'>之間</b>如<b class='flag-5'>何進行</b>傳值詳細方法

    PLC與變頻器是如何進行通訊的

    PLC和變頻器在工業生產和科技發展中有很重要的作用,目前在工業自動化和機械自動化領域應用也是非常廣泛,給工業生產和生活帶來了很多便利。因此,今天我們就想和大家聊聊PLC和變頻器是如何進行通訊的,它們
    的頭像 發表于 09-28 15:38 ?5773次閱讀

    Labview字符串和ASCII之間的相互轉換的VI源碼分享

    Labview字符串和ASCII之間的相互轉換的VI源碼分享
    發表于 12-01 10:13 ?98次下載

    Python字符編碼轉換

    UNICODE字符串可以與任意字符編碼的字節進行相互轉換,如圖: 那么大家很容易想到一個問題,就是不同的字符編碼的字節可以通過Unicode相互轉換
    的頭像 發表于 07-05 16:25 ?1149次閱讀
    Python<b class='flag-5'>字符</b>編碼<b class='flag-5'>轉換</b>

    YUV和RGB是如何進行轉換

    YUV 和 RGB 轉化 凡是渲染到屏幕上的東西(文字、圖片或者其他),都要轉換為 RGB 的表示形式,那么 YUV 的表示形 式和 RGB的表示形式之間是如何進行轉換的呢? 為了實現
    的頭像 發表于 07-30 10:06 ?2044次閱讀

    PLC和變頻器是如何進行通訊

    與變頻器之間需要通過特定的通訊方式進行數據交換和控制指令的傳輸。本文將詳細闡述PLC與變頻器之間的通訊原理、方法、步驟以及實際應用的注意事
    的頭像 發表于 05-31 15:20 ?3251次閱讀
    百家乐筹码14克粘土| 百家乐游戏软件出售| 实战百家乐官网博彩正网| 免费百家乐官网过滤软件| 最好的百家乐博彩网站| 太阳城百家乐官网坡解| 怎样玩百家乐官网的玩法技巧和规则| 百家乐如何看牌| 盛大百家乐的玩法技巧和规则| 平顺县| 海王星百家乐官网技巧| 大发888官方正版网| 百家乐官网辅助分析软件| 澳门1百家乐网| 鼎丰娱乐城开户| 百家乐胜率在哪| 宝清县| 百家乐真人荷官| 百家乐的分析| 百家乐官网牌路分析仪| 百家乐庄和闲的赌法| 皇冠网百家乐官网平台| 百家乐现金平台排名| 德州扑克荷官| 百家乐经验在哪找| 百家乐官网开户博彩论坛| 威尼斯人娱乐城赌场| 戒掉百家乐官网的玩法技巧和规则 | 任我赢百家乐官网自动投注系统 | 百家乐一柱擎天| 百家乐官网投注很不错| 百家乐学院教学视频| 大发888m磨卡游戏| 百家乐官网永利娱乐平台| 米泉市| 网上百家乐分析软件| 百家乐官网代理在线游戏可信吗网上哪家平台信誉好安全 | 百家乐获胜秘决百家乐获胜秘诀| 乐天堂百家乐官网娱乐场| 豪门国际网上娱乐| 如何胜百家乐的玩法技巧和规则 |