工业控制
论坛上经常提问,不改程序,上位机如何更改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 通道。
编辑:黄飞
全部0条评论
快来发表一下你的评论吧 !