可编程控制器在潜艇集中控制系统中的应用
2008-01-29,,,
,,,
(海军工程大学 船舶与动力学院,武汉 430033)
集中控制系统是舰船自动化领域的一个重要组成部分。目前模拟舰艇上的集中控制系统的技术方案多种多样,文中采用PLC工业控制网络,利用PLC与外设的串口通讯和逻辑量控制来实现控制功能,并着重介绍PLC与单片机串行通信的设计,具有经济性能好、硬件电路结构简单、工作安全可靠性高的特点。
1 集中控制系统PLC控制总体设计及通讯方式的实现
1.1 总体设计
针对集中控制系统的要求,它包含大量的控制开关和相对应的指示灯以及显示潜艇状态的四块指针仪表,PLC可以对大量的逻辑量输入输出进行控制,同时可以通过串口通讯与驱动仪表的单片机之间的信息传递[1]。
整个网络的主要设备为:一台OMRON CJ1M CPU13 PLC、一台微型机作为软件设计和监控平台、网络交换机、RS-232电缆。
PLC通讯口出来的总线分别通过RS-232电缆和以太网和控制系统的驱动仪表的单片机以及计算机通讯[2]。PLC与控制系统仪表之间通过RS-232总线进行协议通讯[3],PLC和计算机终端通过以太网进行通讯。
1.2 单片机的电路设计
驱动仪表的单片机主要由MAX232CPE模块接收和发送由串口输入的信号;AT89C52PI、82C55A模块初始化通信端口和编写程序;M-S X12017模块接收8255输出的数据并控制仪表转动。
1.3 通讯协议的设定和调试
在OMRON CJ1M PLC网络通讯中,由于只有一个通讯口,波特率只支持9 600 b,因此波特率设置为9 600 b。主程序流程图见图1。RS-232通信程序流程图见图2。
图1 主程序流程
图2 RS-232通信程序流程
用Visual C++语言实现仪表驱动,程序主要分为两部分,在第一部分中定义由8255输出的数据类型和寄存地址,初始化单片机接收的数据并设置串口通信协议;第二部分为单片机主程序即仪表指针正、反转的控制及指针指示数据的反馈校对控制。在应用过程中指针指示数据的准确性是极为关键的,这部分程序中主要引用了数据寄存器SBUF,单片机将目标数据存放在SBUF寄存器中,仪表指针所指示的输出数据也反馈到SBUF中与目标值进行比较,如果数值相同,则中指程序,清空SBUF寄存器,如果数值不同,则根据比较结果的大(小)自动加(减)一,知道数据相同,完成输出。由于篇幅原因,以下只介绍初始化和通信部分的程序:
#define COM8255_1 XBYTE[0x8003]
#define PA8255_1 XBYTE[0x8000]
#define PB8255_1 XBYTE[0x8001]
#define PC8255_1 XBYTE[0x8002]
//定义8255输出端口及地址PA为8000H,PB为8001H,PC为8002H,全输出为8003H
uchar rece_data[25];
uchar r_in=0,rr;
uchar data0=0xff,data1=0xff;
//向8255先后输入0和1启动8255
int num[8]={0},mynum0=0,mynum1=0,mynum2=0,mynum3=0,mynum4=0,mynum5=0,
mynum6=0,mynum7=0;
bit flag=1,cr=0;
//数据初始化
void check_num(void);
void init_8255(void)
{
COM8255_1=0x80;;
}
//初始化8255
void init_com(void) //设置串口通讯协议
{
TMOD=TMOD|0x20;
TL1=0xfd; //设置9600bit/s
TH1=0xfd;
PCON=0x00; //SMOD=0
TR1=1; //奇校验
EA=1; //8数据位
ES=1; //设定1个停止位
SCON=0x50; //选择串行方式
}
2 集中控制系统的设计
2.1 仪表部分的控制设计
本设计是通过PLC向驱动仪表的单片机写入脉冲指令来控制仪表。
1) 数据传递格式
从RS-232传输来看,CJ1M PLC只是传送文字码,所以确定以下写入单片机的数据格式:
“@” +“F”或“S”+数据字符串+ “!
起始字头+ 标 志 + 数 据 +结束标志
按照要求设置PLC上位机链接端口栏内的通信设置的波特率和格式,通信模式以及传递信息的初始码和结束码,见图4。
图3 PLC上位机链接端口设置
系统仪表部分包含3个仪表4个指针,上位机向驱动仪表的单片机写数据,将4个指针分为两组,故分组发送指令:
第一组数据:标志为F(46H)
第二组数据:标志为S(53H)
数据:脉冲指令,绝对位置脉冲,由高位向低位顺序发送。(5个字节,5个ASCII码)
例如:1234 发送字节为“+”“1”“2”“3”“4”
-1234发送字节为“-”“1”“2”“3”“4”
2) 软件调试
CX-Programmer软件是专门用来进行OMRON系列PLC编程、调试、诊断和监控的,它具有制作程序、对可编成控制器CPU的写入/读出、监视、调试等功能。
由于仪表指针是通过PLC向单片机传递脉冲量而实现转动的,要保证仪表“零位”在脉冲“0”左右有限区间内,因此,在调试过程中,将要发送到单片机的脉冲量强制设置在数据寄存器D000-D005(共6个字节的ASCII码)中,通过CX-Programmer的串行通信(发送)指令传递到单片机中以调试仪表指针的状态。
数据传送程序如下:
LD P-On
TXD(236) D0 D200 6
END
其中TXD(236)指令为串口通信发送指令,它有三个参数,第一个为原起始字,第二个为控制字,第三个为字节数,程序表示把从D0开始到D5的六个字节通过串口传送。
2.2 PLC选型及逻辑量控制
本模拟系统绝大多数控制是采用逻辑量的控制,根据开关量输入160点,开关量输出252点,考虑到I/O留10%的余量。因此确定采用CJ1M CPU13可带640点的PLC。
本模拟系统的主要特点是连锁关系多而复杂,尤为关键的是操纵潜艇是不允许有一点错误出现的。举例说明:两个相同的开关打开的顺序不同,在信号显示区会显示截然不同的结果,有的开关命令会在某些操纵进行中不能执行。所以在设计系统过程中不仅要考虑到正确执行操纵者输入的指令,而且要考虑如何拒绝执行操纵者输入的误操作指令,即让操作者知道此次操作是错误的,达到纠错的目的,从而使受训学员进一步了解系统。所以在系统逻辑量控制中使用大量的工作位来记录不能保持状态的开关以及延时指令(TIM)实现指示灯延时开关,部分程序内容举例如下:
LD 0.12 (打开开关A)
SET w0.00 (记录开关A打开的状态)
LD 0.11 (关闭开关A)
AND w0.00
TIM 0015 #30 (延时30秒)
LD T0015
AND 1.01 (打开开关B)
SET 12.15 (打开指示灯C)
RSET w0.00 (清除打开开关A状态的记录)
3 结束语
结合对集中控制系统的要求,提出一种相对简单且易于实现、编程容易且功能全面的集中控制系统设计及实施方案。系统采用一台OMRON CJ1M CPU13 PLC与一台计算机构成集中控制系统的基本框架,通过以太网实现PLC与上位机通信并分别利用串行通讯和逻辑量控制实现了对各个被控系统的控制,该方案目前已经在实验室环境下完成了系统的设计以及调试。
[1] 吴 震.中小型船舶主机遥控系统中PLC的应用[J].广东造船,2001(3):26-29.
[2] 郭宗仁.可编程序控制器应用系统设计及通信网络技术[M].,北京:人民邮电出版社,2000.
[3] 范逸之,廖锦棋.Visual Basic.NET 自动化系统监控——RS-232串行通信[M].北京:清华大学出版社,2006.