6GK7243-1EX01-0XE0型号大全
6GK7243-1EX01-0XE0型号大全
其程序流程如图5,以上面的温度读取指令为例,其CRC校验梯形图如图6。
图5 CRC校验流程
图6 CRC校验程序
在读取温度时,应严格遵守DS18b20的读写时序,否则就会出现错误,丢帧等,若用脉冲信号定时读取,则间隔应不小于100ms。一般出现错误帧时数据显示为0℃,此时可以进行简单的滤波,例如传回值为0时不显示数据,或者多组数据取平均值后再显示,以避免温度显示的大幅度跳动。DS18b20的初始化温度显示为85℃,若一直不变,则此传感器可能已经损坏或是接线不良,应进行相应的检查。
4 结束语
该系统应用于生产过程实时监控中,PLC既作为现场控制机完成对生产过程的自动控制,又作为主从通信的主机,与相关仪表连接,实现与基于Modbus现场总线协议的DS18b20型数字温度传感器的采集模块的主从通信,并通过PLC高速实时网络实现对其的远程监控。该系统目前处于试运行阶段,表现较为稳定,通信可靠,效果良好。
使用RTU模式时,消息发送至少要以3。5个字符时间的停顿间隔开始,如图3的T1-T2-T3-T4所示。传输的个域是设备地址,可以使用的传输字符是十六进制数值。通信期间,网络设备不断侦测网络总线,包括停顿间隔时间内,当个域(地址域)接收到,每个设备都进行解码以判断是否发往自己的。在后一个传输字符之后,至少要有3。5个字符时间的停顿以标定消息的结束,之后可开始新的消息传输。典型的消息帧如图3所示。使用RTU模式,消息包括了一个基于CRC方法的错误检测域。CRC域检测了整个消息的内容。
图3 Modbus消息帧结构
CRC域是两个字节,包含一个16位的二进制值。它由传输设备计算后加入到消息中。接收设备重新计算收到消息的CRC,并与接收到的CRC域中的值比较,如果两值不同,则有误,后面将具体讲述CRC算法的实现。
3 系统软件构成
考虑到操作的方便性,在系统初次安装时,先在PC机上用上位机软件将所有传感器的ID搜索出来,然后按实际安装位置给每个传感器编号,读温度测试传感器是否工作正常。在PLC上使用Modbus协议通信时首先要对通信格式进行设定,即对D8120寄存器进行写操作,在本系统条件下设置为0C87,即数据长度为8位,无校验,无起始位与停止位,波特率9600bps。修改D8120设置后,确保通断PLC电源一次。再用RS指令进行数据的传输,相关程序格式如图4所示。
图4 RS指令程序格式
按照上述程序格式,即可在数据发送区写入指令进行相应的操作。
1)读取温度,其指令格式:[设备地址][命令号][通道号][传感器编号][读取个数高8位][低8位][CRC低8位][CRC高8位],其中CRC校验字节以子程序形式调用。设备响应:[设备地址][命令号][返回的字节个数][数据1][数据2]。。。[数据n][CRC低8位][CRC高8位]。
每个18b20读取温度的返回值占用两个字节。
转换方法:将实际温度扩大100倍,再将此数值分为两个字节传送出来即可。例如,实测出来温度是28。65℃,扩大100倍即2865,则发送的个字节是2865/256即是11,第二个字节是2865%256即49,那么传送的两个字节为0×0B和0×31。
需要注意的是,由于采用两线制的485连线方式,会产生回波通信,即接收端会先接收到自己发送出去的数据,但数据还是会正常发送给采集模块,此时接收端则应该避开前面的无用数据,接收后面模块响应的有效数据。
2)在系统运行后,若需更换传感器,则需执行以下两条指令,首先,搜索ID,[01][06][0c][00][00][00][CRC低][CRC高],此指令为搜索模块1上各个通道的所有传感器。然后写编号,例如:[01][06][09][05][00][05][CRC低][CRC高],表示将第9通道的原来编号为05的传感器更换后重新设定为05,执行此两条指令后,方可重新读取温度。
3)CRC校验字节的生成是比较关键的一步,其过程比较复杂,步骤如下:
①预置一个16位CRC寄存器为十六进制FFFF,即所有数位均为1。
②该16位寄存器的低8位字节与信息帧的个字节的低8位进行&异或运算。运算结果放入这个16位寄存器。
③把这个16寄存器向右移一位,用0填补高位。
④若向右(标记位)移出的数位是1,则生成多项式A001(1010000000000001)和这个寄存器进行“异或”运算;若向右移出的数位是0,则返回③。
⑤重复③和④,直至移出8位。
⑥重复③~⑤,直至该报文所有字节均与16位寄存器进行&异或运算,并移位8次。
⑦将得到的l6位CRC寄存器的高、低位字节进行,即2字节CRC,加到报文。
随着3C技术迅速发展,网络集成信息自动化正迅速应用到现场设备、控制中,现场总线控制系统正逐步取代传统的集散控制系统,其中Modbus现场总线协议在基于PLC的控制系统中得到了越来越广泛的应用。在本系统中,以PLC为主机、温度采集模块为从机,完成对生产过程的自动控制、工业流程及工艺参数的显示、修改,根据PLC的无协议通信功能,用Modbus现场总线协议实现主机与从机的通讯。
本文基于某监控系统的设计,实现了三菱FX2N系列PLC在无协议通信方式下与DS18b20型数字温度传感器的采集模块以Modbus协议通信,在电炉熔化工作过程中,对电炉、电容、冷却水等100多点的温度实现巡检。
1 系统硬件组成
温度监控部分系统的硬件由DS18b20型数字温度传感器、采集模块、FX2N系列PLC、FX2N-485-BD、HITECH触摸屏组成,其结构如图1所示。
图1 系统硬件组成
DS18b20是世界上支持单线总线接口(1wirebusinteRFace)的数字化温度传感器,单总线接口便于构建分布式的温度测控网络,数字化的输出提高了信号传输的可靠性,而且使外围电路大为简化。DS18b20具有很高的适应性和性价比,其测温范围为-55~125℃,测温精度为±0.5℃,测温距离大为200m,测温方式使用3线制,本系统使用的传感器排序方式为指定排序。
DS18b20内部主要有3个数字部件:1个温度传感器、1个64位的激光刻蚀ROM、9字节高速暂存器Scratchpad RAM和3字节EERAM。ROM上64位数据是传感器的序列号。暂存器确保数据的完整性,数据先被写入暂存器,并可以被读回。数据经校验后,可以由拷贝暂存器命令传输到EERAM,以确保更改存储器时数据的完整性。暂存器为9个字节,第0和第1字节是温度编码的低字节和高字节。
第2和第3字节是温度编码的低字节和高字节的拷贝,第4字节是配置寄存器,其值决定温度转换的分辨率。
本系统采用的STA-D温度采集模块,是一种远程数字化温度采集系统,有10个通道,每个通道多可以挂接16个DS18b20型数字温度传感器,总共可以监控160个点的温度,以RS485方式同上位机通讯,通信协议为标准Modbus协议,波特率为9600bps,与上位机通信距离大为1200m,工作电源为12~24V,工作温度为-20~75℃。与FX2N485BD采用两线制的485连线方式(图2),接线要使用规范的屏蔽线。
图2 485连接图
台湾HITECH公司触摸屏PWS系列是专为PLC设计的互动式工作站,用232直接与PLC连接,可以直接读取PLC的数据寄存器,具有良好的人机界面,操作人员通过它可设置所有参数,控制系统自动运行。并且编程简便,运行稳定,可设置不同的管理权限,适合于本系统使用。
2 Modbus协议
标准的Modbus口是使用RS232C兼容串行接口,它定义了连接口的针脚、电缆、信号位、传输波特率、奇偶校验,控制器能直接或经由Modem组网。控制器通信使用主从技术,即仅一设备(主设备)能初始化传输(查询),其它设备(从设备)根据主设备查询提供的数据作出相应反应。
表1 Modbus部分功能码定义
Modbus通讯协议有两种传送方式RTU方式和ASCII方式。本系统使用RTU模式,这种方式的主要优点是:在同样的波特率下,可比ASCII方式传送更多的数据。
3 仿真与分析
为了测试指令的运行情况,本文在后给出了一段基于Quartus II的程序仿真。
仿真时给出了10位输入数据indata=”1 1 10000101”,10.0~10.4分别对应着该数据的第0位~第4位,同样Q0.0和Q0.1分别对应着输出端子的第0位和第1位。
仿真结果的图6中:T1,T2,T3,T4为4个时钟节拍信号,out0和out1分别对应着输出端子Q0.0和Q0.1,因为IO.0和IO.2为1,IO.3和IO.4都为0,因此程序运行的后结果应该是Q0.0和Q0.1都为1,并且从图6可以看出,仿真结果与此相同,程序运行正确,说明所设计的微处理器及其指令正确可靠。
图6 QuartusII仿真结果
4 结束语
本文所设计的PLC微处理器具有很强的可修改性和可移植性,并且优化升级也很方便,可以根据特定的需要方便地增删指令和I/O端口的数量,这比传统的PLC具有更大的灵活性。另外,由于FPGA具有很高的密度,能够集成很大的系统,因而极大地提高了系统的可靠性
表1 指令系统
该系统中的每条微指令为32位,其中低5位为下地址字段,直接送给微地址寄存器,第5~7位为测试字段,送到微地址产生逻辑电路里面以控制微地址的产生,其余位为用来产生各种微命令的控制字段。
(2)控制存储器。控制存储器中存放的是各指令所对应的微程序,它可以用FPGA中的LPM—ROM模块来实现,如图2所示。Clock为同步时钟信号,address为5位的地址值,q为32位的微指令,当clock上升沿到来时,rom就把address所对应的地址中的值输出给q。
图2 控存原理图
(3)微地址产生逻辑。微地址产生逻辑主要是根据微指令中的测试位及其他相关的条件来控制微地址的产生,它是根据一定的逻辑功能用VHDL语言编写的,并且经过编译和综合后生成的模块,如图3所示。
图3 微地址产生逻辑电路原理图
其中,clk为同步时钟信号,rst为复位信号,q为输出的5位微地址值。其控制流程如下:
(1)系统启动时,给出一个rst=1的复位信号,q端便输出“00010”,为输入扫描微程序的入口地址;(2)对应的微指令就从控存中输出,然后该微指令中的5位下地址字段直接输入到din端,3位测试位输入到m端;(3)如果m=“000”,则q端输出的地址值直接加1,且返回(2)继续执行;否则,执行下一步;(4)如果m=“001”,则看i端输入的用户程序指令来判断是否需要取数操作,如果需要,则q端输出各个取数微程序的入口地址;如果不需要,则q端根据i的操作码输出相应指令的微程序入口地址,且返回(2)继续执行;否则,执行下一步;(5)如果m=“010”,q端直接输出din的地址值,且返回(2)继续执行;否则,执行下一步;(6)如果m=“011”,则q端根据i的操作码输出相应指令的微程序人口地址,且返回(2)继续执行。
2.2 运算器
运算器是用来对输入的数据进行算术和逻辑运算的部件,该ALU具有三输入和两输出,d1和d2是参与逻辑运算的两个位数据,其中dl来自外部的取数,d2来自输出暂存器s,sel是指令的操作码。result是运算后的结果,输出后送给了暂存器S,q用来启动定时器,如图4所示。
图4 运算器原理图
2.3 RAM
RAM用来存储用户程序,它可以用FPGA中的LPM—RAM—DQ模块来实现。其中,wren是读写控制端,当wren=0时为读允许,这时在同步时钟clock的上升到来时沿将address所对应的地址中的内容给输出端q;当wren=1时为写允许,这时在同步时钟clock的上升沿到来时将data端的数据写入到address所指明的地址中,如图5所示。
图5 RAM原理图