pmac软件编写m32上位编程篇_第1页
pmac软件编写m32上位编程篇_第2页
pmac软件编写m32上位编程篇_第3页
pmac软件编写m32上位编程篇_第4页
pmac软件编写m32上位编程篇_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、苏州钧信PMAC培训上位编程篇PROJECT(电控部分)PMAC及其控制设备的调整电控硬件搭接程序编写现场调试PMAC底层程序上位机程序上位机编程驱动界面功能控件工艺&算法驱动的实现PCOMM32PRO(Promote)Ptalk(Obsolete)自写驱动PCOMM32PRO通讯模式调用方式ASCII(通用)DPRAM(硬件相关)ERRUPTE(硬件相关)利用PCOMM32PRO编程准备系统准备(window98/NT/2000/XP)PCOMM32PRO安装编程环境(VC、VB、其它C/C+环境)PCOMM32PRO安装获取安装文件保管序列号注意动态库版本产看动态库版本注:现行最普遍版本为

2、10.48,不同版本之间所包含的动态函数不一定相同,可能存在版本间移植问题。库的导出Pcomm32.dll属性版本system32WINDOWS系统盘PCOMM32PRO手册浏览(1)roduction to user manual.1.此部分讲述了Pcomm32pro的概况,例如支持的系统,支持的语言环境。所包含的API的数量。以及在系统中的Ring3层,等等。使用者可以大体浏览一下。2.Getting started.此部分开始教授如何使用Pcomm32pro。包含了:如何安装硬件;如何安装Pcomm32pro;如何使用Pcomm32pro;如何将代码和驱动;PCOMM32PRO手册浏览(

3、2)如何初始化通讯;关于双端口RAM的PmacServer的介绍;如何关闭通讯;给出一个使用ASCII通讯功能的指导;使用ASCII过程中的经验性的常见问题;如何可以达到线程安全的的ASCII通讯;如何实现纠错等。这个第二章节建议大家都要去看看,在这里会给读者关于一个如何使用Pcomm32pro的一个初步的认识。PCOMM32PRO手册浏览(3)3.Features此章主要讲述了如何去使用中断和向PMAC程序。在讲述中断的部分,讲述了中断的四种使用方法:给窗口发一个消息;调用一个函数;开启一个线程;激活一个事件;在程序部分讲述了过程中所要完成的事情以及多文件合并时用到的方法。程序在实际工程中是

4、比较常用的,中断的使用取决于卡是否支持中断以及工程是否要求到了中断。PCOMM32PRO手册浏览(4)3.Features此章主要讲述了如何去使用中断和向PMAC程序。在讲述中断的部分,讲述了中断的四种使用方法:给窗口发一个消息;调用一个函数;开启一个线程;激活一个事件;在程序部分讲述了过程中所要完成的事情以及多文件合并时用到的方法。程序在实际工程中是比较常用的,中断的使用取决于卡是否支持中断以及工程是否要求到了中断。PCOMM32PRO手册浏览(4)4.DPR FeaturesM32PRO的讲本章节讲述双端口的功能和相应使用方法。在初级座中不安排双端口RAM的内容。读者也可以先略去这一部分。

5、5.RODUCTION TO PROGRAMMERS REFERENCE一个按照使用能分类的提纲,这个提纲也是关于手册以下展开论述的一个目录;关于三种通讯方式的说明;响应返回字符串最大位数的指定。6.INITIALIZATION,SHUTDOWN AND CONFIGURATION FUNCTIONS本章节开始详细叙述如何对控制卡进行初始化,关闭,设定等操作。一款PMAC在进行操作之前首先要开板卡初始化。在使用结束后要关板卡源。7.ASCII COMMUNICATION FUNCTIONS资PCOMM32PRO手册浏览(5)ASCII COMMUNICATION FUNCTIONS本章详细描述

6、如何进行ASCII通讯操作。ASCII通讯方式是最常用也是最通用的通讯方式。本章要重点看看。DOWNLOADING FUNCTIONS本章讲述PMAC的的功能,可以在上位机中将编辑好的运动程序或者PLC程序或者赋值表达式通过输入到PMAC卡中。在其中的方式只得是要加入PLCC,或者是多个进程要PLCC的时候提到的多程序要使用的方法。功能在实际工程中也是经常要用到的,需要掌握。PCOMM32PRO手册浏览(6)DUAL PORTED RAM CONTROL PANELDPR REAL TIME FIXED DATA BUFFERDPR REAL TIME FIXED DATA BUFFER(TU

7、RBO)DPR BACKGROUND FIXED DATA BUFFERDPR BACKGROUND FIXED DATA BUFFER(TURBO)14.DPR VARIABACKGROUND READ/WRITE DATA BUFFERDPR BINARAY ROTARY BUFFER FUNCTIONDPR NUMERIC READ AND WRITEPCOMM32PRO手册浏览(7)17.DATA GATHERING FUNCTIONS功能。18.ERRUPT FUNCTIONS中断功能SERIAL CHECKSUM COMMUNICATION FUNCTIONS串口校验通讯功能VAR

8、IABLE FUNCTIONS可以通过在ASCII变量功能包括变量的和变量大小的设置。变量的通讯部分的PmacGetResponseAEx来实现。单独看看变量大小设定便可,使用率不大。PCOMM32PRO手册浏览(8)21.UTILITY FUNCTIONS效用函数部分,功能包含了获得了ROM数据,获取ROM版本类型,PMAC类型等,可以随便选看一下。22.DAYPES, STRUCTURES, CALLBACKS, AND CONSTANTS本章可以看作是是个附录,描述了在实用PCOMM32PRO的过程中可能要用到的数据类型,结构,回调函数类型和常数等等。可以在使用到响应的或者定义时时来此查

9、阅。大体有个概念即可。23.EXTNEDED FUNCTIONS对几个双端口RAM的函数的Ex功能的补充说明,提出了带有Ex函数替代老版本函数的好处,差别主要在于返回值。可以获得错误状态。PCOMM32PRO手册浏览(9)MUNICATION APPLICATION NOTES通讯应用的注意事项:最大的陷阱是超时,超时在所有的通讯中都是存在的,要注意发出和接受的时间间隔。其次是PMAC输出寄存器忧郁症,其实就是出入寄存器阻塞。不要忽略输出寄存器的返回数据。其三就是初始化,在这里提出了一些在初始化通讯时遇到的一些问题。以及响应的解决办法。在早些的固件版本时,串口通讯存在通讯,以及其它比较少见等等

10、。可以在遇到通讯初始化问题时来此查寻一下。最后是通用的双端口RAM的一些使用陷阱。在此先不做涉及。PCOMM32加载VBVC隐式调用显式PCOMM32PRO在VB中的加载以VB6.0为例:1、创建一个通用模块。2、导入函数:Declare Function OpenPmacDevice Lib “Pcomm32.dll” (ByVal pmac As Long) As Long。函数原型:BOOL OpenPmacDevice(DWORD dwDevice)。调用方式:Dim Tmp_Val As LongTmp_Val = OpenPmacDevice(0)PCOMM32PRO在VC中的隐式

11、调用1、设定库函数的路径:点击菜单Project,而后点击Setting。在弹出的窗口中找到Link分页。在 Object/library modules的栏中填写lib文件所在的路径默认是 C:windowssystem32pcomm32.lib2、在全局作用域中导入函数:extern “C” _declspec(dllimport) BOOL _stdcall OpenPmacDevice(DWORD dwDevice);函数原型:BOOL OpenPmacDevice(DWORD dwDevice);调用方式:OpenPmacDevice(0);常用的VC显式方式手动WIN32API函数

12、加载头文件包含导入手动WIN32API函数加载(1)1、在工程的合适位置加载动态库:1.1、定义一个HMODULE类型的变量:HMODULE mydll;1.2、将动态库加载到内存中:mydll = : LoadLibrary(“Pcomm32.dll”);2、根据每个函数的原型定义一个回调函数类型的别名:以 OpenPmacDevice为例。原型:BOOL OpenPmacDevice(DWORD dwDevice);手动WIN32API函数加载(2)别名:typedef BOOL (CALLBACK* MYOPENPMAC) (DWORD);3、定义此类型的一个变量: MYOPENPMAC

13、 myOpenPmac;4、通过WIN32API GetProcAddress来获取函数在内存中的地址:myOpenPmac = (MYOPENPMAC) GetProcAddress (mydll,”OpenPmacDevice”);5、调用: (*myOpenPmac)(0);头文件包含可以通过包含提供的头文件的方法加载步骤:1、将Include文件夹copy到project路径中; 2、在工程中#include ”Runtime.h”;3、在工程中使用函数。库。在工程中使用函数时要按照Runtime.h中的对函数的名称进行调用,在Runtime.h中,Function部分通过EXTERN

14、了函数的名称。如:EXTRN GETRESPONSEEXA DeviceGetResponseEx;在使用中直接调用DeviceGetResponseEx来调用即可。两种显式加载方式的区别两种显式加载方式的实质是一样的。头文件加载的方式实际上也是使用的动库的显式加载的方式将大部分的API函数作出导出。但是头文件中又态不是单单的这些,还有一些全局的结构的两种方式的优缺点:等。自己手动的完成动态库的显式加载的方式在思比较清晰,如何一步一步实现的比较明显,而且可以用什么加载什么。头文件中文件数量比较多,虽然看起来比较简单但是想要分析清除各个头文件的之间的包含关系比较麻烦,一旦某个文件被修改或者丢失对

15、于整个工程的编译都是一个型。T YOURSELF!所以:建议是:对PMAC卡的操作(ASCII)初始化开板卡发指令查询文件操作关板卡上载初始化(1)初始化是完成将PMAC在上位机上进行的一个功能。使用过PEWIN32PRO的用户可能发现一个现象:如果我这次使用的PMAC的通讯类型(如:串口,网口,PCI等)和上一次我使用的类型相同,同时站号也相同的话,在开启PEWIN32PRO时可以自动的与卡通讯成功。而如果换了通讯方式类型的话,下次开启PEWIN32PRO就不可能自动通讯成功。此时就需要手动地进行类型的选择和通讯测试。原因是PMAC在初始化过程中,会将站号,通讯方式等信息在通讯测试成功后写入

16、window的表。所以初始化功能就是完成卡在上位机的。初始化的方法有两种:一、就是通过PEWIN32PRO来。在绝大多数情况下都使用这种方法,因为一般一个工程项目中都不会存在在使用过程中换掉控制卡的要求。初始化(2)二、使用PCOMM32PRO中的函数。函数原型:Long PmacSelect (HWND hwnd);框,这就是PEWIN32PRO中大家见到过的那在调用完成时会弹出一个个初始化框,如下图:初始化(3)框中的操作和PEWIN32PRO中的使用是一样的。在弹出的在绝大多数情况下都是通过第法去初始化。但是对于项目开发而言,在开发过程或者后续的更新换代中可能会遇到换通讯方式,不要忘记重

17、新初始化。表的信息存放在:HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Servi/PMAC。表中的信息是按照站号来的,在初始化完成后,面对的就不再是某种通讯方式的某种卡,而是面对站号。站号是从0号开始的。如果一个系统中就带有一个PMAC卡时,一般就会设到0号站。完成初始化后,可以对卡进行操作了。开板卡将板卡打开是对PMAC卡进行操作的必须的一步。在PMAC卡没有打开之前,所有的操作都是未定义的。M32PRO的API函数实现。打开卡的方式也是通过函数原型:BOOL OpenPmacDevice (DWORD dwDevice);函数参数是设备序号,从0

18、开始。返回值是bool类型,用于查寻是否开板卡成功。注意:当一块PMAC卡要加入到一个VC或者VB的项目中,首先要做一次初始化来测试并这块PMAC卡的信息。初始化面已经将过了。在调用这个函数时,PCOMM32PRO会自动地去前面所讲的注册表的位置去查寻这个站号所保存的信息,用于打开板卡。发指令&查询(1)在Pcomm32pro的动态库中,有许多的基于ASCII通讯的API函数。其使用的为PmacGetResponseExA函数。中最原型:long PmacGetResponseExA ( DWORD dwDevice, PCHAR response,Umaxchar, PCHARd ) ;dw

19、Device:这个参数在编程中经常用到,就是前面所提及的站号;response:出PMAC的输出寄存器中返回的值的拷贝,是一个char*类型;maxchar:最大的拷贝的字符串数量,注意一定要大于返回字符大小; d:上位发出的一个请求或者命令,类型也是char*。发指令&查询(2)返回值:返回值的类型是一个长整型,最好字节包含的是函数的调用状态。其余字节保存从PMAC得到的字符数。如果没有字符收回,检查最高字节 来得到错误代码。具体代码可以在PDF手册的ERROR HANDLING部分去查表。比如if(PmacGetResponseExA(dwDevice,re 000000)Treat er

20、ror;mand)&0 xF0使用PmacGetResponseExA原因如下:之所以细心的用户可能发现讲义前面在手册的浏览部分24小节讲到通讯的注意事项的时候提到过PMAC输出寄存器阻塞。发指令&查询(3)所谓的寄存器阻塞是这样一个现象:运动程序或者PLC程序执行被堵塞住,给PMAC的输入寄存器发ASCII指令也没有返回。原因就是有两个或者两个以上的存在PMAC的输出寄存器中的数据没有被取走。在PMAC的ASCII函数中,有许多是不获取返回值的,使用过程中很容易造成这种现象。并且Ex功能可以查询错误代码。所以建议大家使用 PmacGetResponseExA。令字和查询命令都是和在PEWIN

21、32PRO的Terminal终端上发出令是一样的。如(P100(查询),P100=1(赋值)。发指令&查询(4)注意:几个概念问题:在PMAC卡中,输入寄存器和输出寄存器的大小为255个字符。PmacGetResponseExA函数不面对底层的,所以并不是说用这个API返回的字符也必须是255以内的。可以超过255。文件操作(1)和上载两个方面。文件操作分为完成功能就是将在上位机编写好的运动程序或者PLC程序到卡中,或者将PMAC卡中保存的运动程序或者PLC程序上载到上位机中。:PmacDownloadA()。的函数有许多,原型:Long PmacDownloadA ( DWORD dwDev

22、ice, DOWNLOADMSGPROCmsgp, DOWNLOADGETPROC getp, DOWNLOROGRESS pprg,PCHAR filename, BOOL macro, BOOL map, BOOL log, BOOL dnld );函数在调用的时候首先要打开文件,然后将文件上的代码进行编译,然后执行功能。文件操作(2)在文件编译的过程中会在要以看PDF手册。参数说明:dwDevice:站号。文件的路径上产生一些残留文件。具体可msgp:DOWNLOADMSGPROC类型回调函数。getp:DOWNLAODGETPROC类型回调函数。pprg:DOWNLOROGRESS类型

23、回调函数。以上三个回调函数是PCOMM32PRO中定义的三个用户类型,面资料浏览时提到过有一部分介绍的是PCOMM32PRO的类型。后面将对以下的类型进行一个说明。文件操作(3)文件的名称,使用绝对路径。filename:macro:宏编译选择。map:是否为宏创建一个文件的选项。log:是否建立一个log文件。log文件中的信息就是传递给msgp回调函数的信息。dnld:将最终好的文件发送给PMAC的一个标志。此API函数的参数比较多,如果想做到最简单的,只需将这些多于的参数设成NULL,不想要的flag设成false便可。但是最后参数一定为true不然不执行,只执行编译。文件操作(4)DOWNLOADMSGPROC:原型:typedef void ( FAR WINAPI *DOWNLOADMSGPROC ) ( LPTSTR str, BOOL newline );这个回调函数在PEWIN32PRO参数:时调用,用于返回在编译时会提示是否有错误等。过程中的信息。比如像str:消息字符串,在的过程中会用多次返回。newline:BOOL类型的参数,传递是否有新的字符串返回。函数调用时此类型参数为NULL如果不想从此功能,在文件操作(5)DOWNLOADGETPROC:原型:typedef long ( FAR

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论