在工控行業(yè)很多領(lǐng)域中,需要控制系統(tǒng)具有高精度的時(shí)間同步功能,IRIG就是美國靶場司令委員會制定的一種時(shí)間標(biāo)準(zhǔn)。自EM9X60后,英創(chuàng)EM928x嵌入式主板也實(shí)現(xiàn)了IRIG-B碼校時(shí)功能。之前的相關(guān)文章見鏈接http://www.emtronix.com/article/article2011414.html。
IRIG是美國靶場司令委員會制定的一種時(shí)間標(biāo)準(zhǔn),其中的串行時(shí)鐘編碼共有6種格式,即A、B、D、E、G、H。它們的主要差別是時(shí)間碼的幀速率不同,廣泛應(yīng)用的IRIG-B即其中的B型編碼,B型碼的時(shí)幀速率為1幀/s,可傳遞100位信息。圖1是IGIG-B碼示意圖,其時(shí)幀周期是1s,每秒100個(gè)碼元,使用脈寬編碼方式,每個(gè)碼元脈寬10ms,共三種碼元,其中高電平5ms和2ms分別表示二進(jìn)制 “1”,“0”,高電平8ms為位置標(biāo)識,分別為P0,P1,…P9。連續(xù)兩個(gè)8ms寬度脈沖的第二個(gè)8ms脈沖的前沿為秒準(zhǔn)點(diǎn)標(biāo)志,也是一個(gè)時(shí)間格式的幀參考標(biāo)志。一個(gè)時(shí)間格式幀包含了秒,時(shí),分,天數(shù),年份,控制位等豐富的信息。
圖1:IRIG-B碼標(biāo)準(zhǔn)
EM9280擁有4路IRQ,其中IRQ3也可用于IRIG-B碼校時(shí)。使用IRIG-B碼校功能時(shí),需要設(shè)置注冊表,關(guān)閉IRQ3功能
[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\IRQ3]
'TrueInstall'=dword:0
同時(shí)打開IRIQB對時(shí)功能
[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\IGB1]
'TrueInstall'=dword:1
此時(shí)IRIGB功能打開,IRQ3不能繼續(xù)做IRQ使用(其它3路IRQ可正常使用)。
在與IRIG-B碼時(shí)鐘源時(shí)間同步時(shí),用戶并不需要關(guān)心IRIG-B碼的具體含義,實(shí)現(xiàn)方法,僅需要將B碼送到EM9280的IRQ3接口(對應(yīng)英創(chuàng)EM9280評估底板CN10,11針腳)就行了,EM9360的驅(qū)動程序?qū)⑼瓿葿碼解碼,同步等工作。
應(yīng)用層面使用EM9280的IRIG-B校時(shí)功能方法如下。
1、通過標(biāo)準(zhǔn)的文件操作方式來打開系統(tǒng)的校時(shí)功能。
HANDLE hIrigb;
hIrigb = CreateFile(L'IGB1:', // name of device
GENERIC_READ|GENERIC_WRITE, // desired access
FILE_SHARE_READ|FILE_SHARE_WRITE, // sharing mode
NULL, // security attributes (ignored)
OPEN_EXISTING, // creation disposition
FILE_FLAG_RANDOM_ACCESS, // flags/attributes
NULL); // template file (ignored)
2、關(guān)閉由CreateFile打開的HANDLE,即關(guān)閉系統(tǒng)校時(shí)功能。
CloseHandle(hIrigb);
3、用戶可以調(diào)用DeviceIoControl來查看系統(tǒng)最近一次同步的時(shí)間,調(diào)用方法如下:
#define IOCTL_IRIG_B_GET_TIME CTL_CODE(FILE_DEVICE_UNKNOWN, 0xC10, METHOD_BUFFERED, FILE_ANY_ACCESS)
bRet = DeviceIoControl(hIrigb, // file handle to the driver
IOCTL_IRIG_B_GET_TIME, // I/O control code
NULL, // in buffer
0, // in buffer size
&systime, // out buffer
sizeof(SYSTEMTIME), // out buffer size
NULL, // pointer to number of bytes returned
NULL); // ignored (=NULL)
4、用戶可以通過修改系統(tǒng)注冊表來配置靈活的校時(shí)方案,通過注冊表的設(shè)置,可實(shí)現(xiàn)時(shí)間秒同步、分鐘同步、小時(shí)同步或日同步,對應(yīng)的注冊表項(xiàng)如下:(下面的注冊表鍵值為系統(tǒng)默認(rèn)值)
[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\IGB1]
'DeviceArrayIndex'=dword:1
'Prefix'='IGB'
'Dll'='irig_b.dll'
'DeviceID'=dword: fe
'Priority256'=dword:88
; AutoSync =0: 禁止校時(shí)功能; =1: 秒同步; =2: 分同步; = 3: 小時(shí)同步; = 4: 日同步
'AutoSync'=dword:2 ; minute sync
; SyncMinute:當(dāng)AutoSync為小時(shí)同步時(shí),在SyncMinute分鐘進(jìn)行同步
'SyncMinute'=dword:3b ; 0x3b = 59 -> minute on sync
; SyncHour: 當(dāng)AutoSync為日同步時(shí),在SyncHour小時(shí)進(jìn)行同步
'SyncHour'=dword:17 ; 0x17= 23 -> hour on sync
傳統(tǒng)的工控板卡在對IRIG-B碼處理時(shí),通常需要增加額外的硬件(如單片機(jī),FPGA)對B碼進(jìn)行解碼,然后再通過串口、總線或其它形式將數(shù)據(jù)交給主控板卡處理,增加了系統(tǒng)成本和操作難度,英創(chuàng)EM9280及EM9X60可直接對B碼進(jìn)行解碼,不需要增加任何硬件就能實(shí)現(xiàn)毫秒級精度的時(shí)間同步,大大降低了系統(tǒng)復(fù)雜程度,節(jié)約了成本,提高了系統(tǒng)穩(wěn)定性。
-
嵌入式主板
+關(guān)注
關(guān)注
7文章
6084瀏覽量
35155
發(fā)布評論請先 登錄
相關(guān)推薦
評論