|
|
关于PICNIC |
| ■关于PICNIC
2006年4月5日 16:39 更新
|
●PICNIC的概要所谓PICNIC/特征•回路图/动作确认时的必需物/PICNIC手册 1.1.1 所谓PICNICPICNIC是"PIC Network Interface Card" 的缩写,使用了 Microchip PIC16F877单片机可以连接以太网的I/O功能板。比起以前的ver.1这次使用的ver.2组件更加小型化,仅有700mm X 100mm (图片1)。
<图片1> 对应网络的PIC单片机板PICNIC ver.2
PICNIC是TriState公司的产品,可以从秋月电子通商购买 如果事先准备好这个组件连接周边机器用的接口,以及经由网络控制PIC单片机的并行输入输出的应用程序,就可以简单实现机器电源的控制及传感器信息的收集等各种各样的系统。 利用安装在PIC单片机上的固件中的简易http服务器,来实现经由网络对并行输入输出的控制•监视。这么一来客户端(web浏览器)的程序就不需编写,同时也不选择机种及OS。 另外因为PICNIC的网络接口控制(NIC)利用以太网。所以只需准备市场上贩卖的便宜的以太网用的网络设备(HUB等)和网线,就可以构筑所有的实验环境。不过如果要连接到外部网络(如WAN,互联网),则需要连接到局域网或ADSL或CATV互联网等。 另外,如果把PICNIC专用的控制协议(protocol)安装在客户端,就能够构筑不通过web浏览器的专用系统。有关控制用程序库可以从TriState公司的主页下载。 1.1.2 特征•回路图使用了Microchip公司制的 PIC16F877(RISC Enhanced x16、DIP300/40pin CMOS Flash 8bit微型控制器,统称87x系列)。数据表(原版)从这儿进入 使用了Realtek Semiconductor公司制的 NE2000(DP8390)兼容的 RTL-8019AS(10BASE-T 100pin/QFP one-chip Ethernet控制器,俗称蟹形芯片。 主要的LSI,芯片电阻,电容已经预先焊接在线路板上。因此组装时只要安装接插件类,DIP-IC插座,输入输出接插件,LED等就可以完成,非常简单。
<图1> 功能块图 <图2> 回路图(转载自TriState公司的数据表) ※附录・PIC16F877控制器是把RA端口作为功能板的模拟输入管脚,而把RB端口作为功能板的通用(数字)输入输出管脚。输入输出端口是回路图中的CN2接插件(100mil高26管脚) ・模拟输入管脚RA5连接着被安装在线路板上的摄氏线形温度传感器IC(LM35DZ)的输出(温度系数+10.0mV/℃)。由此可以监视功能板周围的温度(大概的室温) ・把LCD液晶显示面板模块(可选项)连接到CN5时,因为数字输出与CN2间共用部分RB端口,因此外部可以利用的端口数就减少了。 ・串行EEPROM93C46 (U2)是用来记录此PICNIC的以太网控制器的独一无二的MAC地址。 ・线路板上的跳线开关JP2用来选择在投入电源时,固件是执行「通常模式」,还是执行「引导模式(初期设定模式)」。 1.1.3 动作确认时的必需物・(电源适配器等)DC12V电源(推荐使用秋月电子的DC12V电源适配器) ・需要有10BASE-T网卡的电脑(在引导模式下的确认需要由RS-232C串行接口连接)(图片2) ・Ethernet 网络集线器(HUB)装置与直连网线(2根) ・仅1对1连接的时候,用交叉网线。 ・WEB浏览器 ・开发固件的时候,需要MPLAB(MPASM)开发环境和PIC烧写器。 ・开发客户端程序的时候,需要Visual BASIC,Visual C++,GNU gcc等程序开发环境。
<图片2> 与电脑连接进行动作确认时的情形 如果正常动作,则用浏览器访问时出现这样的网页 1.1.4 PICNIC手册・通信方式:Ethernet 10BASE-T ・访问方式:CSMA/CD ・Ethernet NIC:RTL-8019AS(兼容NE2000) ・控制CPU:PIC16F877-20/P(20MHz时钟频率) ・内藏接口: ・固件内藏协议:ARP、DHCP、ICMP、IP、UDP、TCP、HTTP(仅限GET方法) ・通信缓冲区:16K字节(Ethernet内部的环形缓冲区) ・默认IP地址:192.168.0.200/24 ・周边功能:RS-232C串行接口(SP232ACP),温度传感器(LM35DZ),16X2 LCD显示模块(SC1602B,可选项) ・LED显示:I/O端口状态x4ch,Ethernet-NIC状态LEDx3(TX,RX,LINK) ・电源:DC 8-12V 100mA ●PICNIC的固件固件内藏协议堆栈/固件的下载/固件的概要/固件的初期设定顺序 1.2.1 固件内藏协议堆栈在本PICNIC的固件里实际配置的协议堆栈有如下 ・Ethernet帧收送信处理 1.2.2 固件的下载请从下面的地址下载PICNIC ver.2用的对应MPASM汇编编译器的固件(ver1.2) 1.2.3 固件的概要固件全部有7380行编码。其大概地构成如下: 21~37行:各种常量的定义 470行:程序开始处(ORG 0) 820~889行:主循环 902~1018行:以太帧(frame)接收处理(RTL8019AS缓冲区的管理) 2328~2393行:A/D变换的输入处理 2771~3032行:有关RTL8019AS的初始化 3352~3578行:UDP→并行I/O的控制、A/D变换功能 3879~4024行:套接字的管理 4295~4369行:有关EEPROM的数据写入 4379~4548行:URL指定的CGI的解析处理 4651~4919行:启动例行程序(有关投入电源时的设定) 5297~5404行:引导模式・初始化例行程序 5952~6056行:当前的套接字状态的通知处理(现在未使用) 6139~6266行:在LCD面板上显示获得的IP地址的处理 6273~6424行:串行端口→UDP送信处理 7061~7258行:存储Web浏览器HTML格式的应答信息・格式的区域
由于以太帧长度的限制,无法一次传送全部的HTML格式的文本,故把它分割成了4块(从ESTAB0到ESTAB9共4次)送出。这些传送的处理由从1690行开始的TCP包处理序列来实现。 为了在以太网线断线,互联网不通,或各种协议的处理中陷入冻结状态时能够恢复,在时钟中断例行程序中,安装了自动复位功能。例如,在冻结大约15秒后强制恢复到TCP的LISTEN状态。 关于HTTP协议仅安装了GET方法部分。 1.2.4 固件的初期设定的顺序固件的启动例行程序(投入电源时的设定,4651行~)的设定顺序如下: (1)把初期设定时所需数据(IP地址设定等)从内藏EEPROM中复制到RAM (2)LCD液晶显示面板的初始化 (3)EthernetNIC(RTL8019AS)的初始化,及把CONFIG寄存器的内容装入NIC (4)从外置串行EEPROM93C46取得MAC地址 (5)把在(4)中取得的MAC地址写入NIC的PAR寄存器 (6)确认动作模式(通常or 引导)的跳线开关的状态。然后进入被选择模式的主例行程序 (7)如果有必要(IP=0.0.0.0的时候)从DHCP服务器获得IP地址,用广播发送DHCP协议的DISCOVER信息。 ※在完成上面处理后,就进入帧信息的收信待机状态。 ●PICNIC的使用方法利用web浏览器的远程I/O控制/LCD液晶模块/利用专用控制协议的测试程序 1.3.1 利用web浏览器的远程I/O控制在图3中显示了经由以太网,利用Microsoft Internet Explorer访问PICNIC的被分配的IP地址时的页面。
<图3> 利用web浏览器的远程I/O控制的页面例(HTML版) 远程I/O控制页面大致分为下面3部分。 (1)I/O Ports区(section)当前的I/O端口状态的显示。由于被显示的值没有实时更新的功能,故要取得当前的的状态时,需要按浏览器的「更新」按钮,或者单击此区中最下部的「reload」按钮。 作为端口状态,模拟输入端口(从RA0到RA3),温度传感器值(RA5,摄氏度值),数字I/O端口的输入输出状态被显示出来。 输出值的变更只能对RB2到RB7中被显示为OUT的端口。变更时只要点击[H]或者 [L]按钮,对应的值就会变更成那个值。 在这里假设服务器可以应答一个名为modify.cgi的CGI程序。当把 [输出端口=值] 作为URL的参数传递给服务器时,对应的输出就会被更改。例如:对这个PICNIC进行设定的时候,如果把URL指定为 http://160.252.131.19/modify.cgi?RB7=H ,则输出端口RB7被变更为High, 同时线路板上的对应的LED也被点灯。 有关用于I/O端口控制的URL指定归纳如下: [当前值的更新] [例:输出端口RB7 -> H的变更] [例:输出端口RB7 -> L的变更]
显示当前被设定的IP地址,子网掩码(subnet mask),网关IP地址,以及各种功能用的端口号。 图3的例中各被设定成:IP地址:160.252.131.19,子网掩码25位,网关:160.252.131.1 更改设定值时,把数值输入到对应的文本域中后点击[Save]按钮。然后必须切断再投入电源,或者按复位开关。 如果点击[Default]按钮,作为默认值会被设定为局域IP用的设定值,IP地址:192.168.0.200,子网掩码24位。 如果把IP地址设定成0.0.0.0,就进入从DHCP(Dynamic Host Configuration Protocol)服务器获得IP地址的模式。 有关网络设定用的URL指定归纳如下: [默认值] [返回初始值] (3)Status区显示包数及当前的IP地址。另外对于IP地址,只有是从DHCP获得的时候这个显示才有意义。 1.3.2 LCD液晶模块LCD液晶面板被装上时,当前的IP地址设定值就会被显示出来。另外当处于从DCHP服务器获得IP地址的模式,并且成功地获得的时候,获得的IP地址会被显示出来。 ※注意:在没有对LCD Port UDP:#设定值(即为0)时,面板上显示■■■■■。要显示IP地址,把这个值设定为如10000等。 不使用LCD面板的情况: 使用LCD面板的情况: 1.3.3 利用专用控制协议的测试程序TriState公司在web上发布了利有专用控制协议的Windows上的测试程序(pictest.exe)。 http://www.tristate.ne.jp/picnic/menu.html 从这儿下载试样程序(pictest)+安装程序的LZH格式文件 然后,利用Lhasa等工具解冻后执行setuo.exe进行安装。 从[开始]→[所有程序]执行PICNIC test,对IP地址,显示内容的再取更新间隔及LCD面板的端口号进行设定后,点击连接按钮。这么一来它就按照被设定的更新间隔与PICNIC连接,显示当时的输入输出状态。而PICNIC的LCD面板的第二行则会显示来自pictest的连接,更新的时刻。
<图4> 利用测试程序远程更新I/O状态的例子 ●PICNIC的专用控制协议可以从下面的TriState公司的网站下载用于各种平台•程序语言的控制API驱动程序。 上述的1.3.3测试程序(pictest.exe)也利用了windows上的PICNIC.DLL库及Visual C++开发的。 在本实习中专用控制协议不是实习的对象。请各自研究。 http://www.tristate.ne.jp/picnic/menu.html
|
|
wasaki@cs.shinshu-u.ac.jp |