Здравствуйте, Уважаемые гуру!
Я начинающий программист ПЛК ОВЕН, первый проект.
Прочитал все инструкции по подключению МВ к ПЛК. Посмотрел видео, но что-то все равно не получается.
Проект на ST. Codesys v3.4 patch2 без HF1. (Недоступно для скачивания на Вашем сайте)
Подключены библиотеки: ModBus, ComSerice, SysLibCom.
Описание переменных:
Тело программы:Код:PROGRAM PLC_PRG VAR get1_modbus: MB_RD_HOLD_REGS; t: DWORD; a: WORD:=0; port_opened: BYTE:=0; Settings: COMSERICE.SysCom.COM_Settings; SettingsEx: COMSERICE.SysCom.COM_SettingsEx; Com_service1:Com_service; master1: BYTE:=1; enabl: BOOL; TimeOut: TIME:=T#50ms; Buffer: ARRAY [0..255] of byte; Complete: BOOL; err: INT; Exception: INT; ByteCnt: WORD; cmpl: BOOL; x: WORD; DataSize: BYTE; END_VAR
Загружаю, запускаю и COm_SERVICE1.READY всегда FALSE.Код:IF port_opened=0 THEN Settings.sPort:=0; Settings.ulBaudRate:=115200; Settings.byParity:=0; Settings.ulTimeOut:=0; Settings.byStopBits:=0; Settings.ulBufferSize:=0; SettingsEx.byByteSize:=8; SettingsEx.bBinary:=TRUE; COM_SERVICE1(Enable:=(port_opened=0), Settings:=Settings, (*sets_ex:=Setting*****) Task:=OPEN_TSK); END_IF IF COM_SERVICE1.ready THEN port_opened:=2; END_IF IF port_opened=2 THEN get1_modbus( Enable:=enabl, Mode:=MB_RTU, DevAddr:=16, FirstAddr:=51, Quantity:=1, ComHandle:=Settings.sPort, TimeOut:=TimeOut, Buffer:=Buffer, Complete=>cmpl, Exception=>err, ByteCnt=>DataSize); IF cmpl THEN IF err=0 THEN x:=BYTE_TO_WORD(BUFFER[1]) OR SHL(BYTE_TO_WORD(BUFFER[0]),8); END_IF END_IF IF enabl=FALSE THEN enabl:=TRUE; END_IF IF err<>0 THEN enabl:=FALSE; END_IF END_IF
Немогу понять почему? Подскажите пожалуйста.
Заранее благодарен!




Ответить с цитированием