關於ModBus的問題 |
缺席
|
臥雲初行雁
一般會員 發表:2 回覆:8 積分:2 註冊:2002-06-17 發送簡訊給我 |
各位前輩好,小弟試著用Modbus protocol由pc 控制PLC,但怎麼試都不對,望請各位前輩能指點。下面附我的source code,謝謝。
OS:windows XP sp2
Compiler: VC++
interface: RS-232
#include "stdafx.h" #include身在風雲心無塵 古今聖賢誰為鄰 一笑橫江挂書劍 九重天外臥龍深
------
身在風雲心無塵 古今聖賢誰為鄰 一笑橫江挂書劍 九重天外臥龍深 |
liangnet
中階會員 發表:19 回覆:148 積分:83 註冊:2004-01-03 發送簡訊給我 |
你說的不對是怎樣情形???
無回應??還是PLC回應錯誤訊息?? 你的程式碼中的Command_string有問題…
unsigned short Command_string[10] = {0x01, 0x01, 0x00, 0x13, 0x00, 0x25}; for(len = 0;len < 1024;len ) { if(Command_string[len] != '!') continue; else break; } Command_string 陣列只有10個元素…但你這個for-loop卻用到1024,這樣超出範圍會有問題吧?發表人 - liangnet 於 2005/04/16 10:00:35 |
臥雲初行雁
一般會員 發表:2 回覆:8 積分:2 註冊:2002-06-17 發送簡訊給我 |
關於上次問的這個問題呢,小弟已經找到問題並解決了,程式本身並沒問題,buffer開到1024也沒有問題,因為有for loop去計算我所要的長度,問題是在於error check的部份,本來是看www.Modbus.org上面的reference guide(PI–MBUS–300 Rev. J)第113頁的格式並照著去做的,但怎麼傳data都不會回傳訊息。最後經人提示是CRC的Hi byte and Lo byte對調過來就可以了。
本來手冊上的格式
Addr|Func|Data Count|Data|Data|Data|CRC Lo|CRC Hi
改成
Addr|Func|Data Count|Data|Data|Data|CRC Hi|CRC Lo p.s使用的PLC是永宏FBs-40MA
另外我會測試其它的PLC看是否有類似的問題出現 身在風雲心無塵
古今聖賢誰為鄰
一笑橫江挂書劍
九重天外臥龍深
------
身在風雲心無塵 古今聖賢誰為鄰 一笑橫江挂書劍 九重天外臥龍深 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |