Intouch和vb的DDE通信
Intouch工控软件介绍
Intouch工控软件介绍Intouch 工控软件介绍Intouch 工控软件作为一个实时的人机界面实用程序的程序生成器,可以产生在管理级别上的监控和数据采集程序,依靠菜单驱动在Windows多任务环境下运行。
Intouch 主要由两大部分组成:⑴ WindowMaker。
它是一个应用开发环境,用以建立窗口的图形显示,并定义与工业控制器、I/O系统和其它窗口应用程序的连接。
⑵ WindowViewer。
它是一个实时运行环境,用以显示由WindowMaker建立的图形窗口。
一、Intouch 的特点·采用Windows管理内存,扩大存贮空间,因而使Intouch软件对被监控的点数(回路数)和最大画面数均不受限制。
·作图功能完善,图形逼真。
·具有数据报警、速率报警和偏差报警等多种报警设施。
·具有十一种数据类型,及其数据类型转换功能。
·具有实时曲线图四条、历史趋势曲线四条和报警画面,作为操作人员的在线指导。
·多种用户数据输入方式。
·组态方式灵活。
由于上述特点,使Intouch成为当前工业控制领域中简便易用的“快速应用程序生成器”,可以大大地减少编制工控软件的工时,降低工控软件人员的劳动强度。
二、windowMaker的操作对象当运行WindowMaker时,用户可以按照自己的要求,建立多种、美观的图形和文本显示。
这些操作对象有直线、封闭图形、文本及数字等简单对象,此外还有报警图(Alarm Objects)、位图(Bitmap) 、趋势图(Graphs)、组合图(Symbols) 和综合图(Cell)等多种复杂对象。
三、具有14种作图工具箱(toolbox)这些toolboxs的功能包括有:⑴选择器(Selector),用以移动或改变操作对象的尺寸大小⑵画正方形/矩形⑶画具有圆角的正方形/矩形 (Rounded)⑷画圆和椭圆 (Circle/Ellipse)⑸画直线⑹画水平线/垂直线⑺定义Bitmap位置⑻画折线⑼画多边形⑽画实时趋势图⑾画历史趋势图⑿画报警图⒀加载文本及数字⒁画立体按键在使用上述14种toolbox生成多种图形的基础上,还可以进行编辑和排版,并对选定的操作对象进行操作,这些编辑操作包括:复制(Duplicate)、删除(Cut)、拷贝,粘贴(Paste)、粘贴位图(Paste Bitmap)、调节位图大小、放大圆角(Enlarge Radius),和缩小圆角(ReduceRadius)等等。
VB与组态王双向DDE通讯
Vb与组态王双向通讯本文由李彦操编写并实验通过要点:组态王得到vb的数据:1、vb的工程名=组态王DDE设备的服务程序名=vbking2、vb的Form的linkTopic属性=组态王DDE设备的话题名==form13、vb窗体的linkmode=1 ==对4、vb中lable的名字=组态王-定义变量-项目名5、vb中lable的其他属性不用管6、组态王DDE设备的连接对象名是在组态王内部用的名字=组态王-定义变量-连接设备7、vb窗体的名字无所谓,不用管1:VB准备:①启动VB并建立如图1所示文件:②代码中写入:Private Sub Command1_Click()If Command1.Caption = "开始" ThenCommand1.Caption = "暂停"Text2.LinkMode = 1ElseIf Command1.Caption = "暂停" ThenCommand1.Caption = "开始"Text2.LinkMode = 0End IfEnd SubPrivate Sub Form_Load()Text2.LinkTopic = "view|tagname"Text2.LinkItem = "plc.STATIC100"End SubPrivate Sub Text1_Change()dl.Text = Text1.TextEnd Sub③然后设置VB窗体form1属性Lingmode=1Linktopic=form1④设置工程属性:可单击VB中工程,然后在点击最下面的工程属性。
再单击生成把标题设置为vbking(用于组态王获取VB数据)⑤VB设计完成,单击文件--生成vbking.exe文件2:组态王准备:①建立组态王工程,具体方法省略②建立DDE连接,如图双击上图新建,弹出的对话框中点击下一步,要求输入连接对象名,这个名字作为组态王内部使用的,在定义变量时使用,与VB设置没有联系,此处设置为vb,再单击下一步设置服务程序名,此处对应于VB工程属性中的生成---应用程序--标题设置话题名,此处对应于VB窗体的linktopic属性:form1.设置数据交换方式为标准的Windows项目交换。
WinCC与Excel,VB的本地DDE通讯
WinCC与Excel、VB的本地DDE通讯WinCC Communication with Excel,VB Via DDE摘要WinCC与Excel、VB的本地DDE通讯关键词WinCC ,Excel,VB,DDEKey Words WinCC ,Excel,VB,DDEA&D Service & Support Page 2-11目录1 WinCC 作为DDE的服务器, Excel 作为DDE客户端 (4)2 WinCC 作为DDE的服务器, VB 作为DDE客户端 (6)3 WinCC 作为DDE的客户端,Excel 作为DDE服务器(本地) (7)4 WinCC 作为DDE的客户端,VB作为DDE服务器(本地) (8)附录-推荐网址 (11)A&D Service & Support Page 3-111 WinCC 作为DDE的服务器, Excel 作为DDE客户端1) 打开WinCC项目,在WinCC Explorer 中“计算机属性->启动”中添加应用程序: DdeServ.exe,同时添加命令行参数: /v /n 。
2) 激活WinCC 后,会弹出 WinCC DDE-Server 对话框,点击 Tag List 按钮:A&D Service & Support Page 4-11在列表中选择想要访问的变量,点击“确定”,这样该变量的连接信息就被拷贝到Windows 剪贴板。
A&D Service & Support Page 5-113) 打开Excel,任意(双击)选中一个单元格,将Windows剪贴板的内容拷贝到该单元格中,然后在第一个字符前添加“=”,这样就完成对单元格的输入。
这时在Excel中就能够得到WinCC的内部和外部过程数据了。
4) 如果要访问多个变量,请重复步骤 2) 和 3)。
注意:1) DdeServ.exe 需要一直运行。
基于DDE的组态王与VB的数据通信
基于DDE的组态王与VB的数据通信摘要:针对煤矿井下的实际应用,基于组态王软件的动态数据交换(DDE)技术和VB应用程序,本文介绍了瓦斯监测监控系统中上位机和下位机通过CAN总线接口CAN-RS232进行通信的方法。
关键词组态王CAN-RS232 DDE VB1.前言随着计算机技术和监控技术的发展,监控组态软件在工业过程控制等领域得到了广泛的应用。
它作为面向监控与数据采集的软件平台,具有丰富的项目设置,使用方法灵活,并且功能强大。
煤矿井下监测监控系统主要包括两个部分:一是数据采集系统,即智能结点(下位机),它将CPU与各类传感器相结合,对生产过程中的设备、仪表进行实时监测,将各种被测物理量的参数及状态转换成数字信号,并通过CAN总线传递到上位机,CAN总线是一种日益受到重视的数据通讯方式,在传输率为5kb/s时,该总线无需中继可实现10km的可靠传输。
在监控系统的第二个部分即上位机上,通常无法直接将CAN总线与之连接起来,本监控系统是采用CAN-RS232智能转换接口进行上、上位机间的数据通信的,实际使用中CAN-RS232接口使用了VB来编写驱动程序。
通过智能转换接口,上位机在接收到CAN总线上传的数据后,利用组态软件可以对之进行实时记录和分析,并以适当的形式如声音,图形,报表等方式显示给用户,使用户更直观、全面的了解现场工况。
本监控系统的数据通信中,基于VB的CAN-RS232接口驱动以及与组态王的数据交换是重要问题。
本系统采用DDE(动态数据交换)方式和VB应用软件来完成上位机与CAN总线的数据通信,用组态王软件来实现上位机的画面显示、数据管理以及对监控系统进行控制。
监控系统中CAN总线的数据是以帧的格式来传送的,每一帧包含30个字节,其含义分别为帧的序号,帧的格式(扩展帧/标准帧),帧的类型(远程帧/数据帧)以及帧数据的长度,一帧的后八个字节为传送的测控数据,又称为帧数据。
2.DDE工作原理DDE是微软公司开发的一个基于Windows平台的通信协议,它允许多个应用程序以客户或服务器的形式相互传送数据。
VB与Intouch实现PLC监控系统的设计
VB与Intouch实现PLC监控系统的设计摘要:利用VB与组态软件Intouch实现PLC监控系统的设计,介绍工业控制计算机与现场控制级PLC之间的实时数据通信技术及监控软件与智能仪表之间的动态数据交换技术的应用。
关键词:Intouch;智能仪表;动态数据交换引言如今,煤炭行业的自动化水平正在不断的提高,智能化仪表也越来越多的得到了相关的应用和研发。
PLC 的发展与功能的完善同时也促进了以PLC 为基础的分布式计算机控制系统的发展. 以PLC 为基础的网络控制系统广泛的应用了过程管理级计算机与现场控制级PLC之间的实时数据通信技术,监控软件与底层软件间的动态数据交换技术。
本文主要以某煤矿地面皮带运输集中控制系统为例介绍利用VB与组态软件Intouch实现PLC监控系统的设计及以上通信技术的应用。
系统硬件结构本监控系统主要对地面煤流生产状况进行监控,采用Intouch组态软件为平台。
同时,上位机利用VB通过Moxa的Nport-5232I串口服务器读取22台设备的TD101电动机保护装置(浙江天信电气公司生产)的数据。
Intouch监控软件则通过DDE(动态数据交换技术)实现同VB程序交换数据。
网络通信设计通信协议和参数浙江天信电气公司生产的TD101电动机保护装置,支持Modebus协议RTU 传输模式:编码系统:8位二进制报文中每个8位字节含有两个4位十六进制字符(0-9、A-F)波特率:9600bps每个字节的位:1个起始位8个数据位2个停止位发送帧格式如图2所示。
帧描述:(除CRC校验外,所发送字时均是先高位字节后低位字节)图2:帧格式Nport参数设置NPort 5232I是一个专业的可编程通讯网关,将RS-422/485网络化。
该串口服务器有两个5针的RS-422/485端口,用来控制支持RS-422/485通讯的设备,并转化成Ethernet控制。
在通信设计中要根据通讯协议设置RS-422/485端口的参数,如图3所示。
组态王通过DDE与VB应用程序
组态王通过DDE与VB应用程序组态王通过DDE与VB应用程序、Excel程序进行数据交换组态王支持通过DDE方式与其它应用程序进行数据交换,通过DDE方式用户自编的应用程序可以无缝的与组态王进行数据交换,扩充组态王的功能,为用户提供更为灵活的应用空间。
现就组态王与VB应用程序、Excel程序通过DDE方式进行数据交换的使用方法进行简要的说明:一、与Excel程序进行实时的数据交换Excel程序从组态王中获得数据1.在组态王中建立变量。
建立变量\,并设置允许DDE访问。
(本例连接的物理设备为亚控仿真PLC) 2.创建Excel数据表格,输入访问组态王变量的连接语句。
图二选择\单元格按如下格式输入DDE连接语句\=VIEW|*****!设备地址\,其中设备地址为在组态王中定义的IO变量的寄存器地址,其格式为\连接设备名.寄存器名\。
在本例中访问组态王中变量\的DDE连接语句为\。
3.运行组态王的运行系统(加载演示本演示工程),Excel数据表格可以实时的得到组态王变量的数据。
组态王从Excel程序中获得数据1.创建Excel数据表格,并给工作表起名为\参见图-2)。
2.在工作表\的R1C1单元格添加\的语句(在R1C1单元格引用) R1C2的值。
3.在组态王中建立Excel的DDE连接。
图三在组态王工程浏览器à设备àDDEà新建DDE设备。
弹出设备向导(参见图-3),要求输入DDE的连接设备名,本例为\Excel\可按用户的实际需求命名);单击下一部(参见图-4),设置DDE的服务程序名\程序的服务名,不可更改),设置话题名\为Excel的表格名称,可以按用户的实际需求设定),设置数据交换方式为\标准的Windows项目交换\兼容微软应用程序DDE数据交换)。
单击下一步(参见图-5),显示所配置DDE设备信息,确认无误后单击完成,即完成Excel DDE设备的配置。
图四图五4.在组态王中添加由Excel 作为数据源的IO变量(参见图-6)。
Intouch与Intouch及Intouch通过OPC与Intouch通讯
本文主要介绍两种In touch与In touch之间的通讯方式。
一种是不通过OPC, 而是用In touch自身的方式进行数据通讯;另一种是通过OPC的方式,实现In touch 之间的通讯。
1. Intouch与Intouch的数据通讯步骤1:在Intouch-WindowMaker的工具选项下双击访问名。
\…“护VVindowMaker_ t, Wi nd owViewerj 夕厉史记录| k/分布式名称筒連器j沪I^J#/Active-X 安齡)R摇葩丨匸户访问名||I“越弓I用--*1*9 Temp lateMa ker* 口1 SOL访问管理器步骤2:点击添加步骤3:设置如下图的访问名。
访问名”定义与另一个I/O数据源之间的通讯链接。
每个访问名”指定一个由节点名、应用程序名、主题组成的I/O地址c魏迸可名访问名国:testl节点茗:QH-20151214TIQQ应用程序名凶;vievM主题宅[I*tagname要使用的协斂£1DDE SuiteLink 消息交换要对脈劳器提示时迪]提示所育项Q只握示癒活顶启用辅帥埶需源访问名:由节点名,应用程序名和主题名组成的I/O地址。
(可以自己取名)节点名:是被访问的数据所在节点的IP地址或计算机全名。
(由被访问的数据所在节点决定)应用程序名:是In touch的应用程序名,即view。
主题名:是In touch的标记名,即tag name。
步骤4:打开标记名字典。
工具3-,配置j- J WindowMaker Wind owr Vi ewer[…“$衍史记-聂卢分■布式淫称管谨話:|B]§/ActiveX 宣姿l!iJ TemplateMaker3<J EQL访冃昔現器步骤5:点击新建,输入标记名,选择详细节x ■主農]誓]抿嘗________________________________________ [AM嘯価就伽阿[« [ag^l »][湘][却]⑷记录辛件疋1优先细993步骤6:选择标记名类型。
(完整版)Intouch与Intouch及Intouch通过OPC与Intouch通讯
本文主要介绍两种Intouch与Intouch之间的通讯方式。
一种是不通过OPC,而是用Intouch自身的方式进行数据通讯;另一种是通过OPC的方式,实现Intouch 之间的通讯。
1. Intouch与Intouch的数据通讯步骤1:在Intouch-WindowMaker的工具选项下双击访问名。
步骤2:点击添加。
步骤3:设置如下图的访问名。
“访问名”定义与另一个I/O 数据源之间的通讯链接。
每个“访问名”指定一个由节点名、应用程序名、主题组成的I/O 地址。
访问名:由节点名,应用程序名和主题名组成的I/O地址。
(可以自己取名)节点名:是被访问的数据所在节点的IP地址或计算机全名。
(由被访问的数据所在节点决定)应用程序名:是Intouch的应用程序名,即view。
主题名:是Intouch的标记名,即tagname。
步骤4:打开标记名字典。
步骤5:点击新建,输入标记名,选择详细。
步骤6:选择标记名类型。
(一定是I/O型,并与被访问的数据的数据类型保持一致,例子中为I/O整形)步骤:7:选择新建的访问名,输入项目,并保存。
(项目为被访问数据的标记名,即另一节点的Intouch程序内的标记名,例子中为test)两边同时运行Intouch,test123的值即为另一节点中Intouch程序内的test 的值,即可完成Intouch与Intouch的通讯。
2.Intouch通过OPC与Intouch通讯。
概要介绍以下部分介绍了用 InTouch 作为数据源,配置 FSGateway DA Server 的必要步骤。
InTouch客户端可通过Suitelink、DDE 和OPC方式从FSGateway中读取数据;同时,FSGateway也可作为Intouch数据的桥梁,供第三方应用程序通过OPC协议读写Intouch的实时数据。
在开始之前,请确保已满足以下条件:1.仔细阅读并按照FSGateway的Reademe文件及相关文档,获得 FSGateway 所需要的系统要求、正确的安装过程以及操作系统等信息。
用Visual Basic实现DDE通信
d i
,
p l
a
y
程序 中
Ma i
n
f
o
二表
,
多 个能 独 立 运 行 的小 程 序
Ex l c e
。
,
通 过 D D( F 动态数据交
。
单中 的 文 本 框 初 始 设 定 链接 方 式 为 无 清 除
,
换 ) 进 行 各程 序 间 的 数 据 通 信 技术与
s 粘贴 (Pa
。
比 如 可 以 利 用 D DE
,
可 能 拥有 的 当 前
.
DDE
“
链接
e
。
和
) 磷、
司 交换 数 据
,
从 而 自动 产 生 各 种
Py )
Di
s
p
匕 x 七1
,
乙
I
n D
k T i
s
0
p i
七
c
=
r
e c
主v
e
} Fo
m
l
“
报 表和文档 我 们知 道 平 常 可 以 通 过 复制 (o C
te
一
与
Di
s
设定 的
.
p
t x
=
l
。
的 链接 主 题 为 r e c e i v
文本框
。
r
e i c e
v
e
程序
持 的 多 个 应 用 程 序 间 通 信 的 自动 机 制 它 可 使 两 个 或 多 个 应 用 程 序 间 通 过 连 续 自动 地 交 换 数 据来 实 现 相互 交谈 iM c
r s o o f t
InTouch软件介绍
InTouch软件介绍InTouch HMI 为用户提供了今天的HMI 和监控应用所需的能力和通用性。
Wonderware 在研究与开发中进行了大量投入,保证为用户提供新型的、强大的、创新的产品。
其结果是:各种公司可以把他们的精力集中于业务的运转方面,而工程师可以利用最新的软件技术。
InTouch 8.0具有三个不同的版本和多种配置模型,使各种公司能够降低他们的软件购买和维护开支,同时获得更高的投资回报。
InTouch 软件为用户提供了一个通用的开发环境和一个灵活的体系结构,使用户可以为任何自动化应用场合建立灵活的应用。
InTouch 软件适合于部署在独立机械中、在分布式的服务器/ 客户机体系结构中、在利用FactorySuite 工业应用服务器的应用中,也可以作为使用终端业务的瘦客户机应用。
InTouch 还是实现了微软公司的"支持WindowsXP" 认证的第一个HMI 产品,可以从工作站、个人数字助理(PDA)和浏览器观看显示内容。
Wonderware® InTouch® for FactorySuite®为以工厂和操作人员为中心的制造信息系统提供了可视化工具。
这些制造信息系统集成了操作人员所必需的各种信息,可以在工厂内部和各工厂之间共享。
InTouch HMI软件用于可视化和控制工业生产过程。
它为工程师提供了一种易用的开发环境和广泛的功能,使工程师能够快速地建立、测试和部署强大的连接和传递实时信息的自动化应用。
InTouch软件是一个开放的、可扩展的人机界面,为定制应用程序设计提供了灵活性,同时为工业中的各种自动化设备提供了连接能力。
________________________________________特性和优点访问级口令安全性Microsoft Windows NT 权限控制符合FDA 21 CFRFactorySuite A2 工业应用服务器的安全能力对WINDOWS XP 的支持功能概述________________________________________功能和通用性InTouch HMI 为用户提供了今天的HMI 和监控应用所需的能力和通用性。
VB与DDE进程通信
VB与DDE进程通信这样如果你运行这个程序后在运行它,它会弹出一个消息框并拒绝再次运行。
这非常容易。
而“蚂蚁”程序的妙处就在于:在重复运行“蚂蚁”时它不仅拒绝运行,而且能把已经运行的“蚂蚁”激活,这样用上面的程序就无能为力了。
但事实上实现拒绝运行并激活已运行的程序有多种方法:1、用FindWindow函数得到已经运行窗体的句柄(HWND),然后用SetActiveWindow 等API函数将其激活。
其缺点也很明显,那就是没法传递参数。
2、用FindWindow函数得到已运行窗体的句柄后用SendMessage的方法给窗体传送一个自定义消息(附带参数),然后在窗体中拦截并进行处理,但这样做要修改窗体的标准消息处理程序,用在VC,BC或DELPHI编写的程序中还行,但在VB中工作量太大,并且容易发生“一般保护行错误”使VB崩溃,不太可取(当然,如果你有足够的信心和不怕崩溃的精神,也可以试一下^_^ )。
3、使用DDE技术。
所谓DDE技术,就是动态数据交换技术。
也许你很奇怪,这与本文所讨论的内容有什么相干的?且听我慢慢讲来。
为了实现拒绝运行并把已经运行的程序激活并实现各种功能,我们可以先用本文开头提到的方法,检测一下程序有没有被运行过,如果没有,就正常运行,如果已经被运行过,就打通与它的DDE通道,传给它一个(或一些)数据,然后由已经运行的程序对数据进行处理,再去实现各种“意想不到”的功能,这时也许就有人对这你的程序喊:“酷、酷……”^_^ 好了,耳听为虚,眼见为实,下面让我们动点真格的。
打开VB,新建一个工程,选择菜单中的“工程->工程1 属性”,把工程名称改为“P1”(我爱偷懒,能短则短^_^ ),把已有的一个窗体的“LinkTopic”属性改为“FormDDE”,把“LinkMode”属性改为“1- Source”,添加一个PictureBox控件作为DDE执行控件,命名为picDDE。
然后添加一个TextBox控件,命名为“txtInfo”,并把“MultiLine”属性设置为“True”,以便显示多行文本,作为消息显示控件。
组态软件与VB间DDE通信的实现方法
组态软件与VB间DDE通信的实现方法朱晓敏;唐洪【摘要】基于DDE(Dynamic Data Exchange)技术采用组态软件与下位机串口通信服务程序的实现方法,解决了组态软件没有提供某些现场设备通信驱动程序的问题.服务程序利用串口通信控件MSComm与下位机进行通信,同时采用DDE技术与组态软件进行数据交换.工程实践表明:该方法通用性强,实现简便.【期刊名称】《四川水力发电》【年(卷),期】2014(033)0z1【总页数】3页(P158-160)【关键词】组态软件;串口通信;动态数据交换【作者】朱晓敏;唐洪【作者单位】国电四川电力股份有限公司南桠河发电厂,四川石棉625400;四川中鼎科技有限公司,四川成都610045【正文语种】中文【中图分类】TV736;TV71 概述组态软件,又称组态监控软件。
译自英文SCADA,即 Supervisory Control and Data Acquisition(数据采集与监视控制),是指一些用于数据采集与过程控制的专用软件。
它们处在自动控制系统监控层一级的软件平台和开发环境,使用灵活的组态方式,是一种为用户提供具有快速构建工业自动控制系统监控功能、通用层次的软件工具。
组态软件的应用领域很广,可以应用于电力系统、给水系统、石油、化工等领域的数据采集与监视控制以及过程控制等诸多领域。
在电力系统以及电气化铁道上又称远动系统(RTU System,Remote Terminal Unit)。
例如国外的CIMPLICITY、IFIX、INTOUCH、CITECT、wincc;国内的组态王、紫金桥、力控、易控等均是组态软件的优秀代表。
在组态软件出现之前,工控领域的用户通过手工或委托第三方编写HMI应用,其开发时间长,效率低,可靠性差;或者购买专用的工控系统,通常是封闭的系统,选择余地小,往往不能满足需求,很难与外界进行数据交互,升级和增加功能都受到严重的限制。
VB和InTouch 的通信软件的实现
1、前言本文是以笔者参与的某啤酒厂的监控系统实现的项目为背景。
监控系统主要由前端监视设备、传输设备、后端控制显示设备这三大部分组成,其中后端设备可进一步分为中心控制设备和分控制设备。
前、后端设备有多种构成方式,它们之间的联系(也可称作传输系统)可通过电缆、光纤或微波等多种方式来实现。
由于现场的PLC或单片机控制系统的资源、功能有限,不能长期保存数据,人机界面差,上位机丰富的资源可以对采集到的数据进行分析,存盘,运算、打印、报警并进行各种相应显示。
上位机形象的人机界面可使操作员更直观,全面的了解现场的情况。
采用Intouch、VB来实现。
vb是Visual Basic的简称,是由美国微软公司于1991年开发的一种可视化的、面向对象和采用事件驱动方式的结构化高级程序设计语言,可用于开发 Windows 环境下的各类应用程序。
它简单易学、效率高,且功能强大可以与 Windows 专业开发工具SDK相媲美。
在Visual Basic环境下,利用事件驱动的编程机制、新颖易用的可视化设计工具,使用Windows内部的广泛应用程序接口(API)函数,动态链接库(DLL)、对象的链接与嵌入(OLE)、开放式数据连接(ODBC)等技术,可以高效、快速地开发Windows环境下功能强大、图形界面丰富的应用软件系统。
2、系统结构笔者参与的监控系统呈两层分布式体系结构:数据采集层和监控层。
数据采集层主要采用数据通信标准接口;监控层属于局域网,遵循局域网的协议标准。
数采层进行数据的采集、处理将数据传递到上一层;监控层共享数采层传来的数据。
该系统的数采层由多台测控装置组成。
这些测控装置采用RS-485标准总线与数采管理站通信。
在软件方面采用VB来实现测控装置数采程序,它主要完成上位机与测控装置之间的数据通信和所采集数据的DDE(动态数据交换)转换功能。
在工控机上的人机界面则采用监控平台软件来实现。
工控机即工业控制计算机,但现在,更时髦的叫法是产业电脑或工业电脑,英文简称IPC,全称Industrial Personal Computer.工控机通俗的说就是专门为工业现场而设计的计算机。
VB DDE
用VB编写DDE通讯程序实现自由串口通讯协议首先为什么我们要做DDE通讯程序呢?是由于通讯协议千差万别,组态软件不一定有对应的驱动程序,要实现组态软件能够支持采集和控制设备那么用DDE是一种选择,但是DDE适用于点数较少的场合。
以下我将讲解基于串口的DDE程序的编写。
如果是基于TCP或UDP的可以参考相应的通讯程序。
看到这篇文章的时候我正在编写基于UDP的通讯程序。
由于DDE程序作为驱动程序应该隐藏不显示窗口是最好的方式避免由于操作人员误操作关闭窗口而导致通讯失败。
而且DDE通讯程序应该只有一个程序在运行。
我做的程序是在任务栏通知区域进行显示。
以下是我的程序代码。
在运行窗口中一定要在属性中设置DDE参数窗体DDE LINKMODE=1 LINKTOPIC=LINKTOPIC(注:这个你要访问的话题名一定要和组态软件相对应。
设置好并编写好程序后在组态软件中服务程序名:是编译后的软件名回话名:是窗体设置的回话名连接变量:是窗体上的控件名,VB 支持DDE的有label控件和text控件等,在控件属性中都有一个DDE属性项目。
运行组态软件后就可以读取相应text或者label控件中的值。
以下是代码示例:Option ExplicitPrivate Type NOTIFYICONDA TAcbSize As Longhwnd As LonguId As LonguFlags As LongucallbackMessage As LonghIcon As LongszTip As String * 64End TypePrivate Type POINTAPIb_x As Longb_y As LongEnd TypePrivate Type RECTLeft As LongTop As LongRight As LongBottom As LongEnd TypePrivate Const WM_LBUTTONDOWN = &H201Private Const WM_LBUTTONDBLCLK = &H203Private Const WM_RBUTTONDOWN = &H204Private Const WM_RBUTTONUP = &H205Private Const NIM_ADD = &H0Private Const NIM_MODIFY = &H1Private Const NIF_MESSAGE = &H1Private Const NIM_DELETE = &H2Private Const NIF_ICON = &H2Private Const NIF_TIP = &H4Private Const WM_MOUSEMOVE = &H200Private Declare Function Shell_NotifyIcon Lib "shell32" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, pnid As NOTIFYICONDATA) As BooleanPrivate Declare Function SetForegroundWindow Lib "user32" (ByVal hwnd As Long) As LongPrivate Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As LongPrivate Declare Function GetWindowRect Lib "user32" (ByVal hwnd As Long, lpRect As RECT) As LongDim TrayIcon As NOTIFYICONDA TA, bolFlag As BooleanPublic flag As BooleanPrivate Sub a_Click()End SubPrivate Sub about_Click()frmAbout.ShowEnd SubPrivate Sub clear_Click()Text2.Text = ""End SubPrivate Sub Command2_Click()Unload MeEnd SubPrivate Sub exit_Click()Unload MeEnd SubPrivate Sub Form_Click()Me.HideEnd SubPrivate Sub Form_Load()'-------------------------------------------------------------------TrayIcon.cbSize = Len(TrayIcon)TrayIcon.hwnd = hwndTrayIcon.uId = vbNullTrayIcon.uFlags = NIF_ICON Or NIF_TIP Or NIF_MESSAGETrayIcon.ucallbackMessage = WM_MOUSEMOVETrayIcon.hIcon = Me.Icon'在系统栏添加拖盘Call Shell_NotifyIcon(NIM_ADD, TrayIcon)Me.Hide'-------------------------------------------------------------------'串口程序初始化With MSComm1.CommPort = 1 ' 设定端口.Settings = "2400,N,8,1" ' 设置波特率,无校验,8位数据位,1位停止位.InputMode = comInputModeBinary ' 设定模式.InBufferSize = 1024 ' 设置接收缓冲区为1024字节.OutBufferSize = 4096 ' 设置发送缓冲区为4096字节.InBufferCount = 0 ' 清空输入缓冲区.OutBufferCount = 0 ' 清空输出缓冲区.SThreshold = 1 ' 发送缓冲区空触发发送事件.RThreshold = 1 ' 每X个字符到接收缓冲区引起触发接收事件.OutBufferCount = 0 ' 清空发送缓冲区.InBufferCount = 0.PortOpen = TrueEnd WithTimer1.Enabled = TrueTimer2.Enabled = Falseflag = False '通讯超时判断End SubPrivate Sub Command1_Click() ' 清空数据显示区Text2.Text = ""End SubPrivate Sub Form_Initialize()'加载窗体前检测程序是否启动如果启动则退出If App.PrevInstance ThenMsgBox "只能有一个该程序运行!"EndElseEnd IfEnd SubPrivate Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Dim f As POINTAPIDim TempRect As RECTIf Button = 1 Then' Me.ShowEnd IfIf Button = 2 ThenGetCursorPos fGetWindowRect DDE.hwnd, TempRectf.b_x = f.b_x - TempRect.Leftf.b_y = f.b_y - TempRect.Top - 30PopupMenu menulist, , f.b_x, f.b_yEnd If'JP:End SubPrivate Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)'构造系统拖盘结构TrayIcon.cbSize = Len(TrayIcon)TrayIcon.hwnd = Me.hwndTrayIcon.uId = vbNull'删除系统栏的拖盘Call Shell_NotifyIcon(NIM_DELETE, TrayIcon)End SubPrivate Sub Form_Unload(Cancel As Integer)With MSComm1.PortOpen = FalseEnd WithMsgBox "DDE通讯程序已经退出!"End SubPrivate Sub hidewindow_Click()Me.HideEnd SubPrivate Sub Label1_Click()Me.HideEnd SubPrivate Sub Label2_Click()Me.HideEnd SubPrivate Sub showwindow_Click()Me.ShowEnd Sub'---------------------------查询方式发送查询码-------------------------------------------Private Sub Timer1_Timer()Label1 = "当前时间:" & Now & vbCrLf & "数据信息"On Error Resume NextDim outputLen As Integer ' 发送数据长度Dim outData As String ' 发送数据暂存Dim SendArr() As Byte ' 发送数组Dim TemporarySave As String ' 数据暂存Dim dataCount As Integer ' 数据个数计数Dim i As Integer ' 局部变量outData = UCase(Replace("FF FF FF 09 00 00 01 6E 01 0A 83 00 00", Space(1), Space(0))) ' 先去掉空格,再转换为大写字母发送查询码outputLen = Len(outData) ' 数据长度For i = 0 To outputLenTemporarySave = Mid(outData, i + 1, 1) ' 取一位数据If (Asc(TemporarySave) >= 48 And Asc(TemporarySave) <= 57) Or (Asc(TemporarySave) >= 65 And Asc(TemporarySave) <= 70) ThendataCount = dataCount + 1ElseExit ForExit SubEnd IfNextIf dataCount Mod 2 <> 0 Then ' 判断十六进制数据是否为双数dataCount = dataCount - 1 ' 不是双数,则减1 End IfoutData = Left(outData, dataCount) ' 取出有效的十六进制数据ReDim SendArr(dataCount / 2 - 1) ' 重新定义数组长度For i = 0 To dataCount / 2 - 1SendArr(i) = Val("&H" + Mid(outData, i * 2 + 1, 2)) ' 取出数据转换成十六进制并放入数组中Next' SendCount = SendCount + (dataCount / 2) ' 计算总发送数' TxtTXCount.Text = "TX:" & SendCountMSComm1.Output = SendArrTimer2.Enabled = Trueflag = True'---------------------------------------------------------------------------bolFlag = Not bolFlagTrayIcon.cbSize = Len(TrayIcon)TrayIcon.hwnd = hwndTrayIcon.uId = vbNullTrayIcon.uFlags = NIF_ICON Or NIF_TIP Or NIF_MESSAGETrayIcon.ucallbackMessage = WM_MOUSEMOVETrayIcon.hIcon = IIf(bolFlag, Me.Icon, Me.Icon)'在系统栏添加拖盘Call Shell_NotifyIcon(NIM_MODIFY, TrayIcon)'-------------------------------------------------------------------------End Sub'----------------------事件驱动方式接收数据-------------------------------------------'--------------------------------------------------------------------------------------Private Sub MSComm1_OnComm()On Error GoTo ErrDim ReceiveArr() As Byte ' 接收数据数组Dim receiveData As String ' 数据暂存Dim Counter As Integer ' 接收数据个数计数器Dim i As Integer ' 循环变量Dim Data As StringDim Apparatus As IntegerDim Add As IntegerDim Data_Y As StringDim Data_M As IntegerDim Data_D As IntegerDim Data_H As IntegerDim Data_Mi As IntegerDim Data_T As StringDim Daytime As StringSelect Case mEvent '读取返回数据串Case comEvCDCase comEvCTSCase comEvDSRCase comEvReceive'-----------------------------读取数据-------------------------If (MSComm1.InBufferCount > 0) ThenCounter = MSComm1.InBufferCount ' 读取接收数据个数receiveData = "" ' 清缓冲ReceiveArr = MSComm1.Input ' 数据放入数组For i = 0 To (Counter - 1) Step 1 ' 数据格式处理If (ReceiveArr(i) < 16) ThenreceiveData = receiveData & "0" + Hex(ReceiveArr(i)) ' 小于16,前面加0ElsereceiveData = receiveData & Hex(ReceiveArr(i)) ' 显示End IfNext iText2.Text = receiveData & Space(1) 'Chr(32) '& vbCrLf ' 显示接收的十六进制数据'-------------------------------------------------------------------------Timer2.Enabled = Falseflag = FalseEnd IfCase comEvSendCase comEventBreakMsgBox "设备断开"End Select'---------------------------数据解码------------------------------Data = Mid(receiveData, 21, 18)If Len(Trim(Mid(Data, 1, 18))) = 18 ThenApparatus = Val("&H" & Mid(Data, 3, 2))Add = Val("&H" & Mid(Data, 5, 2))Data_Y = Val("&H" & Mid(Data, 9, 2))Data_M = Val("&H" & Mid(Data, 11, 2))Data_D = Val("&H" & Mid(Data, 13, 2))Data_H = Val("&H" & Mid(Data, 15, 2))Data_Mi = Val("&H" & Mid(Data, 17, 2))If Val("&H" & Mid(Data, 9, 2)) < 10 ThenData_Y = "0" & Val("&H" & Mid(Data, 9, 2))ElseData_Y = Val("&H" & Mid(Data, 9, 2))End IfDaytime = Apparatus & "回路" & Add & "地址" & "报警! 报警时间:" & Data_Y & "年" & Data_M & "月" & Data_D & "日" & Data_H & "时" & Data_Mi & "分"Text1.Text = DaytimeLabel3.Caption = ApparatusLabel4.Caption = AddLabel5.Caption = Data_YLabel6.Caption = Data_MLabel7.Caption = Data_DLabel8.Caption = Data_HLabel9.Caption = Data_MiElseEnd IfErr:End SubPrivate Sub Timer2_Timer()If flag = True ThenText1.Text = "串口20秒内未检测到有通讯数据返回,请检查设备是否断开!"MsgBox "串口20秒内未检测到有通讯数据返回,请检查设备是否断开!", 65584, "通讯异常"ElseEnd IfEnd Sub。
InTouch软件介绍
InTouch软件介绍InTouch HMI 为用户提供了今天的HMI 和监控应用所需的能力和通用性。
Wonderware 在研究与开发中进行了大量投入,保证为用户提供新型的、强大的、创新的产品。
其结果是:各种公司可以把他们的精力集中于业务的运转方面,而工程师可以利用最新的软件技术。
InTouch 8.0具有三个不同的版本和多种配置模型,使各种公司能够降低他们的软件购买和维护开支,同时获得更高的投资回报。
InTouch 软件为用户提供了一个通用的开发环境和一个灵活的体系结构,使用户可以为任何自动化应用场合建立灵活的应用。
InTouch 软件适合于部署在独立机械中、在分布式的服务器/ 客户机体系结构中、在利用FactorySuite 工业应用服务器的应用中,也可以作为使用终端业务的瘦客户机应用。
InTouch 还是实现了微软公司的"支持WindowsXP" 认证的第一个HMI 产品,可以从工作站、个人数字助理(PDA)和浏览器观看显示内容。
Wonderware® InTouch® for FactorySuite®为以工厂和操作人员为中心的制造信息系统提供了可视化工具。
这些制造信息系统集成了操作人员所必需的各种信息,可以在工厂内部和各工厂之间共享。
InTouch HMI软件用于可视化和控制工业生产过程。
它为工程师提供了一种易用的开发环境和广泛的功能,使工程师能够快速地建立、测试和部署强大的连接和传递实时信息的自动化应用。
InTouch软件是一个开放的、可扩展的人机界面,为定制应用程序设计提供了灵活性,同时为工业中的各种自动化设备提供了连接能力。
________________________________________特性和优点访问级口令安全性Microsoft Windows NT 权限控制符合FDA 21 CFRFactorySuite A2 工业应用服务器的安全能力对WINDOWS XP 的支持功能概述________________________________________功能和通用性InTouch HMI 为用户提供了今天的HMI 和监控应用所需的能力和通用性。
数据交换方式(opc及dde)
一、概念介绍:1 .OLE及DDE操作系统流行以来,“剪贴板”(Clipboard)首先解决了不同程序间的通信问题(由剪贴板作为数据交换中心,进行复制、粘贴的操作),但是剪贴板传递的都是“死”数据,应用程序开发者得自行编写、解析数据格式的代码,于是动态数据交换(Dynamic Data Exchange,DDE)的通信协定应运而生,它可以让应用程序之间自动获取彼此的最新数据,但是,解决彼此之间的“数据格式”转换仍然是程序员沉重的负担。
对象的链接与嵌入(Object Linking and Embedded,OLE)的诞生把原来应用程序的数据交换提高到“对象交换”,这样程序间不但获得数据也同样获得彼此的应用程序对象,并且可以直接使用彼此的数据内容,其实OLE是Microsoft的复合文档技术,它的最初版本只是瞄准复合文档,但在后续版本OLE2中,导入了COM。
2 .OPCOPC(OLE for Process Control)是一个软件标准,它可以使自动化应用程序方便地读取工业企业的工厂级数据。
OPC是基于Microsoft的组件对象建模(COM)技术定义一个标准接口,允许自动化和控制应用程序、控制设备、以及商业和办公应用软件之间相互操作。
3 .ODBC开放式数据库连接 (ODBC) 技术为访问不同种类的 SQL 数据库提供了通用接口。
ODBC 是基于结构查询语言 (SQL) 的,以此作为访问数据的标准。
此接口提供了最大的互操作性:一个应用程序可以通过一组公用代码访问不同的 SQL 数据库管理系统 (DBMS)。
4 .SCADA数据采集与监控系统(SCADA)是一种软件应用程序,它用于远程实时遥控数据采集过程,以实现对设备和条件的控制。
SCADA可用于电场、石油和天然气精炼、通信、运输以及水和废物控制。
二、OPC及DDE的工作机制和差别1.DDE技术的工作机制dde是为在同一台计算机或不同计算机上运行的程序提供动态数据交换,最早由microsoft 公司提出的。