- 发布
- 浔之漫智控技术(上海)有限公司
- 品牌
- 西门子
- 型号
- 模块
- 产地
- 德国
- 电话
- 15821971992
- 手机
- 15821971992
- 发布时间
- 2023-07-19 17:06:40
电磁流量计的信号比较微弱,在满量程时只有2.5-8mv,流量很小时,输出只有几微伏,外界略有干扰,就会影响仪表精度,因此电磁流量计的接地特别重要。
电磁流量计接地时,应注意如下几点:
(1)检测器的测量管、外壳、屏蔽箱,以及转换器、二次仪表都要接地;
(2)检测器、转换器应单独接地,绝缘不要连在电机、工艺管道上,接地电阻应小于10欧姆;
(3)检测器、转换器的接地在现场,去二次表的屏蔽层接地在控制室一侧,切勿多点接地,以免因电位不同而引入干扰;
(4)检测器如安装在金属管上,金属管内部又没有绝缘涂层,则可在检测器接地端子上接地,如检测器安装在塑料管上,或在有绝缘涂层、衬里的管道上安装,则检测器的两端应安装接地环,使管内流动的介质与大地短路,具有零电位。
程序框架的建立使用Visual C++的MFC AppWizard来建立一个基于对话框的程序框架。
通过File》》New菜单命令建立一个新的项目,其会打开New的对话框。在Projects页面中,选择[MFC AppWizard(exe)]项目类型,在Project name中输入项目名称:MZR 点0K。
在Step 1对话框选择[Dialog based]选项, 点Finish》》点0K。
这样,应用程序向导会构建一个新的项目和程序的框架,并自动在对话框编辑器中打开程序对话框。
2.2 加载DAQBench控件把需要的ActiveX控件添加到控件工具栏(Control Toolbar)的步骤如下:
(2) 选择绘图ActiveX控件(文件名)DAQBench DChart Control—(ADlink),单击Insert按钮,在随后的对话框中使用鼠标点选OK,接受缺省的类名和文件名。
(3) 选择数据采集ActiveX控件(文件名)NuDAQ PCI—9112 Control—(ADlink),单击Insert按钮,单击确定按钮,单击OK按钮,接受缺省的类名和文件名。
(4) 添加完毕,返回Components And Controls Gallery对话框,单击Close按钮。
这样,就在对话框编辑器的控件工具栏中,加进了绘图控件DAQBench DChart Control和数据采集控件NuDAQ PCI—9112 Control,可以方便地将控件加入到对话框中。
将控件添加到控件工具栏之后,就可以在设计应用程序的用户界面时使用控件了。开发者可以使用对话框编辑器将控件放置在对话框上。具体操作步骤如下:
删除窗体上带TODO消息的静态文本控件,并删除确定按钮。
单击Controls工具条底部的DChart按钮,并通过鼠标点击把它放在对话框中,ActiveX控件可以象标准Windows控件一样插入对话框,并可调整位置与大小。
选择Controls工具条底部的PCI—9112按钮,把它放在对话框中适当的位置,右键点击对话框中的PCI—9112控件,在打开的菜单中选择属性(Properties),就会出现一个带有各种不同属性字段的属性页对话框。通过属性页对话框,你可以对这个特定的控件进行设置,具体数值见表1。
表1 控件NuDA Control属性设置
在用户使用控件编写程序之前,要先为该控件设定一个变量名称。下面为作图控件和采样控件设定相应变量:通过快捷键Ctrl+W,打开MFC Class Wizard对话框,在Member Variables标签中将Class name设置为CMZRDlg,通过Add Variables?按钮给其中的控件标识号添加变量,变量的定义见表2。
表2 对话框中相应控件变量的
定义PCI—9112控件的事件处理函数,通过快捷键Ctrl+W,在MFC Class Wizard窗口中,按下Message Maps 标签并在Object Ids字段中选IDC_PCI9112CTRLI控件,在Messages字段中选AiHalfReady,单击Add Function按钮,添加数据采集控件的AiHalfReady消息响应函数,接受缺省的函数名,单击Edit Code按钮以定位到该函数,在其中加入下列代码:
void
CMZRDlg::OnAiHalfReadyPci9112ctrl1(VARIANT FAR*ScaledData,VARIANT FAR*BinaryCodes)
{
//TODO:Add your control notification handler code here
m_Chart.PlotChart(ScaledData);// 将ScaledData中的采样数据传递给作图控件。
}
在初始化函数中启动数据采集函数:
定位到对话框初始化函数void CMzRDlg::OnInitDialog(),在其结尾return TRUE;语句之前加入下列语句
BOOL CMZRDlg::OnInitDialog()
CDialog::OnInitDialog();
(1) 选择Project》》 Add To Project 》》Components And Controls?项目,然后,在接着出现的对话框中,使用鼠标双击Registered ActiveX Controls目录条目。这样就会打开一系列计算机上已经安装和注册的ActiveX控件清单。选择并插入需要的ActiveX控件到您的项目和控件工具栏中。
/TODO :Add extra initialization here VARIANT Filename;
m_Pci9112.StartContAI(Filename);//激活连续
return TRUE; //return TRUE unless you set the focus to a control
}
2.4 程序测试通过按Ctrl_F5键直接在Developer Studio中运行程序,运行结果如图2所示。
图2 运行结果
开发环境:本文假设您已经安装了Visual C++6.0和DAQBench和PCIS—OCX。
DAQBench和PCIS—OCX这两个软件可从凌华公司的网站(http://www.adlinktech.com/download area/software.htm)下载。
1. 主从模式
RS-485上的软件层协议ModBus主要依赖于主从模式。主从模式是指在半双工通讯方式上,2个或者2个以上的设备组成的通讯系统中:
(1) 至少且只有一个主机,其他的都是从机
(2) 不管任何时候,从机都不能主动向主机发送数据
(3) 主机具有访问从机的权限,从机不可以主动访问从机,任何一次数据交换,都要由主机发起
(4)不管是主机还是从机,系统一旦上电,都要把自己置于接收状态(或者称为监听状态)
主从机的数据交互,需要:
a. 主机将自己转为发送状态
b. 主机按照预先约定的格式发出寻址数据帧。
所谓的约定,可是主机开发者和从机开发者约定好的规约,好,例如主机要通过从机控制接在从机的电机,主机要启动电机就往从机发0x1,停止电机就往从机发0x2。这就是一种预
先约定好的格式,但是这样做,互换性、兼容性、通用性差,例如其他公司是约定发送0x03让电机转动,发0x04让电机停止。导致不同厂家的主机、从机不能相互通讯。用户需要的,就像网络操作,只要接入有网的网线那么计算机都能上网。
所以说,我们需要一种大家都共同遵循的规则(可以是ModBus,也可以是TCP/IP等上层协议),这种大家认可,共同遵循的软件层协议。软件层协议主要是解决如何解析传输的数据,即传输的目的或者更加可靠的传输数据。
半双工通讯中,都是主机寻找从机,主机的目的无非有: 主机要发数据给从机,或者主机要从从机中获取数据。
c. 主机恢复自身的接收状态
主机等待自身所寻址的从机作回应,也就是说从机接收到主机的寻址命令、数据后一定要回应主机,不然主机会认为从机通讯异常。回应数据包也是要按照ModBus协议规约(其实不局限ModBus,像TCP/IP也需要回应是吧!~)
2. ModBus通讯协议
通俗点来讲,ModBus规约了起停电机,主机要分别发送什么命令给从机。ModBus规定主从机之间数据的交互,需要遵循什么样的格式,如何保证数据在传输过程中不发生冲突。只要都遵循这个协议,那么不同厂家的主从机就可以共用了。