时钟跳变预警发布系统在江苏广电总台的应用

2017-12-05 09:10:59梁枫沈洲江苏省广播电视总台
视听界(广播电视技术) 2017年5期
关键词:总台串口时钟

梁枫 沈洲 江苏省广播电视总台

时钟跳变预警发布系统在江苏广电总台的应用

梁枫 沈洲 江苏省广播电视总台

本文以江苏广电总台时钟系统为例,分析了当前时钟系统运行的现状、薄弱环节和改造情况,由此设计一种多来源时钟比对预警发布系统,介绍了其设计原理、系统构成及应用情况。

北斗/GPS时钟 多级防跳变 时钟比对 预警发布

1.引言

电视台时钟系统是一个大型通信计时系统,用以实现电视台内部相关技术系统之间的时间信号统一,便于电视台内演播、制作、播出链路的所有环节在同一时间下准确无误地工作。时钟系统使台内编播人员时刻掌握标准的时间信息,为台内各个岗位之间顺畅的配合工作提供准确、统一的时间依据,确保电视台各相关业务部门的高效运转,因此确保时钟系统的可靠运行至关重要。本台自主研发了一套多来源时钟信号比对及预警发布系统,有效的提高了对时钟系统的监控能力,提升了安全播出的保障水平。

2. 设计背景

江苏广电总台全台统一时钟系统投入使用已有多年,图1是改造前的时钟系统图。系统中使用的单GPS的TVZ3100校时母钟进入老化期,时有失锁情况产生,还出现过无故跳秒的现象,给安全播出带来了极大隐患。由于送往演播室的时钟信号不具备防跳变功能,而送往播控系统的时钟具备防跳变功能,如果时钟源发生跳变会导致演播室的时钟跟着跳变而播控系统的时钟保持原有状态继续走时,这使得演播室系统与播控系统的时钟出现不一致。对于直播节目来说,时钟不一致会导致节目切换不准确,最终引发播出事故,因此将原有时钟源进行更新已迫在眉睫。另外,虽然各来源的时钟系统都配备了显示模块进行时钟监看,但是时钟失锁或者跳变往往发生在一瞬间,值班人员很难第一时间发现时钟异常现象。为此,我们开发了一套多来源时钟信号比对及预警发布系统。该系统可对多个时钟源和时钟倒换后的输出信号进行实时比对,第一时间发现出现异常的时钟信号节点,并进行实时语音报警提醒和发送微信消息提醒。

图1 改造前时钟系统图

3 .总体架构设计

改造后的时钟系统如图2所示。系统采用了广电时通的ST3100B时钟,该时钟为可接收北斗/GPS信号的双模时钟,同时该时钟还内置了高稳钟模块。A、B两路时钟分别接收北斗/GPS信号并锁定,输出EBU时钟信号送入时码倒换器,如果外来接收信号发生异常,则会采用时钟内部高稳钟模块维持原有的时钟走时。其中,时码倒换器输出后的时钟信号作为主时钟信号,经过分配后送至各个业务系统使用。B路时钟输出后先进行分配,一路进入时码倒换器,其它的分配输出作为备路时钟信号送往各业务系统使用。

时钟系统改造完成后,播出系统时钟形成了3级防跳变的机制确保授时系统的稳定可靠。其中第一级防跳变位于外来时钟信号源端,采用时钟自带的高稳钟模块,在外部时钟发生跳变或丢失的情况下,可通过自身的稳定时钟源对外输出时钟信号。第二级防跳变系统位于时钟服务器中,时钟服务软件在接收外来串口时钟信号后转换为NTP信号对外发布,同时也会校准操作系统本地时钟。如果时钟服务软件检测到外来时钟信号发生跳变,则会拒绝同步外来信号,而采用操作系统时钟作为时钟源进行时钟信号的对外发布。第三级防跳变位于播控工作站端,通常情况下播控软件直接同步时钟服务器发出的NTP时钟信号,如果播控软件检测到时钟服务器的时钟发生异常,则不会同步该网络时钟信号,而采用播控工作站本地时钟信号作为相关业务的基准时钟信号。

系统更换的两台北斗/GPS双模时钟和时码倒换器都有RS-232串口输出16进制时钟信号,具体信号格式为:波特率9600bps,8位数据,1位停止位,无校验,整秒发送,依次为同步字(AAH)、00H、00H、百年、年、月、日、星期、时、分、秒、03H。时钟采集服务器通过实时采集多路RS-232串口时钟信号进行分析比对,即可判断出异常的时钟信号节点。

实际实施过程中,采用了一台安装了Windows 7操作系统和.NET Framework 3.5运行环境的工控机作为时钟采集、比对预警服务器,在其空余的PCI插槽中插入了一块4路的MOXA多串口卡,并将MOXA卡的模式设为RS-232,通过3条串口线分别将两台北斗/GPS双模时钟和时钟倒换器的RS-232输出口与MOXA卡的RS-232输入口相连,用于采集实时的时钟信号。时钟监测报警软件对于采集的各个来源的时钟信号进行实时解析转换,并进行横向与纵向双重比对。如果比对结果为时钟系统出现异常,则会自动触发预警模块,进行语音报警提醒以及发送微信消息提醒。横向对比指的是三个不同来源之间的时钟进行相互比对,如果有一路时钟信号与其他两路时钟信号之间的差值超过设定范围,则该路信号为异常信号。而纵向对比指的是每一路时钟信号在当前时间取值与其上一秒的时间取值的差值是否超过设定的范围(目前的配置为1秒),如果差值超过1秒,则该路信号为异常信号。

4 .关键技术实现

时钟报警检测软件为整个时钟跳变预警发布系统中的核心软件,时钟监测报警软件界面如图3所示。该软件负责处理采集多来源的时钟信号,实时比对相关信号,将出现异常的信号及时发布预警信息。软件在设计时考虑到系统兼容性,对不同厂家的时钟产品如青岛时钟(波特率4800)、广电时通(波特率9600)等进行适配,将端口、波特率作为可配置选项,时钟监测报警软件配置如图4所示。整个软件由3个模块组成,分别为时钟信号采集处理模块、时钟信号比对模块、时钟信号异常报警发布模块。以下将对这3个模块进行具体的介绍。

图3 时钟监测报警软件界面

图4 时钟监测报警软件配置

4.1 时钟信号采集处理模块

时钟监测报警软件采用了C#中的SerialPort类实现了RS-232串口通信。时钟信号的采集处理主要分为两个步骤:第一步是检测串口是否存在,以及对应的端口是否打开;第二步是实时读取串口中传输的2进制信号,并根据对应型号时钟的编码方式将其转换为16进制可读信号,并取出其中的时钟信息。

第一步的检测端口并初始化的部分代码如下:

sp1 = new SerialPort();

LogClass.WriteLog(quot;checkClockquot;, quot;nTimeCode1- nTimeCode2 = quot; + Math.Abs(nTimeCode1- nTimeCode2).ToString() + quot;nTimeCode2 -nTimeCode3=quot; + Math.Abs(nTimeCode2 -nTimeCode3).ToString());

}

纵向对比指的是每一路时钟信号在当前时间取值与其上一秒的时间取值的差值是否超过1秒,如果差值超过1秒,则该路信号为异常信号。

纵向比对部分代码:

//计算当前时间取值与其上一秒的时间取值的差值if (((nTime1 - nOldTime1) gt; maxOffset) amp;amp; ((nTime1- nOldTime1)!=41))

{

errCount++;

e++;

alarmMsg1 = quot;【quot; + groupBox1.Text + quot;】发生跳变!quot;;

LogClass.WriteLog(quot;checkClockquot;, quot;【时钟源-1】发生跳变!old:quot; + nOldTime1.ToString() + quot;,now:quot; +nTime1.ToString());

}

4.3 时钟信号异常报警发布模块

时钟比对模块在检测到时钟信号出现丢失或跳变等异常情况后,会自动进行语音报警,提醒值班人员加以关注;发送微信消息提醒,有利于各环节人员及时掌握相关情况。在软件设计时,考虑到对时钟信号的采集、处理、比对和相关报警信息发布为相互独立的模块,因此采用多线程的方法,将报警发布模块单独开启一个线程进行独立处理。采用多线程的方式既明晰了软件的系统结构,同时减轻了单线程处理任务的压力。

此外,由于时钟信号出现异常时可能会同时出发多种不同类型报警信息,如果这些报警信息同时发送会引发冲突,为了解决有可能引发冲突的问题,在软件中采用队列的方式,将报警信息进行收集排序来避免冲突的发生。部分代码如下:

private void sendAlarm(string msg)

{

writeLog(msg);

pt = new playTask(msg, quot;90quot;, quot;-1quot;);

myQueue.Enqueue(pt);

}

语音提醒调用SpeechSynthesizer类实现,部分代码如下:

System.Speech.Synthesis.SpeechSynthesizer sp = new

System.Speech.Synthesis.SpeechSynthesizer();

sp.SetOutputToDefaultAudioDevice();

sp.Volume = volume;

sp.Rate = speed;

sp.Speak(alarmText);

LogClass.WriteLog(quot;alarmLogquot;, quot;成功播放报警:quot; +

alarmText);

sp.Dispose();

发送微信消息采用的是调用微信公众平台提供的发送消息接口实现的,图5是时钟源异常微信消息报警推送截屏,其代码如下:

string postData;

postData = quot;clientID=szjkamp;sourceID=时钟监控amp;alarmType=quot; + alarmType + quot;amp;channelName=quot; +strChnName + quot;amp;msg=quot; + msg;

string url = Settings1.Default.WXMsgAddress.ToString();

CookieContainer cc = new CookieContainer(); //接收缓存

b y t e[] b y t e A r r a y = E n c o d i n g.U T F 8.GetBytes(postData); // 转化

HttpWebRequest webRequest2 = (HttpWebRequest)WebRequest.Create(url); //新建一个WebRequest对象用来请求或者响应url

webRequest2.CookieContainer=cc; //保 存cookie

webRequest2.Method=quot;POSTquot;; //请求方式是POST

webRequest2.Referer = url;

webRequest2.ContentType = quot;application/x-wwwform-urlencodedquot;; //请求的内容格式为application/x-www-form-urlencoded

webRequest2.ContentLength = byteArray.Length;

Stream newStream = webRequest2.GetRequestStream();

//返回用于将数据写入 Internet 资源的 Stream。

// Send the data.

newStream.Write(byteArray, 0, byteArray.Length);//写入参数

newStream.Close();

HttpWebResponse response2 = (HttpWebResponse)webRequest2.GetResponse();

StreamReader sr2 = new StreamReader(response2.GetResponseStream(), Encoding.Default);

string sendResult = sr2.ReadToEnd();

LogClass.WriteLog(quot;sendWXAlarmquot;, sendResult + quot;:quot;+ msg);

图5 时钟源异常微信消息报警推送

5.结束语

以上是对江苏广电总台时钟跳变预警发布系统的设计原理、系统构成的简要介绍。本系统的上线使用,很好的弥补了我台对于时钟出现异常时监测能力不足的问题。该系统能有效帮助值班人员在第一时间发现时钟系统的异常情况,极大的提升了台内统一时钟系统的安播保障水平。目前该系统还是简单的对时钟信号源进行监测,未来可对该系统进行相关扩展,台内全链路的时钟信号节点都可纳入整个预警发布平台,构建出一套全台的时钟监控预警平台。我台时钟跳变预警发布系统作为电视台时钟异常监测的一个案例,希望能够为广电行业内的时钟异常监测管理提供借鉴和帮助。

猜你喜欢
总台串口时钟
中央广播电视总台成立五周年座谈会召开
中央广播电视总台召开青年英才座谈会
别样的“时钟”
浅谈AB PLC串口跟RFID传感器的通讯应用
古代的时钟
中央广播电视总台评出2019年国内十大体育新闻
灌篮(2020年1期)2020-07-21 08:16:42
中央广播电视总台、民政部联合摄制的《中国地名大会》开播
中国民政(2019年22期)2020-01-07 01:37:28
有趣的时钟
时钟会开“花”
USB接口的多串口数据并行接收方法探索