手機號
未認證執照
夏 工(先生)

普通會員
夏 工 (先生)
西門子6es7390-1af30-0aa0軌道
高效工程組態成就高效自動化
繪芯人機界面與單片機通訊
單片機與繪芯人機界面通信有兩個方案:一是用modbus—rtu協議,二是自由通訊協議;
本實例采用武漢繪芯科技有限公司的人機界面作為參考,因為公司提供一系列的技術支持和公布單片機源代碼,開發工程方便有效。
公司網站:
方案比較:
方案一 modbus—rtu協議:
優點:工業標準通訊協議,具有通用性,,傳輸數據量大
缺點:需要時間去了解協議的格式和以及按照規定編寫通訊程序(我們提供modbus-rtu源代碼,客戶直接移植就可以,不必費心)
方案二 自由協議:
優點:數據格式客戶自己定義,靈活多變,定制性強,可以模擬任何已知報文的通訊協議
缺點:傳輸數據量不大,通用性不強,移植不方便
客戶可以根據以上兩種通訊協議的優缺點來選擇理想的方案;
實現方法:
方案一:
1. 工程屬性選用modbus-rtu協議;
2. 先了解modbus-rtu協議,基本的01 03 05 06 16 的功能碼需要了解,其他可以不去深究;提供相關的資料
3. 使用我們提供的modbus-rtu協議(c語言)開發源代碼,把主要的01 03 05 06 16 函數移植到單片機通訊上,大大節省了開發時間;
方案二:
1. 工程屬性選用freeprotocol協議;
2.
3. 打開控制令編輯器(設定—>宏指令—>宏指令編輯器)或者直接按f8;
4. 新增宏指令,在宏指令里面使用到output()、input()、setworddata()、getworddata()這四個函數;注:可以參考附一
5. output()函數,把設定好的字符串發送到相應的串口輸出;input()函數,從設定好的串口讀取需要的字符串;
6. 采集顯示:
setworddata()函數,把input()函數接收回來的數據,發送給him用戶自定義寄存器里,然后在顯示控件里填上已經有數據的him寄存器,即可顯示單片機采集上來的數據;
7. 改寫發送:
在顯示控件了把需要改寫的數據綁定him寄存器,使用getworddata()獲得修改后的數據,通過output()發送把數據發送到單片機;
附一:
output();
【描述】
第一個參數channel表示通道,如果通道為com1,則channel=1;如果通道為com2,則channel=2,數據類型為int。
第二個參數pstring表示從通道輸出的字符串的地址,數據類型為unsigned char *。
第三個參數count表示字符串中的字符個數,數據類型為int。
第四個參數result表示output函數運行后返回的結果,如果result大于0,則表示讀寫有效,數據類型為int。
注意:此函數只能用在freeprotocol(自由協議通道)中。
【用法】
output(channel,pstring,count,result);
【舉例】
char srt[9];
int result;
output(1,str[0],9,result);
input();
【描述】
第一個參數channel表示通道,如果通道為com1,則channel=1;如果通道為com2,則channel=2,數據類型為int。
第二個參數pstring表示寫入通道的字符串的地址,數據類型為unsigned char *。
第三個參數count表示字符串中的字符個數,數據類型為int。
第四個參數result表示output函數運行后返回的結果,如果result大于0,則表示讀寫有效,數據類型為int。
注意:此函數只能用在freeprotocol(自由協議通道)中。
【用法】
input(channel,pstring,count,result);
【舉例】
char srt[9];
int result;
input(1,str[0],9,result);
getworddata();
【描述】
函數功能:從通道中讀取word數據。
第一個參數channel表示通道,數據類型為unsigned char。
第二個參數slaveid表示從機號,數據類型為unsigned char。
第三個參數address表示系統通道地址,數據類型為unsigned short。
第四個參數count表示要讀出的字的個數,數據類型為unsigned short。
第五個參數表示命令號,數據類型為unsigned char。
第六個參數pvalue用來保存從系統通道讀出的count個字,數據類型為unsigned short *。
【用法】
getworddata(channel,slaveid,address,count,cmd,pvalue);
【舉例】
unsigned short worddata[10];
getworddata(0, 1,8000, 10, 0,worddata);
從系統通道 8000地址中讀取10個數據到worddata
setworddata();
【描述】
函數功能:從通道中寫入一個word數據。西門子6es7390-1af30-0aa0軌道
第一個參數channel表示通道,數據類型為unsigned char。
第二個參數slaveid表示從機號,數據類型為unsigned char。
第三個參數address表示系統通道地址,數據類型為unsigned short。
第四個參數cmd表示命令號,數據類型為unsigned char。
第五個參數pvalue用來保存寫入系統通道的字,數據類型為unsigned short。
【用法】
setworddata(channel,slaveid,address,cmd,source);
【舉例】
unsigned short worddata = 1;
setworddata(0, 1,1000,0,worddata);
把worddata中的word數據寫到系統通道 1000地址處
附錄二:
使用自由協議來模擬modbus-rtu
//com1:freeprotocol
//com2:modbus-rtu
/*自由協議通道采集數據存放在系統通道,在界面顯示
modbus通道采集到的數據,處理后,發送到自由協議的設備上*/
unsigned char command[32];
unsigned char response[32];
unsigned char temp1,temp2;
unsigned short address, checksum;
unsigned short read_no, return_value1, return_value2,return_value3,read_data[2], i;
unsigned short com2_data;
/****************以上是新建需要使用的變量***********/
fill(command, 0, 32);// initialize command[0]~command[31] to 0
fill(response, 0, 32); //把command 和response 初始化
command[0] = 0x1;// 設置發送字符竄的第一個數據 station number
command[1] = 0x3;// 設置發送字符竄的第二個數據 read holding registers (function code is 0x3)
address = 0;// starting address (4x_1) is 0
hibyte(address, command[2]);//設置發送字符竄的第三個數據西門子6es7390-1af30-0aa0軌道
lobyte(address, command[3]);//設置發送字符竄的第四個數據
read_no = 2;// the total words of reading is 2 words
hibyte(read_no, command[4]);//設置發送字符竄的第五個數據
lobyte(read_no, command[5]);//設置發送字符竄的第六個數據
crc(command, 6,checksum);// calculate 16-bit crc
lobyte(checksum, command[6]); //設置發送字符竄的第七個數據
hibyte(checksum, command[7]); //設置發送字符竄的第八個數據
output(1,command,8, return_value1); //把設置好的8個數據,從通訊口1發送出去,具體參數設置參考output()使用
input(1,response,9,return_value2); //從通訊口1等待接收9個字符數據,并且放在response[0]~response[8],具體參數設置參考intput()使用
crc(response, 7,checksum); //對采集上來的9個數據中前7個進行了crc-16校驗,校驗結果存放在checksum
lobyte(checksum, temp1); //把checksum的低8位放在temp1
hibyte(checksum, temp2); //把checksum的高8位放在temp1
if(temp1==response[7]&&temp2==response[8]) //crc校驗碼進行對比判別時候接收正確

| 聯系人 | 需求數量 | 時間 | 描述 |
|---|---|---|---|
| 暫無產品詢價記錄 | |||
| 采購商 | 成交單價(元) | 數量 | 成交時間 |
|---|---|---|---|
| 暫無購買記錄 | |||
地區:滄州
主營產品:機床維修,鑄件,工量具地區:三明
主營產品:木荷苗,楓香苗,油茶苗地區:成都
主營產品:電磁閥,氣缸,過濾器地區:武漢
主營產品:洪山公司注冊,洪山注冊公司,洪山代理記賬