/
atikbif
/
RelkonIDE
Обзор
Документация
Войти
/
atikbif
/
RelkonIDE
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
Doc/functions.html
260 строк
18 KB
kontel
Версия 7.1.0.0 для офлайн сборки
16 мар 2018, 11:18
16 мар 2018, 11:18
8d2824b
Код
Авторство
О чём код?
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Функции языка Релкон</title> <style> #header { background-color:black; color:white; text-align:center; padding:5px; } #content { float:left; padding:10px; } #prot { color:black; background-color:lightyellow; padding:5px; } table { border: 1px solid black; width: 100%; background-color: black; } th, td { text-align: left; border: 1px solid black; padding: 8px; background-color: azure; } th { background-color: aliceblue; color: black; } </style> </head> <body> <div id="header"> <h1>Функции языка Релкон</h1> </div> <div id="content"> <table> <tr> <th>прототип функции</th> <th>назначение</th> <th>комментарий</th> </tr> <tr> <td id="prot"><i>void <b>call</b>(unsigned char can, unsigned char* num)</i></td> <td>Аналогична выполнению команды модема ATD для номера num (в голосовом режиме)</td> <td>can: CAN_PC, CAN_PR</td> </tr> <tr> <td id="prot"><i>void <b>call7</b>(unsigned char can, unsigned char* num)</i></td> <td>Аналогична выполнению команды модема ATD для номера num (к началу номера автоматически добавляется +7) (в голосовом режиме)</td> <td>can: CAN_PC, CAN_PR</td> </tr> <tr> <td id="prot"><i>void <b>call_data</b>(unsigned char can, unsigned char* num)</i></td> <td>Аналогична выполнению команды модема ATD для номера num (в CSD режиме)</td> <td>can: CAN_PC, CAN_PR</td> </tr> <tr> <td id="prot"><i>void <b>call_data7</b>(unsigned char can, unsigned char* num)</i></td> <td>Аналогична выполнению команды модема ATD для номера num (к началу номера автоматически добавляется +7) (в CSD режиме)</td> <td>can: CAN_PC, CAN_PR</td> </tr> <tr> <td id="prot"><i>char <b>can_check</b>(request* r)</i></td> <td>Возвращает результат проверки ответа на запрос, сформированный ранее командой can_cmd (1 — ответ корректный, 0 — ошибка)</td> <td>Между функциями can_cmd и can_check необходима пауза для принятия данных от опрашиваемого устройства</td> </tr> <tr> <td id="prot"><i>void <b>can_cmd</b>(request* r)</i></td> <td>Посылка стандартного запроса, описываемого структурой request, в передающий буфер в режиме мастера</td> <td><code>struct{ unsigned char canal; unsigned char cmd; unsigned char plc_addr; unsigned short mem_addr; unsigned short amount; unsigned char* rx; unsigned char* tx;} request;</code><br>canal: CAN_PC, CAN_PR, CAN_MB<br>Поддерживаемые команды: <br>RD_RAM – чтение оперативной памяти контроллеров на базе CORTEX <br> RD_US – чтение памяти пользователя(область для диспетчеризации) контроллеров на базе CORTEX <br> RD_US_ASCII – чтение памяти пользователя(область для диспетчеризации) контроллеров на базе CORTEX (ASCII протокол) <br> RD_IO - чтение стандартных входов/выходов контроллеров на базе CORTEX <br> RD_RAM51 - чтение оперативной памяти контроллеров на базе AT89C51ED2 <br> RD_XRAM51 — чтение расширенной оперативной памяти контроллеров на базе AT89C51ED2 <br> RD_RAM51_ASCII - чтение оперативной памяти контроллеров на базе AT89C51ED2 (ASCII протокол) <br> RD_XRAM51_ASCII — чтение расширенной оперативной памяти контроллеров на базе AT89C51ED2 (ASCII протокол) <br> WR_RAM – запись оперативной памяти контроллеров на базе CORTEX <br> WR_US - запись памяти пользователя(область для диспетчеризации) контроллеров на базе CORTEX <br> WR_XRAM — запись расширенной оперативной памяти контроллеров на базе AT89C51ED2 <br> RD_HLD — чтение Holding регистров по протоколу Modbus RTU (Modbus код - 0x03) <br> RD_INP – чтение Input регистров по протоколу Modbus RTU (Modbus код - 0x04) <br> RD_DINP — чтение Input Status по протоколу Modbus RTU (Modbus код - 0x02) <br> RD_COILS — чтение дискретных выходов по протоколу Modbus RTU (Modbus код - 0x01) <br> WR_HLD — запись HOLDING регистров по протоколу Modbus RTU (Modbus код - 0x10) <br> WR_COIL — запись дискретного выхода по протоколу Modbus RTU (Modbus код - 0x05) </td> </tr> <tr> <td id="prot"><i>void <b>can_disable</b>(unsigned char can)</i></td> <td>Запрет стандартного протокола на канале can</td> <td>can: CAN_PC, CAN_PR, CAN_MB<br>Запрет протокола на канале PR приведёт к невозможности программирования контроллера без использования пульта</td> </tr> <tr> <td id="prot"><i>void <b>can_enable</b>(unsigned char can)</i></td> <td>Разрешение стандартного протокола на канале can</td> <td>can: CAN_PC, CAN_PR, CAN_MB</td> </tr> <tr> <td id="prot"><i>void <b>clear_buf</b>(unsigned char can)</i></td> <td>Обнуляет счётчик принятых байт и содержимое приёмного буфера канала can </td> <td>can: CAN_PC, CAN_PR</td> </tr> <tr> <td id="prot"><i>void <b>clear_rx_cnt</b>(unsigned char can)</i></td> <td>Обнуляет счётчик принятых байт в приёмном буфере канала can</td> <td>can: CAN_PC, CAN_PR, CAN_MB</td> </tr> <tr> <td id="prot"><i>void <b>del_sms</b>(unsigned char can,unsigned char i)</i></td> <td>Удаляет SMS из ячейки i памяти модема по каналу can</td> <td>can: CAN_PC, CAN_PR, CAN_MB</td> </tr> <tr> <td id="prot"><i>unsigned char <b>find</b>(unsigned char* str,unsigned char* buf, unsigned short n)</i></td> <td>Ищет строку str в первых n символах буфера buf</td> <td>Возвращает позицию строки в буфере в случае успеха, 0 - в случае неудачи</td> </tr> <tr> <td id="prot"><i>unsigned int <b>GetCRC16</b> (unsigned char* ptr,unsigned int cnt)</i></td> <td>Возвращает контрольную сумму CRC16 для первых cnt байт буфера ptr</td> <td></td> </tr> <tr> <td id="prot"><i>unsigned char* <b>get_can_rx_ptr</b>(unsigned char can)</i></td> <td>Возвращает указатель на приёмный буфер канала can</td> <td>can: CAN_PC, CAN_PR, CAN_MB<br>Размер буфера - 512 байт</td> </tr> <tr> <td id="prot"><i>unsigned char* <b>get_can_tx_ptr</b>(unsigned char can)</i></td> <td>Возвращает указатель на передающий буфер канала can</td> <td>can: CAN_PC, CAN_PR, CAN_MB<br>Размер буфера - 512 байт</td> </tr> <tr> <td id="prot"><i>unsigned short <b>get_ee_addr</b>(unsigned short index)</i></td> <td>Возвращает адрес переменной EE в FRAM памяти по номеру переменной index</td> <td>для прямого доступа к заводским установкам во FRAM памяти</td> </tr> <tr> <td id="prot"><i>unsigned char <b>get_index</b>(unsigned char can)</i></td> <td>Возвращает номера ячейки памяти, содержащей входящее sms</td> <td>can: CAN_PC, CAN_PR, CAN_MB</td> </tr> <tr> <td id="prot"><i>void <b>get_number</b>b>(unsigned char* ptr)</i></td> <td>Сохраняет номер отправителя последней прочитанной SMS в буфер ptr</td> <td>Вызывать необходимо после вызова функции get_sms_text()<br>Буфер ptr должен иметь размерность не менее 11 байт</td> </tr> <tr> <td id="prot"><i>unsigned <b>short get_rx_cnt</b>(unsigned char can)</i></td> <td>Возвращает количество принятых байт в приёмном буфере канала can</td> <td>can: CAN_PC, CAN_PR, CAN_MB</td> </tr> <tr> <td id="prot"><i>unsigned char <b>get_sms_text</b>(unsigned char can,unsigned char* ptr,unsigned char max)</i></td> <td>Сохраняет содержимое входящего SMS из приёмного буфера канала CAN в буфер ptr</td> <td>can: CAN_PC, CAN_PR, CAN_MB<br>max - максимальная длина сообщения за вычетом пароля</td> </tr> <tr> <td id="prot"><i>void <b>get_time</b>(void)</i></td> <td>Возвращает текущее время в структуру times</td> <td><code>struct {unsigned char sec; unsigned char min; unsigned char hour; unsigned char date; unsigned char month; unsigned char year; unsigned char day;} times;</code></td> </tr> <tr> <td id="prot"><i>unsigned char <b>print_ip_buf</b>(unsigned char ip1, unsigned char ip2, unsigned char ip3, unsigned char ip4, unsigned char* ptr)</i></td> <td>Печатает ip адрес (ip1.ip2.ip3.ip4) в буфере ptr</td> <td>Функция возвращает количество затраченных знакомест<br></td> </tr> <tr> <td id="prot"><i>unsigned char <b>print_short_buf</b>(short val,unsigned char* ptr)</i></td> <td>Печатает знаковую двухбайтную переменную val в буфере buf</td> <td>Функция возвращает количество затраченных знакомест(с учётом возможного минуса)</td> </tr> <tr> <td id="prot"><i>unsigned char <b>print_long_buf</b>(unsigned long val,unsigned char* buf)</i></td> <td>Печатает безнаковую переменную val в буфере buf</td> <td>Функция возвращает количество затраченных знакомест(может занять до 5 знакомест)<br>print_long_buf(times.hour,&my_buf[14]);</td> </tr> <tr> <td id="prot"><i>void <b>print_sms_var</b>(short value, unsigned char *sms_buf, unsigned char width, unsigned char point_pos)</i></td> <td>Печатает переменную value в буфере sms_buf</td> <td>width - количество знакомест под вывод переменной<br>point_pos - число символов после запятой(для формирования дробных значений)<br>print_sms_var(v1,&sms_buf[10],5,0);</td> </tr> <tr> <td id="prot"><i>void <b>read_fram</b>(unsigned short addr, unsigned char size, unsigned char* ptr)</i></td> <td>Читает size байт FRAM памяти в буфер ptr начиная с адреса addr</td> <td>Операция медленная. Вызов только из 100 мс цикла. Чтение не более 32 байт</td> </tr> <tr> <td id="prot"><i>unsigned char <b>read_sms</b>(unsigned char can,unsigned char i)</i></td> <td>Читает содержимое входящего SMS в ячейке памяти i по каналу can во внутренний буфер</td> <td>can: CAN_PC, CAN_PR, CAN_MB</td> </tr> <tr> <td id="prot"><i>char <b>search</b>(unsigned char can,unsigned char* ptr)</i></td> <td>Ищет строку ptr в приёмном буфере канала can</td> <td>can: CAN_PC, CAN_PR, CAN_MB<br>Возвращает 1 в случае успеха, 0 - в случае неудачи<br>if(search_str(CAN_PC,"OK")) #OUT0.0=1;</td> </tr> <tr> <td id="prot"><i>void <b>send</b>(unsigned char can,unsigned char* ptr, unsigned short cnt)</i></td> <td>Посылает cnt байт из буфера ptr в канал can</td> <td>can: CAN_PC, CAN_PR, CAN_MB</td> </tr> <tr> <td id="prot"><i>void <b>send_sms</b>(unsigned char can, unsigned char* num, unsigned char* data)</i></td> <td>Отправка тела SMS в передающий буфер канала can</td> <td>can: CAN_PC, CAN_PR<br>num - номер телефона получателя (без +7 или 8)<br>data - содержимое сообщения<br>send_sms(CAN_PC,”9209170680”,”Тестовое сообщение”);<br>Вызывается с задержкой после вызова write_head</td> </tr> <tr> <td id="prot"><i>void <b>send_str</b>(unsigned char can,char* ptr)</i></td> <td>Посылает строку ptr в канал can</td> <td>can: CAN_PC, CAN_PR, CAN_MB<br>send_str(CAN_PC,"AT\r\n");</td> </tr> <tr> <td id="prot"><i>void <b>set_exchange_net_addr</b>(unsigned char plcNum, unsigned char netAddr)</i></td> <td>Связывает внутренний индекс контроллера plcNum при межконтроллерном обмене с реальным сетевым адресом netAddr</td> <td>Необходимо использовать только если адрес опрашиваемого контроллера выходит за границы диапазона [1..8]</td> </tr> <tr> <td id="prot"><i>void <b>set_password</b>(unsigned char* ptr)</i></td> <td>Задаёт шестизначный пароль для входящих SMS</td> <td>set_password("123456");</td> </tr> <tr> <td id="prot"><i>void <b>set_time</b>(void)</i></td> <td>Устанавливает время в соответствии с содержимым структуры wr_times</td> <td><code>struct {unsigned char sec; unsigned char min; unsigned char hour; unsigned char date; unsigned char month; unsigned char year; unsigned char day;} wr_times;</code></td> </tr> <tr> <td id="prot"><i>void <b>udp_cmd</b>(udp_request* r)</i></td> <td>Посылка запроса в сеть Ethernet по протоколу UDP, описываемого структурой udp_request</td> <td><code>struct{ unsigned char cmd; unsigned char ip[4]; unsigned short addr; unsigned short cnt; unsigned char* rx; unsigned char* tx; unsigned char result} udp_request;</code><br>Поддерживаемые команды: <br>UDP_RD_USER – чтение памяти пользователя <br> UDP_WR_USER – запись памяти пользователя <br> </tr> <tr> <td id="prot"><i>void <b>write_fram</b>(unsigned short addr, unsigned char size, unsigned char* ptr)</i></td> <td>Пишет по адресу addr FRAM памяти size байт из буфер ptr </td> <td>Операция медленная. Вызов только из 100 мс цикла. Запись не более 32 байт</td> </tr> <tr> <td id="prot"><i>void <b>write_head</b>(unsigned char can)</i></td> <td>Отправка заголовка SMS в передающий буфер канала can</td> <td>can: CAN_PC, CAN_PR</td> </tr> </table> </div> </body> </html>