杭州德联科技股份有限公司 浙江杭州 310000
摘要:目前,我国PLC市场大部分被占领,这些可编程逻辑控制器的CPU价格并不便宜,扩展模块的价格也比CPU高,甚至更高。因此本文就上述论点对S7-200PLC模拟量编程探析。
关键词:S7200PLC;模拟量;编程探析
1 S7200PLC模拟量编程电路原理
数据采集模块电路原理图如图1所示。每个模块有一个零点校准通道和8个测量通道,可连接8个热阻温度传感器通道。8路电流和电压或7路热电偶温度传感器和1路冷端补偿信号。传感器类型可由软件选择。每个通道都有各种传感器的转换电路、滤波器和保护电路。模拟开关由89C52单片机控制,选择各传感器测量电路,经放大电路放大后送入4位半a/D转换器ICL7135。ADC的基准电压由基准源集成电路MC1403及其分压器提供。
.png)
图1 数据采集模块电路原理图 图2 半字节输出时序
单片机采集的数据经校准、滤波、参考补偿(热电偶)和线性化处理后,转换成相应的温度数字量。单片机每2.16秒(带滤波)或0.72秒(不带滤波)完成一次以上操作,并自动刷新内部RAM。该模块的标准异步并行输出接口为由光耦隔离的P20~p27数据线d0~D7,t0为通过光耦输出的选通信号STB,in+。In为外设请求信号,光耦隔离后输入微控制器的INT1引脚。该模块的RS485串行接口电路通过高速光耦与单片机隔离。
2 S7200PLC模拟量编程时序数据采集
模块内部有一个控制字节,可以选择无条件字节输出或半字节输出,请求字节输出和半字节输出,半字节输出与字节输出相比使用口线少,但传送次数增多,占用时间长。对于温度采集半字节输出可以节约PLC的DI,降低造价。使用请求半字节输出时序如图2所示,Vw为请求信号,为ON时请求模块输出次数据。
选通信号STB高电平和低电平时间各为10ms(默认值,可以通过设置改变选通时间)。选通信号STB可以是上升沿选通,也可以是下降沿选通,由模块内的拨码开关选择。每个通道2个字节数分4个半字节输出,依次由低到高。8个通道共16个字节数,总共需要连续输出32个STB,脉冲,输出时间为640ms。如果无条件方式输出数据,则不需要请求信号,输出时序与请求方式相同。
为西门子S7220以请求方式半字节方式连接多个模块的方连线图。模块并口无输出时为开路,可以将几个模块输出并联起来,以总线形式连接到PLC的开关量输入端,模块D0~D3连接到PLC的11.0~1.3,STB接PLC的10.0,10.0应能引起中断,三个模块的请求输入端IN+分别连接到PLC的开关量输出Q0.0~Q0.2,PLC按顺序定时给出请求信号,请求模块依次将数据送出,模块的输出时序如图3所示。
.png)
图3 模块的输出时序
.png)
图4 通信时序
编程使PLC的10.0每次的上升沿引起中断,在中断程序中读入11.0~1.3的数据,根据读入的次数、通道计数和所请求的模块,将各模块的各通道数据存入相应的寄存器中。连接N个模块需要占用PLC的5个DI和N个DO,扩展了8*N个模拟量输入通道。
3 S7200PLC模拟量编程程序编制
模块工作在简约的循环方式:①对指定通道的现场信号进行模数转换;②将转换结果转化为双方约定的数据格式;③数据输出(上传至PLC)。每轮循环处理两个通道,一轮循环结束后修改通道号进入下一轮循环,如图4所示。
遵照约定协议和格式的上传子程序如下(其中uchar和uint分别为无符号字符型和无符号整型数。datal和data2为通道数据的形参,channell和channel2为待传通道号的形参)。
3.1 接口程序的编制思路
接口程序处理数据的接收及验收,将DI线上出现的位数据串行移人内部寄存器实现接收;对数据正确性进行校验并确定取舍即为验收。模块发送数据不受S7200的控制,PLC也没有反馈,因此PLC必须在新的位数据到来时及时接收。由于PLC应用程序千差万别,循环扫描时间彼此不同,因此必须采用中断方式。对于S7200,将I0.0的输入配置为中断,当其出现上升沿时,启动中断程序,将当前已经准备好的10.1和I0.2的数据串行移人,程序中10.1和10.2均应采用立即触点。另方面,本模块上传的相邻位数据的时间间隔只有1~2ms,S7200的I0.0~I0.2的滤波时间应选择系统块中的0.2ms选项。
系统上电后模块与PLC的启动存在时间差、系统出现瞬间断电、工作环境强烈的电磁干扰等原因会导致两种后果:工作失步和数据出错。对于前者,系统必须具备自动同步功能,即能够正确识别一帧数据开始传输的第一个同步信号,又能够正确判断本帧数据的最后一个同步信号已经到来。在实现这个功能上,S7200的接口程序借用了一个1ms定时器T32,其预置中断时间必须大于T,而小于T,。实际系统中T,约为1.5ms,两帧数据间间歇时间T,约为20ms,取T32的中断时间为5ms。通过与I0.0中断的协作,可以可靠地实现系统的自动同步。当失步或数据出错出现时,系统复位中断脉冲计数器和定时器,等待下次数据上传。
3.2 模拟量计算
PLC同其他CPU一样,内部运算都是二进制运算,所以对于模拟量,需要有模拟量输入模块将其模拟量信号转为数字量信号。以西门子S7-300为例,模拟量模块分为模拟量输入模块(331),模拟量输出模块(332)和模拟量输入/输出模块(333),其精度(位数)从8到15不等,精度越高,分辨率也越高,8位的分辨率为128,15位的分辨率为1。
对于常见的模拟量输入有±10V,0-10V,4-20mA等,该传感器型号量程为0-100cm,输出值为4-20mA,即此传感器可以拉出的范围为0-100cm,当拉出0cm时输出4m,当拉出100cm时输出20mA。量程与输出电流之间是一个线性关系。对于模拟量模块来说,其模拟值不再是4-20mA的模拟信号,而是0-27648的数字信号(随着模拟量输入信号的不同,也可能是-32768-+32768,比如±10V的模拟量输入信号)。这时拉线传感器4mA的输出电流对应模拟量输入模块的0,20mA的电流对应模块的27648。
这时就能看出0-100cm,4-20mA,0-27648之间的对应关系,即拉出0cm时,传感器输出4mA电流信号,模拟量输入模块的信号为0;拉出为100cm时,传感器输出20mA电流信号,模拟量输入模块的信号为27648。这时可以看出4-20mA只是一个中间变量,不需要拿它来进行计算,传感器与模拟量输入模块的对应关系为0-100cm对应0-27648。
4 结语
使用PLC的普通开关量输入采集模拟量和采用485串行接口采集模拟量数据,实现多种温度传感器数据采集和电流、电压等信号的数据采集。这种方法可以应用于各种可编程序控制器,通用性强、使用方便、造价低。设计的新的数据传送接口时序,为PLC模拟量采集提供了新的方法。
参考文献:
[1]皮壮行,等.可编程序控制器的系统设计与应用实例.北京:机械工业出版社,2000(10)