滴水静禅天
扫描关注滴水静禅天

扫码加微信:-)

Jade分析XRD的自动化过程思路分析

滴水静禅天2017-08-17杂七杂八 2971

Jade分析XRD的自动化过程思路分析

摘要:在研究无机非金属矿物材料和其他先进晶体材料过程中,对物质进行XRD分析可以获取矿物组分信息,各物质相对含量信息,结晶度信息以及对于高纯度材料的晶体结构解析,晶胞参数计算和晶体精修重构等重要信息。这些信息是进行材料计算、合成、制备、加工的重要参数。Jade是材料数据公司(MDI)旗下的一款经典产品,在广大科研院所和高校中具有较高的知名度。同时,该软件用户界面和操作习惯极差,本文介绍有关使其自动化的相关思路。

任务1--分析未知矿样的结晶度

该样品为在实验过程中所产生的冶金浸出渣,通过对该样品进行XRD衍射获得相关数据,打开JADE65软件对该数据进行常规的前处理[背景拟合]à[Kα2抽线]à[背景消除]à[数据平滑]à[数据删减]à[检索匹配]在得到与原图谱拟合度较高且与化学元素分析,岩矿鉴定信息耦合的物质信息后,通过以下步骤进行结晶度的估算:

1.  分析得到的主要物相为镁铝尖晶石和钙钛矿两种

2.  为了分析这会儿二元混合物各组分的比例关系,首先保存物相信息.打开Peak ID ExtendRpt 窗口,对所需物相的主峰进行删选,然后保存数据*.ide;

3.  然后把这两个物质的寻峰报告另存为.pid

4.  最后打开PDF    overlay List窗口,把这两个物相信息保存*.pdf格式.

5.  然后可以对其结晶度信息进行计算,计算方法为K锋线强度法(简单程序即可实现).

这里IA\B是这两种物质主峰的强度值.

任务2.计算含有无定性物质的结晶度

1.  以某个煤炭样品为例,其峰型经过处理后为

可以看出该样品在30-50°范围内出现了明显的弥散峰,对应与其中的无定性物质.

2.  首先选中小角度畸变区域,然后Edit->Trim Range of Zoom 得到待处理区

3.  然后调整基线,扣除基线.然后平滑后,数据删减.最后Find Peak.

4.  执行自动分峰.观察上方的红色残差曲线,在波动大处手动添加峰,然后在refine.

5.打开Peak Profile Rpt 对话框查看精修拟合过的峰型信息,根据半宽高参数进行排列,通过观察选择一个阈值,对阈值范围外的非结晶峰进行勾选,根据面积比例就可以计算出样品的结晶度.

实现Jade自动化分析的思路框架

    该软件内部封闭性较高,既没有用于二次开发的Interpo相关资源(?),也没有Console命令行来执行相关操作.只有一个进行批处理操作的Marcos宏命令工具,用来录制相关操作,该工具与Word的宏命令工具类似.通过快捷键Alt_A_A_S 即可打开该对话框.

该工具把常见的操作简化为单条指令,通过排列组合这些指令可以自动化完成简单操作,如上图所示,右侧四条指令执行了a.打开最近文件(这个需要在窗口配置好),b.拟合背景;c,删除背景,d保存数据.队列指令.需要说明的是所有操作均继承了之前操作的参数不能人为设定.

首先构建内置指令序列,完毕之后点击[保存],命名为test.然后点击[编辑],修改内容后,保存到指定位置记录改位置.例如C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\MDI    Jade 6待以后使用.

同时,尝试利用外挂软件来对该窗口进行操作.这样通过模拟手动操作,再外加部分宏命令处理从而完成自动化过程.

基于C#Win API开发

有关user32.dllAPI函数资料见 A ,B

有关Windows系统接受外部消息的代码号见: C

有关虚拟按键代码表的信息见:D

使用外部DLL的方法为在执行外部API的类型生命如下的引用和函数

[CODE]

[DllImport("user32.dll")]    
public static extern IntPtr FindWindowEx(IntPtr hwndParent, 
IntPtr hwndChildAfter,      string lpszClass, string lpszWindow);

[/CODE]

利用SPY++捕获待监测窗体(Jade)的参数数据,并编写流程.下面几条指令可以让外部程序关闭jade

[CODE]

           IntPtr   jade_Handle = FindWindow("ThunderRT5Form", null);        
              IntPtr this_Handle = FindWindow(null, "zhaoyiForm");        
                 PostMessage(jade_Handle, 0x10, 0, 0);

[/CODE]

因为:

WM_CLOSE = &H0010
   当一个窗口或应用程序要关闭时发送一个信

发表评论