Страница 1 из 1

Код из S5 в TIA v15 без меркеров

Добавлено: 14 июл 2018, 05:51
Ka3ax
имеется цепочка формирующая короткий импульс поступающий на вход счетчика SET и сбрасывающий его перед счетом.
ищу решение без применения меркеров. (Например, счетчик в TIA (контролер 1500) заменен сейчас накапливающим таймером, меркеры не применяются.)


счетчик по приходу -M100.6 сбрасывается коротким импульсом -M180.0 что формируется цепочкой в NW1.
и счетчик начинает считать приходящие минутные импульсы на входе IMP, по приходу -M1444.4 останавливается не сбрасываясь,
когда -M1444.4 устанавливается вновь в ноль, продолжает считать.

кому интересно, вот код счетчика

Код: Выделить всё

NAME:	ZAEHLER2
BEZ :	E-DB	B
BEZ :	E-DW	EW
BEZ :	COUN	EBI
BEZ :	SET	EBI
BEZ :	A-DB	B
BEZ :	A-DW	AW
BEZ :	AUS	ABI
BEZ :	NULL	ABI
BEZ :	IMP	EBI
BEZ :	HALT	EBI

	AWL	
	B	=E-DB
	L	=E-DW
	T	MW 204	;ZEIT SOLLWERT
	L	KH 0000	;WENN SOLLWERT = 0
	!=F		;DANN
	=	=NULL	;SETZE AUSGANG "NULL"
		
	B	=A-DB
	L	=A-DW
	T	MW 202	;ZEIT ISTWERT
		
	L	MW 202
	L	MW 204	;WENN ISTWERT GROESSER
	<F		;SOLLWERT, DANN
	SPB	=M001	;ISTWERT=SOLLWERT
	L	MW 204
	T	MW 202
M001:		
	UN	=SET 	;WENN SETZEINGANG
	SPB	=M002	;DANN LADE ZAEHLER
	L	KH 0000	;MIT NULL
	T	MW 202
M002:		
	UN	=IMP 	;IMPULSE (SEC., MIN., STD.)
	ON	=COUN	;UND ZAEHLEINGANG
	SPB	=M003
	L	MW 202	;ISTWERT >= SOLLWERT
	L	MW 204	;(ZAEHLER ABGELAUFEN)
	>=F	
	O	=HALT	;ZAEHLER ANHALTEN
	SPB	=M003
		
	L	MW 202	;ZAEHLER INCREMENTIEREN
	L	KH 0001
	+F	
	T	MW 202
M003:		
	L	MW 202	;WENN ZAEHLER NOCH NICHT
	L	MW 204	;ABGELAUFEN UND ZAEHLEINGANG
	<F		;DANN SETZE AUSGANG=1
	U	=COUN
	=	=AUS 	;SET OUTPUT
		
	L	MW 202	;ISTWERT
	B	=A-DB	;IN DB SPEICHERN
	T	=A-DW
	BE	

Re: Код из S5 в TIA v15 без меркеров

Добавлено: 14 июл 2018, 06:44
Ka3ax
не хотел бы и таймеры на сброс устанавливать, разве мультиэкземплярно, чтобы DB не плодить.

Re: Код из S5 в TIA v15 без меркеров

Добавлено: 05 авг 2018, 16:04
Ka3ax
пришлось на SCL через SR реализовать.

Re: Код из S5 в TIA v15 без меркеров

Добавлено: 05 авг 2018, 20:45
mr_Frodo
Не совсем понятно, почему нельзя импульс сделать через фронт-пульс?

Re: Код из S5 в TIA v15 без меркеров

Добавлено: 05 авг 2018, 22:09
Ka3ax
почему нельзя импульс сделать через фронт-пульс?
знал бы сделал, а так не понятно о чем речь.

мне непонятен принцип формирования длительности импулься не стандартными методами.
по этому поводу я спрашивал
viewtopic.php?f=17&t=1052&start=40#p11077

Re: Код из S5 в TIA v15 без меркеров

Добавлено: 06 авг 2018, 08:09
mr_Frodo
Странно, что не знаете один из часто используемых операторов...
на вашем любимом STL это выглядит как

A #inp //входная булева переменная, у которой обнаруживается фронт
FP #fp //оператор, обнаруживающий фронт путём сравнения состояния #inp и #fp
= #out // выходной импульс, длительностью 1 цикл программы.

Одно главное замечание. Если данный код используется в блоке типа FC (функция) или FB(функц. блок), то переменная #fp не должна быть в области временных переменных, т.к. временные переменные каждый новый цикл переписываются новыми значениями и не хранятся в оперативной памяти. Соответственно значение #fp будет постоянно сбрасываться в false независимо от предыдущего цикла.

Re: Код из S5 в TIA v15 без меркеров

Добавлено: 06 авг 2018, 19:52
Ka3ax
отчего, определение фронтов FP FN мне известно, а понятие фронт-импульс нет.
A #inp //входная булева переменная, у которой обнаруживается фронт
FP #fp //оператор, обнаруживающий фронт путём сравнения состояния #inp и #fp
= #out // выходной импульс, длительностью 1 цикл программы.
а цикла всегда хватит? если он и наносекунды?
отчего я ранееспрашивал, реализация на меркерах была для S5, а там цикл миллисекунды.


по коду, =#out остается "взведенным" до следующего цикла?

Re: Код из S5 в TIA v15 без меркеров

Добавлено: 06 авг 2018, 20:08
mr_Frodo
Ka3ax писал(а):по коду, =#out остается "взведенным" до следующего цикла?
Верно.
В следующем цикле значения RLO от #in становится таким же, как и в ячейке #fp и программа понимает, что фронт прошёл, снимая результат #out. Результат #out трудно отследить в симуляторе из-за его кратковременности, но для этого можно применить "военную хитрость" - установить параллельно = #out оператор S на другую переменную, чисто для контроля.
наример:
A #inp
FP #fp
S #aux
= #out
Аналогична работа оператора FN, только на исчезновение сигнала.

Re: Код из S5 в TIA v15 без меркеров

Добавлено: 07 авг 2018, 02:09
Ka3ax
а SR тригер приведенный выше на скриншоте, не на другом цикле обнуляется?

Re: Код из S5 в TIA v15 без меркеров

Добавлено: 07 авг 2018, 12:55
mr_Frodo
Разговор идёт о более простом решении, а вы про циклы...
неужели применить код из 7 строк , да ещё с путаной логикой интересней, чем из 3-х и с наглядной даже на STL.

Re: Код из S5 в TIA v15 без меркеров

Добавлено: 07 авг 2018, 19:16
Ka3ax
stl уже нельзя, другой проект, сейчас scl.
и я не о циклах а о SR триггере, защелке.
мне некогда было придумывать, ответа долго не было, поэтому повторил но на scl.
позже выяснилось, что можно и по-другому.
сроки жмут, некогда уже красиво делать.

Re: Код из S5 в TIA v15 без меркеров

Добавлено: 07 авг 2018, 19:18
Ka3ax
там не просто один тригер, вся логика управления импульсная, вся.
включаешь выключателб-импульс, выключаешь-импульс.
и так все цепи.
попробовать усовершенствовать, жизни не хватит всю программу перелопатить и взаимосвязи импульсов выяснить. конечно понятные части оптимально делаются, упрощаются, нагляднее реализуются.
другой стороны на fub тригер понятнее "смотрится" чем на scl