zhou1211
級別: 略有小成
精華主題: 1 篇
發(fā)帖數(shù)量: 205 個
工控威望: 362 點
下載積分: 1172 分
在線時間: 66(小時)
注冊時間: 2013-11-04
最后登錄: 2024-09-18
查看zhou1211的 主題 / 回貼
12樓  發(fā)表于: 2021-01-17 09:41
程序是很簡單,但到實際應(yīng)用的時候有不確定性,通信原理都是一樣,協(xié)議也只約定規(guī)則,這些規(guī)則無非就是限制
緊要
1. 數(shù)據(jù)幀的開始標(biāo)志
2. 數(shù)據(jù)長度;
3. 結(jié)束標(biāo)志;
4. 校驗方式;
非緊要,在前面4個重點正確的情況下,后面的一般不會有錯
5. 故障碼;
6. 最大長度

你的問題可能原因
1.  發(fā)送緩存區(qū)因相近間隔時間進(jìn)入過多的數(shù)據(jù)量,導(dǎo)致發(fā)送長度不支持,發(fā)送失;
2.  沒有檢測握手標(biāo)志(發(fā)送完成標(biāo)志,接收完成標(biāo)志),每個通訊功能塊都有一個Done 位(雙工只注意單個done),新手靠拉長收發(fā)時間,中手看標(biāo)志,老手看綜合狀態(tài);像485線,你發(fā)一幀數(shù)據(jù),必須等收到信息完成,或者確實超時才能發(fā)下一次詢問;
檢測的方法最直接是用串口調(diào)試工具去監(jiān)測收發(fā)數(shù)據(jù)的實際狀態(tài),這樣才能判斷錯出在哪了,有時候你的數(shù)據(jù)沒問題,而通訊的對方可能有問題,比如,你CPU運行速度1ms周期,而對方在處理不同數(shù)據(jù)時響應(yīng)時間不一樣,以前測試過一款微型伺服,詢問狀態(tài)響應(yīng)2ms,控制指令響應(yīng)時間很長,讀數(shù)組狀態(tài)的時候響應(yīng)時間也很長,所有經(jīng)常被程序認(rèn)為是發(fā)送超時
寫程序前先了解被通訊對象的素質(zhì)也很重要,先用串口工具測試各種你要用到指令,然后加快收發(fā)速度,去測試響應(yīng)極限,別一上去就干到極限,然后悶逼不知道怎么解決。當(dāng)確實遇到了問題,那么再回過同用通訊工具采樣你發(fā)和它發(fā)的狀態(tài)找原因
ronkang
倍加?偩
級別: 略有小成
精華主題: 0
發(fā)帖數(shù)量: 146 個
工控威望: 348 點
下載積分: 914 分
在線時間: 188(小時)
注冊時間: 2008-06-24
最后登錄: 2024-12-19
查看ronkang的 主題 / 回貼
13樓  發(fā)表于: 2021-01-17 10:53
兄弟,我這200的plc按你說法編程太復(fù)雜了,
我看1200里面有一個說法是done置1后,必須在發(fā)一個空白pkw才可以下一次讀寫。
200smart確沒這說法,關(guān)鍵uss_protocol(v2.1)符號表沒有詳細(xì)介紹。
程序沒法進(jìn)行了,按理說uss沒這么復(fù)雜,多個uss_ctrl是此功能塊自己控制輪詢的。參數(shù)讀寫才需要編程輪詢。網(wǎng)上很多案例都是這么做的,別人都沒問題。見鬼了
zhou1211
級別: 略有小成
精華主題: 1 篇
發(fā)帖數(shù)量: 205 個
工控威望: 362 點
下載積分: 1172 分
在線時間: 66(小時)
注冊時間: 2013-11-04
最后登錄: 2024-09-18
查看zhou1211的 主題 / 回貼
14樓  發(fā)表于: 2021-01-17 11:22
圖片:
所以說你根本看不懂我那個程序,那個程序不復(fù)雜,里面數(shù)據(jù)判斷占了大部分,真正收發(fā)指令只占了很小的一部分,你寫一個通訊程序也是一樣的,當(dāng)然,電機控制用固定功能塊做的,或者說你只需要固定控制方式,所以顯得簡單;
我程序里面包含了通訊參數(shù)的修改,首先是修改了通訊默認(rèn)地址,再就是模仿modbus切換控制字寫對象的參數(shù),然后根據(jù)不同的控制模式解析對應(yīng)數(shù)據(jù)
你做通訊感覺才入門,上圖是對應(yīng)實現(xiàn)的功能
大致就是通訊建立,先讀出前排2組數(shù)據(jù),那2組如果和實際設(shè)備有出入則通過下面的寫操作修改掉,其余時間是在讀取右邊2列有效數(shù)據(jù),這個設(shè)備沒有修改軟件,所以得做通訊程序去修改報警范圍之類的參數(shù),不是每一個給你的設(shè)備都會給你配一個參數(shù)修改軟件,也不是每一個操作工都知道怎么去修改一個設(shè)備,尤其是第三方,那么你就必須在你的HMI上開放一個接口去方便修改
[ 此帖被zhou1211在2021-01-17 11:39重新編輯 ]
ronkang
倍加福總線
級別: 略有小成
精華主題: 0
發(fā)帖數(shù)量: 146 個
工控威望: 348 點
下載積分: 914 分
在線時間: 188(小時)
注冊時間: 2008-06-24
最后登錄: 2024-12-19
查看ronkang的 主題 / 回貼
15樓  發(fā)表于: 2021-01-17 14:10
感謝樓上兄弟,感謝你熱心的幫助,F(xiàn)在問題找到了,就是USS_RPM_R這個指令的問題。讀浮點數(shù)就是會導(dǎo)致uss_ctrl報錯,甚至變頻器報警1910,用uss_rpm_w指令責(zé)一切正常。目前還不知道具體的原因。我再試試看能不能找到更多的問題。