導航:首頁 > 編程語言 > 通訊管理機編程實例

通訊管理機編程實例

發布時間:2022-04-03 17:49:51

1. 通訊管理機與遠動裝置有什麼區別

通信管理機也可以稱為規約轉化器,它的作用是將其它的電力系統規約轉換成後台可以識別的規約,然後解析出來,顯示在後台上。一般常見的接入規約有CDT規約、modbus規約、103規約。一般來講市場上接入的規約大多是標准規約,但是還有部分廠家的規約並非標准,有些出入,但是大體上是沒問題的。在一個電站中,通信管理機的作用是接入本站的微機保護裝置和其他通信設備,如直流屏、電度表、智能儀表、小電流接地選線、電能質量監測裝置等設備。而遠動機的作用是通過遠動規約將站內調度或者集控站要求的數據打包上送到對端,一般是101或者104規約。
遠動機是通信管理機的一種,不過對於遠動機來講,在遠動上要求的更高,根據實際要求具有主備互相切等功能。
四信智慧電力自主研發生產智能通信管理機 F-DPU100。

2. 通訊管理機的基本功能是什麼

通訊管理機主要是用於 工業,電力,石化,煤炭等行業上,將過程層的數據進行統一的採集,並將數據通過通訊管理機內部進行轉發。 是過程層與監控層中間的紐帶。上海保晉信息科技可以提供免費的技術支持,專業的通訊管理機產品服務,擁有傳統的通訊規約庫,自定義規約的開發。

3. C語言,編寫一個簡單的通訊錄管理系統

#include <string.h>

#include <stdio.h>

#include<stdlib.h>

int cntAddr=0,i,j;

char in[12];

const char * strFmt=" %d %s %s %s %s ";

typedef struct ADDRESSD {

int ID;

char name[12];

char workPlace[12];

char teleOff[12];

char teleHome[12];

}ADDRESS;

ADDRESS addrTmp[100],adTmp;

int load(ADDRESS adr[]){

FILE *fp;

if((fp=fopen("c:\txl.txt","r"))!=NULL){

cntAddr=0;

while(!feof(fp)){

fscanf(fp,"%d %s %s %s %s ",&(adr[cntAddr].ID),adr[cntAddr].name,adr[cntAddr].workPlace,adr[cntAddr].teleOff,adr[cntAddr].teleHome);

++cntAddr;

}

}

fclose(fp);

return cntAddr;

};

void list(ADDRESS addr[],int length){

for(i=0;i<length;++i)printf(strFmt,addr[i].ID,addr[i].name,addr[i].workPlace,addr[i].teleOff,addr[i].teleHome);

}

void display(ADDRESS addr[]){

for(i=0;i<cntAddr;++i)addrTmp[i]=addr[i];

for(i=0;i<cntAddr-1;++i)for(j=i+1;j<cntAddr;++j)if(addrTmp[i].ID>addrTmp[j].ID){adTmp=addrTmp[i];addrTmp[i]=addrTmp[j];addrTmp[j]=adTmp;}

for(i=0;i<cntAddr;++i)printf(strFmt,addrTmp[i].ID,addrTmp[i].name,addrTmp[i].workPlace,addrTmp[i].teleOff,addrTmp[i].teleHome);

}

void namesort(ADDRESS addr[],int length){

for(i=0;i<length;++i)addrTmp[i]=addr[i];

for(i=0;i<length-1;++i)for(j=i+1;j<length;++j)if(strcmp(addrTmp[i].name,addrTmp[j].name)>0){adTmp=addrTmp[i];addrTmp[i]=addrTmp[j];addrTmp[j]=adTmp;}

for(i=0;i<length;++i)printf(strFmt,addrTmp[i].ID,addrTmp[i].name,addrTmp[i].workPlace,addrTmp[i].teleOff,addrTmp[i].teleHome);

};

void save(ADDRESS adr[],int length){

FILE *fp;

fp=fopen("c:\txl.txt","w");

for(i=0;i<cntAddr;++i)fprintf(fp,"%d %s %s %s %s ",adr[i].ID,adr[i].name,adr[i].workPlace,adr[i].teleOff,adr[i].teleHome);

fclose(fp);

};

void unitssort(ADDRESS addr[],int length){

for(i=0;i<length;++i)addrTmp[i]=addr[i];

for(i=0;i<length-1;++i)for(j=i+1;j<length;++j)if(strcmp(addrTmp[i].workPlace,addrTmp[j].workPlace)>0){adTmp=addrTmp[i];addrTmp[i]=addrTmp[j];addrTmp[j]=adTmp;}

for(i=0;i<length;++i)printf(strFmt,addrTmp[i].ID,addrTmp[i].name,addrTmp[i].workPlace,addrTmp[i].teleOff,addrTmp[i].teleHome);

};

void namesearch(ADDRESS addr[],int length){

printf("請輸入姓名: ");

scanf("%s",&in);

for(i=0;i<length;++i)if(strcmp(addr[i].name,in)==0)printf(strFmt,addr[i].ID,addr[i].name,addr[i].workPlace,addr[i].teleOff,addr[i].teleHome);

};

void unitssearch(ADDRESS adr[],int length){

printf("請輸入工作單位: ");

scanf("%s",&in);

for(i=0;i<length;++i)if(strcmp(adr[i].workPlace,in)==0)printf(strFmt,adr[i].ID,adr[i].name,adr[i].workPlace,adr[i].teleOff,adr[i].teleHome);

};

void officenumbersearch(ADDRESS adr[],int length){

printf("請輸入辦公電話: ");

scanf("%s",&in);

for(i=0;i<length;++i)if(strcmp(adr[i].teleOff,in)==0)printf(strFmt,adr[i].ID,adr[i].name,adr[i].workPlace,adr[i].teleOff,adr[i].teleHome);

};

void homenumbersearch(ADDRESS adr[],int length){

printf("請輸入家庭電話: ");

scanf("%s",&in);

for(i=0;i<length;++i)if(strcmp(adr[i].teleHome,in)==0)printf(strFmt,adr[i].ID,adr[i].name,adr[i].workPlace,adr[i].teleOff,adr[i].teleHome);

};

int delet(ADDRESS adr[],int length){

printf("要修改第幾條記錄: ");

scanf("%d",&j);

for(i=j;i<length-1;++i)adr[i]=adr[i+1];

return --length;

};

void rewrite(ADDRESS adr[],int length){

printf("要修改第幾條記錄: ");

scanf("%d",&j);

printf("請輸入ID: ");

scanf("%d",&i);

adr[j].ID=i;

printf("請輸入姓名: ");

scanf("%s",in);

strcpy(adr[j].name,in);

printf("請輸入工作單位: ");

scanf("%s",in);

strcpy(adr[j].workPlace,in);

printf("請輸入辦公電話: ");

scanf("%s",in);

strcpy(adr[j].teleOff,in);

printf("請輸入家庭電話: ");

scanf("%s",in);

strcpy(adr[j].teleHome,in);

};

int add(ADDRESS adr[],int length){

printf("請輸入ID: ");

scanf("%d",&i);

adr[length].ID=i;

printf("請輸入姓名: ");

scanf("%s",in);

strcpy(adr[length].name,in);

printf("請輸入工作單位: ");

scanf("%s",in);

strcpy(adr[length].workPlace,in);

printf("請輸入辦公電話: ");

scanf("%s",in);

strcpy(adr[length].teleOff,in);

printf("請輸入家庭電話: ");

scanf("%s",in);

strcpy(adr[length].teleHome,in);

return ++cntAddr;

};

void (){

FILE *fp,*fc;

printf("請輸入新文件名(路徑中的反斜杠用\表示) ");

scanf("%s",&in);

if((fp=fopen("c:\txl.txt","r"))!=NULL){

fc=fopen(in,"w");

while(!feof(fp)){

fscanf(fp,"%d %s %s %s %s ",&(adTmp.ID),adTmp.name,adTmp.workPlace,adTmp.teleOff,adTmp.teleHome);

fprintf(fc,"%d %s %s %s %s ",adTmp.ID,adTmp.name,adTmp.workPlace,adTmp.teleOff,adTmp.teleHome);

}

fclose(fc);

}

fclose(fp);

};

int enter(ADDRESS adr[]){

cntAddr=0;

printf("請按次序輸入數據,結束按CTRL+z: ");

while(1){

printf("請輸入ID: ");

if(scanf("%d",&i)==EOF)break;

adr[cntAddr].ID=i;

printf("請輸入姓名: ");

if(scanf("%s",in)==EOF)break;

strcpy(adr[cntAddr].name,in);

printf("請輸入工作單位: ");

if(scanf("%s",in)==EOF)break;

strcpy(adr[cntAddr].workPlace,in);

printf("請輸入辦公電話: ");

if(scanf("%s",in)==EOF)break;

strcpy(adr[cntAddr].teleOff,in);

printf("請輸入家庭電話: ");

if(scanf("%s",in)==EOF)break;

strcpy(adr[cntAddr].teleHome,in);

++cntAddr;

}

return cntAddr;

};

void showpaixu(ADDRESS adr[],int length)

{

int choice;

menu1:

system("cls");

printf(" *************************通訊錄信息管理系統************************* ");

printf(" 1. 全部顯示通訊錄信息 ");

printf(" 2. 按序號顯示通訊錄信息 ");

printf(" 3. 按姓名排序 ");

printf(" 4. 按工作單位排序 ");

printf(" 0. 返回上一級菜單 ");

printf(" ******************************************************************** ");

printf(" 請選擇(0~4) ");

scanf("%d",&choice);

switch(choice)

{

case 1:

list(adr,length);

printf(" 請按任意鍵返回... ");

system("pause");

break; /*顯示全部記錄*/

case 2:

display(adr);

printf(" 請按任意鍵返回... ");

system("pause");break; /*按序號顯示記錄*/

case 3:

namesort(adr,length);

printf(" 請按任意鍵返回... ");

system("pause");

break; /*按姓名排序*/

case 4:

unitssort(adr,length);

printf(" 請按任意鍵返回... ");

system("pause");

break; /*按工作單位排序*/

case 0: return;

}

goto menu1;

}

/*通訊錄信息查找功能*/

void chazhao(ADDRESS adr[],int length)

{

int choice;

menu2:

system("cls");

printf(" *************************通訊錄信息管理系統************************* ");

printf(" 1. 通過姓名查找 ");

printf(" 2. 通過工作單位查找 ");

printf(" 3. 通過辦公電話查找 ");

printf(" 4. 通過家庭電話查找 ");

printf(" 0. 返回上一級菜單 ");

printf(" ******************************************************************** ");

printf(" 請選擇(0~4) ");

scanf("%d",&choice);

switch(choice)

{

case 1:

namesearch(adr,length);

printf(" 請按任意鍵返回... ");

system("pause");

break; /*按姓名查找記錄*/

case 2:

unitssearch(adr,length);

printf(" 請按任意鍵返回... ");

system("pause");

break; /*按工作單位查找記錄*/

case 3:

officenumbersearch(adr,length);

printf(" 請按任意鍵返回... ");

system("pause");

break; /*按辦公電話查找記錄*/

case 4:

homenumbersearch(adr,length);

printf(" 請按任意鍵返回... ");

system("pause");

break; /*按住宅電話查找記錄*/

case 0: return;

}

goto menu2;

}

/*通訊錄信息變更功能*/

void biangeng(ADDRESS adr[],int length)

{

int choice;

menu3:

system("cls");

printf(" *************************通訊錄信息管理系統************************* ");

printf(" 1. 刪除記錄 ");

printf(" 2. 修改記錄 ");

printf(" 3. 添加記錄 ");

printf(" 0. 返回上一級菜單 ");

printf(" ******************************************************************** ");

printf(" 請選擇(0~3) ");

scanf("%d",&choice);

switch(choice)

{

case 1:

length=delet(adr,length);

save(adr,length);

printf(" 請按任意鍵返回... ");

getchar();

break; /*刪除記錄*/

case 2:

rewrite(adr,length);

save(adr,length);

printf(" 請按任意鍵返回... ");

getchar();

break; /*修改記錄*/

case 3:

length=add(adr,length);

save(adr,length);

printf(" 請按任意鍵返回... ");

getchar();

break; /*插入記錄*/

case 0: return;

}

goto menu3;

}

int wenjian(ADDRESS adr[],int length)

{

int choice;

menu4:

system("cls");

printf(" *************************通訊錄信息管理系統************************* ");

printf(" 1. 導入文件到通訊錄 ");

printf(" 2. 把當前文件復制到新文件上 ");

printf(" 0. 返回上一級菜單 ");

printf(" ******************************************************************** ");

printf(" 請選擇(0~2) ");

scanf("%d",&choice);

switch(choice)

{

case 1: length=load(adr);

printf("您已經成功的導入文件到通訊錄! ");

printf(" 請按任意鍵返回... ");

system("pause");break;

case 2: ();

printf("復製成功! ");

printf(" 請按任意鍵返回... ");

system("pause");break;

case 0: return length;

}

goto menu4;

}

/*關於*/

void about()

{

system("color 87");

system("cls");

printf(" 《通訊錄信息管理系統》 ");

printf(" ***************************************** ");

printf(" 版權所有(C) 2009-2010 DIY軟體 ");

printf(" 製作人:西北民族大學計算機科學與信息09級計算機3班 王元波 ");

printf(" ***************************************** ");

printf(" 請按任意鍵返回主菜單...");

system("pause");

}

/******主函數開始*******/

void main()

{

int choice;

int length; /*保存記錄長度*/

ADDRESS adr[100] ; /*定義結構體數組*/

menu:

system("color f9");

system("cls");

printf(" *************************通訊錄信息管理系統************************* ");

printf(" 請選擇以下通訊錄管理功能: ");

printf(" 1. 通訊錄信息輸入 ");

printf(" 2. 通訊錄信息瀏覽及排序 ");

printf(" 3. 通訊錄信息查詢 ");

printf(" 4. 通訊錄信息更改 ");

printf(" 5. 通訊錄及文件操作 ");

printf(" 6. 關於通訊錄信息管理系統 ");

printf(" 0. 退出通訊錄管理系統 ");

printf(" ******************************************************************** ");

printf(" 請選擇(0~6) ");

scanf("%d",&choice);

switch(choice)

{

case 1: length=enter(adr);

save(adr,length);

printf(" 請按任意鍵返回... ");

system("pause");break;/*輸入記錄*/

case 2: showpaixu(adr,length);break;

case 3: chazhao(adr,length);break;

case 4: biangeng(adr,length);break;

case 5: length=wenjian(adr,length);break;

case 6: about();break;/*關於*/

case 0: return; /*如返回值為則程序結束*/

}

goto menu;

}

拓展資料

C語言是一門通用計算機編程語言,應用廣泛。C語言的設計目標是提供一種能以簡易的方式編譯、處理低級存儲器、產生少量的機器碼以及不需要任何運行環境支持便能運行的編程語言。

盡管C語言提供了許多低級處理的功能,但仍然保持著良好跨平台的特性,以一個標准規格寫出的C語言程序可在許多電腦平台上進行編譯,甚至包含一些嵌入式處理器(單片機或稱MCU)以及超級電腦等作業平台。



4. 如何將電腦和通訊管理機連接

下載個騰訊手機精靈就好了親

5. 如何用c語言編程一個通訊系統的程序

這個比較復雜啊,不是這個上面能說的清楚的

我具體講下面幾點吧:
1 程序分模塊開發,比如錄入模塊,查詢模塊
2 這個程序需要用到資料庫,當然你也可以使用一個文本文件按照格式來保存,看自己需要了
3 數據結構呢,比如說 一條信息就是一個結構 這個結構里包含 姓名 號碼等等。

6. 通訊管理機

什麼是通訊管理機

用於遠動工作站時,它完成全站的微機保護、自動裝置、測控等智能電子裝置的數據集中管理和數據篩選,與調度或集控中心通信交互;用於通信規約轉換裝置時,它負責把不同通信介面(串口、CAN、乙太網等)、不同通信規約的智能裝置接入,這些不同方式接入的設備數據經規約轉換,成為統一格式的數據,到達站控層乙太網匯流排,從而為廠站主計算機系統、遠動工作站裝置的信息交互提供了統一的數據介面。通信管理裝置適用於規模較大、要求較高的廠站綜合自動化系統,也可同廠站自動化裝置配合,用於廠站無人值班改造。

主要特點

通訊管理機為多CPU系統,各CPU通過裝置內部乙太網匯流排協同工作,軟體上分為埠收發模塊、網路報文管理模塊、規約處理模塊、資料庫處理模塊、定時任務調度模塊、系統內核模塊、信息邏輯綜合模塊等。其主要特點有以下幾點:

1、埠收發模塊:該模塊實現了RS232、RS485、CAN匯流排等介面的物理收發控制及緩沖管理。利用專用CPU實現埠驅動,減輕了主CPU模塊的中斷開銷等負荷。
2、網路報文管理模塊:該模塊提供了一組面向對象的網路介面。對不同連接要求的網路數據對象進行連接維護、狀態維護、收發數據緩沖、雙網接收數據自動提取及數據的快速發送和重發等功能。通過該模塊可以方便地實現站控層上與間隔層設備的網路化連接,以及與調度、集控站等的網路高速傳輸。
3、規約處理模塊:規約處理模塊通過串口、CAN或乙太網獲取數據進行處理,將處理結果用統一格式填入實時資料庫,或通過報文轉接給其它介面。系統根據需要,調用統一的數據處理模塊,根據不同的上行規約要求,將數據轉發往調度、集控站或其它裝置。
4、資料庫處理模塊:該模塊包括系統總實時資料庫的維護,送往不同轉發對象的數據引用表的創建,運行時轉發對象數據的篩選、緩沖等。本裝置的實時資料庫提供有SOE、遙信變位、變化遙測、保護事件、裝置自診斷等多種信息的緩沖。
5、定時任務調度模塊及系統內核模塊:該模塊提供了系統事件管理、按時執行設定的任務等功能。具有看門狗功能,可監視各應用進程的實時運行狀況。
6、信息邏輯綜合模塊:該模塊實現了對實時資料庫中的數據進行計算、轉換等綜合功能。根據裝置維護工具軟體里的相應設置,該模塊可以為用戶提供實時數據的邏輯再加工能力,從而改變實時數據的輸出表示方式,或產生新的告警信息等。該功能模塊可在今後的應用中,隨用戶的需求,而不斷發展變化,但原則上,必須強調通過維護工具軟體進行簡單、直觀地設置操作,避免內部數據的混亂。目前維護工具軟體支持:遙信的與或運算、遙測的越限告警、以及保護事件報文轉遙信等功能。

7. 通信管理機的硬體規格

系統
處理器:AMD LX800處理器(板載)
晶元組:AMD Geode, CS5536
前端匯流排:333MHz
內存:板載 256MB DDR內存
BIOS:Award 2Mbit Flash BIOS
看門狗功能:可編程設定 1~255 sec.
操作系統:Win XP Embedded, Linux 2.6.11 and 2.6.18
顯示
顯示介面:VGA (DB15 介面)
乙太網
控制器:2 個10/100Mbps自適應網口,帶LNK和ACT狀態指示燈
隔離措施:支持2.0KV電磁隔離
介面類型:RJ45介面
PXE功能:支持
存儲
系統存儲器:2G工業級DOM 帶擦寫優化功能
SATA:1個SATA介面
SSD:1個CF卡插座(支持UDMA)
輸入/輸出
串口:4個RS-232/485 (DB9 介面)串口,帶數字隔離和突波保護
USB:2個USB2.0
鍵盤/滑鼠:提供PS/2鍵盤滑鼠線插針
GPIO:9-bit 數字輸入/輸出
機箱和環境
機箱尺寸:280.2 mm x 69.2 mm x 137.25 mm(W x H x D,壁掛式安裝)
電源需求:9-36VDC@2A
功 耗:50W
工作溫度:-20~60 ℃
存儲溫度:-20~80 ℃
相對濕度:0 to 90% @ 40, ℃無凝霜
認證:CE、FCC class A
配件列表
1. HDC-AR0402 系統
2. 串口對連線
3. 壁掛式安裝附件
4. HDC Server軟體安裝光碟
訂購信息
標准
HDC-AR0402:無風扇嵌入式工業通訊隔離網關,4串/2網
可選
1、15/17/19英寸工業級觸摸屏

8. 什麼是通訊管理機

通訊管理機也稱作DPU,其具有多個下行通訊介面及一個或者多個上行網路介面,相當於前置機即監控計算機,用於將一個變電所內所有的智能監控/保護裝置的通訊數據整理匯總後,實時上送上級主站系統(監控中心後台機和DCS),完成遙信、遙測功能。

通訊管理機是變配電自動化系統的重要組成部分,完成變電站微機保護、自動裝置、測控等智能電子裝置與變電站主計算機系統、電網自動化系統之間的信息交互。實現各遠方電站信息向上位主機的交換及網路轉換,從而構成全分散式的RTU通訊系統。

(8)通訊管理機編程實例擴展閱讀

通訊管理機的應用:

通訊管理機廣泛應用於鋼鐵冶金行業能源計量、工程機械車聯網、水文水利數據無人值守自動站、電力LCU現地單元串口聯網伺服器等,其採用ARM9-based RISC高效能處理器,使用了精簡內核LINUX嵌入式操作系統,真正實現了工業現場的「3C」(現場控制,現場計算,現場通訊)的要求。

它既可以單獨使用直接通過自帶乙太網口向上傳輸數據,也可以通過無線DTU通信設備介面即時發送數據,還可以和MicroSCADA可編程微控站組合使用形成現地控制單元分層分布應用。

9. 目前用通訊管理機做485通訊,下掛多台串口設備。問題:如何判斷哪台儀器斷開了,有通訊故障

上位機與3台同種型號的設備通過485轉232進行通訊,輪詢,正常;當其中一個...學生在回答問題的時候,哪怕他站起來,沒有說話,呵呵,老師肯定也要等他...

閱讀全文

與通訊管理機編程實例相關的資料

熱點內容
優信二手車解壓後過戶 瀏覽:61
Windows常用c編譯器 瀏覽:778
關於改善國家網路安全的行政命令 瀏覽:833
安卓如何下載網易荒野pc服 瀏覽:654
javainetaddress 瀏覽:104
蘋果4s固件下載完了怎麼解壓 瀏覽:1002
命令zpa 瀏覽:285
python編譯器小程序 瀏覽:944
在app上看視頻怎麼光線調暗 瀏覽:540
可以中文解壓的解壓軟體 瀏覽:592
安卓卸載組件應用怎麼安裝 瀏覽:912
使用面向對象編程的方式 瀏覽:339
程序員項目經理的年終總結範文 瀏覽:929
內衣的加密設計用來幹嘛的 瀏覽:432
淮安數據加密 瀏覽:292
魔高一丈指標源碼 瀏覽:982
松下php研究所 瀏覽:168
c回調java 瀏覽:399
夢幻端游長安地圖互通源碼 瀏覽:745
電腦本地文件如何上傳伺服器 瀏覽:313