jzzjzq
級別: 略有小成
精華主題: 0
發(fā)帖數(shù)量: 63 個(gè)
工控威望: 201 點(diǎn)
下載積分: 568 分
在線時(shí)間: 73(小時(shí))
注冊時(shí)間: 2013-03-15
最后登錄: 2024-09-26
查看jzzjzq的 主題 / 回貼
樓主  發(fā)表于: 2018-07-16 10:56
最近寫一個(gè)程序,有四臺(tái)西門子S1200之間通過TCP協(xié)議互聯(lián),通訊的數(shù)據(jù)都是用字節(jié)發(fā)送,接受端使用這些數(shù)據(jù)時(shí),卻是以字或雙字使用。目前我不了解的是
A  發(fā)送數(shù)據(jù)是否默認(rèn)是字節(jié)?能不能本來是INT就發(fā)送INT?
B 如果原數(shù)據(jù)為INT,而只能發(fā)送字節(jié),接受端使用這個(gè)數(shù)據(jù)時(shí),是否只能用DBX.DBWX 這樣的形式來引用?這樣可以使用,但是會(huì)報(bào)無法通過變量來分配的警報(bào)。我感覺好似不是正規(guī)途徑。
可能很基礎(chǔ),但是看手冊沒有找到相關(guān)的說明,還請各位幫助。
湛藍(lán)小爾
工控交流 Q703935819
級別: 家園?

精華主題: 0
發(fā)帖數(shù)量: 349 個(gè)
工控威望: 642 點(diǎn)
下載積分: 2101 分
在線時(shí)間: 80(小時(shí))
注冊時(shí)間: 2014-03-03
最后登錄: 2024-07-10
查看湛藍(lán)小爾的 主題 / 回貼
1樓  發(fā)表于: 2018-07-16 11:20
引用
引用樓主jzzjzq于2018-07-16 10:56發(fā)表的 西門子通訊后的數(shù)據(jù)要如何應(yīng)用? :
最近寫一個(gè)程序,有四臺(tái)西門子S1200之間通過TCP協(xié)議互聯(lián),通訊的數(shù)據(jù)都是用字節(jié)發(fā)送,接受端使用這些數(shù)據(jù)時(shí),卻是以字或雙字使用。目前我不了解的是
A  發(fā)送數(shù)據(jù)是否默認(rèn)是字節(jié)?能不能本來是INT就發(fā)送INT?
B 如果原數(shù)據(jù)為INT,而只能發(fā)送字節(jié),接受端使用這個(gè)數(shù)據(jù)時(shí),是否只能用DBX.DBWX 這樣的形式來引用?這樣可以使用,但是會(huì)報(bào)無法通過變量來分配的警報(bào)。我感覺好似不是正規(guī)途徑。
可能很基礎(chǔ),但是看手冊沒有找到相關(guān)的說明,還請各位幫助。


不是非得BYTE,參考我的帖子,TCP通訊,你找一下。
定義發(fā)送和接收的數(shù)組和ARRY,INT也是可以的。取消優(yōu)化塊的訪問
本帖最近評分記錄:
  • 下載積分:+2(jzzjzq) 真誠感謝!
  • 專心搞錢
    Q群943838323   博圖
    Q群703935819   昆侖通態(tài)
    jzzjzq
    級別: 略有小成
    精華主題: 0
    發(fā)帖數(shù)量: 63 個(gè)
    工控威望: 201 點(diǎn)
    下載積分: 568 分
    在線時(shí)間: 73(小時(shí))
    注冊時(shí)間: 2013-03-15
    最后登錄: 2024-09-26
    查看jzzjzq的 主題 / 回貼
    2樓  發(fā)表于: 2018-07-16 12:25
    引用
    引用第1樓湛藍(lán)小爾于2018-07-16 11:20發(fā)表的  :

    不是非得BYTE,參考我的帖子,TCP通訊,你找一下。
    定義發(fā)送和接收的數(shù)組和ARRY,INT也是可以的。取消優(yōu)化塊的訪問

    如果發(fā)送INT,指令里的LEN是否要乘2呢?另外,我的數(shù)據(jù)并不是很規(guī)整的INT或是BYTE,假如用BYTE發(fā)送了INT數(shù)據(jù),要如何引用]呢?望賜教

    例如此圖中的數(shù)據(jù)


    在引用時(shí)這樣寫是否正確

    [ 此帖被jzzjzq在2018-07-16 12:52重新編輯 ]
    湛藍(lán)小爾
    工控交流 Q703935819
    級別: 家園?

    精華主題: 0
    發(fā)帖數(shù)量: 349 個(gè)
    工控威望: 642 點(diǎn)
    下載積分: 2101 分
    在線時(shí)間: 80(小時(shí))
    注冊時(shí)間: 2014-03-03
    最后登錄: 2024-07-10
    查看湛藍(lán)小爾的 主題 / 回貼
    3樓  發(fā)表于: 2018-07-17 08:36
    你到底需要發(fā)送什么樣的數(shù)據(jù),我給你舉個(gè)例子
    專心搞錢
    Q群943838323   博圖
    Q群703935819   昆侖通態(tài)
    jzzjzq
    級別: 略有小成
    精華主題: 0
    發(fā)帖數(shù)量: 63 個(gè)
    工控威望: 201 點(diǎn)
    下載積分: 568 分
    在線時(shí)間: 73(小時(shí))
    注冊時(shí)間: 2013-03-15
    最后登錄: 2024-09-26
    查看jzzjzq的 主題 / 回貼
    4樓  發(fā)表于: 2018-07-17 16:10
    引用
    引用第3樓湛藍(lán)小爾于2018-07-17 08:36發(fā)表的  :
    你到底需要發(fā)送什么樣的數(shù)據(jù),我給你舉個(gè)例子

    有Bit也有INT也有dint。
    所以統(tǒng)一按BYTE發(fā)的,現(xiàn)在的問題就是接收到以后,用那種方式引用收到的數(shù)據(jù)。我上貼中有圖,請幫忙看一下是否正確。
    是否是這樣的,比如A (PLC)發(fā)送到B(PLC)    12個(gè)BIT、5個(gè)BYTE,3個(gè)INT。那么在A的發(fā)送塊 依次建立12個(gè)BIT、5個(gè)BYTE,3個(gè)INT。
    同樣,在B(PLC)接收塊里依次建立12個(gè)BIT、5個(gè)BYTE,3個(gè)INT,然后發(fā)送和接受指令的LEN長度都定為13個(gè)字節(jié),這樣是否正確?
    [ 此帖被jzzjzq在2018-07-17 16:27重新編輯 ]