VBA 与PLC通讯

VBA 与PLC通讯

ID:42614996

大小:141.89 KB

页数:6页

时间:2019-09-18

VBA 与PLC通讯_第1页
VBA 与PLC通讯_第2页
VBA 与PLC通讯_第3页
VBA 与PLC通讯_第4页
VBA 与PLC通讯_第5页
资源描述:

《VBA 与PLC通讯》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、1VBA简介  VisualBasic的应用程序版(VBA)是Microsoft公司长期追求的目标,使可编程应用软件得到完美的实现,它作为一种通用的宏语言可被所有的Microsoft可编程应用软件所共享。在没有VBA以前,一些应用软件如Excel、Word、Access、Project等都采用自己的宏语言供用户开发使用,但每种宏语言都是独立的,需要用户专门往学习,它们之间互不兼容,使得应用软件之间不能在程序上互联。拥有一种可跨越多个应用软件,使各应用软件产品具有高效、灵活且一致性的开发工具是至关重要的。VBA作为一种新一代的

2、标准宏语言,具有上述跨越多种应用软件并且具有控制应用软件对象的能力,使得程序设计职员仅需学习一种同一的标准宏语言,就可以转换到特定的应用软件上往,程序设计职员在编程和调试代码时所看到的是相同的用户界面,而且VBA与原应用软件的宏语言相兼容,以保障用户在代码和工作上的投资。有了VBA以后,多种应用程序共用一种宏语言,节省了程序职员的学习时间,进步了不同应用软件间的相互开发和调用能力。2串口通讯程序  简单的串口通讯程序一般是先由上位机向下位机发送读(write)或写(read)数据命令,然后等待下位机应答;下位机接受到命令之后

3、,首先要对数据命令进行校验,对于符合校验约束的命令下位机会将相应的数据回复到上位机,对于不符合校验约束的命令下位机或将其抛弃或回复错误信息;上位机接收到下位机的响应之后,首先要对接收到的回复信息进行校验,对不符合校验约束的数据进行异常处理,对符合校验约束的信息进行解码,解码之后的信息便是上位机从下位机获得的有效信息了。  上位机向串口发送读命令之后需要等待下位机应答并读取回复信息,常用的等待有3种方式:1)轮询式  上位机向串口发送读命令之后一直等待下位机应答,通讯程序处于一个等待循环中。  优点:速度快、误码率低(几乎不存

4、在误码)。  缺点:消耗CPU。(解决办法:使用Sleep()API函数)。2)消息式  消息式通讯是采用响应WINDOWS消息的办法读取串口。  优点:节省CPU、误码率低。  缺点:发送接收机制过于繁琐。3)定时接收式  定时接收式通讯是根据预设的定时器时间进行读取数据。  优点:发送接收机制相对简单、节省CPU。  缺点:误码率太高,不同的硬件需要配置不同的通讯时间参数,需要严格的校验运算。3EXCEL-VBA串口通讯实例  软件:EXCEL。  硬件:艾默生EC10PLC。  功能:通过EXCEL中的按钮控制PLC的

5、输出继电器Y0。  界面:RUN(运行通讯)、STOP(停止通讯)、Y0(Y0ON/OFF控制)。  主程序:  OptionExplicit  PublicDeclareSubSleepLib"kernel32"(ByValdwMillisecondsAsLong)  PublicDeclareFunctionSetTimerLib"user32"(ByValhwndAsLong,ByValnIDEventAsLong,ByValuElapseAsLong,ByVallpTimerFuncAsLong)AsLong  Pu

6、blicDeclareFunctionKillTimerLib"user32"(ByValhwndAsLong,ByValnIDEventAsLong)AsLong  Publiccom1AsNewMSCommLib.MSComm  Publicy0SttAsBoolean  Publicy0_onAsBoolean  PublictmrFlagAsBoolean  PublictmrAsLong  Subrunn()    OnErrorGoToed    com1.Settings="9600,e,8,1"    Ifc

7、om1.PortOpen=FalseThen      com1.PortOpen=True    EndIf    tmr=SetTimer(0,0,500,AddressOfontimer)    ExitSub  ed:  MsgBox"串口打开错误!"  EndSub  Substopp()    Ifcom1.PortOpen=TrueThen      com1.PortOpen=False      KillTimer0,tmr    EndIf  EndSub  PublicFunctionontimer()

8、   Dima(7)AsByte  DimaddAsLong  OnErrorGoToed  IftmrFlag=FalseThen    tmrFlag=True    Ify0_on=TrueThen      y0_on=False      Ify0Stt=TrueThen    

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。