jswxhl
級別: 探索解密
精華主題: 0
發(fā)帖數(shù)量: 71 個(gè)
工控威望: 166 點(diǎn)
下載積分: 695 分
在線時(shí)間: 235(小時(shí))
注冊時(shí)間: 2010-01-28
最后登錄: 2024-08-10
查看jswxhl的 主題 / 回貼
樓主  發(fā)表于: 2012-10-12 22:11
各位大俠好,
CPU317-2DP通過PROFIBUS協(xié)議連接CPU226上面的EM277,組成PROFIBUS網(wǎng)絡(luò),CPU317-2DP(寄存器DB0.DBD0)如何對CPU226中的VD0寄存器做到實(shí)時(shí)讀寫?(即當(dāng)直接改變CPU226中VD0的數(shù)據(jù)的時(shí)候,CPU317-2DP需要讀到DB0.DBD0中;當(dāng)CPU317-2DP中的DB0.DBD0中的數(shù)據(jù)有修改時(shí),數(shù)據(jù)同步寫入到CPU226的VD0寄存器)難點(diǎn)是EM277的GSD文件中是I和O分開傳送進(jìn)行讀寫功能的。
沸騰的冰
級別: 略有小成
精華主題: 0
發(fā)帖數(shù)量: 52 個(gè)
工控威望: 214 點(diǎn)
下載積分: 696 分
在線時(shí)間: 15(小時(shí))
注冊時(shí)間: 2008-05-29
最后登錄: 2023-08-02
查看沸騰的冰的 主題 / 回貼
1樓  發(fā)表于: 2012-10-12 22:20
其實(shí)你這個(gè)想法本來是不現(xiàn)實(shí)的,也是有矛盾的。舉個(gè)例子說明,你剛才提到的同步,是誰跟誰同步?如果VD0里是5,DB0.DBD0里面是6,那是5變成6還是6變成5?
也就是說這兩個(gè)寄存器如果存在數(shù)據(jù)不同的時(shí)候到底是誰傳給誰,誰寫給誰?你這不是在難為PLC嗎?
jswxhl
級別: 探索解密
精華主題: 0
發(fā)帖數(shù)量: 71 個(gè)
工控威望: 166 點(diǎn)
下載積分: 695 分
在線時(shí)間: 235(小時(shí))
注冊時(shí)間: 2010-01-28
最后登錄: 2024-08-10
查看jswxhl的 主題 / 回貼
2樓  發(fā)表于: 2012-10-12 22:24
謝謝樓上的,
但是這個(gè)應(yīng)該可以實(shí)現(xiàn)的,比如用觸摸屏與S7 200連接通訊后,在觸摸屏上修改一個(gè)值(與CPU226對應(yīng)VD0寄存器),那么VD0數(shù)據(jù)馬上就變成觸摸屏輸入的值;同理,在CPU226上面通過編程軟件修改VD0的值,觸摸屏上也馬上變成了CPU上面修改的值。
沸騰的冰
級別: 略有小成
精華主題: 0
發(fā)帖數(shù)量: 52 個(gè)
工控威望: 214 點(diǎn)
下載積分: 696 分
在線時(shí)間: 15(小時(shí))
注冊時(shí)間: 2008-05-29
最后登錄: 2023-08-02
查看沸騰的冰的 主題 / 回貼
3樓  發(fā)表于: 2012-10-12 22:42
觸摸屏是往PLC的寄存器里面寫值,而PLC并不往觸摸屏的寄存器里面寫東西啊,也只是一個(gè)單方向的寫。
如果你非要那樣做,通過編程也能實(shí)現(xiàn),經(jīng)過兩個(gè)其他的寄存器判斷中轉(zhuǎn)一下就可以了,但是沒有什么意義!
jswxhl
級別: 探索解密
精華主題: 0
發(fā)帖數(shù)量: 71 個(gè)
工控威望: 166 點(diǎn)
下載積分: 695 分
在線時(shí)間: 235(小時(shí))
注冊時(shí)間: 2010-01-28
最后登錄: 2024-08-10
查看jswxhl的 主題 / 回貼
4樓  發(fā)表于: 2012-10-12 22:49
我這個(gè)問題的來源是,S7 300上面通過MPI掛了WINCC,S7 200上面掛了觸摸屏,然后WINCC上需要能修S7 200上面的VD0的值,同時(shí),觸摸屏上面也需要修改VD0里面的值,但是發(fā)現(xiàn)比較難實(shí)現(xiàn)。
沸騰的冰
級別: 略有小成
精華主題: 0
發(fā)帖數(shù)量: 52 個(gè)
工控威望: 214 點(diǎn)
下載積分: 696 分
在線時(shí)間: 15(小時(shí))
注冊時(shí)間: 2008-05-29
最后登錄: 2023-08-02
查看沸騰的冰的 主題 / 回貼
5樓  發(fā)表于: 2012-10-12 23:23
有兩種方案,第一種比較簡單,也是我一直采用的辦法,將系統(tǒng)分為遠(yuǎn)程和本地兩種模式就可以了,模式轉(zhuǎn)換的時(shí)候,把數(shù)據(jù)往相應(yīng)的對方傳輸一下就可以了!
第二種方案,WINCC把直接讀寫DB0.DBD0,這個(gè)寄存器的數(shù)據(jù)傳到VD4里面,同時(shí)觸摸屏對VD0進(jìn)行讀寫,如果VD0和VD4不相等的時(shí)候,判斷誰的值是最新的,如果VD4是最新的,說明數(shù)據(jù)是從WINCC來的,然后直接覆蓋VD0,如果VD0是最新的,說明數(shù)據(jù)是從觸摸屏來的,把VD0的數(shù)據(jù)傳給DB0.DBD4,然后DB0.DBD4覆蓋DB0.DBD0。
我這么說不知道你能否看明白
本帖最近評分記錄:
  • 下載積分:+3(guochunyi) 熱心助人
  • 下載積分:+2(jswxhl) 不錯(cuò)
    jswxhl
    級別: 探索解密
    精華主題: 0
    發(fā)帖數(shù)量: 71 個(gè)
    工控威望: 166 點(diǎn)
    下載積分: 695 分
    在線時(shí)間: 235(小時(shí))
    注冊時(shí)間: 2010-01-28
    最后登錄: 2024-08-10
    查看jswxhl的 主題 / 回貼
    6樓  發(fā)表于: 2012-10-12 23:59
    這位兄弟的見解真的不錯(cuò),兩種方案都能行得通。非常感謝。牛