一般獲取精準(zhǔn)時(shí)間的方式有兩種,第一種就是從NTP服務(wù)器上獲取,第二種則是通過(guò)衛(wèi)星獲取UTC時(shí)間,對(duì)于不能聯(lián)網(wǎng)的設(shè)備若想通過(guò)NTP協(xié)議獲取時(shí)間就只能通過(guò)外接支持UDP傳輸?shù)木W(wǎng)絡(luò)模塊,比如串口服務(wù)器。若設(shè)備支持衛(wèi)星定位則可通過(guò)獲取衛(wèi)星的UTC時(shí)間來(lái)獲取準(zhǔn)確時(shí)間,對(duì)于需要使用北京時(shí)間的設(shè)備則需要通過(guò)換算。
UTC就是協(xié)調(diào)世界時(shí),又稱世界統(tǒng)一時(shí)間、世界標(biāo)準(zhǔn)時(shí)間、國(guó)際協(xié)調(diào)時(shí)間,北京位于東八區(qū)比UTC時(shí)間快8小時(shí)的時(shí)區(qū)。
下面小編將通過(guò)Modbus衛(wèi)星定位模塊獲取UTC時(shí)間并通過(guò)MCGS腳本轉(zhuǎn)換東八區(qū)時(shí)間再通過(guò)Modbus協(xié)議修改PLC的RTC時(shí)鐘。
衛(wèi)星定位模塊采用EBYTE的E108-D01,一款支持多模定位并且支持UTC時(shí)間查詢的Modbus RTU從機(jī),下表為E108-D01寄存器表截取的本案例會(huì)使用到的寄存器,寄存器直接存儲(chǔ)的UTC時(shí)間,需要+8小時(shí)換算成北京時(shí)間;
時(shí)間運(yùn)算不能是簡(jiǎn)單地加8小時(shí),需要考慮大小月與閏年,以及時(shí)間計(jì)算的進(jìn)位處理,比較復(fù)雜,MCGS腳本支持時(shí)間戳轉(zhuǎn)換,則可以將獲取的UTC時(shí)間轉(zhuǎn)換為時(shí)間戳,在加上8小時(shí)(時(shí)間戳計(jì)算需要使用秒,8小時(shí)等于28800秒),再轉(zhuǎn)換為其他格式的時(shí)間數(shù)據(jù),使用時(shí)間戳計(jì)算可以忽略大小月、閏年等復(fù)雜的時(shí)間處理過(guò)程。
有些PLC也支持通過(guò)時(shí)間戳配置RTC時(shí)間,有些則需要使用BCD或者普通的數(shù)值。
TM221可以通過(guò)BCD碼利用存儲(chǔ)字和存儲(chǔ)位配置系統(tǒng)字(%SW49-%SW53)結(jié)合系統(tǒng)位(%S50),下圖就可以看出利用系統(tǒng)字和系統(tǒng)位配置時(shí)間比較復(fù)雜;
TM221也可以通過(guò)PLC組態(tài)軟件中的“功能塊”的RTC功能修改,這里小編就通過(guò)這種方式修改PLC的RTC時(shí)間;
MCGS使用最便宜的TPC7062TX,該設(shè)備具有兩個(gè)串口,一個(gè)RS485(COM2)接口,一個(gè)RS232接口(COM2)接口,引腳定義這里就不再說(shuō)明,不知道的可以到MCGS官網(wǎng)查詢。
這里使用官方自帶的設(shè)備,“所有設(shè)備”的“PLC”目錄下的“莫迪康-Modbus RTU”驅(qū)動(dòng),
PLC則使用施耐德的TM221,需要配置下列PLC梯型圖,使用了6個(gè)保持寄存器存儲(chǔ)MCGS發(fā)送的“年”“月”“日”“時(shí)”“分”“秒”,利用中間寄存器將參數(shù)寫(xiě)入RTC功能塊實(shí)現(xiàn)時(shí)間校準(zhǔn)。
將TM221使用寄存器格式化為下表,方便MCGS配置寄存器。
配置MCGS的設(shè)備列表以及寄存器查詢表,如下圖所示:
父設(shè)備配置,即RS-485總線的波特率參數(shù),這里使用波特率9600,數(shù)據(jù)位8,停止位1,無(wú)校驗(yàn);
分別配置GPS的寄存器地址,并使用地址1,配置TM221的寄存器地址,并使用地址0;
簡(jiǎn)單做一個(gè)人機(jī)交互界面,如下所示:
下圖是MCGS的時(shí)間戳處理函數(shù),這里只說(shuō)明了時(shí)間字符串轉(zhuǎn)時(shí)間戳,以及通過(guò)時(shí)間戳獲取年份的兩個(gè)函數(shù),其余函數(shù)用法類(lèi)似。
將從GPS獲取的UTC時(shí)間分別賦予“當(dāng)前UTC時(shí)間”,并通過(guò)字符串格式化函數(shù)將數(shù)值格式化為YYYY-MM-DD HH:MM:SS格式的字符串,方便直觀讀取數(shù)據(jù)和使用;
!StrFormat("%g-%g-%g %g:%g:%g",GPS_Year,GPS_Month,GPS_Day,GPS_Hour,GPS_Minute,GPS_Second)
將當(dāng)前UTC時(shí)間轉(zhuǎn)換為時(shí)間戳,并將函數(shù)服務(wù)器控件“UTC時(shí)間戳”;
!TimeStr2I(!StrFormat("%g-%g-%g %g:%g:%g",GPS_Year,GPS_Month,GPS_Day,GPS_Hour,GPS_Minute,GPS_Second))
將時(shí)間戳增加8小時(shí)后,轉(zhuǎn)換為對(duì)應(yīng)的北京時(shí)間的“年月日時(shí)分秒”并服務(wù)“北京時(shí)間”控件;
!TimeGetYear(!TimeStr2I(!StrFormat("%g-%g-%g %g:%g:%g",GPS_Year,GPS_Month,GPS_Day,GPS_Hour,GPS_Minute,GPS_Second))+28800)
!TimeGetMonth(!TimeStr2I(!StrFormat("%g-%g-%g %g:%g:%g",GPS_Year,GPS_Month,GPS_Day,GPS_Hour,GPS_Minute,GPS_Second))+28800)
!TimeGetDay(!TimeStr2I(!StrFormat("%g-%g-%g %g:%g:%g",GPS_Year,GPS_Month,GPS_Day,GPS_Hour,GPS_Minute,GPS_Second))+28800)
!TimeGetHour(!TimeStr2I(!StrFormat("%g-%g-%g %g:%g:%g",GPS_Year,GPS_Month,GPS_Day,GPS_Hour,GPS_Minute,GPS_Second))+28800)
!TimeGetMinute(!TimeStr2I(!StrFormat("%g-%g-%g %g:%g:%g",GPS_Year,GPS_Month,GPS_Day,GPS_Hour,GPS_Minute,GPS_Second))+28800)
!TimeGetSecond(!TimeStr2I(!StrFormat("%g-%g-%g %g:%g:%g",GPS_Year,GPS_Month,GPS_Day,GPS_Hour,GPS_Minute,GPS_Second))+28800)
“修改”按鈕控件,需要先判斷UTC時(shí)間有效后才能進(jìn)行校時(shí),具體腳本如下:
至此就完成了衛(wèi)星校時(shí)的全部配置,億佰特小編從E108-D01如何獲取時(shí)間到PLC梯形圖開(kāi)放RTC配置接口再到MCGS如何寫(xiě)入時(shí)間PLC進(jìn)行了細(xì)化簡(jiǎn)介,根據(jù)這種方法可以對(duì)任何支持Modbus RTU協(xié)議的設(shè)備進(jìn)行衛(wèi)星校時(shí)。
下圖是利用仿真設(shè)備演示跨月與跨年時(shí)設(shè)備自動(dòng)校準(zhǔn)北京時(shí)間的過(guò)程:
7 X 24 銷(xiāo)售服務(wù)熱線
4000-330-990深圳辦事處柯經(jīng)理:18218726658 杭州辦事處戴經(jīng)理:17512568697
常州辦事處崔經(jīng)理:15906110783 南京辦事處葛經(jīng)理:17626012283
業(yè)務(wù)郵箱:support@cdebyte.com
全國(guó)銷(xiāo)售投訴電話:19934352316
地址:四川省成都市高新西區(qū)西區(qū)大道199號(hào)B5棟(前臺(tái)座機(jī):028-61543675)
?? 成都億佰特電子科技有限公司【版權(quán)所有】 蜀ICP備13019384號(hào)-3