PDA

Просмотр полной версии : СПК207+ПМ01



ghorik
26.12.2012, 11:37
Помогите пожалуйста разобраться как подключить модем Овен ПМ01 к Контроллеру СПК207, пробовал подключить через порт debug при включении контроллера при подключенном модеме он не загружал программу при отключении модема все нормально работало, пробую через COM1 связи с модемом нет, объясните пожалуйста поподробнее как подключать,распайку кабеля,нужны ли какие нибудь перемычки,и под какими номерами какие поры находятся.
PS По rs-485 не предлагать, оба заняты.

Евгений Сергеевич
27.12.2012, 13:21
У спк три порта для работы, два из них могут работать как в 232 режиме так и 485. физически выводы интерфейсов разнесены поэтому на обратной стороне вы можете наблюдать два различных порта с обозначением COM2 и COM3. Если оба RS-485 у вас занято то для работы с модемо остается один порт COM1.
Нумерация портов сдвинута на единицу, т.е. порт 1 в программе будет идти под номером 2. Для работы с модемом можно использовать библиотеку работы с портом SysCom. Распайка порта стандартная так что для работы должен подойти кабель КС7.

ghorik
27.12.2012, 14:52
У спк три порта для работы, два из них могут работать как в 232 режиме так и 485. физически выводы интерфейсов разнесены поэтому на обратной стороне вы можете наблюдать два различных порта с обозначением COM2 и COM3. Если оба RS-485 у вас занято то для работы с модемо остается один порт COM1.
Нумерация портов сдвинута на единицу, т.е. порт 1 в программе будет идти под номером 2. Для работы с модемом можно использовать библиотеку работы с портом SysCom. Распайка порта стандартная так что для работы должен подойти кабель КС7.
Спасибо, все получилось

ghorik
09.01.2013, 07:14
Подключить подключил а программно не могу разобраться, первый раз команда вроде возвращает нормальный ответ, а дальше идет ересь помогите разобраться

IF Enable THEN
//Если порт не открыт - открываем
IF NOT(Connect_Com) THEN
//Формируем настройки порта
PortSetting.sPort:=2; //номер порта
PortSetting.ulBaudrate:=9600; //Скорость работы
PortSetting.byStopBits:=0; //Кол-во стоповых бит 0 =один, 1=полтора , 2=два
PortSetting.byParity:=0; //Режим проверки четности 0 = нет, 1 = нечет, 2 = чет
PortSetting.ulTimeout:=0;
PortSetting.ulBufferSize:=0;

//Дополнительные параметры
PortSettingEX.byByteSize:=8;
PortSettingEX.bBinary := TRUE;
PortSettingEX.bDtrControl := FALSE;
PortSettingEX.bRtsControl := TRUE;
PortSettingEX.bOutxCtsFlow := FALSE;
PortSettingEX.bOutxDsrFlow := FALSE;
PortSettingEX.bDsrSensitivity := FALSE;

//PortSettingEX.bInX:=FALSE;
//PortSettingEX.bOutX:=FALSE;
//PortSettingEX.bTXContinueOnXoff:=FALSE;
//PortSettingEX.byXoffChar:=FALSE;
//PortSettingEX.byXonChar:=FALSE;

//Открываем порт
Handle:=SysCom.SysComOpen2(ADR(PortSetting),ADR(Po rtSettingEx),ADR(res));
IF handle=16#FFFFFFFF THEN
ErrCode:=1;
Enable:=FALSE;
RETURN;
ELSE
Connect_Com:=TRUE;
END_IF

IF res<>0 THEN
ErrCode:=2;
SysCom.SysComClose(Handle);
Enable:=FALSE;
RETURN;
ELSE
Connect_Com:=TRUE;
END_IF *)
END_IF
//Если порт открыт - передаем AT-команды модему
IF Connect_Com THEN
//Получение ответа
IF OnAnswer THEN
LenRead:=SysCom.SysComRead(Handle,ADR(BufOtvet),Le nOtvet,0,res);
IF LenRead>0 THEN
Otvet:=CONCAT(otvet,LEFT(BufOtvet, UDINT_TO_INT(LenRead)));
END_IF
IF Len(Otvet)>=LenOtvet THEN
OnAnswer:=FALSE;
ErrCode:=0;
Enable:=FALSE;
SysCom.SysComClose(Handle);
Connect_Com:=FALSE;
RETURN;
END_IF
END_IF
//Передача AT-команды
IF NOT(OnAnswer) THEN
Otvet:='';
LenBuf:=Len(command1);
LenWrite:=SysCom.SysComWrite(Handle,ADR(command1), LenBuf,0,res);
IF LenBuf = LenWrite THEN
OnAnswer:=TRUE;
ELSE
ErrCode:=3;
SysCom.SysComClose(Handle);
Enable:=FALSE;
RETURN;
END_IF
END_IF
END_IF
END_IF

capzap
09.01.2013, 10:31
IF Len(Otvet)>=LenOtvet THEN
не заметил, а если условие ни когда не выполниться, то что произойдет?

ghorik
09.01.2013, 10:49
не заметил, а если условие ни когда не выполниться, то что произойдет?

Условие выполняется, в ответе не то что должно прийти
пример ответа
первый запрос
'AT$N$N$NOK$N'
второй запрос
'AT$NAT$N'

capzap
09.01.2013, 11:04
К Вашему сведению, в место положительного ответа может прийти ERROR
Да и второй запрос у Вас это что?

Как часто Вы шлете такие запросы? через ПК пробовали подавать на модем команды, там все работает? Режим эхо( АТЕ) в каком значении? И почему пишите $N, вроде должна отображаться связка $R$N

ghorik
09.01.2013, 11:14
К Вашему сведению, в место положительного ответа может прийти ERROR
Да и второй запрос у Вас это что?

Как часто Вы шлете такие запросы? через ПК пробовали подавать на модем команды, там все работает? Режим эхо( АТЕ) в каком значении? И почему пишите $N, вроде должна отображаться связка $R$N

Стартую вручную, отправляю команду 'AT$R', через пк не пробовал, настройки в модеме заводские, режим эхо должен быть с завода отключен

capzap
09.01.2013, 11:17
если эхо отключено то AT$NAT$N тогда это означает что Вы два раза подаете команду, не успев принять ответ. Пробуйте через терминал поработать с модемом, чтоб разобраться проблемы с программой или с модемом

ghorik
09.01.2013, 11:22
если эхо отключено то AT$NAT$N тогда это означает что Вы два раза подаете команду, не успев принять ответ. Пробуйте через терминал поработать с модемом, чтоб разобраться проблемы с программой или с модемом

Как все сложно!