PLC I/O
PLC I/O 用于控制主机设备的输入/输出 (I/O) 功能。
以下是主机对PLC I/O功能的支持:
主机 |
数字输入器 |
继电器 |
|---|---|---|
StampPLC |
✔ |
✔ |
UiFlow2 应用示例
数字输入控制继电器
在 UiFlow2 中打开 stamplc_plcio_example.m5f2 项目。
此示例演示如何使用数字输入控制继电器。
UiFlow2 代码块:
示例输出:
None
MicroPython 应用示例
数字输入控制继电器
此示例演示如何使用数字输入控制继电器。
MicroPython 代码块:
1# SPDX-FileCopyrightText: 2025 M5Stack Technology CO LTD 2# 3# SPDX-License-Identifier: MIT 4 5import os, sys, io 6import M5 7from M5 import * 8from hardware import DigitalInput 9from hardware import Relay 10 11 12label0 = None 13digitalinput_0 = None 14digitalinput_1 = None 15digitalinput_2 = None 16digitalinput_3 = None 17relay_0 = None 18relay_1 = None 19relay_2 = None 20relay_3 = None 21 22 23def digitalinput_0_falling_event(args): 24 global \ 25 label0, \ 26 digitalinput_0, \ 27 digitalinput_1, \ 28 digitalinput_2, \ 29 digitalinput_3, \ 30 relay_0, \ 31 relay_1, \ 32 relay_2, \ 33 relay_3 34 relay_0.on() 35 36 37def digitalinput_0_rising_event(args): 38 global \ 39 label0, \ 40 digitalinput_0, \ 41 digitalinput_1, \ 42 digitalinput_2, \ 43 digitalinput_3, \ 44 relay_0, \ 45 relay_1, \ 46 relay_2, \ 47 relay_3 48 relay_0.off() 49 50 51def digitalinput_1_falling_event(args): 52 global \ 53 label0, \ 54 digitalinput_0, \ 55 digitalinput_1, \ 56 digitalinput_2, \ 57 digitalinput_3, \ 58 relay_0, \ 59 relay_1, \ 60 relay_2, \ 61 relay_3 62 relay_1.on() 63 64 65def digitalinput_1_rising_event(args): 66 global \ 67 label0, \ 68 digitalinput_0, \ 69 digitalinput_1, \ 70 digitalinput_2, \ 71 digitalinput_3, \ 72 relay_0, \ 73 relay_1, \ 74 relay_2, \ 75 relay_3 76 relay_1.off() 77 78 79def digitalinput_2_falling_event(args): 80 global \ 81 label0, \ 82 digitalinput_0, \ 83 digitalinput_1, \ 84 digitalinput_2, \ 85 digitalinput_3, \ 86 relay_0, \ 87 relay_1, \ 88 relay_2, \ 89 relay_3 90 relay_2.on() 91 92 93def digitalinput_2_rising_event(args): 94 global \ 95 label0, \ 96 digitalinput_0, \ 97 digitalinput_1, \ 98 digitalinput_2, \ 99 digitalinput_3, \ 100 relay_0, \ 101 relay_1, \ 102 relay_2, \ 103 relay_3 104 relay_2.off() 105 106 107def digitalinput_3_falling_event(args): 108 global \ 109 label0, \ 110 digitalinput_0, \ 111 digitalinput_1, \ 112 digitalinput_2, \ 113 digitalinput_3, \ 114 relay_0, \ 115 relay_1, \ 116 relay_2, \ 117 relay_3 118 relay_3.on() 119 120 121def digitalinput_3_rising_event(args): 122 global \ 123 label0, \ 124 digitalinput_0, \ 125 digitalinput_1, \ 126 digitalinput_2, \ 127 digitalinput_3, \ 128 relay_0, \ 129 relay_1, \ 130 relay_2, \ 131 relay_3 132 relay_3.off() 133 134 135def setup(): 136 global \ 137 label0, \ 138 digitalinput_0, \ 139 digitalinput_1, \ 140 digitalinput_2, \ 141 digitalinput_3, \ 142 relay_0, \ 143 relay_1, \ 144 relay_2, \ 145 relay_3 146 147 M5.begin() 148 label0 = Widgets.Label("label0", 20, 2, 1.0, 0xFFFFFF, 0x222222, Widgets.FONTS.DejaVu18) 149 150 digitalinput_0 = DigitalInput(1) 151 digitalinput_0.irq(digitalinput_0_falling_event, digitalinput_0.IRQ_FALLING) 152 digitalinput_0.irq(digitalinput_0_rising_event, digitalinput_0.IRQ_RISING) 153 digitalinput_1 = DigitalInput(2) 154 digitalinput_1.irq(digitalinput_1_falling_event, digitalinput_1.IRQ_FALLING) 155 digitalinput_1.irq(digitalinput_1_rising_event, digitalinput_1.IRQ_RISING) 156 digitalinput_2 = DigitalInput(3) 157 digitalinput_2.irq(digitalinput_2_falling_event, digitalinput_2.IRQ_FALLING) 158 digitalinput_2.irq(digitalinput_2_rising_event, digitalinput_2.IRQ_RISING) 159 digitalinput_3 = DigitalInput(4) 160 digitalinput_3.irq(digitalinput_3_falling_event, digitalinput_3.IRQ_FALLING) 161 digitalinput_3.irq(digitalinput_3_rising_event, digitalinput_3.IRQ_RISING) 162 relay_0 = Relay(1) 163 relay_1 = Relay(2) 164 relay_2 = Relay(3) 165 relay_3 = Relay(4) 166 167 168def loop(): 169 global \ 170 label0, \ 171 digitalinput_0, \ 172 digitalinput_1, \ 173 digitalinput_2, \ 174 digitalinput_3, \ 175 relay_0, \ 176 relay_1, \ 177 relay_2, \ 178 relay_3 179 M5.update() 180 181 182if __name__ == "__main__": 183 try: 184 setup() 185 while True: 186 loop() 187 except (Exception, KeyboardInterrupt) as e: 188 try: 189 from utility import print_error_msg 190 191 print_error_msg(e) 192 except ImportError: 193 print("please update to latest firmware")
示例输出:
None
