zhou1211
級(jí)別: 略有小成
精華主題: 1 篇
發(fā)帖數(shù)量: 205 個(gè)
工控威望: 362 點(diǎn)
下載積分: 1172 分
在線時(shí)間: 66(小時(shí))
注冊(cè)時(shí)間: 2013-11-04
最后登錄: 2024-09-18
查看zhou1211的 主題 / 回貼
樓主  發(fā)表于: 2021-01-17 15:34
1:
那比如說做通訊的時(shí)候,考慮到對(duì)方讀取具體地址,如:
stAdsCom  at %mw1000 : ST_ADS;
在博途中如何實(shí)現(xiàn)

2: 一般codesys無視對(duì)象類型是這樣的
VAR
    pAdr  : pvoid;(目標(biāo)變量初始指針)
    pByte : pointer to byte;(指針指向byte數(shù)據(jù)類型,相當(dāng)于 ref to)
    wWordBase : word;

END_VAR
//程序
pAdr := adr(wWordBase );
pByte := pAdr;
pByte^ := 16#fe;
pByte := pAdr +1;
pByte^ := 16# ff;
//結(jié)果是地址指向Word類型的wWordBase 用byte通過指針偏移一次組合而成
這種情況常用于將數(shù)據(jù)分解成原始byte,再組合成自定義類型的情況,非常常用

請(qǐng)問這種寫指針偏移的方法博途怎么做?
本帖最近評(píng)分記錄:
  • 下載積分:+1(海上的煙花) 感謝分享!
    wlmissyou
    級(jí)別: 探索解密
    精華主題: 0
    發(fā)帖數(shù)量: 62 個(gè)
    工控威望: 165 點(diǎn)
    下載積分: 1285 分
    在線時(shí)間: 105(小時(shí))
    注冊(cè)時(shí)間: 2017-06-11
    最后登錄: 2024-12-22
    查看wlmissyou的 主題 / 回貼
    1樓  發(fā)表于: 2021-01-17 19:32
    回答:
    第一個(gè)問題:這個(gè)要具體到何種通信方式,你的問題有些籠統(tǒng)
    第二個(gè)問題:在博圖平臺(tái)上有 300 400 和1200 1500兩個(gè)系列,300 400使用非優(yōu)化的數(shù)據(jù)塊,所以對(duì)變量的高低字節(jié)或高低字,使用AT指令來實(shí)現(xiàn)聲明。如下示意:
    CrcVariable : Word;   // CRC校驗(yàn)用變量字
    CrcByte AT CrcVariable : Array[0..1] of Byte;   // CRC校驗(yàn)用變量的高低字節(jié)

    1200和1500可以使用符號(hào)尋址的后面跟上絕對(duì)尋址的位或字節(jié)或字。請(qǐng)參考以下網(wǎng)址:
    https://support.industry.siemens.com/cs/document/57374718/如何在-step-7-(tia-portal)-中使用符號(hào)方式按位,字節(jié),或字訪問非結(jié)構(gòu)?dti=0&lc=zh-CN
    zhou1211
    級(jí)別: 略有小成
    精華主題: 1 篇
    發(fā)帖數(shù)量: 205 個(gè)
    工控威望: 362 點(diǎn)
    下載積分: 1172 分
    在線時(shí)間: 66(小時(shí))
    注冊(cè)時(shí)間: 2013-11-04
    最后登錄: 2024-09-18
    查看zhou1211的 主題 / 回貼
    2樓  發(fā)表于: 2021-01-19 13:36
    引用
    引用第1樓wlmissyou于2021-01-17 19:32發(fā)表的  :
    回答:
    第一個(gè)問題:這個(gè)要具體到何種通信方式,你的問題有些籠統(tǒng)
    第二個(gè)問題:在博圖平臺(tái)上有 300 400 和1200 1500兩個(gè)系列,300 400使用非優(yōu)化的數(shù)據(jù)塊,所以對(duì)變量的高低字節(jié)或高低字,使用AT指令來實(shí)現(xiàn)聲明。如下示意:
    CrcVariable : Word;   // CRC校驗(yàn)用變量字
    CrcByte AT CrcVariable : Array[0..1] of Byte;   // CRC校驗(yàn)用變量的高低字節(jié)
    .......

    1. 命名就已經(jīng)表明了例子的通訊方式     stAds  當(dāng)然是指ADS通訊,并且通訊中廣泛用到,那便是泛指,為何一定要限定通訊方式 這個(gè)定義本來就是為了通訊能找到通訊起始位置,任何類型通訊幾乎都適用;
    2. 如果at是用在這里,那作用不是很明顯,
      


    針對(duì)第二個(gè)我必須再舉個(gè)例子: 比如modbus接收到目標(biāo)回復(fù)數(shù)據(jù),這個(gè)數(shù)據(jù)長度肯定不定。用指針我就不用關(guān)心有多長,那幀數(shù)據(jù)中有交代,當(dāng)然可以用個(gè)255數(shù)組全部包下;
    但這肯定是下下搞法,占用內(nèi)存
    [ 此帖被zhou1211在2021-01-19 13:54重新編輯 ]
    拂云客
    級(jí)別: 論壇先鋒
    精華主題: 0
    發(fā)帖數(shù)量: 389 個(gè)
    工控威望: 1049 點(diǎn)
    下載積分: 775 分
    在線時(shí)間: 80(小時(shí))
    注冊(cè)時(shí)間: 2015-11-16
    最后登錄: 2021-02-02
    查看拂云客的 主題 / 回貼
    3樓  發(fā)表于: 2021-01-25 10:07