вот это очень не хотелось писать в ПЛК:tvent писал(а): ↑17 авг 2020, 15:13В Background macro команды/операции выполняются "построчно", с прерыванием. Поэтому результаты чтения/записи могут просто теряться.
В Clock macro команды выполняться всегда полностью. Поэтому будет медленно, но успешно.
В остальном: где, что и как читать/писать данные - каждый решает сам. Но Панель вместо ПЛК, ИМХО, не лучший вариант((
Код: Выделить всё
#E-cam перерасчет и перевод всех параметров
IF $8.3 == ON
delay 5
# расчет длины прямой части of E-cam = половина от P5-84 в имп.
$m14 = $m4 / 2 (DW)
# перевод прямой части E-cam из имп. в мм
# для ограничения поля ввода величины Р5-87
$12 = FDIV($M14, 51.4856) (Signed DW)
$12 = Fmul($12, 10) (Signed DW)
$16 = $12 - 100 (DW)
$m16 = $16
delay 5
#P5-89 ввод длины используемой
#прямой части E-cam после которой будет переход возврату в исходную
#$m10 = $M22 (DW)
$M10 = $M20 (DW)
# show E-cam+cap+cmp param
delay 5
bitoff $8.3
delay 1
ENDIF
#получение количества импульсов CMP функции (маски) из привода
IF $8.4 == ON
delay 5
#P5-11 write adress point in data array
({LINK2}3@SERVO-0516) = 50
delay 2
#P5-12 write data in 5-11 point data array
$M28 = ({Link2}3@SERVO-0518) (DW)
delay 5
BITOFF $8.4
ENDIF
#перерасчет количества импульсов CMP функции (маски)
IF $8.5 == ON
delay 5
IF $M199.1 == ON
#общая длина детали минус расстояние от конца детали
#до предыдущ. отверстия
$14 = $m8 - $m24 (DW)
$m28 = $14 (DW)
else
#общая длина детали плюс расстояние от конца детали
#для компенсации толщины ножа
$14 = $m8 + $m24 (DW)
$m28 = $14 (DW)
endif
delay 5
BITOFF $8.5
ENDIF
$18 = ({Link2}1@PLC_D7061)
#обработка запроса на включение E-cam
IF $18.0 == ON
#если задан режим реза заданной длины
if $M199.1 == OFF
#P5-57 CMP axle position
delay 10
({LINK2}3@SERVO-0572) = $m26 (dw)
delay 10
#P5-11 write adress point in data array
# запись длины вылета детали при первом запуске
({LINK2}3@SERVO-0516) = 50
delay 10
#P5-12 write data in 5-11 point data array
({LINK2}3@SERVO-0518) = $M28 (dw)
delay 30
#P5-11 write adress point in data array
#запись параметра перезапуска CMP после завершения CAM
({LINK2}3@SERVO-0516) = 10
delay 10
#P5-12 write data in 5-11 point data array
({LINK2}3@SERVO-0518) = 641019H (dw)
delay 10
#P5-59 CMP options
({LINK2}3@SERVO-0576) = 641018H (dw)
delay 10
#P5-58 CMP number of compare
({LINK2}3@SERVO-0574) = 1
delay 10
#P5-59 CMP options (start)
({LINK2}3@SERVO-0576) = 641019H (dw)
#P5-87 online update
({Link2}3@SERVO-05AE) = $M22 (DW)
delay 10
#P5-88 CAM options
$53006 = ({LINK2}3@SERVO-05B0) (dw)
$53006 = $53006 & FFFFFFFEH (dw)
({LINK2}3@SERVO-05B0) = $53006 (DW)
#P5-89 CAM Disengage point (in main axis impulses)
({LINK2}3@SERVO-05B2) = $M10 (DW)
#P5-81 first point of CAM massive
({LINK2}3@SERVO-05A2) = 100
#P5-82 lenght of CAM massive
({LINK2}3@SERVO-05A4) = 400
#P5-83
({LINK2}3@SERVO-05A6) = 1
#P5-84 full lenght of CAM (in main axis impulses)
({LINK2}3@SERVO-05A8) = $M4 (DW)
delay 10
#P5-88 CAM options (start)
#({LINK2}3@SERVO-05B0) = 0A6011H (DW)
#Если режим с синхро по отверстию и маской
ELSE
delay 10
#P5-38 CAP number points
({LINK2}3@SERVO-054C) = 1
delay 10
#P5-57 CMP axle position
({LINK2}3@SERVO-0572) = $m26 (dw)
delay 10
#P5-11 write adress point in data array
({LINK2}3@SERVO-0516) = 50
delay 10
#P5-12 write data in 5-11 point data array
({LINK2}3@SERVO-0518) = $M28 (dw)
delay 30
#P5-11 write adress point in data array
#запись параметра перезапуска CMP после завершения CAM
({LINK2}3@SERVO-0516) = 10
delay 10
#P5-12 write data in 5-11 point data array
({LINK2}3@SERVO-0518) = 640015H (dw)
delay 10
#P5-59 CMP options
({LINK2}3@SERVO-0576) = 640014H (dw)
delay 10
#P5-58 CMP number of compare
({LINK2}3@SERVO-0574) = 1
delay 10
#P5-39 CAP options
({LINK2}3@SERVO-054E) = 2018H
delay 10
#P5-59 CMP options (start)
({LINK2}3@SERVO-0576) = 640015H (dw)
#P5-87 online update
({Link2}3@SERVO-05AE) = $M22 (DW)
delay 10
#P5-88 CAM options
$53006 = ({LINK2}3@SERVO-05B0) (dw)
$53006 = $53006 & FFFFFFFEH (dw)
({LINK2}3@SERVO-05B0) = $53006 (DW)
#P5-89 CAM Disengage point (in main axis impulses)
({LINK2}3@SERVO-05B2) = $M10 (DW)
#P5-81 first point of CAP massive
({LINK2}3@SERVO-05A2) = 100
#P5-82 lenght of CAP massive
({LINK2}3@SERVO-05A4) = 400
#P5-83
({LINK2}3@SERVO-05A6) = 1
#P5-84 full lenght of CAM (in main axis impulses)
({LINK2}3@SERVO-05A8) = $M4 (DW)
delay 10
#P5-88 CAM options (start)
({LINK2}3@SERVO-05B0) = 0A6211H (DW)
ENDIF
delay 50
#включение флага активного E-cam
BITOn ({Link2}1@PLC_M3010)
BITOFF ({Link2}1@PLC_M3014)
ENDIF
#обработка запроса на отключение E-cam
IF $18.1 == ON
#если задан режим закрытой петли
if $M199.1 == OFF
#P5-39 CAP options
({LINK2}3@SERVO-054E) = 2010H
DELAY 10
#P5-59 CMP options
({LINK2}3@SERVO-0576) = 641018H (dw)
DELAY 10
#P5-88 CAM options
({LINK2}3@SERVO-05B0) = 0A6010H (DW)
DELAY 10
ELSE
#P5-39 CAP options
({LINK2}3@SERVO-054E) = 2010H
DELAY 10
#P5-59 CMP options
({LINK2}3@SERVO-0576) = 640014H (dw)
DELAY 10
#P5-88 CAM options
({LINK2}3@SERVO-05B0) = 0A6010H (DW)
DELAY 10
ENDIF
delay 30
({LINK2}3@SERVO-050E) = 0
DELAY 10
#отключение флага активного E-cam
BIToff ({Link2}1@PLC_M3010)
BITOFF ({Link2}1@PLC_M3015)
ENDIF
да и к тому-же я изначально ошибся с выбором контроллера. брал типа высокоскоростной SV2 (я тут писал) а у него и половины функционала SA2 по работе с высокоскоростными функциями нет, зато входов и прерываний много.. а толку. А ГЛАВНОЕ у него только один 485 интерфейс.
Попробуйте уйти от ethernet. попробуйте организовать связь через rs-485, мож китайцы что-то недоделали в eth?