1、HT-77超导托卡马克核聚变装置中中央定时系统的实现 Realization of central timing system of HT-7 superconduction Tokamak fusion device 摘要:HT-7 是作为中国主要核聚变实验基地的中国科学院等离子物理研究所研制的国内第一个超导托卡马克核聚变装置。在做HT-7实验时需要一个中央定时系统,为整个实验系统发送统一的时间信号,从而协调其它各子系统,使它们能够按照主控机给定的实验运行模式投入运行。本文较为详细地介绍了该中央定时系统的开发过程。 关键词:控制 系统(CODAS) 式控制系统 中央定时系统 Abstract
2、: HT-7 is the first superconduction Tokamak fusion device of China, which is invented and constructed by ASIPP as the main base of the nuclear fusion in China. A Central Timing System is needed to generate uniform time signal for the HT-7 experiment system to coordinate all other sub-systems. Theref
3、ore the sub-systems can run under the run mode which is produced by main control computer. This paper gives a detailed introduction to this central timing system. Keywords: control and data acquisition system distributed control system central timing system 1. HT-7 式控制系统 物理 的HT-7而 ,其控制 系统 CODAS 的, 关
4、系 能 在HT-7 实现 运行的 。在国currency1控制“, 式控制系统fiflfi ,fl的 中式控制系统 ,它能 地 系统的 控制” 理。所中国科学院等离子物理研究所 HT-7 的 CODAS 按式控制模式行 , 信 各控制 机间的信, 一 系统的控制 ,一 中的国 科学 程HT-7U的CODAS 。 HT-7的控制系统按 能模 为 个主要 : a. 中央控制系统: HT-7整个系统的”控 各子系统 统一的定时 发信号实现系统的 机 能。 b. 控制系统:实现各子系统的currency1主控制。 c. 系统:实现各子系统 信号的 。 d. 理系统:实现 实验 的理。 其中中央控制系统
5、 主控 机 系统中央定时系统 。 在HT-7控制系统中,主控 机子系统 控制 机间是过fl实现 的,而子系统 机本地 的 CAMAC 机 或VXI机 间是过的测控总线 器实现 。 2. 中央定时系统 HT-7的 CODAS 是一个 式系统,其特点就在 系统是若干个子系统 ,各子系统间既互独立 互作。 在互作的过程中,为了证HT-7各个子系统能协调一致运行,就一个系统间的同步问题。 个同步机制是一个宏观的外 的同步机制,它不同 一个模件或逻辑电路的内 时序。就系统而 ,同步机制的配置两种案:局同步机制 局 同步机制。 HT-7中央控制系统中的同步机 拟 局同步机 ,其一是局同步机 便 中运行 靠
6、;其二是易 理维护;其是时间 的 置灵活。我们 HT-7中央控制系统中的局同步机 称为HT-7中央定时系统。 中央定时系统的时间 不是固定不变的,所中央定时系统就该能力过某种途径 收时间 的 置信息,即中央定时系统是 编程定时系统,因此中央定时系统不做 独立的系统,而是一个过主控 机交换信息的 机系统。 HT-7中央定时系统的 如图1所示。 2.1. 中央定时 机 CAMAC机 的控制 我们选中国科学院高能物理研究所研制开发的PC-CAMAC总线系统fl 中央定时机 一台PC机 CAMAC的控制。此系统的硬件基础为:在PC机的ISA插槽 插入一 口卡,一根50芯扁平电缆 此 口卡CCU-2-8
7、0B机 控制器 ;软件基础为:在PC机 开发了运行 DOS操作系统 的C语 CAMAC驱函 ,包括23个函 , 了 字 状 控制状 测试LAM 中 等 能, 发挥了CAMAC硬件能力。 然而考虑 中央定时 机主控 机间的讯问题 中央定时系统的高 靠性要求,该使中央定时 机运行 Windows NT 操作系统 开发出的运行 Windows NT 的C语 CAMAC驱函 , 不仅 高中央定时系统的 定性, 基 TCP/IP的Socket编 讯程序。 是Windows NT 的是 式 系 , 系统 操作 了 的 ,运行ring3 的程序不能 问 硬件, 就给 CAMAC 函 从 DOS 系统 Win
8、dows NT 的 fl了不 的 。在DOS系统 函 中的函 调inportb()outportb()等 口的函 fl 定的I/O 口行 ,而在Windows NT ,因为函 运行 ring3 ,所 调_inp() DOS 的 inportb() _outp() DOS 的outportb() 等函 不能 定 行口行 。 如 个问题 在中央定时 机 装Windows Device Developer Kit DDK ,giveio.c文件 本文 给出了giveio.c的 DDK giveio.sys文件, 此文件 Windows NT的系统 , 在需要调函 中的函 函 调了_inp()_out
9、p()等函 的程序中 如 语 ,就 调函 中的函 了。 h = CreateFile(“.giveio“, GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); 所,我们实现了在Windows NT操作系统 中央定时 机 CAMAC机 的控制。 fl就 便地在中央定时 机 为插入 CAMAC 机 的各种模件开发驱程序。 2.2. 中央定时 机主控机的讯 我们 中央定时 机作为 机,主控机作为 机,所所的操作在主控机 ,包括时间 的 置时间 的等 能。 为此,我们在主控机 开发了currency1 为时间 立了 。
10、 过currency1 地为各个时间模件 置时间 其 入 , 地从 中按某种“件 时间 行 其示在currency1 。 ,使整个操作过程 ,能 地时间 ,便了 定时系统的控制。 在主控机 实现了 的 能,就该考虑主控机中央定时 机间的讯。fifl是 程中央定时 机 运行的程序,因为中央定时 机是 机,所在其 运行的程序该过 机主控机其运行;我们 中央定时 机作为 ,主控机作为 , Socket 在 程序中发送求息 程 程序;其 是中央定时 机 主控机 时间 的 , 是MYSQL 立的, 中央定时 机作为此 的一个 程, 就 在中央定时 机 时间 了。 2.3. ”时间信号的 实现了中央定时
11、机 CAMAC 机 的控制,就 便地为插入 CAMAC 机 的种模件开发驱程序。为插入 CAMAC 机 的各种时间模件 发模件时 模件等 编 了驱程序。 ,中央定时 机 开发程序,此程序fifl从主控机的时间中 置 的时间 ,然 调时间模件 发模件时 模件等 的驱程序,使插入 CAMAC 机 内的时间模件按要求 时间信号, 其它各个子系统”地时间控制。 2.4. 时间 各子 系统的 各子 系统需要从主控机 时间 。然而我们不能 各个 机作为时间 的 程, 行 操作,因为各个 机在 中,主控机不在一个 中,而主控机所在的中央控制中 IP 地为拟IP,所我们 Socket 编程机制 的 。 主控机
12、作为器,各子 系统作为机, 器机的模,在中央控制 间的路器 编路器发程序。过 时间 从主控机 各子 系统 。 2.5. HT-7 控制系统的统一协调理 在HT-7 控制系统中, 号 各个子系统是 要的。 中央定时系统,号不同,时间 的 置就 能不同; 系统,号是 行 的主要键 ,号同的 在一 , 同一 电的 。为此,我们 置了一台号器 Shot Number Server 。 电,号器 号发 各个子系统。中央定时 机收 号 ,就 驱 CAMAC 机 fl 置 的此 号 的时间信号; 发 等 发状 的其它子系统。各个子 系统 fl的 文件 同号一同发 器, 器根 收 的号定 文件的 置。 3.
13、语 中央定时系统作为HT-7 控制系统的一 , 整个系统 了局统一的时间信号,证了其它各个子系统按照定的时序运行,使HT-7实验 靠地行。为 一步开发 在 中的国 科学 程 HT-7U 超导托卡马克的中央定时系统 了 的 。本 系国 科学 程-HT7U超导托卡马克核聚变实验装置的一个子 。 编号:国 发 “ 投 (1998)1303号 “(子 ) /*giveio.c*/ #include #define DEVICE_NAME_STRING L“giveio“ #define IOPM_SIZE 0x2000 typedef UCHAR IOPMIOPM_SIZE; IOPM *IOPM_l
14、ocal = 0; void Ke386SetIoAccessMap(int, IOPM *); void Ke386QueryIoAccessMap(int, IOPM *); void Ke386IoSetAccessProcess(PEPROCESS, int); VOID GiveioUnload(IN PDRIVER_OBJECT DriverObject) WCHAR DOSNameBuffer = L“DosDevices“ DEVICE_NAME_STRING; UNICODE_STRING uniDOSString; if(IOPM_local) MmFreeNonCache
15、dMemory(IOPM_local, sizeof(IOPM); RtlInitUnicodeString( IoDeleteSymbolicLink ( IoDeleteDevice(DriverObject-DeviceObject); VOID SetIOPermissionMap(int OnFlag) Ke386IoSetAccessProcess(PsGetCurrentProcess(), OnFlag); Ke386SetIoAccessMap(1, IOPM_local); void GiveIO(void) SetIOPermissionMap(1); NTSTATUS
16、GiveioCreateDispatch(IN PDEVICE_OBJECT DeviceObject,IN PIRP Irp ) GiveIO(); / give the calling process I/O access Irp-IoStatus.Information = 0; Irp-IoStatus.Status = STATUS_SUCCESS; IoCompleteRequest(Irp, IO_NO_INCREMENT); return STATUS_SUCCESS; NTSTATUS DriverEntry(IN PDRIVER_OBJECT DriverObject, I
17、N PUNICODE_STRING RegistryPath ) PDEVICE_OBJECT deviceObject; NTSTATUS status; WCHAR NameBuffer = L“Device“ DEVICE_NAME_STRING; WCHAR DOSNameBuffer = L“DosDevices“ DEVICE_NAME_STRING; UNICODE_STRING uniNameString, uniDOSString; / Allocate a buffer for the local IOPM and zero it. IOPM_local = MmAlloc
18、ateNonCachedMemory(sizeof(IOPM); if(IOPM_local = 0) return STATUS_INSUFFICIENT_RESOURCES; RtlZeroMemory(IOPM_local, sizeof(IOPM); Set up device driver name and device object. RtlInitUnicodeString( RtlInitUnicodeString( status = IoCreateDevice(DriverObject, 0, if(!NT_SUCCESS(status) return status; st
19、atus = IoCreateSymbolicLink ( if (!NT_SUCCESS(status) return status; / Initialize the Driver Object with drivers entry points. / All we require are the Create and Unload operations. DriverObject-MajorFunctionIRP_MJ_CREATE = GiveioCreateDispatch; DriverObject-DriverUnload = GiveioUnload; return STATUS_SUCCESS; 考文 1 等 讯在 式控制系统中的 , 机信息( 控 currency1), 2000 第6 2 Roberts, Dale Direct port I/O and Windows NT (Product Support)(Tutorial) Dr. Dobbs Journal v21, n5 (May, 1996):14 (12 pages) 3 研究 文HT-7U控制 系统 2000 ASIPP