Различия
Здесь показаны различия между двумя версиями данной страницы.
| Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
|
doc:sertoeth7188ex:main [2013/05/16 13:06] jamis7005 [incoming requests] |
doc:sertoeth7188ex:main [2013/07/08 14:11] (текущий) vitaly [Режим Init] |
||
|---|---|---|---|
| Строка 2: | Строка 2: | ||
| ===== Индикация ===== | ===== Индикация ===== | ||
| + | Контроллер имеет 5 семисегментных индикаторов. Каждый из индикаторов индицирует работу одного последовательного порта, нумерация слева направо. Используются только горизонтальные сегменты: | ||
| + | - **верхний** - запись в serial порт | ||
| + | - **средний** - прием из serial порта | ||
| + | - **нижний** - отправка tcp-клиенту | ||
| + | |||
| ===== Протокол обмена ===== | ===== Протокол обмена ===== | ||
| Строка 7: | Строка 12: | ||
| ==== outcoming requests ==== | ==== outcoming requests ==== | ||
| - | &<cmd>[<portparams>][:<data>][<crc>]<cr> | + | &<cmd>[параметры][данные][<cr>] |
| + | | ||
| | | ||
| **&** - маркер начала посылки | **&** - маркер начала посылки | ||
| | | ||
| **cmd** - команда | **cmd** - команда | ||
| - | * **h<port>** - запись в порт в символьном hex-формате, где port - номер последовательного контроллера. Пример: ''&h1:3132330D<cr>'' отправка в serial последовательности байт ''31 32 33 0D''. | + | * **h<port><data>** - запись в порт в символьном hex-формате, где port - номер последовательного контроллера (от 1 до 9). Пример: ''&h13132330D<cr>'' отправка в serial последовательности байт ''31 32 33 0D''. |
| - | * **b<port>** - запись в порт в символьном bin-формате. Кодировка некоторых символов данных: <code> | + | * **b<port><data>** - запись в порт в символьном bin-формате. Кодировка символов данных: <code> |
| & --> \a | & --> \a | ||
| \ --> \\ | \ --> \\ | ||
| - | <cr> --> \r</code> Пример: ''&b1:Ampersand-\a. Backslash-\\.\r<cr>'' отправка в serial строки ''Ampersand-&. Backslash-\.<cr>''. | + | #10 --> \r |
| - | * **setport <tcpport>** - установка tcp-порта, пример: ''&setport 3070<cr>'' | + | #13 --> \n |
| - | * **setmask <ipmask>** - установка маски, пример: ''&setmask 255.255.255.0<cr>'' | + | </code> остальные символы идут как есть. |
| - | * **setip <address>** - установка ip, пример: ''&setip 192.168.0.55<cr>'' | + | Пример: ''&b1:Ampersand-\a. Backslash-\\.\r<cr>'' отправка в serial строки ''Ampersand-&. Backslash-\.<cr>''. |
| - | * **crcmode <off|on>** - установка режима crc, пример: ''&crcmode on<cr>'' | + | * **t <tcpport>** - установка tcp-порта в память, пример: ''&t 3070'' |
| + | * **i <address>** - установка ip в память, пример: ''&i 192.168.0.55<cr>'' | ||
| + | * **m <ipmask>** - установка маски в память, пример: ''&m 255.255.255.0<cr>'' | ||
| + | * **g <шлюз>** - установка шлюза в память, пример: ''&g 192.168.255.10<cr>'' | ||
| + | * **p <параметры>** - параметры последовательного порта = 4 символа: | ||
| + | - baud (по умолчанию **C8N1**): | ||
| + | <code> | ||
| + | 0 - 50 | ||
| + | 1 - 75 | ||
| + | 2 - 110 | ||
| + | 3 - 134 | ||
| + | 4 - 150 | ||
| + | 5 - 300 | ||
| + | 6 - 600 | ||
| + | 7 - 1200 | ||
| + | 8 - 1800 | ||
| + | 9 - 2400 | ||
| + | A - 4800 | ||
| + | B - 7200 | ||
| + | C - 9600 | ||
| + | D - 19200 | ||
| + | E - 38400 | ||
| + | F - 57600 | ||
| + | G - 115200 | ||
| + | H - 230400 | ||
| + | I - 460800 | ||
| + | J - 921600</code> | ||
| + | - data bits: **8** или 7 | ||
| + | - parity (по умолчанию **N**):<code> | ||
| + | N - NONE | ||
| + | E - EVEN | ||
| + | O - ODD | ||
| + | M - MARK | ||
| + | S - SPACE</code> | ||
| + | - stop bits: **1** или 2 | ||
| - | **data** - данные | + | * **x** - рестарт, пример: ''&x'' |
| - | **crc** - crc16, четыре символа в hex-формате. Считается от маркера начала посылки включительно до последнего байта данных включительно. | + | Команды начинаются от &, далее считываются параметры команды, затем данные, прием данных ограничивается <cr>, концом передачи или 1000 символов (максимально возможный объем буфера) в зависимости от того, что наступит ранее. __Внимание! Параметры команд идут через пробел за именем команды (исключения команды b и h)__. В случае прихода команд на изменение адреса, полученные данные сохраняются в память, но работать не начинают. Для применения новых настроек необходимо перезагрузить ПЛК. |
| + | При первом старте рекомендуется включать режим Init для первоначальной установки параметров в памяти. При работе необходимо режим Init отключать. В случае режима Init из памяти загружаются не сохраненные данные, а параметры по умолчанию. Смена параметров происходит только в момент загрузки, в процессе работы флаг не проверяется. В режиме Init возможно странное поведение TCP части контроллера т.к. в этот момент контроллер работает и по заводскому адресу 192.168.255.1:10000. | ||
| - | **<cr>** - маркер конца посылки | + | Все установочные значения сохраняются в eeprom контроллера (см карту памяти). |
| - | ==== incoming requests ==== | + | **data** - данные |
| - | &<cmd>:<data>[<crc>]<cr> | + | **<cr>** - маркер конца посылки (#10). если его в посылке нет, то концом считается - конец передачи. если есть, то конец посылки считается равным ему, остальное отбрасывается. |
| - | + | ||
| + | ==== incoming requests ==== | ||
| + | <code> | ||
| + | &<cmd><data>[<crc>]<cr> | ||
| + | </code> | ||
| | | ||
| - | * **h<port>** - принятые данные в символьном hex-формате, где port - номер последовательного контроллера. Пример: ''&h1:3132330D<cr>'' означает, что в serial port 1 контроллера поступила последовательность байт ''31 32 33 0D''. | + | **cmd** |
| + | * **h<port>** - принятые данные в символьном hex-формате, где port - номер последовательного контроллера (1-9). Пример: ''&h13132330D'' означает, что в serial port 1 контроллера поступила последовательность байт ''31 32 33 0D''. | ||
| * **b<port>** - принятые данные в bin-формате. Кодировка символов аналогична. | * **b<port>** - принятые данные в bin-формате. Кодировка символов аналогична. | ||
| + | Отправка h и b контроллером происходит при выполнении одного из следующих условий: | ||
| + | * на вход serial поступали данные после чего в течение времени, 20мс, данные не поступают (состояние idle). | ||
| + | * на вход serial поступило MaxReplySize байт, где MaxReplySize по умолчанию равно 1000. | ||
| - | | + | Если к устройству подключено несколько клиентов, то данные, полученные из COM порта передаются всем в базовом режиме и всем, подключенным к определенному порту, в режиме mirror. |
| + | |||
| + | Способ кодирования данных, полученных из COM в базовом режиме, соответствует последней команде запроса на соответствующий порт. Если последний запрос был выполнен командой &h, то все данные будут в этом формате, пока не придет запрос &b. Если с момента включения запросов не приходило, то считаем, что порт в режиме &h. | ||
| | | ||
| ==== Режим Init ==== | ==== Режим Init ==== | ||
| При включении контроллера в режиме init вступают в силу следующие параметры: | При включении контроллера в режиме init вступают в силу следующие параметры: | ||
| - | * mask = 255.255.255.0 | + | * mask = 255.255.0.0 |
| - | * ip = 192.168.0.90 | + | * ip = 192.168.255.1 |
| - | * port = 3070 | + | * port = 4000 |
| + | |||
| + | ==== Режим Mirror ==== | ||
| + | TCP порты 5001..5008 соответствуют портам COM2-COM9, любые данные до 1000 символов прозрачно, без изменений передаются в обоих направлениях. | ||
| + | Порт COM1 используется для программирования. | ||
| + | ==== Карта памяти ==== | ||
| + | Блоки по 5 байт | ||
| + | 1.IP (4 из 5) | ||
| + | 2.Mask (4 из 5) | ||
| + | 3.Gate (4 из 5) | ||
| + | 4.Port (5 из 5) | ||
| + | 5.CRC (1 из 5) | ||
| + | 6.MaxReply (2 из 5) | ||
| + | 7.COM1 (4 из 5) | ||
| + | 8.COM2 (4 из 5) | ||
| + | 9.COM3 (4 из 5) | ||
| + | 10.COM4 (4 из 5) | ||
| + | 11.COM5 (4 из 5) | ||
| + | 12.COM6 (4 из 5) | ||
| + | 13.COM7 (4 из 5) | ||
| + | 14.COM8 (4 из 5) | ||
| + | 15.COM9 (4 из 5) | ||