当前位置:文档之家› 基于MODBUS协议的上位机和S7-200PLC与智能仪表之间的通信

基于MODBUS协议的上位机和S7-200PLC与智能仪表之间的通信


MODBUS 地址 S7-200 地址 MODBUS 地址 S7-200 地址 000001 Q0.1 030001 AIW0 000002 Q0.2 030002 AIW2 000128 Q15.7 030032 AIW62 010001 I0.0 040001 VW0 010002 I0.1 040002 VW2 010128 I15.7 04xxxx VW2*(xxxx-1) 5 CRC 校验: CRC 编码校验误码率极低,是一种比较可靠的检验方式。该校验码是通过数据序列对生成多 项式进行二进制除法取余数得到的。采用 CRC-16 校验,生成的多项式为 X16↑+ X15↑+ X2↑+ X1↑。 CRC 域是两个字节,包含一 16 位的二进制值。它由传输设备计算后加入到消息中。接收设 备重新计算收到消息的 CRC,并与接收到的 CRC 域中的值比较,如果两值不同,则有误。 CRC 是先调入一值是全“1”的 16 位寄存器,然后调用一过程将消息中连续的 8 位字节各当前 寄存器中的值进行处理。 CRC 产生过程中,每个 8 位字符都单独和寄存器内容相或(OR),结果向最低有效位方向移 动,最高有效位以 0 填充。LSB 被提取出来检测,如果 LSB 为 1,寄存器单独和预置的值或 一下,如果 LSB 为 0,则不进行。整个过程要重复 8 次。在最后一位(第 8 位)完成后,下 一个 8 位字节又单独和寄存器的当前值相或。最终寄存器中的值,是消息中所有的字节都执 行之后的 CRC 值。下面是它的 VC 代码: WORD GetCheckCode(const char * pSendBuf, int nEnd)//获得校验码 { WORD wCrc = WORD(0xFFFF); for(int i=0; i { wCrc ^= WORD(BYTE(pSendBuf[i])); for(int j=0; j<8; j++) { if(wCrc & 1) { wCrc >>= 1; wCrc ^= 0xA001; } else { wCrc >>= 1; } } } return wCrc; }
六、上位机与智能仪表的通讯: 上位机的通讯程序可参照上位机与 PLC 的通讯程序进行设计,注意将上位机的串口地址设为 其它的地址(例如 2)。在此不作过多介绍。 多台智能仪表作为 MODBUS 从站的网络,每个从站必须设为唯一的从站地址,并设定好波特 率。仪表要遵循 MODBUS 规约的通信帧结构对上位机的命令进行解析。非呼叫对象要能及时 重新恢复等待接受状态。响应呼叫的仪表要解析命令并进行相应的功能处理,对非法的命令 要能回报报错信息。
三、电气接口: 本套系统采用 RS-485 作为电气接口.它具有干扰抑制性好、传输距离长、组网方便等特点,非 常适合组成工业级的多机通信系统.网络采用总线型结构,半双工,终端加电阻.电缆选用带有金 属网状屏蔽层的双绞线.它可以消除由于磁耦合引起的共模噪声,而金属屏蔽层可以阻断电容、 电磁及高频磁耦合引起的噪声。另选用 RS232/RS485 转换器。通过转换器,我们就可以利用 工控机的 RS232 串口,快速地开发基于 RS485 串口的上位机通信软件。
七、 结束语: 该方法用于某污水处理厂。由于采用智能仪表使系统对 PLC 的要求以及布线成本都大大降低。 监控程序的设计完全符合厂方的要求。另因其设备分散、成本要求苛刻的特点,充分利用 RS485 总线和现有成熟而规范的通信协议能最大限度地节约成本。实践表明,MODBUS 具有 开放性好、功能强、通讯效率高等特点。
二、MODBUS RTU 通讯协议简介: MODBUS 是一种工业控制系统串行通信协议, 当在网络上通信时,Modbus 协议决定了每个 控制器须要知道它们的设备地址,识别按地址发来的消息,决定要产生何种行动。如果需要 回应,控制器将生成应答并使用 Modbus 协议发送给询问方。Modbus 协议包括 ASCII、RTU、 TCP 等,它需要对数据进行校验,其中 RTU 模式采用 16 位 CRC 校验.当控制器设为在 Modbus 网络上以 RTU(远程终端单元)模式通信,在消息中的每个 8bit 字节包含两个 4bit 的十六进制字 符.这种方式的主要优点是:在同样的波特率下,可比 ASCII 码传送更多的数据.
四、PLC 程序设计: 本系统中的可编程控制器采用西门子 S7-200 系列.使用指令库中的 MBUS_INIT 和 MBUS_SLAVE 指令..以下是系统中用于 PLC 的通讯程序:
NETWORK 1 //首次扫描时初始化 Modbus 从属协议 //将从站地址设为 1,将端口 0 设为 9600 波特,将校验设为偶数, //允许存取所有的 I、Q 和 AI 数值,允许存取 1000 台保存寄存器(2000 个字节) //从 VB0 开始。 LD SM0.1 CALL MBUS_INIT, 1, 1, 9600, 2, +0, +128, +32, +1000, &VB0, M0.1, MB1
NETWORK 2 //每次扫描时执行 Modbus 从属协议 LD SM0.0
CALL MBUS_SLAVE, M0.2, MB2
五、上位机通讯软件的设计方案: 1 初始化 为加快开发速度,上位机通讯软件的编程可以使用 MSCOMM 控件,用控件对通讯 软件进行设定需要使用的串口地址、波特率、校验方式、数据缓冲区等初始化操作. 2 命令字发送 MODBUS 规定完整的命令应由从机地址、功能码、数据段和校验码组成。命 令字发送必须严格遵守该规定。计算机发送命令:[设备地址] [命令号 01] [起始寄存器地址高 8 位] [低 8 位] [读取的寄存器数高 8 位] [低 8 位] [CRC 校验的低 8 位] [CRC 校验的高 8 位] 3 下表是 Modbus 支持的功能码: 功能码 名称 作用 01 读取线圈状态 取得一组逻辑线圈的当前状态(ON/OFF) 02 读取输入状态 取得一组开关输入的当前状态(ON/OFF) 03 读取保持寄存器 在一个或多个保持寄存器中取得当前的二进制值 04 读取输入寄存器 在一个或多个输入寄存器中取得当前的二进制值 05 强置单线圈 强置一个逻辑线圈的通断状态 06 预置单寄存器 把具体二进值装入一个保持寄存器 07 读取异常状态 取得 8 个内部线圈的通断状态,这 8 个线圈的地址由控制器决定 08 回送诊断校验 把诊断校验报文送从机,以对通信处理进行评鉴 09 编程(只用于 484) 使主机模拟编程器作用,修改 PC 从机逻辑 10 控询(只用于 484) 可使主机与一台正在执行长程序任务从机通信,探询该从机是否已 完成其操作任务,仅在含有功能码 9 的报文发送后,本功能码才发送 11 读取事件计数 可使主机发出单询问,并随即判定操作是否成功,尤其是该命令或其他应 答产生通信错误时 12 读取通信事件记录 可是主机检索每台从机的 ModBus 事务处理通信事件记录。如果某项 事务处理完成,记录会给出有关错误 13 编程(184/384 484 584) 可使主机模拟编程器功能修改 PC 从机逻辑 14 探询(184/384 484 584) 可使主机与正在执行任务的从机通信,定期控询该从机是否已 完成其程序操作,仅在含有功能 13 的报文发送后,本功能码才得发送 15 强置多线圈 强置一串连续逻辑线圈的通断 16 预置多寄存器 把具体的二进制值装入一串连续的保持寄存器 17 报告从机标识 Βιβλιοθήκη Baidu使主机判断编址从机的类型及该从机运行指示灯的状态 18 (884 和 MICRO 84) 可使主机模拟编程功能,修改 PC 状态逻辑 19 重置通信链路 发生非可修改错误后,是从机复位于已知状态,可重置顺序字节 20 读取通用参数(584L) 显示扩展存储器文件中的数据信息 21 写入通用参数(584L) 把通用参数写入扩展存储文件,或修改之 在这些功能码中较长使用的是 1、2、3、4、5、6 号功能码,使用它们即可实现对下位机的数 字量和模拟量的读写操作。 4 下表是 MODBUS 地址映射到 S7-200 的地址:
基于 MODBUS 协议的上位机和 S7-200PLC 与智能仪表之间的通信
摘要:介绍了 Modbus 通信协议的特点,结合作者的实践经验,介绍基于 MODBUS 协议下工 控机为主站,PLC 及智能仪表为从站的通讯的实现方法.
关键词:Modbus 通信协议 RS-485 PLC 工控机 智能仪表
一、引言: 可编程控制器由于抗干扰能力强,可靠性高,编程简单,性能价格比高,在工业控制领域得 到越来越广泛应用。基于 PLC 的控制系统多数情况下会以微机为主机,PLC 为从机.完成对生 产过程的自动控制,工艺参数的显示和修改.MODBUS RTU 规约是目前国际上普遍采用的主 流通讯协议之一.随着越来越多的企业开始向生产和管理的自动化转变,MODBUS 得到了广泛 的应用.
参考文献: 1、西门子公司 SIMATIC S7-200 系统手册 2002.10 2、Modicon 公司 Modbus 通讯协议
QQ 邮箱:350193892@qq.com
相关主题