PDA

Просмотр полной версии : Rs-485 подключение 12 внешних модулей



mishustik
15.03.2013, 15:52
Использую СПК207. Есть 12 модулей ввода/вывода МДВВ с перспективой подключения МВ110-8АС. Скажите как правильно программно организовать обмен по интерфейсу (одному порту Rs-485). Как это сделать с двумя блоками типа MDVV_inputs или MDVV_outs (На рис) - понятно, а с большим кол-вом - нет. Прошу помощи.

kgsh82
15.03.2013, 20:48
Пришла пора освоить язык ST

mishustik
16.03.2013, 14:28
kgsh82, подскажите пожалуйста как именно..

kgsh82
16.03.2013, 17:28
Возьмите за основу биб-ку Modbus от Овен, там как раз пример на ST.
Придется ещё изучить РЭ к МДВВ и МВ-110. Надо же знать какие регистры считывать (записывать).

SBER
16.03.2013, 18:22
Опрос модулей по битовой маске, скорость 57600.
Полученной регистровой переменной присваиваете имя, например VHOD1.
В программе распаковываете в виде:
Переменная1:=VHOD1.0 (дискретный вход1 модуля)
Переменная2:=VHOD1.1 (дискретный вход2 модуля)
И т.д.
Выхода наоборот
VIHOD1.0:=Переменная

Библиотеку модбас использовать необязательно, можно и через конфигуратор.

kgsh82
16.03.2013, 20:26
Это кому как нравится.... С библиотекой удобнее и понятнее (ИМХО)

Евгений Сергеевич
17.03.2013, 02:47
для создания цепочки опрашиваемых модулей вам надо:
вход enable следующего модуля соединить с выходом done предыдущего.
для первого блока надо выход блока com_conn.done пропустить через R_Trig и объединить через OR c выходом Done последнего опрашиваемого модуля.

R_Trig(clk:=Com_Conn.done);
Mod_1.enable := Mod_n.done or R.Trig.q;
Mod_1();
Mod_2.Enable:= Mod_1.done;
Mod_2();
Mod_3.Enable:=Mod_2.Done;
Mod_3();
...