不改程序,上位机如何更改IO点?

工业控制

1095人已加入

描述

论坛上经常提问,不改程序,上位机如何更改IO点?

今天就来尝试一下!

姆龙CP CJ适用

截图一张,MOVR做的

ii_ChBit是设置IO点位的上位机设置小数点1位,输入1.5,写入PLC是15, 输入100.6 就是写入1006。

程序

     

发帖子发现一个问题,如果10015,即100.15,程序会判断错误,这里就不去改了,只是说,上位机能随便改变ii_ChBit的值来改变IO点位。

此程序也可以用来简易加密设备,ii_ChBit 用D区来设置,拿到程序,没用D区内存数据,程序是跑不起来的~

今天测试了一下。CP CJ 只要是支持功能块的,这个FB都可以完成地址映射,也就是上位机设置D区寄存器阿拉伯数字,就可以设置输入或者输入地址。

例如上位机输入10015=100.15,505=5.05 以此类推,数字后两位是bit,前面是寻址。

GIF 如下:

程序

 

程序

     

FB就不上传了,很简答 MOVR来搞的,看手册半小时就能搞定。

补充一下,模拟用的CP2E,100**是输出点位,设置D0位100**就可以控制那个IO输出,ib_ONOFF是实际控制点位,程序中控制它就可以控制点位的输出。

输入呢,设置D0位0**,**=bit,例如D0是14,如果0.14=ON的时候,ob_ONOFF也会ON,达到了上位机随意设置IO点的目的。

如果是输出地址重复,以双线圈处理(最后一个有用),ob_ERROR是错误,BIT超过15,寻址肯定不正常,报错,并且输入输出均无效。

网友讨论

知道一点:

MOVR指令用过

程序

W10.00 W10.01 不是要程序中写好吗?D0的数值好像只是决定启用用W10.00还是W10.01

对于小点数(或有数据支持,就是那么几个点可能需要调换)的控制可能还好,对应300点的系统,全都考虑,FB能用几次就是个问题。

如果能自由组态就好了。

bnnyygy:

ii_ChBit 是 设置通道寄存器+位,ib_ONOFF是控制该点位ON或者OFF(只针对Q点),逻辑部分控制这个BOOL就行了。

ob_ERROR 是提醒输入地址错误,位数超过15位,例如输入220(2.20),根本不存在这个地址,报错提醒;

ob_ONOFF是监控 设置地址的状态,可以监控Q点,也可以监控I点,例如D0是图中的115,那么就监控1.15, OB_ONOFF还有一个作用,就是上位机指示灯左右。

例如图中IO映射的 电机启动线圈, 上位机监控OB_ONOFF就可以了,当然,也可以作为I点使用或者监控。

上面的目的无非为了上位机修改值来改变输入或者输出点位的目的,可惜欧姆龙这个不能用数组,不然一个FOR就搞定了。


还有一个缺陷就是CP CJ用功能块,慢,占用内存大。


LD P_ON  MOVR 0.00 IR0,
ld ib_ONOFF out ,IRO,

相当于:

0.00:=ib_ONOFF;
LD P_ON  MOVR 0.00 IR0,
LD P_ON  +L IR0 &1 IR0
ld ib_ONOFF out ,IRO,


相当于:
0.01:=ib_ONOFF;


更多不变详解,如果需要,后台私信小编,我发给你最新的FB功能块(未加密)。调用FB功能块。

交叉应用看不到程序使用IO点,但是可以控制读取所有Q I 通道。

编辑:黄飞

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分