Ответ
 
Опции темы Поиск в этой теме
Старый 15.10.2021, 14:58   #11
Роботёр
Гуру
 
Регистрация: 20.12.2017
Сообщения: 699
Сказал Спасибо: 18
Сказали Спасибо 142 раз(а) в 135 сообщении
По умолчанию

Итак, по тем настройкам шины интербас, которые в присланном архиве, видно, что маппинг входов/выходов сделан с 401 бита (т.е. с 401вход и 401 выхода на роботе )

[INTERBUSPCI]
;------- Inputs ---------
;Slave Inputs
INW50=896 ;$IN[401-416]
INW52=898 ;$IN[417-432]
INW54=900 ;$IN[433-448]
INW56=902 ;$IN[449-464]
;------- Outputs --------
;Slave Outputs
OUTW50=896 ;$OUT[401-416]
OUTW52=898 ;$OUT[417-432]
OUTW54=900 ;$OUT[433-448]
OUTW56=902 ;$OUT[449-464]
Роботёр на форуме   Ответить с цитированием
cказали "Спасибо" Роботёр за это сообщение:
Maken (21.10.2021)
Старый 15.10.2021, 15:05   #12
Роботёр
Гуру
 
Регистрация: 20.12.2017
Сообщения: 699
Сказал Спасибо: 18
Сказали Спасибо 142 раз(а) в 135 сообщении
По умолчанию

Теперь открыть файл config.dat-формуляр A20 GLOBALS.
В А20 Globals найти массив DECL CTRL_OUT_T O_WELD_CTRL[15] и DECL CTRL_IN_T I_WELD_CTRL[15].
Это два массива выходных и входных битов передачи между роботом/источником. Нужно будет ввести в ряд строчек номера входов/выходов соответственно бит-листу сварочного источника. В том мануале, который ты скинул его нет.
Роботёр на форуме   Ответить с цитированием
cказали "Спасибо" Роботёр за это сообщение:
Maken (21.10.2021)
Старый 18.10.2021, 10:41   #13
Maken
Новичок
 
Регистрация: 20.09.2021
Сообщения: 13
Сказал Спасибо: 8
Сказали Спасибо 0 раз(а) в 0 сообщении
По умолчанию

Доброго дня....
ПРОДОЛЖЕНИЕ:
Посмотрел файл находящийся по пути R1/SSYSTEM/$Config.dat
Там в отличии варианта что был в теме по KRC2, в строках

;FOLD A20 GLOBALS;%{```E}%V3.2.0,%MKUKATPA20,%CGLOBALS,%VGLO BALS,%P
;==================================
; STRUCTURES:
;==================================
STRUC WELD_ST INT PRG_NO,REAL VELOCITY,START_TIME,INT WEAVFIG_MECH,REAL WEAVLEN_MECH,WEAVAMP_MECH,WEAVANG_MECH,END_TIME
STRUC WELD_FI INT PRG_NO,REAL VELOCITY,INT WEAVFIG_MECH,REAL WEAVLEN_MECH,WEAVAMP_MECH,WEAVANG_MECH,END_TIME
STRUC A20_SUGG_T CHAR WELD_MODE[24],CHAR WELD_SET[24],CHAR START_SET[24],CHAR END_SET[24],CHAR COMMENT[24],CHAR PRG_NO[24],CHAR V_ARC[24],CHAR PGNO[24]

;==================================
; external declarations:
;==================================
EXT A20 (INT :IN,WELD_ST :IN,WELD_FI :IN,INT :IN )

;==================================
; Variables:
;==================================
; Data for online correction of weld parameters
DECL WELD_ST ADEFAULT={PRG_NO 0,VELOCITY 0.600000024,START_TIME 0.0,WEAVFIG_MECH 0,WEAVLEN_MECH 0.0,WEAVAMP_MECH 0.0,WEAVANG_MECH 0.0,END_TIME 0.0}
DECL WELD_ST ST_ACT={PRG_NO 1,VELOCITY 5.0,START_TIME 0.0,WEAVFIG_MECH 0,WEAVLEN_MECH 5.0,WEAVAMP_MECH 10.0,WEAVANG_MECH 0.0,END_TIME 0.0}
DECL WELD_FI MDEFAULT={PRG_NO 0,VELOCITY 0.600000024,WEAVFIG_MECH 0,WEAVLEN_MECH 0.0,WEAVAMP_MECH 0.0,WEAVANG_MECH 0.0,END_TIME 0.0}
DECL WELD_FI FI_ACT={PRG_NO 15,VELOCITY 0.600000024,WEAVFIG_MECH 0,WEAVLEN_MECH 5.0,WEAVAMP_MECH 10.0,WEAVANG_MECH 0.0,END_TIME 0.0}
;==================================
; SIGNALS :
;==================================
; DIGITAL OUTPUTS
;----------------------------------
DECL CTRL_OUT_T O_WELD_CTRL[15]
O_WELD_CTRL[1]={OUT_NR 0,INI FALSE,NAME_NAT[] "START WELDING "}
O_WELD_CTRL[2]={OUT_NR 0,INI FALSE,NAME_NAT[] "ROBOT IN POSITION "}
O_WELD_CTRL[3]={OUT_NR 0,INI FALSE,NAME_NAT[] "TRIGGER PRG-NUMBER "}
O_WELD_CTRL[4]={OUT_NR 0,INI FALSE,NAME_NAT[] "ACKN POWER SUPPLY "}
O_WELD_CTRL[5]={OUT_NR 0,INI FALSE,NAME_NAT[] "SNEEZER "}
O_WELD_CTRL[6]={OUT_NR 0,INI FALSE,NAME_NAT[] "CLEANER MOTOR "}
O_WELD_CTRL[7]={OUT_NR 0,INI FALSE,NAME_NAT[] "SPRAYER "} ;
O_WELD_CTRL[8]={OUT_NR 0,INI FALSE,NAME_NAT[] "WIREFEED MANUAL "}
O_WELD_CTRL[9]={OUT_NR 0,INI FALSE,NAME_NAT[] "GAS PURGE "}
O_WELD_CTRL[10]={OUT_NR 0,INI FALSE,NAME_NAT[] "WELD ERROR MESSAGE "}
O_WELD_CTRL[11]={OUT_NR 0,INI FALSE,NAME_NAT[] " "}
O_WELD_CTRL[12]={OUT_NR 0,INI FALSE,NAME_NAT[] "TARGET POINT REACHED"}
O_WELD_CTRL[13]={OUT_NR 0,INI FALSE,NAME_NAT[] "IGNITION ERROR "}
O_WELD_CTRL[14]={OUT_NR 0,INI FALSE,NAME_NAT[] " "}
O_WELD_CTRL[15]={OUT_NR 0,INI FALSE,NAME_NAT[] " "}

; DIGITAL INPUTS
;----------------------------------
DECL CTRL_IN_T I_WELD_CTRL[15]
I_WELD_CTRL[1]={IN_NR 0,NAME_NAT[] "POWER SUPPLY READY "}
I_WELD_CTRL[2]={IN_NR 0,NAME_NAT[] "CURRENT AVAILABLE "}
I_WELD_CTRL[3]={IN_NR 0,NAME_NAT[] "CURRENT OVER "}
I_WELD_CTRL[4]={IN_NR 0,NAME_NAT[] "ERROR-INP1 PERIPHERY"}
I_WELD_CTRL[5]={IN_NR 0,NAME_NAT[] "ERROR-INP2 PERIPHERY"}
I_WELD_CTRL[6]={IN_NR 0,NAME_NAT[] "KEY SWITCH WELDING "}
I_WELD_CTRL[7]={IN_NR 0,NAME_NAT[] " "}
I_WELD_CTRL[8]={IN_NR 0,NAME_NAT[] " "}
I_WELD_CTRL[9]={IN_NR 0,NAME_NAT[] " "}
I_WELD_CTRL[10]={IN_NR 0,NAME_NAT[] " "}
I_WELD_CTRL[11]={IN_NR 0,NAME_NAT[] " "}
I_WELD_CTRL[12]={IN_NR 0,NAME_NAT[] " "}
I_WELD_CTRL[13]={IN_NR 0,NAME_NAT[] " "}
I_WELD_CTRL[14]={IN_NR 0,NAME_NAT[] " "}
I_WELD_CTRL[15]={IN_NR 0,NAME_NAT[] " "}

; outputs weld start
DECL FCT_OUT_T O_WELD_START[3]
O_WELD_START[1]={NO 1,PULS_TIME 0.0,STATE TRUE}
O_WELD_START[2]={NO 0,PULS_TIME 0.0,STATE TRUE}
O_WELD_START[3]={NO 0,PULS_TIME 0.0,STATE TRUE}

; outputs acknowledge start move
DECL FCT_OUT_T O_ACK_START[3]
O_ACK_START[1]={NO 2,PULS_TIME 0.300000012,STATE TRUE}
O_ACK_START[2]={NO 0,PULS_TIME 0.0,STATE TRUE}
O_ACK_START[3]={NO 0,PULS_TIME 0.0,STATE TRUE}

; strobe prg. number
DECL FCT_OUT_T O_STROB_PGNO[3]
O_STROB_PGNO[1]={NO 3,PULS_TIME 0.300000012,STATE TRUE}
O_STROB_PGNO[2]={NO 0,PULS_TIME 0.300000012,STATE TRUE}
O_STROB_PGNO[3]={NO 0,PULS_TIME 0.300000012,STATE TRUE}

; outputs weld end
DECL FCT_OUT_T O_SEAM_END[3]
O_SEAM_END[1]={NO 1,PULS_TIME 0.0,STATE FALSE}
O_SEAM_END[2]={NO 0,PULS_TIME 0.0,STATE FALSE}
O_SEAM_END[3]={NO 0,PULS_TIME 0.0,STATE FALSE}

; outputs acknowledge weld_end
DECL FCT_OUT_T O_ACK_WELD_E[3]
O_ACK_WELD_E[1]={NO 12,PULS_TIME 0.5,STATE TRUE}
O_ACK_WELD_E[2]={NO 0,PULS_TIME 0.5,STATE TRUE}
O_ACK_WELD_E[3]={NO 0,PULS_TIME 0.5,STATE TRUE}

; outputs fault while arc on
DECL FCT_OUT_T O_FLT_ARC_ON[3]
O_FLT_ARC_ON[1]={NO 13,PULS_TIME 0.0,STATE TRUE}
O_FLT_ARC_ON[2]={NO 1,PULS_TIME 0.0,STATE FALSE}
O_FLT_ARC_ON[3]={NO 0,PULS_TIME 0.0,STATE FALSE}

; outputs stop weld after interrupt on seam
DECL FCT_OUT_T O_FLT_WELD[3]
O_FLT_WELD[1]={NO 1,PULS_TIME 0.0,STATE FALSE}
O_FLT_WELD[2]={NO 10,PULS_TIME 0.0,STATE TRUE}
O_FLT_WELD[3]={NO 0,PULS_TIME 0.0,STATE FALSE}

; outputs stop cleaner after interrupt
DECL FCT_OUT_T O_FLT_CLEAN[3]
O_FLT_CLEAN[1]={NO 6,PULS_TIME 0.0,STATE FALSE}
O_FLT_CLEAN[2]={NO 0,PULS_TIME 0.0,STATE FALSE}
O_FLT_CLEAN[3]={NO 0,PULS_TIME 0.0,STATE FALSE}

; outputs acknowledge fault
DECL FCT_OUT_T O_ACK_FLT[3]
O_ACK_FLT[1]={NO 4,PULS_TIME 1.0,STATE TRUE}
O_ACK_FLT[2]={NO 13,PULS_TIME 1.0,STATE FALSE}
O_ACK_FLT[3]={NO 0,PULS_TIME 1.0,STATE TRUE}

; output for fault message
DECL FCT_OUT_T O_FLT_SIGNAL={NO 10,PULS_TIME 0.0,STATE TRUE}

; inputs as condition befor weld can start
DECL FCT_IN_T I_WELD_COND[3]
I_WELD_COND[1]={NO 1,STATE TRUE}
I_WELD_COND[2]={NO 0,STATE TRUE}
I_WELD_COND[3]={NO 0,STATE TRUE}

; inputs start moving
DECL FCT_IN_T I_START_MOVE[3]
I_START_MOVE[1]={NO 2,STATE TRUE}
I_START_MOVE[2]={NO 0,STATE TRUE}
I_START_MOVE[3]={NO 0,STATE TRUE}

; inputs weld is ended
DECL FCT_IN_T I_WELD_END[3]
I_WELD_END[1]={NO 2,STATE FALSE}
I_WELD_END[2]={NO 0,STATE FALSE}
I_WELD_END[3]={NO 0,STATE FALSE}

;Counter for Interrupt definition
DECL INT FLT_NUM[3]

; inputs telling faults while welding
DECL FCT_IN_T I_WELD_FLT[3]
I_WELD_FLT[1]={NO 2,STATE TRUE}
I_WELD_FLT[2]={NO 4,STATE TRUE}
I_WELD_FLT[3]={NO 5,STATE TRUE}

; input for external enable weld
DECL FCT_IN_T I_ENB_W_EXT={NO 6,STATE TRUE}

;current instruction
INT ARC_INSTR=0

; instruction code
INT ARC_INI=1
INT ARC_ON=2
INT ARC_OFF=3
INT ARC_SWI_F=4
INT ARC_SWIP=5
INT TECH_STOP1=6
INT TECH_STOP2=7
INT TECH_STOP=9
INT ARC_OFF_P=10
INT ARC_OFF_V=12
INT ARC_START=13
INT ARC_SWI_T=14
INT ARC_OFF_T=15
INT PRGNO=0
INT TMP_PRG=0
BOOL B_RESTART=FALSE
BOOL FLY_WELD=FALSE
BOOL ARC20=FALSE
BOOL WELD_ACTIVE=FALSE
BOOL T1_L
BOOL T_STOP=FALSE ;flag for $CYCFLAG to avoid
;ENDFOLD


Возникают вопросы:
1. Если мы идем от сварочного к InterbusS к модулям входов-выходов проводами, то соответственно каждая команда типа
I_WELD_CTRL[?????]=
и
O_WELD_CTRL[?????]=
Должны иметь соответствующие значения, это более менее понятно,
а вот на какие входы-выходы должны быть прикручены провода
если у INTERBUS составленном из 4 блоков
блок оптики IBS ST BK-LK + IBS stme 24 DI 16/4 (Входы пронумерованы 1-16, номера клемм 1-64) + IBS stme 24 DO 16/3 (ВЫХОды пронумерованы 17-32 номера клемм 1-64) + IBS stme AO 4/sf (просто номера клемм 1-32)
Может есть подсказка.... или у кого как реализовано фото или распиновка

2. Если мы в файле ibspci1.ini (исходя из темы про KRC2), изменили строку на Slavering=0, правильно ли я понимаю что по оптике общение должно идти между главной платой Intrebus pci та что с двумя "глазами" а не с "4мя"

3. Если interbus прописан как считается с 401 бита, и правильно будут прописаны строки сварочных битов, то при нажатии кнопок (их 4 "+", "-" - это я так понимаю подача проволоки, и "знак перечеркнутый сварки" и "знак сварки и линия волнистая как синусоида"... должно как то индицироваться на входах-выходах модулей INterbus

Сразу прошу прощения за длинное и сложное описание, потому как не знаю как более понятно объяснить и соответственно некоторой терминологией не владею...

Просто по каждому действию чтобы оцению обратную связь с железом, хочется в подтверждение видеть хоть какую то индикацию или проявление жизни.

Спасибо за ответы...
Maken вне форума   Ответить с цитированием
Старый 18.10.2021, 12:56   #14
Роботёр
Гуру
 
Регистрация: 20.12.2017
Сообщения: 699
Сказал Спасибо: 18
Сказали Спасибо 142 раз(а) в 135 сообщении
По умолчанию

1. Сейчас полазил в интернете и посмотрел, что за модули у тебя (хотя из названия даже понятно)
Итак, IBS ST BK-LK + IBS stme 24 DI 16/4, IBS stme 24 DO 16/3 - ты все правильно написал, что это цифровые входы и выходы, соответственно.
IBS stme AO 4/sf - это модуль аналогового выхода (4 канала) - все эти модули используются для подключения внешних устройств (датчиков, исполнительных устройств и т.д.). А вот сварочный источник должен быть соединен с платой Slave, которая установлена в системном блоке шкафа робота. Т.е. сварочный источник не работает по "реальным" входам/выходам, а получает сигналы по самой шине Interbus. Хотя, пока воочию не увидишь, как все подключено у тебя, что-то утверждать нельзя.

2.Сварочный источник должен быть подключен на плату Slave, т.к. является ведомым устройство (сколько там глазков я уже не помню)

3. Да, все правильно понимаешь. Но нужен бит лист, что бы понимать какие биты чем управляют. Смотри, в бит листе, допустим написано, что 2-й бит отвечает за активацию процесса сварки (поджиг дуги). Соответственно, в строке O_WELD_CTRL[1]={OUT_NR 0,INI FALSE,NAME_NAT[] "START WELDING "}, заместо OUT_NR 0, необходимо поставить OUT_NR 403.
Роботёр на форуме   Ответить с цитированием
cказали "Спасибо" Роботёр за это сообщение:
Maken (21.10.2021)
Старый 21.10.2021, 09:57   #15
Maken
Новичок
 
Регистрация: 20.09.2021
Сообщения: 13
Сказал Спасибо: 8
Сказали Спасибо 0 раз(а) в 0 сообщении
По умолчанию

Доброго дня всем....
ПРОДОЛЖЕНИЕ


По всем битам описанным в IOSYS.INI (INTERBUSPCI) в строке:
OUTB68=0 ;Ausgang [545-552] Fronius Ansteuerung, то есть с 545 по 552 биты как я понял, которые резервируются кукой под работу INTERBUSPCI
ВЫЯСНИЛ что 545 бит включает выход 32 (номер на блоке выходов Interbus 24 do 16/3)
546 бит включает выход 31 (номер на блоке выходов Interbus 24 do 16/3)
547 бит включает выход 30 (номер на блоке выходов Interbus 24 do 16/3)
548 бит включает выход 29 (номер на блоке выходов Interbus 24 do 16/3)
549 бит включает выход 28 (номер на блоке выходов Interbus 24 do 16/3)

Проверил Входы (Interbus 24 di 16/4) подавая 24V + GND на соответствующие клеммы c помощью Меню MONITOR-> I/O -> Digital Inputs -> открыл строки 545-552
и наблюдал за кружками этих битов.... при подаче на искомый он загорался красным, в итоге
545 бит включает вход 16 (номер на блоке выходов Interbus 24 di 16/4)
546 бит включает вход 15 (номер на блоке выходов Interbus 24 di 16/4)
547 бит включает вход 14 (номер на блоке выходов Interbus 24 di 16/4)
548 бит включает вход 13 (номер на блоке выходов Interbus 24 di 16/4)
549 бит включает вход 12 (номер на блоке выходов Interbus 24 di 16/4)

Из плюсов - появилась уверенность (надеюсь что прав) что аппаратно INTERBUSPCI работает (работает по связке INTERBUSPCI главная плата с двумя сосками связанная соответственно двумя оптоволокнами с Interbus-S ibs st 24 BK-LK)


ПО СВАРОЧНОМУ FRONIUS:
Условно у меня приходят провода с номерами и используя рабочий выход платы выходных сигналов подкидывал поштучно на рабочий выход, смотрел что скажет FRONIUS
в итоге сделал не все НО:

Выход INTERBUS -> Вход Fronius

- при подаче сигнала +24V на провод условно 17 - на Fronius robotinterface загорается ARC ON
(“ARC ON” COMMAND INPUT PIN 17 and 27 - По файлу FRONIUS что прикреплял выше)

- при подаче сигнала +24V на провод условно 19 - на Fronius robotinterface загорается GAS ON
(“GAS ON” COMMAND INPUT PIN 19 and 27)

- при подаче сигнала +24V на провод условно 21 - на Fronius robotinterface загорается INCHING
(“WIRE INCH” COMMAND INPUT PIN 21 and 27)

- при подаче сигнала +24V на провод условно 23 - на Fronius robotinterface загорается PULS ON
(PULSED / STANDARD-ARC SWITCHOVER INPUT PIN 23 and 27)

- при подаче сигнала +24V на провод условно 25 - на Fronius robotinterface загорается NO GAS + ERROR + EMERGENCY STOP
(“EMERGENCY STOP” COMMAND(push-button function)INPUT PIN 25 and 27)



Вход Interbus <- Выход Fronius]

“CURRENT FLOW” SIGNAL OUTPUT PIN провод 28 (34 общий GND) - куда в $config.dat прописывать не знаю надо или нет?
“ERROR” SIGNALOUTPUT PIN провод 32 (34 общий GND) - куда в $config.dat прописывать не знаю надо или нет?
“NO GAS” SIGNAL (Optional in function) OUTPUT PIN 30 Провод не распинован в разъеме, но на сварочном есть куда в $config.dat прописывать не знаю надо или нет?

есть еще выходы из FRONIUS ROBOTINTERFACE, исходя из документации что в пердыдущих сообщениях прикреплял, но какие нужно не понимаю....

Вопросы:
1. В $config.dat
есть следующие строки:
ЗЕЛЕНЫМ и КРАСНЫМ пометил участки, один относится к A10, второй к A20 если правильно понял......

Не могли бы вы посказать что и куда должно прописаться, понимаю что где то близко уже, но не хватает знаний....

;Digital outputs
;----------------------------------
DECL CTRL_OUT_T A_WLD_OUT[16]
A_WLD_OUT[1]={OUT_NR 545,INI FALSE,NAME_NAT[] "WELD_START "}
A_WLD_OUT[2]={OUT_NR 547,INI FALSE,NAME_NAT[] "GAS PREFLOW "}
A_WLD_OUT[3]={OUT_NR 0,INI FALSE,NAME_NAT[] "WELD_MODE PS/MM"}
A_WLD_OUT[4]={OUT_NR 0,INI FALSE,NAME_NAT[] "CLEANER "}
A_WLD_OUT[5]={OUT_NR 0,INI FALSE,NAME_NAT[] "RECEIPT ERRORS "}
A_WLD_OUT[6]={OUT_NR 0,INI FALSE,NAME_NAT[] "ERR MESSG_SIGNAL"}
A_WLD_OUT[7]={OUT_NR 0,INI FALSE,NAME_NAT[] "START ERROR "}
A_WLD_OUT[8]={OUT_NR 0,INI FALSE,NAME_NAT[] "APPL_ERROR "}
A_WLD_OUT[9]={OUT_NR 0,INI FALSE,NAME_NAT[] "INTERPRETER-STOP"}
A_WLD_OUT[10]={OUT_NR 0,INI FALSE,NAME_NAT[] "ALU_START"}
A_WLD_OUT[11]={OUT_NR 0,INI FALSE,NAME_NAT[] " "}
A_WLD_OUT[12]={OUT_NR 0,INI FALSE,NAME_NAT[] " "}
A_WLD_OUT[13]={OUT_NR 0,INI FALSE,NAME_NAT[] " "}
A_WLD_OUT[14]={OUT_NR 0,INI FALSE,NAME_NAT[] " "}
A_WLD_OUT[15]={OUT_NR 548,INI FALSE,NAME_NAT[] "WFD + "}
A_WLD_OUT[16]={OUT_NR 0,INI FALSE,NAME_NAT[] "WFD - "}

; Digital inputs
;----------------------------------
DECL CTRL_IN_T A_WLD_IN[16]
A_WLD_IN[1]={IN_NR 0,NAME_NAT[] "WELDER READY "}
A_WLD_IN[2]={IN_NR 545,NAME_NAT[] "ARC ESTABLISHED "}
A_WLD_IN[3]={IN_NR 0,NAME_NAT[] "SEAM_ERROR "}
A_WLD_IN[4]={IN_NR 0,NAME_NAT[] "CURRENT OVER "}
A_WLD_IN[5]={IN_NR 0,NAME_NAT[] "KEY SWITCH HOT/COLD "}
A_WLD_IN[6]={IN_NR 0,NAME_NAT[] " "}
A_WLD_IN[7]={IN_NR 0,NAME_NAT[] "BURN FREE INP_SIGNAL"}
A_WLD_IN[8]={IN_NR 0,NAME_NAT[] " "}
A_WLD_IN[9]={IN_NR 0,NAME_NAT[] " "}
A_WLD_IN[10]={IN_NR 0,NAME_NAT[] "WATER AVAILABLE "}
A_WLD_IN[11]={IN_NR 0,NAME_NAT[] "GAS AVAILABLE "}
A_WLD_IN[12]={IN_NR 0,NAME_NAT[] "WIRE AVAILABLE "}
A_WLD_IN[13]={IN_NR 0,NAME_NAT[] "COLLECTION FAILURE "}
A_WLD_IN[14]={IN_NR 0,NAME_NAT[] " "}
A_WLD_IN[15]={IN_NR 0,NAME_NAT[] " "}
A_WLD_IN[16]={IN_NR 0,NAME_NAT[] " "}

;======================
; External declarations
;======================
EXT A10 (A_CMD_T :IN,A_STRT_T :IN,A_WELD_T :IN,A_END_T :IN,INT :IN )
EXT FLT_SERV (A_BOOL_T :IN,A_BOOL_T :IN ) ; A_WLD_ACTIVE,ARC_ON_ERROR
EXT NEW_SERV (A_RESTART_T :IN,INT :IN ) ;strategy number / [delay ms]
EXT A10_INI ( )
EXT ARC_MSG (MSG_CALL_T :IN )
;====================
; Signal declarations
;====================
SIGNAL A_O_ANA1 $ANOUT[1]
SIGNAL A_O_ANA2 $ANOUT[2]
SIGNAL A_O_ANA3 $ANOUT[3]
SIGNAL A_O_ANA4 $ANOUT[4]
SIGNAL A_O_ANA5 $ANOUT[5]
SIGNAL A_O_ANA6 $ANOUT[6]
SIGNAL A_O_ANA7 $ANOUT[7]
SIGNAL A_O_ANA8 $ANOUT[8]

SIGNAL A_FLY_ARC $OUT[817]
E6POS A_SERVICE={x 0.0,y 0.0,z 0.0,a 0.0,b 0.0,c 0.0,s 0,t 0}
;ENDFOLD
;FOLD A50 GLOBALS;%{E}%V3.2.0,%MKUKATPARC,%CGLOBALS,%VGLOBAL S,%P
STRUC A_SENSOR_T REAL BIAS,H_GAIN,V_GAIN,A_BOOL_T ACCUM_OFS,STS
STRUC SEN_SUGG_T CHAR SENS_SET[24],CHAR TRACK_MODE[24]
ENUM SENS_CMD_T SENS_ADV_DEF,SEN_PRE_ON,SEN_FIFO_ACT,SENSOR_OFF,IN IT_SENSOR,SENS_SUB_SPS,I_SENSOR_OFF,I_SENSOR_ON,SE NSOR_ON,SENS_SUB_INI,BLOCK_SELECT,PRE_SENS,DRY_WEA VE,SYNC_START,SEN_TSTOP,SYNC
DECL A_SENSOR_T TDEFAULT={BIAS 0.0,H_GAIN 50.0,V_GAIN 45.0,ACCUM_OFS #IDLE,STS #ACTIVE}
DECL A_SENSOR_T SEN_IDLE_PAR={BIAS 0.0,H_GAIN 0.0,V_GAIN 0.0,ACCUM_OFS #IDLE,STS #IDLE}
DECL A_SENSOR_T PS_TEMP_SET={BIAS 0.0,H_GAIN 0.0,V_GAIN 0.0,ACCUM_OFS #IDLE,STS #IDLE}
DECL A_TECH_STS_T A50_OPTION=#DISABLED ;active, disabled
BOOL A_HOT_TAST=FALSE
BOOL USR_DEF_ITV=FALSE
BOOL SEN_DLY_OPT=TRUE ; Sensor active after "A_SENS_DELAY" patterns
INT A_SENS_DELAY=2 ;number of idle patterns
BOOL SYNC_OPT=TRUE ; synchronization after every arc command
INT A_FG_SENSOR=4 ; function generator seam tracking
REAL IR_ITV_TIME=168.0
EXT A50 (SENS_CMD_T :IN,REAL :IN,REAL :IN,REAL :IN,INT :IN ) ; velocity,amplitude,weave length,pattern
;ENDFOLD
;FOLD A20 GLOBALS;%{E}%V3.2.0,%MKUKATPA20,%CGLOBALS,%VGLOBAL S,%P
;==================================
; STRUCTURES:
;==================================
STRUC WELD_ST INT PRG_NO,REAL VELOCITY,START_TIME,INT WEAVFIG_MECH,REAL WEAVLEN_MECH,WEAVAMP_MECH,WEAVANG_MECH,END_TIME
STRUC WELD_FI INT PRG_NO,REAL VELOCITY,INT WEAVFIG_MECH,REAL WEAVLEN_MECH,WEAVAMP_MECH,WEAVANG_MECH,END_TIME
STRUC A20_SUGG_T CHAR WELD_MODE[24],CHAR WELD_SET[24],CHAR START_SET[24],CHAR END_SET[24],CHAR COMMENT[24],CHAR PRG_NO[24],CHAR V_ARC[24],CHAR PGNO[24]

;==================================
; external declarations:
;==================================
EXT A20 (INT :IN,WELD_ST :IN,WELD_FI :IN,INT :IN )

;==================================
; Variables:
;==================================
; Data for online correction of weld parameters
DECL WELD_ST ADEFAULT={PRG_NO 0,VELOCITY 0.600000024,START_TIME 0.0,WEAVFIG_MECH 0,WEAVLEN_MECH 0.0,WEAVAMP_MECH 0.0,WEAVANG_MECH 0.0,END_TIME 0.0}
DECL WELD_ST ST_ACT={PRG_NO 1,VELOCITY 5.0,START_TIME 0.0,WEAVFIG_MECH 0,WEAVLEN_MECH 5.0,WEAVAMP_MECH 10.0,WEAVANG_MECH 0.0,END_TIME 0.0}
DECL WELD_FI MDEFAULT={PRG_NO 0,VELOCITY 0.600000024,WEAVFIG_MECH 0,WEAVLEN_MECH 0.0,WEAVAMP_MECH 0.0,WEAVANG_MECH 0.0,END_TIME 0.0}
DECL WELD_FI FI_ACT={PRG_NO 15,VELOCITY 0.600000024,WEAVFIG_MECH 0,WEAVLEN_MECH 5.0,WEAVAMP_MECH 10.0,WEAVANG_MECH 0.0,END_TIME 0.0}
;==================================
; SIGNALS :
;==================================
; DIGITAL OUTPUTS
;----------------------------------
DECL CTRL_OUT_T O_WELD_CTRL[15]
O_WELD_CTRL[1]={OUT_NR 0,INI FALSE,NAME_NAT[] "START WELDING "}
O_WELD_CTRL[2]={OUT_NR 0,INI FALSE,NAME_NAT[] "ROBOT IN POSITION "}
O_WELD_CTRL[3]={OUT_NR 0,INI FALSE,NAME_NAT[] "TRIGGER PRG-NUMBER "}
O_WELD_CTRL[4]={OUT_NR 0,INI FALSE,NAME_NAT[] "ACKN POWER SUPPLY "}
O_WELD_CTRL[5]={OUT_NR 0,INI FALSE,NAME_NAT[] "SNEEZER "}
O_WELD_CTRL[6]={OUT_NR 0,INI FALSE,NAME_NAT[] "CLEANER MOTOR "}
O_WELD_CTRL[7]={OUT_NR 0,INI FALSE,NAME_NAT[] "SPRAYER "} ;
O_WELD_CTRL[8]={OUT_NR 0,INI FALSE,NAME_NAT[] "WIREFEED MANUAL "}
O_WELD_CTRL[9]={OUT_NR 0,INI FALSE,NAME_NAT[] "GAS PURGE "}
O_WELD_CTRL[10]={OUT_NR 0,INI FALSE,NAME_NAT[] "WELD ERROR MESSAGE "}
O_WELD_CTRL[11]={OUT_NR 0,INI FALSE,NAME_NAT[] " "}
O_WELD_CTRL[12]={OUT_NR 0,INI FALSE,NAME_NAT[] "TARGET POINT REACHED"}
O_WELD_CTRL[13]={OUT_NR 0,INI FALSE,NAME_NAT[] "IGNITION ERROR "}
O_WELD_CTRL[14]={OUT_NR 0,INI FALSE,NAME_NAT[] " "}
O_WELD_CTRL[15]={OUT_NR 0,INI FALSE,NAME_NAT[] " "}

; DIGITAL INPUTS
;----------------------------------
DECL CTRL_IN_T I_WELD_CTRL[15]
I_WELD_CTRL[1]={IN_NR 0,NAME_NAT[] "POWER SUPPLY READY "}
I_WELD_CTRL[2]={IN_NR 0,NAME_NAT[] "CURRENT AVAILABLE "}
I_WELD_CTRL[3]={IN_NR 0,NAME_NAT[] "CURRENT OVER "}
I_WELD_CTRL[4]={IN_NR 0,NAME_NAT[] "ERROR-INP1 PERIPHERY"}
I_WELD_CTRL[5]={IN_NR 0,NAME_NAT[] "ERROR-INP2 PERIPHERY"}
I_WELD_CTRL[6]={IN_NR 0,NAME_NAT[] "KEY SWITCH WELDING "}
I_WELD_CTRL[7]={IN_NR 0,NAME_NAT[] " "}
I_WELD_CTRL[8]={IN_NR 0,NAME_NAT[] " "}
I_WELD_CTRL[9]={IN_NR 0,NAME_NAT[] " "}
I_WELD_CTRL[10]={IN_NR 0,NAME_NAT[] " "}
I_WELD_CTRL[11]={IN_NR 0,NAME_NAT[] " "}
I_WELD_CTRL[12]={IN_NR 0,NAME_NAT[] " "}
I_WELD_CTRL[13]={IN_NR 0,NAME_NAT[] " "}
I_WELD_CTRL[14]={IN_NR 0,NAME_NAT[] " "}
I_WELD_CTRL[15]={IN_NR 0,NAME_NAT[] " "}

; outputs weld start
DECL FCT_OUT_T O_WELD_START[3]
O_WELD_START[1]={NO 1,PULS_TIME 0.0,STATE TRUE}
O_WELD_START[2]={NO 0,PULS_TIME 0.0,STATE TRUE}
O_WELD_START[3]={NO 0,PULS_TIME 0.0,STATE TRUE}

; outputs acknowledge start move
DECL FCT_OUT_T O_ACK_START[3]
O_ACK_START[1]={NO 2,PULS_TIME 0.300000012,STATE TRUE}
O_ACK_START[2]={NO 0,PULS_TIME 0.0,STATE TRUE}
O_ACK_START[3]={NO 0,PULS_TIME 0.0,STATE TRUE}

; strobe prg. number
DECL FCT_OUT_T O_STROB_PGNO[3]
O_STROB_PGNO[1]={NO 3,PULS_TIME 0.300000012,STATE TRUE}
O_STROB_PGNO[2]={NO 0,PULS_TIME 0.300000012,STATE TRUE}
O_STROB_PGNO[3]={NO 0,PULS_TIME 0.300000012,STATE TRUE}

; outputs weld end
DECL FCT_OUT_T O_SEAM_END[3]
O_SEAM_END[1]={NO 1,PULS_TIME 0.0,STATE FALSE}
O_SEAM_END[2]={NO 0,PULS_TIME 0.0,STATE FALSE}
O_SEAM_END[3]={NO 0,PULS_TIME 0.0,STATE FALSE}

; outputs acknowledge weld_end
DECL FCT_OUT_T O_ACK_WELD_E[3]
O_ACK_WELD_E[1]={NO 12,PULS_TIME 0.5,STATE TRUE}
O_ACK_WELD_E[2]={NO 0,PULS_TIME 0.5,STATE TRUE}
O_ACK_WELD_E[3]={NO 0,PULS_TIME 0.5,STATE TRUE}

; outputs fault while arc on
DECL FCT_OUT_T O_FLT_ARC_ON[3]
O_FLT_ARC_ON[1]={NO 13,PULS_TIME 0.0,STATE TRUE}
O_FLT_ARC_ON[2]={NO 1,PULS_TIME 0.0,STATE FALSE}
O_FLT_ARC_ON[3]={NO 0,PULS_TIME 0.0,STATE FALSE}

; outputs stop weld after interrupt on seam
DECL FCT_OUT_T O_FLT_WELD[3]
O_FLT_WELD[1]={NO 1,PULS_TIME 0.0,STATE FALSE}
O_FLT_WELD[2]={NO 10,PULS_TIME 0.0,STATE TRUE}
O_FLT_WELD[3]={NO 0,PULS_TIME 0.0,STATE FALSE}

; outputs stop cleaner after interrupt
DECL FCT_OUT_T O_FLT_CLEAN[3]
O_FLT_CLEAN[1]={NO 6,PULS_TIME 0.0,STATE FALSE}
O_FLT_CLEAN[2]={NO 0,PULS_TIME 0.0,STATE FALSE}
O_FLT_CLEAN[3]={NO 0,PULS_TIME 0.0,STATE FALSE}

; outputs acknowledge fault
DECL FCT_OUT_T O_ACK_FLT[3]
O_ACK_FLT[1]={NO 4,PULS_TIME 1.0,STATE TRUE}
O_ACK_FLT[2]={NO 13,PULS_TIME 1.0,STATE FALSE}
O_ACK_FLT[3]={NO 0,PULS_TIME 1.0,STATE TRUE}

; output for fault message
DECL FCT_OUT_T O_FLT_SIGNAL={NO 10,PULS_TIME 0.0,STATE TRUE}

; inputs as condition befor weld can start
DECL FCT_IN_T I_WELD_COND[3]
I_WELD_COND[1]={NO 1,STATE TRUE}
I_WELD_COND[2]={NO 0,STATE TRUE}
I_WELD_COND[3]={NO 0,STATE TRUE}

; inputs start moving
DECL FCT_IN_T I_START_MOVE[3]
I_START_MOVE[1]={NO 2,STATE TRUE}
I_START_MOVE[2]={NO 0,STATE TRUE}
I_START_MOVE[3]={NO 0,STATE TRUE}

; inputs weld is ended
DECL FCT_IN_T I_WELD_END[3]
I_WELD_END[1]={NO 2,STATE FALSE}
I_WELD_END[2]={NO 0,STATE FALSE}
I_WELD_END[3]={NO 0,STATE FALSE}

;Counter for Interrupt definition
DECL INT FLT_NUM[3]

; inputs telling faults while welding
DECL FCT_IN_T I_WELD_FLT[3]
I_WELD_FLT[1]={NO 2,STATE TRUE}
I_WELD_FLT[2]={NO 4,STATE TRUE}
I_WELD_FLT[3]={NO 5,STATE TRUE}

; input for external enable weld
DECL FCT_IN_T I_ENB_W_EXT={NO 6,STATE TRUE}

;current instruction
INT ARC_INSTR=0

; instruction code
INT ARC_INI=1
INT ARC_ON=2
INT ARC_OFF=3
INT ARC_SWI_F=4
INT ARC_SWIP=5
INT TECH_STOP1=6
INT TECH_STOP2=7
INT TECH_STOP=9
INT ARC_OFF_P=10
INT ARC_OFF_V=12
INT ARC_START=13
INT ARC_SWI_T=14
INT ARC_OFF_T=15
INT PRGNO=0
INT TMP_PRG=0
BOOL B_RESTART=FALSE
BOOL FLY_WELD=FALSE
BOOL ARC20=FALSE
BOOL WELD_ACTIVE=FALSE
BOOL T1_L
BOOL T_STOP=FALSE ;flag for $CYCFLAG to avoid
;ENDFOLD





Спасибо за ответы
Maken вне форума   Ответить с цитированием
Старый 21.10.2021, 10:17   #16
Maken
Новичок
 
Регистрация: 20.09.2021
Сообщения: 13
Сказал Спасибо: 8
Сказали Спасибо 0 раз(а) в 0 сообщении
По умолчанию

Забыл прикрепить

https://disk.yandex.ru/d/XdICCGKqvh1dmQ $Config.dat
тот что сейчас используется
Maken вне форума   Ответить с цитированием
Старый 21.10.2021, 12:40   #17
Роботёр
Гуру
 
Регистрация: 20.12.2017
Сообщения: 699
Сказал Спасибо: 18
Сказали Спасибо 142 раз(а) в 135 сообщении
По умолчанию

Непонятно с чего вдруг поменялись настройки Interbuspci в файле iosys. В последнем архиве, который ты присылал, участвуют совсем другие биты. Хотя это вообще не важно.

После твоего рассказа становится понятно, что сварочный источник работает не по шине Interbus, а напрямую с дискретными входами/выходами. А по интербасу работает только блок входов/выходов.

Судя по аналогии c KRC2 все биты управления необходимо вставлять в A20 globals, а не в A10.

Какие биты обычно выставляются при конфигурации пакета:
входные биты для сварочного источника:
O_WELD_CTRL[1]={OUT_NR 0,INI FALSE,NAME_NAT[] "START WELDING
O_WELD_CTRL[4]={OUT_NR 0,INI FALSE,NAME_NAT[] "ACKN POWER SUPPLY
O_WELD_CTRL[9]={OUT_NR 0,INI FALSE,NAME_NAT[] "GAS PURGE
O_WELD_CTRL[8]={OUT_NR 0,INI FALSE,NAME_NAT[] "WIREFEED MANUAL

входные биты для робота:
здесь достаточно завести один сигнал
I_WELD_CTRL[2]={IN_NR 0,NAME_NAT[] "CURRENT AVAILABLE "}
Роботёр на форуме   Ответить с цитированием
cказали "Спасибо" Роботёр за это сообщение:
Maken (21.10.2021)
Старый 21.10.2021, 13:00   #18
Maken
Новичок
 
Регистрация: 20.09.2021
Сообщения: 13
Сказал Спасибо: 8
Сказали Спасибо 0 раз(а) в 0 сообщении
По умолчанию

огромное спасибо. по результатам отпишу....
жду программиста, так как в управлении и написании не силён.

спасибо за поддержку!!!!
без вас бы не справился.
Maken вне форума   Ответить с цитированием
Старый 09.11.2021, 08:11   #19
Maken
Новичок
 
Регистрация: 20.09.2021
Сообщения: 13
Сказал Спасибо: 8
Сказали Спасибо 0 раз(а) в 0 сообщении
По умолчанию

Продолжение....

Доброго дня всем.
Танцы с бубном продолжаются.
Что сделано:
в $config - в разделе A20 начинающемся со строк

;FOLD A20 GLOBALS;%{E}%V3.2.0,%MKUKATPA20,%CGLOBALS,%VGLOBAL S,%P // Строки с которых начинается пакет, верна ли версия, и структура???
;==================================
; STRUCTURES:
;==================================
STRUC WELD_ST INT PRG_NO,REAL VELOCITY,START_TIME,INT WEAVFIG_MECH,REAL WEAVLEN_MECH,WEAVAMP_MECH,WEAVANG_MECH,END_TIME
STRUC WELD_FI INT PRG_NO,REAL VELOCITY,INT WEAVFIG_MECH,REAL WEAVLEN_MECH,WEAVAMP_MECH,WEAVANG_MECH,END_TIME
STRUC A20_SUGG_T CHAR WELD_MODE[24],CHAR WELD_SET[24],CHAR START_SET[24],CHAR END_SET[24],CHAR COMMENT[24],CHAR PRG_NO[24],CHAR V_ARC[24],CHAR PGNO[24]

;==================================
; external declarations:
;==================================
EXT A20 (INT :IN,WELD_ST :IN,WELD_FI :IN,INT :IN )

;==================================
; Variables:
;==================================
; Data for online correction of weld parameters
DECL WELD_ST ADEFAULT={PRG_NO 0,VELOCITY 0.600000024,START_TIME 0.0,WEAVFIG_MECH 0,WEAVLEN_MECH 0.0,WEAVAMP_MECH 0.0,WEAVANG_MECH 0.0,END_TIME 0.0}
DECL WELD_ST ST_ACT={PRG_NO 0,VELOCITY 0.600000024,START_TIME 0.0,WEAVFIG_MECH 0,WEAVLEN_MECH 0.0,WEAVAMP_MECH 0.0,WEAVANG_MECH 0.0,END_TIME 0.0}
DECL WELD_FI MDEFAULT={PRG_NO 0,VELOCITY 0.600000024,WEAVFIG_MECH 0,WEAVLEN_MECH 0.0,WEAVAMP_MECH 0.0,WEAVANG_MECH 0.0,END_TIME 0.0}
DECL WELD_FI FI_ACT={PRG_NO 0,VELOCITY 0.600000024,WEAVFIG_MECH 0,WEAVLEN_MECH 0.0,WEAVAMP_MECH 0.0,WEAVANG_MECH 0.0,END_TIME 0.0}
;==================================
; SIGNALS :
;==================================
; DIGITAL OUTPUTS
;----------------------------------
DECL CTRL_OUT_T O_WELD_CTRL[15]
O_WELD_CTRL[1]={OUT_NR 545,INI FALSE,NAME_NAT[] "START WELDING "} // Если правильно понимаю это команда ARC ON
O_WELD_CTRL[2]={OUT_NR 0,INI FALSE,NAME_NAT[] "ROBOT IN POSITION "}
O_WELD_CTRL[3]={OUT_NR 0,INI FALSE,NAME_NAT[] "TRIGGER PRG-NUMBER "}
O_WELD_CTRL[4]={OUT_NR 0,INI FALSE,NAME_NAT[] "ACKN POWER SUPPLY "} // ??? Подтверждение подачи питания ???
O_WELD_CTRL[5]={OUT_NR 0,INI FALSE,NAME_NAT[] "SNEEZER "}
O_WELD_CTRL[6]={OUT_NR 0,INI FALSE,NAME_NAT[] "CLEANER MOTOR "}
O_WELD_CTRL[7]={OUT_NR 0,INI FALSE,NAME_NAT[] "SPRAYER "}
O_WELD_CTRL[8]={OUT_NR 0,INI FALSE,NAME_NAT[] "WIREFEED MANUAL "}
O_WELD_CTRL[9]={OUT_NR 546,INI FALSE,NAME_NAT[] "GAS PURGE "} // Если правильно понимаю это команда GAS ON
O_WELD_CTRL[10]={OUT_NR 0,INI FALSE,NAME_NAT[] "WELD ERROR MESSAGE "}
O_WELD_CTRL[11]={OUT_NR 0,INI FALSE,NAME_NAT[] " "}
O_WELD_CTRL[12]={OUT_NR 0,INI FALSE,NAME_NAT[] "TARGET POINT REACHED"}
O_WELD_CTRL[13]={OUT_NR 0,INI FALSE,NAME_NAT[] "IGNITION ERROR "}
O_WELD_CTRL[14]={OUT_NR 0,INI FALSE,NAME_NAT[] " "}
O_WELD_CTRL[15]={OUT_NR 0,INI FALSE,NAME_NAT[] " "}

; DIGITAL INPUTS
;----------------------------------
DECL CTRL_IN_T I_WELD_CTRL[15]
I_WELD_CTRL[1]={IN_NR 0,NAME_NAT[] "POWER SUPPLY READY "}
I_WELD_CTRL[2]={IN_NR 545,NAME_NAT[] "CURRENT AVAILABLE "} // Если правильно понимаю это команда CURRENT FLOW
I_WELD_CTRL[3]={IN_NR 0,NAME_NAT[] "CURRENT OVER "}
I_WELD_CTRL[4]={IN_NR 0,NAME_NAT[] "ERROR-INP1 PERIPHERY"}
I_WELD_CTRL[5]={IN_NR 0,NAME_NAT[] "ERROR-INP2 PERIPHERY"}
I_WELD_CTRL[6]={IN_NR 0,NAME_NAT[] "KEY SWITCH WELDING "}
I_WELD_CTRL[7]={IN_NR 0,NAME_NAT[] " "}
I_WELD_CTRL[8]={IN_NR 0,NAME_NAT[] " "}
I_WELD_CTRL[9]={IN_NR 0,NAME_NAT[] " "}
I_WELD_CTRL[10]={IN_NR 0,NAME_NAT[] " "}
I_WELD_CTRL[11]={IN_NR 0,NAME_NAT[] " "}
I_WELD_CTRL[12]={IN_NR 0,NAME_NAT[] " "}
I_WELD_CTRL[13]={IN_NR 0,NAME_NAT[] " "}
I_WELD_CTRL[14]={IN_NR 0,NAME_NAT[] " "}
I_WELD_CTRL[15]={IN_NR 0,NAME_NAT[] " "}

; outputs weld start
DECL FCT_OUT_T O_WELD_START[3]
O_WELD_START[1]={NO 1,PULS_TIME 0.0,STATE TRUE}
O_WELD_START[2]={NO 0,PULS_TIME 0.0,STATE TRUE}
O_WELD_START[3]={NO 0,PULS_TIME 0.0,STATE TRUE}

; outputs acknowledge start move
DECL FCT_OUT_T O_ACK_START[3]
O_ACK_START[1]={NO 2,PULS_TIME 0.300000012,STATE TRUE}
O_ACK_START[2]={NO 0,PULS_TIME 0.0,STATE TRUE}
O_ACK_START[3]={NO 0,PULS_TIME 0.0,STATE TRUE}

; strobe prg. number
DECL FCT_OUT_T O_STROB_PGNO[3]
O_STROB_PGNO[1]={NO 3,PULS_TIME 0.300000012,STATE TRUE}
O_STROB_PGNO[2]={NO 0,PULS_TIME 0.300000012,STATE TRUE}
O_STROB_PGNO[3]={NO 0,PULS_TIME 0.300000012,STATE TRUE}

; outputs weld end
DECL FCT_OUT_T O_SEAM_END[3]
O_SEAM_END[1]={NO 1,PULS_TIME 0.0,STATE FALSE}
O_SEAM_END[2]={NO 0,PULS_TIME 0.0,STATE FALSE}
O_SEAM_END[3]={NO 0,PULS_TIME 0.0,STATE FALSE}

; outputs acknowledge weld_end
DECL FCT_OUT_T O_ACK_WELD_E[3]
O_ACK_WELD_E[1]={NO 12,PULS_TIME 0.5,STATE TRUE}
O_ACK_WELD_E[2]={NO 0,PULS_TIME 0.5,STATE TRUE}
O_ACK_WELD_E[3]={NO 0,PULS_TIME 0.5,STATE TRUE}

; outputs fault while arc on
DECL FCT_OUT_T O_FLT_ARC_ON[3]
O_FLT_ARC_ON[1]={NO 13,PULS_TIME 0.0,STATE TRUE}
O_FLT_ARC_ON[2]={NO 1,PULS_TIME 0.0,STATE FALSE}
O_FLT_ARC_ON[3]={NO 0,PULS_TIME 0.0,STATE FALSE}

; outputs stop weld after interrupt on seam
DECL FCT_OUT_T O_FLT_WELD[3]
O_FLT_WELD[1]={NO 1,PULS_TIME 0.0,STATE FALSE}
O_FLT_WELD[2]={NO 10,PULS_TIME 0.0,STATE TRUE}
O_FLT_WELD[3]={NO 0,PULS_TIME 0.0,STATE FALSE}

; outputs stop cleaner after interrupt
DECL FCT_OUT_T O_FLT_CLEAN[3]
O_FLT_CLEAN[1]={NO 6,PULS_TIME 0.0,STATE FALSE}
O_FLT_CLEAN[2]={NO 0,PULS_TIME 0.0,STATE FALSE}
O_FLT_CLEAN[3]={NO 0,PULS_TIME 0.0,STATE FALSE}

; outputs acknowledge fault
DECL FCT_OUT_T O_ACK_FLT[3]
O_ACK_FLT[1]={NO 4,PULS_TIME 1.0,STATE TRUE}
O_ACK_FLT[2]={NO 13,PULS_TIME 1.0,STATE FALSE}
O_ACK_FLT[3]={NO 0,PULS_TIME 1.0,STATE TRUE}

; output for fault message
DECL FCT_OUT_T O_FLT_SIGNAL={NO 10,PULS_TIME 0.0,STATE TRUE}

; inputs as condition befor weld can start
DECL FCT_IN_T I_WELD_COND[3]
I_WELD_COND[1]={NO 1,STATE TRUE}
I_WELD_COND[2]={NO 0,STATE TRUE}
I_WELD_COND[3]={NO 0,STATE TRUE}

; inputs start moving
DECL FCT_IN_T I_START_MOVE[3]
I_START_MOVE[1]={NO 2,STATE TRUE}
I_START_MOVE[2]={NO 0,STATE TRUE}
I_START_MOVE[3]={NO 0,STATE TRUE}

; inputs weld is ended
DECL FCT_IN_T I_WELD_END[3]
I_WELD_END[1]={NO 2,STATE FALSE}
I_WELD_END[2]={NO 0,STATE FALSE}
I_WELD_END[3]={NO 0,STATE FALSE}

;Counter for Interrupt definition
DECL INT FLT_NUM[3]

; inputs telling faults while welding
DECL FCT_IN_T I_WELD_FLT[3]
I_WELD_FLT[1]={NO 2,STATE TRUE}
I_WELD_FLT[2]={NO 4,STATE TRUE}
I_WELD_FLT[3]={NO 5,STATE TRUE}

; input for external enable weld
DECL FCT_IN_T I_ENB_W_EXT={NO 6,STATE TRUE}

;current instruction
INT ARC_INSTR=2

; instruction code
INT ARC_INI=1
INT ARC_ON=2
INT ARC_OFF=3
INT ARC_SWI_F=4
INT ARC_SWIP=5
INT TECH_STOP1=6
INT TECH_STOP2=7
INT TECH_STOP=9
INT ARC_OFF_P=10
INT ARC_OFF_V=12
INT ARC_START=13
INT ARC_SWI_T=14
INT ARC_OFF_T=15
INT PRGNO=0
INT TMP_PRG=0
BOOL B_RESTART=FALSE
BOOL FLY_WELD=FALSE
BOOL ARC20=FALSE
BOOL WELD_ACTIVE=FALSE
BOOL T1_L
BOOL T_STOP=FALSE ;flag for $CYCFLAG to avoid
;ENDFOLD



НАписал программист короткую программу но пока только
TPA20 -> Option bit ARC20not set

Вопросы:
1. Верна ли версия ArcTechDigital (вроде 3.2.0 в самой первой строке, но только предположение)
2. Верна ли структура пакета, может досталось порезаное или кривое, не могу понять, сильно отличается от структуры описаной в теме по KRC2
3. Не понял нужно ли выстявлять значения помеченные КРАСНЫМ к виду (545,546,547 итд как в шине интербас)
4. Может есть рабочий пакет и описание к нему (в идеале)

Буду благодарен любым подсказкам, спасибо
Maken вне форума   Ответить с цитированием
Старый 10.11.2021, 10:13   #20
Maken
Новичок
 
Регистрация: 20.09.2021
Сообщения: 13
Сказал Спасибо: 8
Сказали Спасибо 0 раз(а) в 0 сообщении
По умолчанию

Продолжение...
Вообщем пакет A10 заработал... Удалось положить небольшой шов.
На пакет А20 переключается и тоже работает, НО...
ПРописал биты только в A10 в $config.dat


;Digital outputs
;----------------------------------
DECL CTRL_OUT_T A_WLD_OUT[16]
A_WLD_OUT[1]={OUT_NR 545,INI FALSE,NAME_NAT[] "WELD_START "}
A_WLD_OUT[2]={OUT_NR 547,INI FALSE,NAME_NAT[] "GAS PREFLOW "}
A_WLD_OUT[3]={OUT_NR 0,INI FALSE,NAME_NAT[] "WELD_MODE PS/MM"}
A_WLD_OUT[4]={OUT_NR 0,INI FALSE,NAME_NAT[] "CLEANER "}
A_WLD_OUT[5]={OUT_NR 0,INI FALSE,NAME_NAT[] "RECEIPT ERRORS "}
A_WLD_OUT[6]={OUT_NR 0,INI FALSE,NAME_NAT[] "ERR MESSG_SIGNAL"}
A_WLD_OUT[7]={OUT_NR 0,INI FALSE,NAME_NAT[] "START ERROR "}
A_WLD_OUT[8]={OUT_NR 0,INI FALSE,NAME_NAT[] "APPL_ERROR "}
A_WLD_OUT[9]={OUT_NR 0,INI FALSE,NAME_NAT[] "INTERPRETER-STOP"}
A_WLD_OUT[10]={OUT_NR 0,INI FALSE,NAME_NAT[] "ALU_START"}
A_WLD_OUT[11]={OUT_NR 0,INI FALSE,NAME_NAT[] " "}
A_WLD_OUT[12]={OUT_NR 0,INI FALSE,NAME_NAT[] " "}
A_WLD_OUT[13]={OUT_NR 0,INI FALSE,NAME_NAT[] " "}
A_WLD_OUT[14]={OUT_NR 0,INI FALSE,NAME_NAT[] " "}
A_WLD_OUT[15]={OUT_NR 548,INI FALSE,NAME_NAT[] "WFD + "}
A_WLD_OUT[16]={OUT_NR 0,INI FALSE,NAME_NAT[] "WFD - "}

; Digital inputs
;----------------------------------
DECL CTRL_IN_T A_WLD_IN[16]
A_WLD_IN[1]={IN_NR 0,NAME_NAT[] "WELDER READY "}
A_WLD_IN[2]={IN_NR 545,NAME_NAT[] "ARC ESTABLISHED "}
A_WLD_IN[3]={IN_NR 0,NAME_NAT[] "SEAM_ERROR "}
A_WLD_IN[4]={IN_NR 0,NAME_NAT[] "CURRENT OVER "}
A_WLD_IN[5]={IN_NR 0,NAME_NAT[] "KEY SWITCH HOT/COLD "}
A_WLD_IN[6]={IN_NR 0,NAME_NAT[] " "}
A_WLD_IN[7]={IN_NR 0,NAME_NAT[] "BURN FREE INP_SIGNAL"}
A_WLD_IN[8]={IN_NR 0,NAME_NAT[] " "}
A_WLD_IN[9]={IN_NR 0,NAME_NAT[] " "}
A_WLD_IN[10]={IN_NR 0,NAME_NAT[] "WATER AVAILABLE "}
A_WLD_IN[11]={IN_NR 0,NAME_NAT[] "GAS AVAILABLE "}
A_WLD_IN[12]={IN_NR 0,NAME_NAT[] "WIRE AVAILABLE "}
A_WLD_IN[13]={IN_NR 0,NAME_NAT[] "COLLECTION FAILURE "}
A_WLD_IN[14]={IN_NR 0,NAME_NAT[] " "}
A_WLD_IN[15]={IN_NR 0,NAME_NAT[] " "}
A_WLD_IN[16]={IN_NR 0,NAME_NAT[] " "}


Если есть каие либо замечания или советы, рад буду увидеть.
Спасибо
Maken вне форума   Ответить с цитированием
Ответ
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +2, время: 11:45.

vBulletin v3.6.2, Copyright ©2000-2024, Jelsoft Enterprises Ltd.
Русский перевод: zCarot, Vovan & Co