forked from xuos/xiuos
				
			add inovance am401 cpu1608tn serial test app
This commit is contained in:
		
							parent
							
								
									c4510ba3e1
								
							
						
					
					
						commit
						07b87016ba
					
				| 
						 | 
				
			
			@ -1,3 +1,3 @@
 | 
			
		|||
SRC_FILES := inovance_am401_cpu1608tn_ethernet.c
 | 
			
		||||
SRC_FILES := inovance_am401_cpu1608tn_ethernet.c  inovance_am401_cpu1608tn_uart.c
 | 
			
		||||
 | 
			
		||||
include $(KERNEL_ROOT)/compiler.mk
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,64 @@
 | 
			
		|||
/*
 | 
			
		||||
 * Copyright (c) 2022 AIIT XUOS Lab
 | 
			
		||||
 * XiUOS is licensed under Mulan PSL v2.
 | 
			
		||||
 * You can use this software according to the terms and conditions of the Mulan PSL v2.
 | 
			
		||||
 * You may obtain a copy of Mulan PSL v2 at:
 | 
			
		||||
 *        http://license.coscl.org.cn/MulanPSL2
 | 
			
		||||
 * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
 | 
			
		||||
 * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
 | 
			
		||||
 * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
 | 
			
		||||
 * See the Mulan PSL v2 for more details.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @file inovance_am401_cpu1608tn_ethernet.c
 | 
			
		||||
 * @brief PLC inovance am401 app
 | 
			
		||||
 * @version 3.0
 | 
			
		||||
 * @author AIIT XUOS Lab
 | 
			
		||||
 * @date 2023.5.15
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include <control.h>
 | 
			
		||||
 | 
			
		||||
extern int Adapter4GActive(void);
 | 
			
		||||
 | 
			
		||||
void ControlInovanceam401UartTest(void)
 | 
			
		||||
{
 | 
			
		||||
    int i, j = 0;
 | 
			
		||||
    int read_data_length = 0;
 | 
			
		||||
    uint8_t read_data[128] = {0};
 | 
			
		||||
 | 
			
		||||
#ifdef CONNECTION_ADAPTER_4G
 | 
			
		||||
    Adapter4GActive();
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
    ControlProtocolType modbus_rtu_protocol = ControlProtocolFind();
 | 
			
		||||
    if (NULL == modbus_rtu_protocol) {
 | 
			
		||||
        printf("%s get modbus rtu protocol %p failed\n", __func__, modbus_rtu_protocol);
 | 
			
		||||
        return;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    printf("%s get modbus rtu protocol %p successfull\n", __func__, modbus_rtu_protocol);
 | 
			
		||||
 | 
			
		||||
    if (CONTROL_REGISTERED == modbus_rtu_protocol->protocol_status) {
 | 
			
		||||
        ControlProtocolOpen(modbus_rtu_protocol);
 | 
			
		||||
 | 
			
		||||
        for (;;) {
 | 
			
		||||
            read_data_length = ControlProtocolRead(modbus_rtu_protocol, read_data, sizeof(read_data));
 | 
			
		||||
            printf("%s read [%d] modbus rtu data %d using receipe file\n", __func__, i, read_data_length);
 | 
			
		||||
            if (read_data_length) {
 | 
			
		||||
                for (j = 0; j < read_data_length; j ++) {
 | 
			
		||||
                    printf("j %d data 0x%x\n", j, read_data[j]);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            i++;
 | 
			
		||||
            memset(read_data, 0, sizeof(read_data));
 | 
			
		||||
            PrivTaskDelay(10000);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        //ControlProtocolClose(modbus_rtu_protocol);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
PRIV_SHELL_CMD_FUNCTION(ControlInovanceam401UartTest, inovance am401 uart Demo, PRIV_SHELL_CMD_MAIN_ATTR);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,80 @@
 | 
			
		|||
{
 | 
			
		||||
     "device_id": 1,
 | 
			
		||||
    "device_name": "INOVANCE_am401_RTU",
 | 
			
		||||
    "communication_type": 1,
 | 
			
		||||
    "serial_config": {
 | 
			
		||||
        "station": 1,
 | 
			
		||||
        "baud_rate": 9600,
 | 
			
		||||
        "data_bits": 8,
 | 
			
		||||
        "stop_bits": 1,
 | 
			
		||||
        "check_mode":3
 | 
			
		||||
    },
 | 
			
		||||
    "protocol_type": 3,
 | 
			
		||||
    "read_period": 2000,
 | 
			
		||||
    "read_item_list": [
 | 
			
		||||
        {
 | 
			
		||||
            "value_name": "q00",
 | 
			
		||||
            "value_type": 1,
 | 
			
		||||
            "function_code": 1,
 | 
			
		||||
            "start_address": 0,
 | 
			
		||||
            "quantity": 1
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
            "value_name": "q01",
 | 
			
		||||
            "value_type": 1,
 | 
			
		||||
            "function_code": 1,
 | 
			
		||||
            "start_address":1,
 | 
			
		||||
            "quantity": 1
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
            "value_name": "q10",
 | 
			
		||||
            "value_type": 1,
 | 
			
		||||
            "function_code": 1,
 | 
			
		||||
            "start_address": 8,
 | 
			
		||||
            "quantity": 1
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
            "value_name": "mw100",
 | 
			
		||||
            "value_type": 3,
 | 
			
		||||
            "function_code": 3,
 | 
			
		||||
            "start_address": 100,
 | 
			
		||||
            "quantity": 1
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
            "value_name": "mw101",
 | 
			
		||||
            "value_type": 3,
 | 
			
		||||
            "function_code": 3,
 | 
			
		||||
            "start_address": 101,
 | 
			
		||||
            "quantity": 1
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
            "value_name": "md200",
 | 
			
		||||
            "value_type": 4,
 | 
			
		||||
            "function_code": 3,
 | 
			
		||||
            "start_address": 400,
 | 
			
		||||
            "quantity": 2
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
            "value_name": "md201",
 | 
			
		||||
            "value_type": 4,
 | 
			
		||||
            "function_code": 3,
 | 
			
		||||
            "start_address": 402,
 | 
			
		||||
            "quantity": 2
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
            "value_name": "md300",
 | 
			
		||||
            "value_type": 9,
 | 
			
		||||
            "function_code": 3,
 | 
			
		||||
            "start_address": 600,
 | 
			
		||||
            "quantity": 2
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
            "value_name": "md301",
 | 
			
		||||
            "value_type": 9,
 | 
			
		||||
            "function_code": 3,
 | 
			
		||||
            "start_address": 602,
 | 
			
		||||
            "quantity": 2
 | 
			
		||||
        }
 | 
			
		||||
        
 | 
			
		||||
    ]
 | 
			
		||||
}
 | 
			
		||||
		Loading…
	
		Reference in New Issue