发表于:2025/8/12 8:56:08
#0楼
最近无聊,分享一下给大家吧,感觉这种老PLC编程快要没落了,给新手分享一下吧,有错误,老手请指正;
1,IR,DR寄存器的使用;<编写功能块需要用到>
2,CP1H,CJ系列均可用的NC113,213,413的功能块,
~~~~~~~~~~~~~~~~~
<禁止拿去售卖,自己用,商用都可以;直接拿去售卖的,诅咒生娃18个P眼>
<禁止拿去售卖,自己用,商用都可以;直接拿去售卖的,诅咒生娃18个P眼>
<禁止拿去售卖,自己用,商用都可以;直接拿去售卖的,诅咒生娃18个P眼>
~~~~~~~~~~
第一大纲,IR变址寄存器精髓;
MOVR正常表达:MOVR D0 IR1,就是把D0<内部绝对地址>写个IR1 等同于 MOVL &65536 IR1 ,<这个可以忽悠很多人,让他们直接看不懂欧姆龙
>
它两一样的, IR寄存器是32位的,所有需要用MOVL,
程序其它地方使用呢?
MOV +0,IR1 D100, 等同于 MOV D0 D100
MOV +10,IR1 D100 等同于 MOV D10 D100
还有一个DR,这个是16bit的
MOV DR0,IR1 D100
DR0=0 等同于 MOV D0 D100
DR0=+10 等同于 MOV D10 D100,
~~~~~~~~ 好了,以上就是欧姆龙变址寄存器的精髓。
附图一张,A0,W0,H0,D0 内部绝对地址。
~~~~~~~~~~~~~~~~~
第二大纲,欧姆龙NC模块功能块编写,<软件FB文件夹也有,但是全部是分散,零散的>,自己写,更方便
要写功能块,先知道大致内容:手册有M区,L区 N区,具体看看手册,下面开始
M0~M3 是数据区域,开始字,轴参数定义,公共参数区域开始字, m = D20000 + 100 × 单元
M+4~M115 是轴参数区域<轴数不一样,占用地址大小不一样>,比如限位NC NO类型啊,最大速度,之类的,
~~~~~~~
N区 操作储存区域的开始字, n = CIO 2000 + 10 × 单元
这里是控制位,以及反馈信号
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
I区 是M0 M1 定义的位置,模块不一样开始的字不一样, 113 是+32,213是60,413是+116
这里主要是要给定位的位置,速度,加减速时间
~~~~~~~~~~~~~~
好了,上面就是手册的大致意思,
新建一个功能,添加一个NC413模块,单元号设置为10
M0= D20000+10*100 =D21000
如图:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
这里制作简单的点动,相对移动,绝对移动,所以更多功能请自行探索;
M0 是默认的,M1开始区域=0 也就是默认的, 也就是按上面手册描述的使用D21000 开始的字,N区域默认改不了使用2000+10*10 =CHI2100
监控数据如下: <M2bit12~15可以设置不用几轴,但是对硬件版本有要求,版本太低会报错,所以使用全部轴>
~~~~~~~~~~
知道了全部内容,开始编写功能块;
1,定义功能块引脚(CP1H不支持IN_OUT接口) 只用IN,OUT,以及内部变量
ps:我的命名规范不是标准的,方便理解大致说一下, AB_CCC a是变量输入i,输出o,内部v,B是类型,b=bool,i=int,r=real,D=Dint;CCC=具体内容了。
输入:
输出:
~~~~~~~~~~
内部变量,用的时候添加吧。
功能块内部:
1,检查给定参数是否合规,<vb_参数OK 你就当成是2行串联吧,不存在双线圈的问题>
2,N区偏移量计算,bit操作位<setb>+状态反馈
3,L区 模块类型不一样,偏移位置不一样,内部部分反馈给定又不是连续的,很蛋疼。。
~~~~~~
以上,昨天下午弄了一下午写的。
补充技巧,因为使用了IR,避免影响其它不规范的使用,功能块开始记得保存IR值。<理论上都是先赋值再使用>
第一行:MOVL IR* VD_IRtemp, <保存IR寄存器的值>
最后一行 MOVL VD_IRtemp IR* <还原IR的值>
!~~~~~~~~~~~~
效果如下,只需要填写单元号+模块轴数+轴号,就可以使用了,也不需要自己记什么绝对地址了,只管用,
~~~~~~~~~~
附件等审核过了再添加。
论坛上传附件报错,我放NAS吧
飞牛分享【NC_操作.zip】,点击链接下载文件,App打开可转存到NAS:http://bnnyygy.top:16666/s/d3bfa229c6794eb289,密码:6666
分享到国庆节10.8号。后续如果失效了需要跟帖我补充。
1,IR,DR寄存器的使用;<编写功能块需要用到>
2,CP1H,CJ系列均可用的NC113,213,413的功能块,
~~~~~~~~~~~~~~~~~
<禁止拿去售卖,自己用,商用都可以;直接拿去售卖的,诅咒生娃18个P眼>
<禁止拿去售卖,自己用,商用都可以;直接拿去售卖的,诅咒生娃18个P眼>
<禁止拿去售卖,自己用,商用都可以;直接拿去售卖的,诅咒生娃18个P眼>
~~~~~~~~~~
第一大纲,IR变址寄存器精髓;
MOVR正常表达:MOVR D0 IR1,就是把D0<内部绝对地址>写个IR1 等同于 MOVL &65536 IR1 ,<这个可以忽悠很多人,让他们直接看不懂欧姆龙

它两一样的, IR寄存器是32位的,所有需要用MOVL,
程序其它地方使用呢?
MOV +0,IR1 D100, 等同于 MOV D0 D100
MOV +10,IR1 D100 等同于 MOV D10 D100
还有一个DR,这个是16bit的
MOV DR0,IR1 D100
DR0=0 等同于 MOV D0 D100
DR0=+10 等同于 MOV D10 D100,
~~~~~~~~ 好了,以上就是欧姆龙变址寄存器的精髓。
附图一张,A0,W0,H0,D0 内部绝对地址。
~~~~~~~~~~~~~~~~~
第二大纲,欧姆龙NC模块功能块编写,<软件FB文件夹也有,但是全部是分散,零散的>,自己写,更方便
要写功能块,先知道大致内容:手册有M区,L区 N区,具体看看手册,下面开始
M0~M3 是数据区域,开始字,轴参数定义,公共参数区域开始字, m = D20000 + 100 × 单元
M+4~M115 是轴参数区域<轴数不一样,占用地址大小不一样>,比如限位NC NO类型啊,最大速度,之类的,
~~~~~~~
N区 操作储存区域的开始字, n = CIO 2000 + 10 × 单元
这里是控制位,以及反馈信号
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
I区 是M0 M1 定义的位置,模块不一样开始的字不一样, 113 是+32,213是60,413是+116
这里主要是要给定位的位置,速度,加减速时间
~~~~~~~~~~~~~~
好了,上面就是手册的大致意思,
新建一个功能,添加一个NC413模块,单元号设置为10
M0= D20000+10*100 =D21000
如图:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
这里制作简单的点动,相对移动,绝对移动,所以更多功能请自行探索;
M0 是默认的,M1开始区域=0 也就是默认的, 也就是按上面手册描述的使用D21000 开始的字,N区域默认改不了使用2000+10*10 =CHI2100
监控数据如下: <M2bit12~15可以设置不用几轴,但是对硬件版本有要求,版本太低会报错,所以使用全部轴>
~~~~~~~~~~
知道了全部内容,开始编写功能块;
1,定义功能块引脚(CP1H不支持IN_OUT接口) 只用IN,OUT,以及内部变量
ps:我的命名规范不是标准的,方便理解大致说一下, AB_CCC a是变量输入i,输出o,内部v,B是类型,b=bool,i=int,r=real,D=Dint;CCC=具体内容了。
输入:
输出:
~~~~~~~~~~
内部变量,用的时候添加吧。
功能块内部:
1,检查给定参数是否合规,<vb_参数OK 你就当成是2行串联吧,不存在双线圈的问题>
2,N区偏移量计算,bit操作位<setb>+状态反馈
3,L区 模块类型不一样,偏移位置不一样,内部部分反馈给定又不是连续的,很蛋疼。。
~~~~~~
以上,昨天下午弄了一下午写的。
补充技巧,因为使用了IR,避免影响其它不规范的使用,功能块开始记得保存IR值。<理论上都是先赋值再使用>
第一行:MOVL IR* VD_IRtemp, <保存IR寄存器的值>
最后一行 MOVL VD_IRtemp IR* <还原IR的值>
!~~~~~~~~~~~~
效果如下,只需要填写单元号+模块轴数+轴号,就可以使用了,也不需要自己记什么绝对地址了,只管用,
~~~~~~~~~~
附件等审核过了再添加。
论坛上传附件报错,我放NAS吧
飞牛分享【NC_操作.zip】,点击链接下载文件,App打开可转存到NAS:http://bnnyygy.top:16666/s/d3bfa229c6794eb289,密码:6666
分享到国庆节10.8号。后续如果失效了需要跟帖我补充。
[此贴子已经被作者于2025/8/12 10:12:05编辑过]