在储能系统应用中,通过4G上云是非常基础和常见的应用需求,由于业务和场景的多样性,4G模块也多种多样,本文将详细介绍如何在EM储能网关中玩转4G模块。
移植准备
1. 硬件选择
本文以EM系列中的EM-500储能网关作为开发主体,如图1所示,EM系列的产品带有PCIE扩展槽及其他丰富的接口,PCIE扩展槽里面预留USB接口,方便对PCIE模块开发使用,使用时只需将4G模块插入PCIE槽即可。
图1 EM-500储能网关
2. 已适配的产品
目前在EM-500已经适配的4G模块有:L610-CN、L610-EU、NL668、EC20、EC200U-CN、EC200A-CN、EG21-G、EG25-G、SLM770A、BG95-M3、EG912U-GL。
3. 4G模块调试接口
当我们插入4G模块后会在/dev/生成若干个USB调试接口,设备名字一般为:/dev/ttyUSBX(X=0,1,2….x),如果没有则输入lsusb命令查看是否识别到USB设备,如图2调试接口所示,目前插入的4G模块的PID为2c7c,VID为0125,厂家为移远,调试接口有4个。
图2 调试接口
如果lsusb可以查看到设备时,/dev/没有相应的调试接口时,可以将4G模块的PID VID输入到new_id这节点,输入以下命令(以图2的PID VID为例):
echo "2c7c 0125 ff" > /sys/bus/usb-serial/drivers/option1/new_id
成功内核会输出类似以下log:
root@EM500:~# echo "2c7c 0125 ff" > /sys/bus/usb-serial/drivers/option1/new_id
[ 213.905997] option 2-1:1.0: GSM modem (1-port) converter detected
[ 213.906609] usb 2-1: GSM modem (1-port) converter now attached to ttyUSB0
[ 213.907126] option 2-1:1.1: GSM modem (1-port) converter detected
[ 213.909049] usb 2-1: GSM modem (1-port) converter now attached to ttyUSB1
[ 213.909491] option 2-1:1.2: GSM modem (1-port) converter detected
[ 213.919056] usb 2-1: GSM modem (1-port) converter now attached to ttyUSB2
[ 213.924366] option 2-1:1.3: GSM modem (1-port) converter detected
[ 213.927619] usb 2-1: GSM modem (1-port) converter now attached to ttyUSB3
然后在/dev/就可以看到调试接口了,得到调试接口就可以使用microcom或者catecho进行4G模块AT指令调试,例如输入AT指令查看模块固件版本,如下图3 调试演示所示:
图3 调试演示
拨号上网
1. 拨号方式及选择
目前4G拨号方式有PPP拨号、ECM拨号、Gobinet拨号、QMI拨号等。在EM系列使用的是ECM拨号,ECM拨号通过利用4G网络的高速性能、广阔覆盖范围、低延迟、高带宽支持和移动性等优点,为各种应用场景提供了可靠、快速、稳定的数据连接。这使得设备能够实现高效的数据传输和实时通信,满足不同行业和领域的需求,且不需要移植任何的工具,像PPP、Gobinet、QMI这些拨号方式,不同的4G模块厂家都有不同的拨号工具,移植起来比较繁琐。
2. ECM拨号上网ECM上网很简单,只需要使用AT指令即可完成,如下演示移远EC20模块在ECM模式下上网:首先切换ECM模式
cat /dev/ttyUSB2 &
echo -e "AT+QCFG="usbnet",1rn" > /dev/ttyUSB2
切换完成后需要对模块进行复位,输入以下命令:
echo 498 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio498/direction
echo 1 > /sys/class/gpio/gpio498/value
echo 0 > /sys/class/gpio/gpio498/value
复位完成后ifconfig -a可以看到一个网卡,使用dhclient <网卡名>获取ip后即可上网,如图4 网络通信所示。
图4 调试演示每种模块或者厂家切换到ECM 的AT命令是不一样,目前已适配的4G模块的ECM切换命令如图5 ECM切换命令所示。
图5 ECM切换命令有些4G模块是不需要拨号的,当切换到ECM后,重启后则会自动拨号,有些4G模块则需要手动拨号,具体区分如图6 ECM拨号所示。
图6 ECM拨号
手动拨号时需要根据SIM卡的运营商来进行切换,切换完后才能进行拨号,对应的AT指令如下:
移动:echo -e "AT+CGDCONT=1,"IP","CMNET"rn" > /dev/ttyUSB0
电信:echo -e "AT+CGDCONT=1,"IP","CTNET"rn" > /dev/ttyUSB0
联通:echo -e "AT+CGDCONT=1,"IP","3GNET"rn" > /dev/ttyUSB0
以下以EC200U-CN作为演示,如图 7 EC200U-CN拨号上网所示。
图7 EC200U-CN拨号上网
设置及问题排查
1. band 号设置
我国对应的band号如图8 band号分布所示:
图8 band号分部
同样是每家厂商对应设置band号是不一样的,以移远的模块(EG912U-GL)为例,输入以下指令可以查看现在开启的band号。
root@em-500:~# cat /dev/ttyUSB0 &
root@em-500:~# echo -e "at+qcfg="band"rn" > /dev/ttyUSB0
+QCFG: "band",0xf,0x2000001e20b0f18df
OK
root@em-500:~#
其中0x2000001e20b0f18df为目前启用的band号,这里要把0x2000001e20b0f18df换算成二进制,1是打开,0是关闭,第0位是band1,第1位为band2,以此类推,现在EG912U-GL开启的band号有(列举一部分):band1,band2,band3,band4,band5,band7,band8,band12等。输入以下命令可以设置band号,如下关掉band1-band8,设置时不需要带上0x。
root@em-500:~# echo -e "at+qcfg="band",f,2000001e20b0f1800rn" > /dev/ttyUSB0
OK
root@em-500:~#
2. 网卡名称问题
当切换到ECM后,会生成一些enxxxxxx之类的稀奇古怪的网卡名字,主要原因是被系统的rules给重名命了,如下内核打印可知,一般来说切换到ECM后网卡的名字为usbX(X=0,1,2…x)。
cdc_ether 2-1:1.0 enx024bb3b9ebe5: renamed from usb0
解决方法如下:
修改80-net-setup-link.rules内容,将NAME=”$env{ID_NET_NAME}” 里的ID_NET_NAME改成ID_NET_SLOT后,重启设备就可以了。
打开80-net-setup-link.rules,如下:
vi /lib/udev/rules.d/80-net-setup-link.rules
图9 修改网卡重命名
3. 网络不通排查
当dhclient获取到ip后ping不到百度,提示以下错误:
ping: www.baidu.com: Temporary failure in name resolution
可能是DNS不对或是模块拨号失败导致ping不出去,具体原因可以先ping 114.114.114.114或者ping 8.8.8.8,如果不能ping通则修改DNS,如下:
vi /etc/resolv.conf
#注释和添加以下内容:
#注释掉:
#nameserver 127.0.0.53
#options edns0
#添加:
nameserver 114.114.114.114
nameserver 8.8.8.8
然后再ping 百度即可,如果改完还是ping 不通则输入往USB调试接口输入AT+CSQ看下信号,信号太低也可能导致ping不出去,这种情况接上天线多ping几次就行,如图10 ping测试所示:
图10 ping测试
如果网络还是不通可以使用以下AT指令来排查网络不通的原因:
- AT+CSQ:查询信号质量。如果返回值较低,表示信号弱,如果为99代表无信号。AT+CEREG?:查询EPS注册状态。类似于AT+CREG?,但适用于LTE网络。AT+COPS?:查询可用运营商列表。如果返回值为空或不正确,表示可能存在运营商选择或配置问题。AT+CGACT?:查询PDP上下文激活状态。如果返回值为0,表示PDP上下文未激活,可能需要重新激活。AT+CGPADDR:查询PDP地址。如果返回值为空,表示未获得有效的IP地址,可能是APN或其他数据连接设置问题。AT+CGDCONT?:查询PDP上下文配置。确保PDP上下文配置正确,包括APN设置等。AT+COPS=?:查询可用运营商列表。使用此指令可以获取可用的运营商列表,并选择合适的运营商进行注册。AT+CIMI:查询国际移动用户识别码(IMSI)。IMSI是SIM卡的唯一标识号码,确保SIM卡插入正确并且正常工作。AT+CPIN?:查询PIN码状态。与之前提到的一样,用于检查SIM卡的PIN码状态。AT+CREG?:查询注册状态。如果返回值为0或2,表示未注册或正在尝试注册,可能是网络连接导致的问题。AT+CGATT?:查询附着状态。如果返回值为0,表示未附着到网络,可能需要重新附着。AT+CGREG?:查询GPRS注册状态。如果返回值为0或2,表示未注册或正在尝试注册,可能是网络连接导致的问题。
部分正常情况调试截图如图11 调试截图所示。
图11 调试截图