一、SOEM主站環(huán)境搭建
(一)安裝VS;
(二)下載SOEM 1.3.1 源代碼:鏈接地址?http://openethercatsociety.github.io/
(三)安裝WinPcap_4_1_3.exe:鏈接地址?https://www.winpcap.org/install/default.htm
二、整體目錄?
(一)soem目錄:實(shí)現(xiàn)主從站功能的主要文件和源文件(頭文件和源文件)
ethercatbase.c : 基于ether功能函數(shù),將數(shù)據(jù)封裝成ethercat幀;
ethercatmain.c : ethercat的初始化,從站數(shù)據(jù)的讀取;
定義ec_slave[],所有從站信息都在這個(gè)結(jié)構(gòu)體內(nèi);
ethercatcoe.c : CoE模塊,應(yīng)用層CoE協(xié)議;
ethercatfoe.c : FoE模塊;
ethercateoe.c : EoE模塊(設(shè)置、獲取IP函數(shù),發(fā)送、接收以太網(wǎng)幀);
ethercatdc.c : EtherCat分布式時(shí)鐘,實(shí)現(xiàn)主從站之間時(shí)針同步。
(二) osal/oshw目錄:操作系統(tǒng)接口文件
oshw.c : 網(wǎng)卡管理模塊;
nicdrv.c : EtherCat原始套接字驅(qū)動(dòng);
osal.c : 定時(shí)器,延時(shí)函數(shù)。
(三)test目錄
運(yùn)行一些demo程序,可以用wireshark工具監(jiān)控ethercat幀。
三、SOEM主站環(huán)境搭建
(一)SOEM代碼編譯
(1)打開(kāi)VS的命令行工具:x86 Native Tools Command Prompt for VS 2017
(2)進(jìn)入解壓的SOEM目錄
cd/d E:\SOEM-1.3.1? ??
(3)編譯lib(替換自己VS安裝地址)
make_libsoem_lib.bat "D:\Program Files(x86)\Microsoft Visual Studio\2017\Community\VC" x86
?(4)生成全部測(cè)試文件
make_test_win32_all.bat "D:\Program Files(x86)\Microsoft Visual Studio\2017\Community\VC" x86
?生成全部測(cè)試文件(生成exe等文件)simple_test.exe文件,至此完成了SOEM源碼的編譯。
(二)獲取當(dāng)前網(wǎng)絡(luò)設(shè)備
EtherCAT從站板配置好上電,通過(guò)網(wǎng)線連接至電腦。
(1)進(jìn)入到SOEM-1.3.1\test\win32\simple_test目錄。
cd test\win32\simple_test\
(2)網(wǎng)絡(luò)設(shè)備列表獲取
? 方法一:直接運(yùn)行simple_test,得到當(dāng)前網(wǎng)絡(luò)設(shè)備;
由于電腦可能有多個(gè)網(wǎng)絡(luò)設(shè)備(無(wú)線、有線、虛擬網(wǎng)絡(luò)等),可能不好判斷實(shí)際網(wǎng)絡(luò)設(shè)備。
simple_test
? 方法二:通過(guò)WinPcap來(lái)獲取設(shè)備列表。(使用方法一可直接跳過(guò))
? ? winpcap(windows packet capture)是windows平臺(tái)下一個(gè)免費(fèi),公共的網(wǎng)絡(luò)訪問(wèn)系統(tǒng)。開(kāi)發(fā)winpcap這個(gè)項(xiàng)目的目的在于為win32應(yīng)用程序提供訪問(wèn)網(wǎng)絡(luò)底層的能力。它用于windows系統(tǒng)下的直接的網(wǎng)絡(luò)編程。Winpcap提供了一個(gè)強(qiáng)大的編程接口,它很容易地在各個(gè)操作系統(tǒng)之間進(jìn)行移植,方便程序員進(jìn)行開(kāi)發(fā)。
? 1.下載并安裝WinPcap運(yùn)行庫(kù):http://www.winpcap.org/install/default.htm
? 2.下載WinPcap開(kāi)發(fā)包:http://www.winpcap.org/devel.htm
? 3.新建一個(gè)空項(xiàng)目。以管理員的權(quán)限打開(kāi)VS2017,新建一個(gè)VC++的Win32控制臺(tái)應(yīng)用程序,設(shè)置為空項(xiàng)目。
? ?4.添加wpcap.lib和ws2_32.lib兩個(gè)庫(kù)。
?? 5.設(shè)置項(xiàng)目。打開(kāi)項(xiàng)目屬性,如圖,添加WPCAP和HAVE_REMOTE這兩個(gè)宏定義。
? ?6.添加包含路徑(Include和Lib目錄)包含目錄和庫(kù)目錄。(上面下載的WinPcap開(kāi)發(fā)包)
?? 7.設(shè)置UAC。(非必須,推薦設(shè)置,讓生成的程序能夠自主觸發(fā)管理員權(quán)限對(duì)話框。無(wú)論如何,最終生成的程序都需要以管理員權(quán)限運(yùn)行)
? 8.直接運(yùn)行可能會(huì)出現(xiàn),“const char * 與char * 不兼容” 的問(wèn)題。
?9.完成上述步驟后,向項(xiàng)目添加需要的源文件即可。
注意:此處配置的為x64,否則會(huì)出現(xiàn)“找不到pcap.h”的情況。由于開(kāi)發(fā)winpcap項(xiàng)目的目的在于為win32應(yīng)用程序提供訪問(wèn)網(wǎng)絡(luò)底層的能力,因此開(kāi)發(fā)包里面有大量的WIN32的標(biāo)識(shí)符,直接使用會(huì)出現(xiàn)“未定以標(biāo)識(shí)符”錯(cuò)誤。
拷貝文件后,運(yùn)行跳出窗口 顯示網(wǎng)絡(luò)設(shè)備列表。
#define WIN32
#include <iostream>
#include "pcap.h"
#pragma comment(lib,"wpcap")
using namespace std;
int main()
{
pcap_if_t* alldevs;
pcap_if_t* d;
char errbuf[PCAP_ERRBUF_SIZE];
//獲取設(shè)備列表
if (pcap_findalldevs_ex(PCAP_SRC_IF_STRING, NULL, &alldevs, errbuf) == -1)
{
cout << "Error in pacp_findalldevs_ex:" << errbuf << endl;
return -1;
}
int i = 0;
for (d = alldevs; d != NULL; d = d->next)
{
cout << endl;
cout << i++ << " " << d->name << endl;
if (d->description)
cout << " <" << d->description << ">" << endl;
else
cout << " <No description>" << endl;
}
if (i == 0)
{
cout << "No interfaces found!" << endl;
return -1;
}
pcap_freealldevs(alldevs);
return 0;
}
(三)SOEM代碼測(cè)試
(1)simple_test測(cè)試
運(yùn)行simple_test.exe \Device\NPF_{XXXX},其中\(zhòng)Device\NPF_{XXXX}是電腦的網(wǎng)絡(luò)設(shè)備符。
simple_test.exe \Device\NPF_{XXXX}
(2)simple_test測(cè)試結(jié)果
如果出現(xiàn)“No slave found!”則是沒(méi)有連接從站控制器,所以并沒(méi)有掃描到從站信息;
嘗試重連EtherCat從站后,掃面結(jié)果"1 slaves found and configured."
(四)Win11系統(tǒng)識(shí)別不到網(wǎng)絡(luò)設(shè)備列表
以管理員身份運(yùn)行命令行串口,輸入
net start npf
?啟動(dòng)NPF。
參考文檔:
EtherCat主站開(kāi)源的C語(yǔ)言庫(kù)SOEM說(shuō)明
【SOEM主站】一、SOEM主站環(huán)境搭建及連接板子測(cè)試
EtherCAT-SOEM主站搭建-windows
VS配置Winpcap環(huán)境及獲取設(shè)備列表文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-447657.html
VS2019配置WinPcap開(kāi)發(fā)文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-447657.html
到了這里,關(guān)于EtherCat--主站開(kāi)源的C語(yǔ)言庫(kù)SOEM-環(huán)境搭建的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!