1. Счетчик с предустановкой
Чтобы иметь счетчик, который зацикливается, вам необходимо использовать вывод предустановки и вывод сброса. Когда вы создаете счетчик, установите предустановку на число, которого вы хотите достичь, прежде чем обнулить ее до 0. Логика заключается в том, что если значение счетчика превышает предустановленное значение, то счетчик сбрасывается, и если антипереполнение, счетчик устанавливается на предустановленное значение. Как вы можете видеть в примере, когда значение счетчика больше, чем заданное значение счетчика, срабатывает сброс счетчика, и значение теперь равно 0. Выход нижнего уровня %Q2 установит значение счетчика на заданное значение при обратном счете.
2. Отклонить дополнительные импульсы
В этом примере показано, как отклонить лишние импульсы на входе. Предположим, что входной импульс %I0 имеет раздражающую привычку давать дополнительный импульс, который портит нашу логику. TOF (задержка выключения таймера) предотвращает попадание дополнительного импульса на наш очищенный выход %Q0. Это работает так: когда таймер получает входной сигнал, выход таймера включается на время, установленное в настройках времени. Используя нормально закрытый контакт %TM0.Q, выход таймера блокирует любые дальнейшие входы от достижения нашего выхода до тех пор, пока не истечет время ожидания.
3. Внешний аварийный останов
Пример внешнего аварийного останова находится в папке /config/classicladder/cl-estop. Он использует панель PyVCP для моделирования внешних компонентов.
Для подключения внешнего аварийного останова к LinuxCNC и совместной работы внешнего аварийного останова с внутренним аварийным остановом требуется несколько подключений через ClassicLadder.
Сначала нам нужно открыть цикл аварийного останова в основном файле HAL, закомментировав его, добавив знак решетки, как показано, или удалив следующие строки.
# net estop-out <= iocontrol.0.user-enable-out
# net estop-out => iocontrol.0.emc-enable-in
Затем мы добавляем ClassicLadder в наш файл custom.hal, добавляя эти две строки:
loadrt classicladder_rt
addf classicladder.0.refresh servo-thread
Далее мы запускаем нашу конфигурацию и строим лестницу, как показано здесь.
После построения лестницы выберите Save As и сохраните лестницу как estop.clp.
Теперь добавьте следующую строку в файл custom.hal.
# Load the ladder
loadusr classicladder --nogui estop.clp
I/O назначения
-
%I0 = Ввод с панели PyVCP, имитирующий аварийный останов (флажок)
-
%I1 = Ввод от аварийного останова LinuxCNC
-
%I2 = Ввод импульса сброса аварийного останова LinuxCNC
-
%I3 = Ввод от кнопки сброса панели PyVCP
-
%Q0 = Вывод в LinuxCNC для разрешения
-
%Q1 = Выход на контакт включения внешней платы драйвера (используйте выход Н.З., если на вашей плате есть контакт запрета)
Затем мы добавляем следующие строки в файл custom_postgui.hal.
# E-Stop example using PyVCP buttons to simulate external components
# The PyVCP checkbutton simulates a normally closed external E-Stop
net ext-estop classicladder.0.in-00 <= pyvcp.py-estop
# Request E-Stop Enable from LinuxCNC
net estop-all-ok iocontrol.0.emc-enable-in <= classicladder.0.out-00
# Request E-Stop Enable from PyVCP or external source
net ext-estop-reset classicladder.0.in-03 <= pyvcp.py-reset
# This line resets the E-Stop from LinuxCNC
net emc-reset-estop iocontrol.0.user-request-enable => classicladder.0.in-02
# This line enables LinuxCNC to unlatch the E-Stop in ClassicLadder
net emc-estop iocontrol.0.user-enable-out => classicladder.0.in-01
# This line turns on the green indicator when out of E-Stop
net estop-all-ok => pyvcp.py-es-status
Затем мы добавляем следующие строки в файл Panel.xml. Обратите внимание, что вам нужно открыть его с помощью текстового редактора, а не средства просмотра HTML по умолчанию.
<pyvcp>
<vbox>
<label><text>"E-Stop Demo"</text></label>
<led>
<halpin>"py-es-status"</halpin>
<size>50</size>
<on_color>"green"</on_color>
<off_color>"red"</off_color>
</led>
<checkbutton>
<halpin>"py-estop"</halpin>
<text>"E-Stop"</text>
</checkbutton>
</vbox>
<button>
<halpin>"py-reset"</halpin>
<text>"Reset"</text>
</button>
</pyvcp>
Теперь запустите свою конфигурацию, и она должна выглядеть так.
Обратите внимание, что в этом примере, как и в реальной жизни, вы должны очистить удаленный аварийный останов (имитируемый флажком), прежде чем аварийный останов AXIS или внешний сброс переведут вас в режим ВЫКЛ. Если кнопка аварийного останова на экране AXIS была нажата, вам придется нажать ее еще раз, чтобы очистить ее. Вы не можете выполнить сброс с внешнего устройства после выполнения аварийного останова в AXIS.
4. Timer/Operate пример
В этом примере мы используем блок Operate для присвоения значения предустановке таймера в зависимости от того, включен или выключен вход.
В этом случае %I0 имеет значение true, поэтому предустановленное значение таймера равно 10. Если %I0 было ложным, предустановленное значение таймера будет равно 5.