zhou1211
級別: 略有小成
|
程序是很簡單,但到實際應(yīng)用的時候有不確定性,通信原理都是一樣,協(xié)議也只約定規(guī)則,這些規(guī)則無非就是限制 緊要 1. 數(shù)據(jù)幀的開始標志 2. 數(shù)據(jù)長度; 3. 結(jié)束標志; 4. 校驗方式; 非緊要,在前面4個重點正確的情況下,后面的一般不會有錯 5. 故障碼; 6. 最大長度 你的問題可能原因 1. 發(fā)送緩存區(qū)因相近間隔時間進入過多的數(shù)據(jù)量,導(dǎo)致發(fā)送長度不支持,發(fā)送失敗; 2. 沒有檢測握手標志(發(fā)送完成標志,接收完成標志),每個通訊功能塊都有一個Done 位(雙工只注意單個done),新手靠拉長收發(fā)時間,中手看標志,老手看綜合狀態(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)常被程序認為是發(fā)送超時 寫程序前先了解被通訊對象的素質(zhì)也很重要,先用串口工具測試各種你要用到指令,然后加快收發(fā)速度,去測試響應(yīng)極限,別一上去就干到極限,然后悶逼不知道怎么解決。當(dāng)確實遇到了問題,那么再回過同用通訊工具采樣你發(fā)和它發(fā)的狀態(tài)找原因 |
---|---|
|
ronkang
倍加福總線
級別: 略有小成
|
兄弟,我這200的plc按你說法編程太復(fù)雜了, 我看1200里面有一個說法是done置1后,必須在發(fā)一個空白pkw才可以下一次讀寫。 200smart確沒這說法,關(guān)鍵uss_protocol(v2.1)符號表沒有詳細介紹。 程序沒法進行了,按理說uss沒這么復(fù)雜,多個uss_ctrl是此功能塊自己控制輪詢的。參數(shù)讀寫才需要編程輪詢。網(wǎng)上很多案例都是這么做的,別人都沒問題。見鬼了 |
---|---|
|
zhou1211
級別: 略有小成
|
圖片:
所以說你根本看不懂我那個程序,那個程序不復(fù)雜,里面數(shù)據(jù)判斷占了大部分,真正收發(fā)指令只占了很小的一部分,你寫一個通訊程序也是一樣的,當(dāng)然,電機控制用固定功能塊做的,或者說你只需要固定控制方式,所以顯得簡單; 我程序里面包含了通訊參數(shù)的修改,首先是修改了通訊默認地址,再就是模仿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重新編輯 ] |
---|---|
|