[?]: использование собственных функций в STEP7....

Промышленные Логические Контроллеры SIMATIC S7-200/300/400
Post Reply
Nazar
Posts: 29
Joined: Fri Sep 22, 2006 5:17 pm
Location: Ukraine

[?]: использование собственных функций в STEP7....

Post by Nazar » Sat Mar 08, 2008 9:24 am

помогите разобратся.... :oops:
есть несколько груп однотипных механизмов, которые при опредиленных условиях работают одинаково...
...в связи с этим я создал свои функции для этих груп с нужными входами и выходами...
...все работает должным образом если в данный момент вызывается работа одного механизма....
...но начинаются чудеса, если нужно запустить два и более механизмов одной групы.... :shock: (тоесть вызывается 2 раза подряд одна и та же функция но с РАЗНЫМИ входами и выходами)...

PS:...используется 315-2DP...

...пример...
...я не совсем понял как правильно выкладовать листинги програм:oops: ....
....вот что получилось:

это основная функция:
A #AVT_HAND
A #ind_sensor2
A #zasyv_close
= #temp2

A #temp2
A #discharge_sw
AN #discharge_complete
S #discharge_working

A #discharge_working
AN T 2
= L 1.0
A L 1.0
L S5T#5S
SD T 1
A L 1.0
A T 1
L S5T#10S
SD T 2

A #discharge_working
AN #zasyv_open
AN T 1
O #aux_to_opn
= #to_open

O T 1
O
AN T 3
A #discharge_end
O
AN #AVT_HAND
A #vibrator_bt
= #vibrator_ON

//close zasyv after discharging
A #zasyv_open
R #discharge_working
S #discharge_end

A #discharge_end
L S5T#10S
SD T 3

A T 3
A #discharge_end
O #aux_to_cls
= #to_close

//clear all timers
A #discharge_end
FN #temp1
R T 1
R T 2
R T 3
R #discharge_working
S #discharge_complete

A #zasyv_close
R #discharge_end

//********Hand mode************
AN #AVT_HAND
A #open_bt
= #aux_to_opn

AN #AVT_HAND
A #close_bt
= #aux_to_cls
//****************************


а вот так она вызывается в програме:

// CALL "Discharge Wagon"
AVT_HAND :=M13.1
discharge_sw :=I126.0
vibrator_bt :="exchange with WinCC".motor._9M_V9_start_stop_bt
open_bt :="exchange with WinCC".motor._17M_D1_open_bt
close_bt :="exchange with WinCC".motor._17M_D1_close_bt
zasyv_open :=I8.6
zasyv_close :=I8.7
ind_sensor2 :=I8.1
to_open :=Q5.5
to_close :=Q5.6
vibrator_ON :=Q5.0
discharge_complete:=M13.2


в даной ситуации вызывается блок FC....пробовал создать свой FB с соответствующим ему DB.....результат одинаковый:
если вызывать функцию один раз, все работает нормально, но если вызвать второй раз подряд, то включение механизмов непрогнозируемое....:(

Schtiel
Site Admin
Posts: 1122
Joined: Wed Sep 06, 2006 12:03 pm
Location: CIS

Post by Schtiel » Mon Mar 10, 2008 1:44 pm

Во всех блоках, которые ты вызываешь, используются одни и те же таймеры. Сделай у FB входные параметры типа TIMER и указывай для каждого механизма свой набор таймеров.

slawa123
Posts: 22
Joined: Fri Jan 12, 2007 2:45 pm
Location: Kazakhstan

Post by slawa123 » Mon Mar 10, 2008 2:42 pm

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

Post Reply