爱操在线_精品热_av网站免费观看_四虎精品影视_九九热99久久久国产盗摄_九月婷婷网_免费成人av在线_欧美激情第三页_天天狠天天操_日韩人妻无码中文字幕视频

歡迎光臨入喜工業控制技術(上海)有限公司
當前位置
首頁 > 新聞中心
西門子關于使用BLKMOV指令由BYTE轉換位字符串的疑問
2021/7/6 10:39:13
西門子關于使用BLKMOV指令由BYTE轉換位字符串的疑問

請問可位大神,在DB塊中,有一個區間是BYTE【120】,此區間是PC傳送給PLC的,并且內容應該是一串字符串。此時我使用了BLKMOV將BYTE[120]這個區間傳送到另一個我定義的STRING[120]的區間,轉換位字符串。這里有兩個問題:一是聽說前兩個BYTE是字符串的最長長度和有效長度,從第三個BYTE開始才是字符串內容,但是我實際試下來好像并非如此,從第一個BYTE開始就是內容了,請問這是怎么回事?第二個問題是究竟從BYTE【120】傳到STRING【120】他里面的內部規則是什么樣子的?


圖片說明:

           

1、你說的是通訊是系統加的數據流的頭和尾,接收后頭尾自動刪除了,所以你看不到這個信息,除非你自己寫通訊功能。
2、它是一一對應的
首先需要厘清2個問題:
1、BLKMOV指令,僅僅以“塊BLOCK”為單位搬運數據,沒有轉換數據類型的功能,是一個空間對另一個空間的存儲內容(二進制序列)的復制,不涉及數據類型。
2、字節BYTE并不等同CHAR。CHAR字符在計算機上存儲,是以其ASCII碼存儲的,占一個字節BTYE。換句話說,任何一個字符CHAR有一個BYTE數據與之對應。但并不是所有的byte類型數據都有與之對應的字符,如00H,進行ASCII碼轉換是空操作,沒有對應任何字符。
因此,你在Array of Byte到String進行轉換時,必須確認每個字節的值的有效性。
3、字符數組,不等同于字符串。字符數組是字符(ASCII碼)為元素的一個隊列。而字符串,除了這個隊列外,在隊列之前還必須有兩個字節用于申明:這個隊列允許的最大長度是多少,當前實際長度是多少,多了兩個字節。
再回到你的問題,建議分兩步實現:
1、BLKMOV的目標操作數,修改為:P#DB1074.DBX956.0為P#DB1074.DBX958.0后移兩個字節。
2、對DB1074.DBb957賦值120.

用 Chars_TO_Strg 指令。
如圖是數據定義、以及測試的示例
資料
https://www.ad.siemens.com.cn/productportal/prods/s7-1200_plc_easy_plus/07-Program/03-instruction/02-Extend/02-String.htm


圖片說明:

  

聯系方式
CONTACT US

電話:13818569113      15721373211

郵箱:fushidianji@139.com

網址:http://www.jiansujiabc.com

地址:上海青浦區北青公路7171號111-112室

用手機掃描二維碼關閉
主站蜘蛛池模板: 田阳县| 三都| 乳源| 宜黄县| 商城县| 竹山县| 株洲市| 重庆市| 玉门市| 萨嘎县| 福鼎市| 和平县| 化州市| 咸阳市| 大邑县| 策勒县| 禹州市| 方正县| 昭觉县| 文成县| 海宁市| 镇赉县| 德化县| 苏州市| 康马县| 华安县| 松桃| 武冈市| 永安市| 中宁县| 嘉善县| 聂拉木县| 商洛市| 盖州市| 乌拉特后旗| 柳江县| 阿克| 安康市| 长武县| 新巴尔虎左旗| 海阳市|