rxz505260 发表于 2022-3-6 15:43:50

【分享】基于OS与PLC modbus通讯取反按钮做法

本帖最后由 rxz505260 于 2022-3-6 15:59 编辑

       开发环境是T5L_modbus_V7版本
       位控制有多种做法,都是用05指令向目标位写入0xFF来置ON,或者写入0x00来置OFF,这样就需要两个按钮。
       另外一种用一个按钮实现取反还可以使用增量调节的循环功能做,步长设置为255,上限为255,下限为0。循
环发0或者255.这样就可以利用一个按钮来实现,但是弊端是触摸屏是持续向PLC发送ON或者OFF。PLC端自主改变
状态的时候会被触摸屏强制改回。
       这里介绍利用按键返回+OS程序来做一个取反按钮,PLC端自主改变也不会收到触摸屏的影响。原理很简单,改变地址0x5050的值来写入到PLC。当按钮为ON时改5050为0x00,当按钮为OFF时改5050为0xFF。
触摸屏地址按钮地址为0x230FPLC对应位M10地址位为0x000A
触摸屏端建立一个按键返回按钮。


需要配置22文件2条命令
读取按钮状态 5A01 0102 01F4 0000 0000 1111 000A 0000
写入按钮状态 5A01 0502 01F4 0002 230F 5050 000A 0000

OS程序
Button_01:
      LDWR   R0,0x1111                                 ;按钮位读取地址到0x1111
      MOVXRR180,1,1                                 ;将按钮状态装载到R180
      IJNE   R180,0x01, Button_01off      ;判断按钮状态,ON继续,OFF跳转
      LDWR   R182,0x00                              ;将R182置0x00
      LDWR   R0,0x5050   
      MOVXRR182,0,1                                 ;按钮地址5050改为0x00,用于按下按钮写入OFF
      GOTO Button_01RET
Button_01off:
      LDWR   R182,0xFF00                              ;将R182置0xFF
      LDWR   R0,0x5050   
      MOVXRR182,0,1                                  ;按钮地址5050改为0xFF,用于按下按钮写入ON
Button_01RET:      
      RET






bya115 发表于 2022-8-7 22:31:04

感觉有点麻烦了,位控制控件太好用了

简清 发表于 2023-11-15 11:49:39

D5:F4 ,D5不是只有(0-4)嘛
D12--D13: 000A, (D12--D14)不是未定义嘛?

按这样去弄没有命令下发

rxz505260 发表于 2023-11-23 09:29:11

简清 发表于 2023-11-15 11:49
D5:F4 ,D5不是只有(0-4)嘛
D12--D13: 000A, (D12--D14)不是未定义嘛?



这个写法是早前汇编版modbus协议功能有限的做法。现在更推荐用C51去写 论坛里有现成的modbus协议,功能很全了,

简清 发表于 2023-11-24 18:28:16

rxz505260 发表于 2023-11-23 09:29
这个写法是早前汇编版modbus协议功能有限的做法。现在更推荐用C51去写 论坛里有现成的modbus协议,功能很 ...

T5不是不能用C51去写嘛?
页: [1]
查看完整版本: 【分享】基于OS与PLC modbus通讯取反按钮做法