勇哥学了一段时间CP1H的指令后,突然有兴趣想做点东西。突然想到我学易语言、C#、python后第一个想到的肯定是做点歌软件。(用来点播本地的MTV音乐带搜索功能的小软件,因为勇歌的爱好就是在户外唱歌)。不过,点歌软件有大数据的处理、和互联网操作,cp1h是搞不了的,于是勇哥想到搞简单一点。我只需要利用单片写一段红外遥控的代码,用串口发给plc,plc收到后按我约定好的指令格式向计算机上的一段音乐播放器程序发送,音乐播放程序收到的指令包括: 下一首,上一首,单曲循环,连续播放。这个任务包括三个子
数据移位指令就是位操作指令,在C语言中,或者熟悉单片机编程,或者熟悉PC汇编语言的朋友都不会陌生。恰恰勇哥以上都比较熟悉。最早的程序员们,像386计算机这种pc的时代,为了让游戏速度更快,发明右移运算代替乘法的窍门,那时候勇哥还比较崇拜他们呢。换成在PLC里面,位操作似乎无所不在,全部指令的命令字都是以位来进行控制的。欧姆龙的输入输出IO通道都是按位操作的。WSFT 字移位由实验可以看到,D0开始的数据往D10方向移动了一个字。没有移动前指令执行后的效果SLD 左移一位将从 D4 到
16个变址寄存器(IR0--IR15)用于间接寻址,每个变址寄存器存储一个单独的PLC存储地址,该地址是在I/O存储区中一个字的绝对地址。用MOVR指令将一个常规数据区地址 16个变址寄存器(IR0--IR15)用于间接寻址,每个变址寄存器存储一个单独的PLC存储地址,该地址是在I/O存储区中一个字的绝对地址。用MOVR指令将一个常规数据区地址转换成它的PLC存储地址,并将该值写到指定的变址寄存器中(用M
PID英文全称为Proportion Integration Differentiation,PID控制又称比例积分微分控制,是一种闭环控制。下面以如图7-13所示的恒压供水系统来说明PID控制原理。 图7-13 恒压供水的PID控制 电动机驱动水泵将水抽入水池,水池中的水除了经出水口提供用水外,还经阀门送到压力传感器,传感器将水压大小转换成相
什么是块程序能够在用户程序全体(全任务共通)中,最大可以创建128 个被称之为「块程序」的区域。块程序区域只根据1 个输入条件(功率通量)进行起动。起动后,BPRG~BEND 为止的指令被无条件执行。(除BPRG 指令之外,块程序区域内的指令的执行与输入条件(功率通量)无关)。因此,能够将由相同的输入条件ON 所进行的动作指令归并在该块程序中。将全体作为1 个块,用阶梯程序对该块进行起动。其中的指令记述采用助记符。块程序为由阶梯程序和助记符组合的程序区域。利用块程序,可以易于制成在阶梯程序中难以
勇哥是计算机专业毕业的,对于计算机的中断太熟悉不过了。所以对于中断是干什么的,怎么工作的,这里就不在赘述了。对于plc这种讲究实时响应的设备上来说,中断由于优先级别高,我相信意义是很大的。但是勇哥对于plc上的中断究竟能干些什么,由于初学plc,所以没有对应的项目经验,只能是先了解为主,以后再来补全。CP1H的中断功能的种类:●输入中断(直接模式) CPU 单元的内置输入发生OFF→ON 的变化,或ON→OFF 的变化时,执行中断任务的 &
如果只是JOG+,JOG-,请参考程序第0,3步的演示。第0步往正方向运动,第3步往负方向运动。如果w0.01或者w0.02断开,则调用第6步的INI指令停止轴运动。第9步调用指令ORG回原点。第10步用来中止回原点动作。回原点的方向、速度、回原点的方式都是通过“设置”面板来设定的。第19,20步发固定脉冲走距离,CW是正方向转动,CCW为负方向转动。第13步为走固定脉冲的指令提供参数设定。本例源代码下载--------------------- 作者:hackpig来源:www.sk
结构化语言ST是作用于功能块编程中。这门语言对于梯形图中不善于处理的数值运算等逻辑算法,采用类似于高级语言的语法,使其变得简单。下面先从功能块的相关知识说起:CP1H的功能块规格:功能块定义数: 128实例数:256实例嵌套级数:cx-programmer6.0及以后,支持8级嵌套IO变量数:最多64个变量变量类型:注意:TIMER和COUNTER数据类型不能用于结构化文本功能块。在内部变量中,其中一个变量定义为数组,CX-Programmer 只支持一维数组。变量可以设置初始值,并且如果勾选了
MOV$ 字符串传关指令这个指令只需要指定源字、第一个目标字勇哥很奇怪它怎么知道我传送多少个字符串?经过实验,我发现它是由源字开始,一直传送到0结束的字符串。也就是0做为要传送字符串的结束符。下面我截了内存区的图像,各位一看便知。LEFT$ 从左边取子字符串这个比较简单,看内存区截图。还有一个指令是取右边的子字符串,RGHT$这个名字勇哥忍不住要吐槽一下,实在是不好记,就不能叫RIGHT$? 真是奇怪。这小日本不知道怎么想的。+$ 字符串拼接这个是常用功能,也比较简单,注
在欧姆龙中,可以通过SSET(设置栈大小),PUSH(向栈中压入数据)以及FIFO(以队列方式读取数据)来实现这一过程。首先,通过SSET指令来设置栈大小,欧姆龙的队列需要固定4CH的空间存储栈管理信息,且因为FIFO会保留最后一个数据,为了确保你的程序可以结束掉,所以还需要多申请一个CH的空间用于存放工艺步骤结束标志。因为演示程序使用的是3个通道,那么这里的栈空间申请了8个通道。勇哥来介绍一下演示程序的执行过程:在演示程序中,首先我们执行SSET指令创建栈。然后通过3个按钮分别调用PUSH指令