PMAC的下位机编程包括三种程序:命令序列程序、运动(Program)程序和PLC程序。
如下图,PMAC中编写程序,直接在File->new新建文件会打开编辑器,所有文件为PMC后缀。
查看当前程序可以在File->Uplaod Programs查看当前已有的Program程序和PLC程序及他们的编号、状态。

1.命令序列程序

上节讲到,PMAC卡中可以使用手动操作,在命令行设置参数状态、控制电机等,但是它一次只能发送一条命令,那么为了一次性运行多个命令序列,即可在PMC程序中如下编写:
i620=200
i621=20
i622=10#6j/

这里先设置6轴电机的运动参数,然后激活电机,类似的写法经常用于PMAC参数的初始化中。

程序编写完成后,点击Download按钮,命令系列程序在下载的过程中就会执行。
如下图,勾选Show Message Window,打开Mesage窗口
如下图,在Message窗口可以可以看到当前程序是否有错误等,类似C语言编译过程。
命令序列经常和PLC程序及运动Program程序混用,下面会说明。

2.运动(Program)程序

为了便于编写运动程序,PMAC中使用一个坐标系的概念,比如有6号电机和8号电机,我们在一个的坐标系下将其分别映射到X和Y坐标,如下所示

&1
#6->819.2Y ;机械手Y向,单位mm,(819.2=8192/10,丝杆导程为10mm)
#8->819.2X ;机械手X向,单位mm,(819.2=8192/10,丝杆导程为10mm)

这样我们编程的时候,可以直接把当前运动想成现实坐标系的运动,实际行我们在程序中指定X运动1个单位就是电机运动819.2个脉冲,换算成轴的运动距离就是1mm,这样编写程序简洁易懂。

标准运动程序的模板如下:
&1                      ;坐标系为1
CLOSE                   ;确认所有缓冲区被关闭OPEN PROG 40         ;程序号为40
CLEAR
;;;;;;;;;;;;;;;;;;;;;运动程序主体-开始;;;;;;;;;;;;;;;;;;;;;运动程序主体-结束
CLOSE

这些指令都是命令指令,所以他们都是在程序下载的时候运行,之间的运动程序主体会被写到特定的缓冲区,但是在这时候程序是不运行的。

下面写编写一个简单的程序,如下:
&1
CLOSE           ;确认所有缓冲区被关闭
#6->819.2X       ;机械手X向,单位mm,(819.2=8192/10,丝杆导程为10mm)
#8->819.2Y       ;机械手Y向,单位mm,(819.2=8192/10,丝杆导程为10mm)#6j/
#8j/OPEN PROG 40
CLEARINC                ;增量运动模式
X(10) Y(10)     ;X正方向前进10mm,Y正方向前进10mmCLOSE

注意这里,使用命令序列完成了轴的定义和电机的激活,但是中间的两行运动程序代码只是被写到对应的缓冲区,还没有执行。在terminal窗口输入命令&1b40r程序才运行。注意一个坐标系下关联的所有电机必须都激活,运动程序才能正常运行。在实际中,轴的定义和电机的激活最好放到单独的命令序列文件中。

下面是一个比较复杂的程序:
&1
CLOSE               ;确认所有缓冲区被关闭
#6->819.2X           ;机械手X向,单位mm,(819.2=8192/10,丝杆导程为10mm)
#8->819.2Y           ;机械手Y向,单位mm,(819.2=8192/10,丝杆导程为10mm)#6j/
#8j/OPEN PROG 40
CLEAR;运动参数设置
TA(200)             ;ms
TS(20)              ;ms
F(50)               ;mm/sABS                    ;绝对模式
Linear              ;直线运动p1 = 0
While (p1 < 10)F(50)X(30) Y(10)F(10)X(10) Y(30)If (p1 > 2)Return  EndIf  p1=p1+1
EndWhileCLOSE

上面程序的含义就是从当前位置以速度50mm/s直线运动到绝对坐标(30,10)的位置,再从当前位置以速度10mm/s直线运动到绝对坐标(10,30)的位置,如此循环,如果没有If语句的话,循环10次,但是这里加了If语句就只循环2次了。

基本的运动程序就是这样,再复杂的运动程序都是在此基础上延伸出来的。各种运动指令请查PMAC Software Manual手册,相应的程序编写请查PMAC User Manual手册。

3.PLC运动程序

在电气系统中,PLC是经常用的控制元件,就是有快速的扫描各个状态,对扫描到的状态变化做相应的处理。他的实时性非常高,简洁可靠。在PMAC中有模拟PLC的功能。
同样对于运动程序中的最后一个实例功能,改写如下:
运动程序:
&1
CLOSE               ;确认所有缓冲区被关闭
#6->819.2X           ;机械手X向,单位mm,(819.2=8192/10,丝杆导程为10mm)
#8->819.2Y           ;机械手Y向,单位mm,(819.2=8192/10,丝杆导程为10mm)#6j/
#8j/OPEN PROG 40
CLEARTA(200)                ;ms
TS(20)              ;ms
F(50)               ;mm/sABS                    ;绝对模式
Linear              ;直线运动p1 = 0
While (p1 < 10)F(50)X(30) Y(10)F(10)X(10) Y(30)p1=p1+1
EndWhileCLOSE
PLC程序:
OPEN PLC 20
CLEARIf (p1 = 2)COMMAND "&1b40a"EndIfCLOSEenable plc 20
一般我们让PLC程序始终在后台运行,扫描指定的状态,这里我们在download PLC的时候就激活了PLC程序。这样当在terminal中输入&1b40r运行运动程序时,一旦p1=2,PLC可默认为立即扫描到该状态,这时候就会终止该程序。
这里本来运动程序会运行两个循环,但是由于PMAC的Lookhead的功能,这里只运行了一个循环就中止程序了,先留个悬念,马上讲到。

4.PMAC运动程序Lookhead功能

PMAC在执行的时候会有Lookhead的功能,顾名思义就是前瞻的功能,就是在执行的时候会预先读取执行下面一段代码,对于运动轨迹相关的代码会进行预先计算,变量赋值会提前进行。分析如上运动程序,在第二个循环的时候,预先读取了整个循环内容,即运动指令还没运行时,p1=p1+1就已经被执行了,这时候PLC检测到p1的改变就会中止程序了。
那么这里要怎么做才能避免预读取带来的副作用呢,其实很简单,在X(10) Y(30)后加一句dwell 0即可,这告诉运动程序,预读取就到此位置或者说必须dwell 0前的程序执行完毕才会进行后续操作。
Lookhead还会带来其他的影响,如对一个直角拐弯,开启了lookhead后实际运行轨迹为圆角拐弯,这个要注意,具体的请参考手册。
原创,转载请注明来自http://blog.csdn.net/wenzhou1219

6.PMAC下位机-下位机编程相关推荐

  1. 物联网云平台DTU Modbus协议 上位机 下位机 源码 源代码 程序

    物联网云平台DTU Modbus协议 上位机 下位机 源码 源代码 程序 一.源码的使用基本说明: 1.1 编译语言: 下位机使用C语言:上位机使用C#语言 标准Modbus Slave通信下位机源码 ...

  2. 上位机下位机概念详解

    摘要 今天被老板问了什么是上位机,之前接触过,对于概念也不是很清晰,我又查找了一些资料,整理如下. 上位机 上位机是指能够发出操控命令的计算机,一般是PC. 下位机 下位机是指能够控制设备状态的计算机 ...

  3. Java黑皮书课后题第10章:**10.7(游戏:ATM机)使用编程练习题9.7中创建的Account类来模拟一台ATM级

    **10.7(游戏:ATM机)使用编程练习题9.7中创建的Account类来模拟一台ATM级 题目 程序 代码 Test7.java Test7_Account.java 运行示例 题目 程序 Tes ...

  4. 单片机与PC机串口通信编程

    单片机与PC机串口通信编程 实验目的 利用PROTUES仿真软件.串口调试助手.虚拟串口,搭建单片机与PC通信仿真平台,熟悉单片机串口的配置及与PC机的通信方法. 实验目的 1.PROTUES仿真软件 ...

  5. C#全自动多线程上位机源码编程

    C#全自动多线程上位机源码编程 0, 纯源代码. 1, 替代传统plc搭载的触摸屏. 2, 工控屏幕一体机直接和plc通信. 3, 功能强大,多级页签. 4, 可以自由设定串口或以太网通信. 5, 主 ...

  6. 运维堡垒机(跳板机)系统 python

    相信各位对堡垒机(跳板机)不陌生,为了保证服务器安全,前面加个堡垒机,所有ssh连接都通过堡垒机来完成,堡垒机也需要有 身份认证,授权,访问控制,审计等功能,笔者用Python基本实现了上述功能. A ...

  7. S700K转辙机多机牵引道岔故障处理【转自微信公众号高速铁路信号技术交流】

    S700K转辙机道岔故障处理原则 一停用.二汇报.三处理.四确认 一.故障处理携带仪表.工具.器材 室内 1.工具:通信工具.应急工具.设备钥匙.便携式工作灯.电烙铁. 2.仪表:万用表.钳形表. 3 ...

  8. 安卓玩机搞机技巧综合资源-----修改rom 制作rom 解包rom的一些问题解析【二十一】

    接上篇 安卓玩机搞机技巧综合资源------如何提取手机分区 小米机型代码分享等等 [一] 安卓玩机搞机技巧综合资源------开机英文提示解决dm-verity corruption your de ...

  9. 安卓玩机搞机技巧综合资源---MIUI14全机型首版下载链接 刷机方法 获取root步骤【十二】

    接上篇 安卓玩机搞机技巧综合资源------如何提取手机分区 小米机型代码分享等等 [一] 安卓玩机搞机技巧综合资源------开机英文提示解决dm-verity corruption your de ...

  10. SecureCRT自动登录跳板机/堡垒机直连linux

    1.连接堡垒机/跳板机如果是ip地址即跳过此步骤,如果是网址先获取网址ip 2.设置登陆堡垒机/跳板机条件 3.设置登录账号密码及登录后默认选择的机器序号 an IP Address 首次登录不确定机 ...

最新文章

  1. 京东热点key探测系统发布,单机 QPS 提升至 37 万
  2. SQL查询结果集对注入的影响及利用
  3. sqlplus set;命令
  4. react 实现数据双向绑定
  5. 旧文 | 舒迅:产品经理必读的九步法
  6. C语言数据结构(大话数据结构——笔记1)数据结构绪论、算法、线性表
  7. linux扩充单个路径下的内存,超详尽!Linux云服务器存储扩容实操
  8. fastreport字体自适应_FastReport 自动换行与行高自适应及自动增加空行
  9. 牛客NOIP2021提高组OI赛前模拟赛第一场T3——与巨(数学)
  10. 工程师如何解决穿衣搭配烦恼?——滴搭平台与算法 1
  11. hadoop报错 java home_hadoop的常见报错日志以及解决方案
  12. 汇编:输出寄存器AX中的内容
  13. Python sys 使用说明
  14. 拓端tecdat|R语言中的copula GARCH模型拟合时间序列并模拟分析
  15. Ubuntu 18.04 安装 Moodle
  16. 关于排队模型的一些名词解释(随笔)
  17. BackTrack5(BT5)硬盘安装完美教程
  18. web3调用智能合约取事件
  19. Fortran NINT函数意思
  20. 仿写爱奇艺网页的问题和解决方法

热门文章

  1. JAVA的循环结构以及简单操作
  2. Tomcat执行startup.bat出现闪退的可能原因
  3. 本地搭建私有云盘设定:设置群晖共享文件夹以及cpolar 4/5
  4. 2016年最新苹果开发者账号注册流程详解(公司账号篇)
  5. SQLite源代码分析----------分词器③
  6. docker exec -it container1 /bin/bash 异常
  7. Gym - 101853E E. Maximum Sum (状压DP)
  8. 3D重建中的相机雷达融合
  9. IDEA执行hadoop相关报错xxx from xxx is not a valid DFS filename.
  10. 文档服务器备份策略,服务器备份策略