在工控行业很多领域中,需要控制系统具有高精度的时间同步功能,irig就是美国靶场司令委员会制定的一种时间标准。自em9x60后,英创em928x嵌入式主板也实现了irig-b码校时功能。之前的相关文章见链接http://www.emtronix.com/article/article2011414.html。
irig是美国靶场司令委员会制定的一种时间标准,其中的串行时钟编码共有6种格式,即a、b、d、e、g、h。它们的主要差别是时间码的帧速率不同,广泛应用的irig-b即其中的b型编码,b型码的时帧速率为1帧/s,可传递100位信息。图1是igig-b码示意图,其时帧周期是1s,每秒100个码元,使用脉宽编码方式,每个码元脉宽10ms,共三种码元,其中高电平5ms和2ms分别表示二进制 “1”,“0”,高电平8ms为位置标识,分别为p0,p1,…p9。连续两个8ms宽度脉冲的第二个8ms脉冲的前沿为秒准点标志,也是一个时间格式的帧参考标志。一个时间格式帧包含了秒,时,分,天数,年份,控制位等丰富的信息。
图1:irig-b码标准
em9280拥有4路irq,其中irq3也可用于irig-b码校时。使用irig-b码校功能时,需要设置注册表,关闭irq3功能
[hkey_local_machine\drivers\builtin\irq3]
'trueinstall'=dword:0
同时打开iriqb对时功能
[hkey_local_machine\drivers\builtin\igb1]
'trueinstall'=dword:1
此时irigb功能打开,irq3不能继续做irq使用(其它3路irq可正常使用)。
在与irig-b码时钟源时间同步时,用户并不需要关心irig-b码的具体含义,实现方法,仅需要将b码送到em9280的irq3接口(对应英创em9280评估底板cn10,11针脚)就行了,em9360的驱动程序将完成b码解码,同步等工作。
应用层面使用em9280的irig-b校时功能方法如下。
1、通过标准的文件操作方式来打开系统的校时功能。
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、关闭由createfile打开的handle,即关闭系统校时功能。
closehandle(hirigb);
3、用户可以调用deviceiocontrol来查看系统最近一次同步的时间,调用方法如下:
#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、用户可以通过修改系统注册表来配置灵活的校时方案,通过注册表的设置,可实现时间秒同步、分钟同步、小时同步或日同步,对应的注册表项如下:(下面的注册表键值为系统默认值)
[hkey_local_machine\drivers\builtin\igb1]
'devicearrayindex'=dword:1
'prefix'='igb'
'dll'='irig_b.dll'
'deviceid'=dword: fe
'priority256'=dword:88
; autosync =0: 禁止校时功能; =1: 秒同步; =2: 分同步; = 3: 小时同步; = 4: 日同步
'autosync'=dword:2 ; minute sync
; syncminute:当autosync为小时同步时,在syncminute分钟进行同步
'syncminute'=dword:3b ; 0x3b = 59 -> minute on sync
; synchour: 当autosync为日同步时,在synchour小时进行同步
'synchour'=dword:17 ; 0x17= 23 -> hour on sync
传统的工控板卡在对irig-b码处理时,通常需要增加额外的硬件(如单片机,fpga)对b码进行解码,然后再通过串口、总线或其它形式将数据交给主控板卡处理,增加了系统成本和操作难度,英创em9280及em9x60可直接对b码进行解码,不需要增加任何硬件就能实现毫秒级精度的时间同步,大大降低了系统复杂程度,节约了成本,提高了系统稳定性。
5G+AI赋能 精装智能门锁配置率超70%
武汉数字孪生工厂3D模型,三维可视化建模,三维虚拟仿真交互模型
触觉反馈技术在未来将会有多强大
Intel vPro进驻校园 看它如何玩转高校数字化建设
免费在线简单高大上的组织架构图怎么做?这3款软件教你
英创信息技术主板EM9280 IRIG-B码校时方案简介
TMC2225步进电机驱动芯片概述及特性
人工智能会为肿瘤诊疗带来什么
BCG发布《2018年全球最具创新力企业50强》,有你喜欢的企业入榜吗?
新能源之神:特斯拉在加拿大测试最新的智能电网实验
日本东丽研发波长转换技术应用于非晶硅平板探测器中
石墨烯「凉被」有助于电晶体散热
在实际的联网应用中该如何选择WiFi模块呢?
用实际行动告诉你 这个“s”不能轻视
爱立信与VMware签署了一项合作协议将助力通信服务供应商简化部署
不正常关电脑会怎样
麒麟9010和苹果A17哪个更好?
4K超高清液晶拼接屏成功应用于南京某国际酒店会议中心!
数字可视化大屏+组态软件为什么会这么强
SCARA机械手投入使用 国产机器人首次进入高端柔性屏幕生产线