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.