0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

s7-200smart自由口通信例程

1X4o_GKB1508 来源:fqj 作者:彭涛 2019-04-25 17:18 次阅读

学习S7-200 SMART时了解到,基于RS485接口可实现一下几种通信

1)modbus RTU通信

2)PPI协议通信

3)USS协议通信

4)自由口通信

何为自由口通信呢?

前三种通信必须要PLC和与其通信的设备支持相同的通信协议,如果两者之间没有共同的通信协议则需要用到自由口通信。自由口通信也称无协议通信,需要根据对方设备的通信数据格式编写一个临时协议,不仅需要编程人员学会如何编写程序,还需要了解对方的通信数据格式,所以对编程人员要求较高,随着标准协议(modbus,USS等)普及,自由口应用越来越少,但是对于一下小的设备如扫码枪等,并没有集成标准通信协议,所以只能选用自由口通信,Moubus和USS其实是自由口的一个特例。很多人碰到自由口通信就手足无措了,其实只要掌握规律,自由口通信不一定很难。为此我总结了自由口通信的基本步骤:

1)读懂对方的数据格式。

串行通信中,数据是一位一位的进行发送,也就是0和1。为了能够准确的将数据发送过去,往往会加上1个起始位,1个校验位,1个停止位(无校验是为2个停止位)如图1-1所示。

s7-200smart自由口通信例程

图1-1

我们就以Modbus RTU为例详细看一下串口通信中数据是如何发送和就收的。

ModbusRTU代码系统如下:

·1个起始位。

·7或8个数据位,最小的有效位先发送。

·1个奇偶校验位,设成无校验则没有。

·1个停止位(有校验时),2个Bit(无校验时)。

数据格式的描述如下表:

11-bit字符帧(BITl-BIT8为数据位):

起始位 Bit1 Bit2 Bit3 Bit4 Bit5 Bit6 Bit7 Bit8 校验位 停止位

10-bit字符帧(BITl-BIT7为数据位):

起始位 Bit1 Bit2 Bit3 Bit4 Bit5 Bit6 Bit7 校验位 停止位

通信中要保证通信双方要有相同的波特率,数据格式,奇偶校验位。

波特率:通信速度,每秒中发送的位的个数,单位为Bit/S或bps。

奇偶检验:偶校验的含义:在数据传输前附加一位偶校验位,用来表示传输的数据中“1”的个数是奇数还是偶数,为偶数时,校验位置为“0”,否则置为“1”用以保持数据的奇偶性不变。奇校验的含义:在数据传输前附加一位奇校验位,用来表示传输的数据中“1”的个数是奇数还是偶数,为奇数时,校验位置为“0”,否则置为“1”用以保持数据的奇偶性不变。

一个字符帧中,真正起作用的是数据位。起始位、检验位和停止位的加入只是为了将数据位正确地传输到对方设备。在实际应用时一定要将主站和从站数据位、奇偶校验、停止位设为一致。

在通信过程中一个完整的通信报文包括多个数据帧,一般包含地址帧、功能码帧、数据帧、检验帧。在Modbus RTU中,一个报文发送完成之后会保持3.5个字节的静默时间,再发送下一个报文,如图1-2所示。

s7-200smart自由口通信例程

图1-2

地址帧:指示从站的站号,以十六进制表示,如01H。

功能码帧:指示操作是读还是写,03H为读,06H为写操作。

数据帧:包含要读写的从站参数起始地址、个数及数值,数据帧在发送的时候每个字包含两个8位字符,先发高8位后发低8位。

校验帧:CRC校验值,也拆分成两个字节,先发低字节后发高字节。校验帧的原理是将将所有数据帧进行CRC运算,算出一个检验值,加在数据帧后面一起发送过去,从站设备接收到数据后再进行一次运算,将运算的检验值和接收的值进行比较,如果不一致则说明数据发送出错。

例如:从01H号站变频器,读取从0004H地址开始的2个数据的值。

发送报文:01H(地址帧),03H(功能码帧),00H(起始地址高位),04H(起始地址低位),00H(数据个数高位),02H(数据个数低位),85H(CRC低位),CAH(CRC高位)

例如:将5000(1388H)写到从站地址02H变频器的0004H地址中。

发送报文:02H,06H,00H,04H,13H,88H,C5H,6EH

了解了通信协议的数据格式,接下来就是编写自由口通信程序:,下面就以通过自由口通信控制英威腾变频器启停为例讲解程序的编写。

归纳总结了一下分为以下几步:

1)定义通信端口。

SMB30和SMB130分别为端口0和1的控制字节,提供了波特率、奇偶校验、数据位和通信协议的选择,如图1-3所示。

s7-200smart自由口通信例程

图1-3

利用字节传送指令将分析所得的控制字节数据写入到SMB30或SMB130中,如图1-4所示。

s7-200smart自由口通信例程

图1-4

往SMB30中写入2#01001001,则定义端口0为自由协议,波特率9600,8位数据位,偶校验。

2)按照发送指令XMT的缓冲区格式定义发送数据报文。

s7-200smart自由口通信例程

图1-5

图1-5中TBL(VB0)为发送缓冲区起始地址,格式为:

VB0:发送字节总数。

VB1:报文第一帧,即地址帧,16#01

VB2:功能码帧,写16#06。

VB3:通信地址高位,控制启停地址为16#2000,高位为16#20。

VB4:通信地址低位,16#00。

VB5:写入数值高位,16#00(写入16#0001正转,16#0002反转,16#0005停止)。

VB6:写入数值低位,16#01。

VB7:CRC校验码低位,16#43。

VB8:CRC校验码高位,16#CA。(校验码为16#CA43)

程序如图1-6所示,此处用到一个CRC算法程序,

s7-200smart自由口通信例程

图1-6

3)触发发送指令XMT,如图1-7所示。

s7-200smart自由口通信例程

图1-7

3)接收数据,接收有两种方式,一是利用RCV指令接收,应用较为复杂,此处不介绍;一是利用SMB2缓冲地址接收,因为端口0接收到一个字符会触发8号中断,并将其存放于SMB2中,通常利用8号事件触发中断,在中断中将SMB2的数据转存到其它地址,否则下一数据将覆盖该数据,直到接收完所有数据后置位一个完成标志,延时一定事件再次触发发送指令。接收中断程序如图1-8所示。

s7-200smart自由口通信例程

图1-8

以上介绍了S7-200SMART的自由口通信,使用自由口通信时编写程并不是难点,关键在于读懂对方通信数据格式,在以后编程过程中尽量选用支持标准协议的设备,确实需要选用自由口也不用害怕,只要按照上述步骤一步步来完成,相信肯定可以通信成功。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 波特率
    +关注

    关注

    2

    文章

    293

    浏览量

    34032
  • 自由口通信
    +关注

    关注

    0

    文章

    4

    浏览量

    6398

原文标题:S7-200 SMART自由口通信其实也没那么难(附实例)

文章出处:【微信号:GKB1508,微信公众号:工控帮】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    IGT-DSER智能网关的网2连接S7-200Smart

    IGT-DSER智能网关模块有哪些功能?IGT-DSER智能网关的网2与S7-200Smart是如何进行连接的?
    发表于 09-23 06:27

    S7-200CPU的通信自由设置

    西门子S7-200CPU的通信口可以设置为自由模式。选择自由模式后,用户程序就可以完全控制
    的头像 发表于 03-04 14:12 1w次阅读
    <b class='flag-5'>S7-200</b>CPU的<b class='flag-5'>通信</b>口<b class='flag-5'>自由</b><b class='flag-5'>口</b>设置

    西门子PLC S7-200smart程序下载错误分析

    。西门子PLC S7-200smart的CPU预置的IP地址为:192.168.2.1。  3. 通信参数是否匹配  如果用户下载系统块,注意用户项目系统块中的西门子PLC S7-200smart
    发表于 07-23 15:27 4552次阅读

    详细介绍S7-200SMART自由通信

    自由通信也称无协议通信,需要根据对方设备的通信数据格式编写一个临时协议,不仅需要编程人员学会如何编写程序,还需要了解对方的
    的头像 发表于 08-01 14:23 4.6w次阅读
    详细介绍<b class='flag-5'>S7-200SMART</b>的<b class='flag-5'>自由</b><b class='flag-5'>口</b><b class='flag-5'>通信</b>

    S7-200smart 与台达变频器通讯功能及参数程序

    S7-200smart 与台达变频器通讯控制程序
    的头像 发表于 07-27 08:59 2.5w次阅读
    <b class='flag-5'>S7-200smart</b> 与台达变频器通讯功能及参数程序

    西门子S7-200SMART接入BL102 PLC网关

    BL102 PLC网关设备连接设备接线示意图如下: BL102 PLC网关的LAN连接到西门子S7-200SMART的网,COM通过RS232转RS422线连接西门子
    发表于 10-28 17:08 1896次阅读
    西门子<b class='flag-5'>S7-200SMART</b>接入BL102 PLC网关

    PLC网关采集西门子S7-200SMART数据配置流程

    PLC网关采集西门子S7-200SMART数据配置流程
    发表于 11-04 11:37 3968次阅读
    PLC网关采集西门子<b class='flag-5'>S7-200SMART</b>数据配置流程

    西门子S7-200SMART如何接入MQTT云平台

    西门子S7-200SMART如何接入MQTT云平台
    发表于 11-10 16:49 3268次阅读

    巨控GRM532Y 实现S7-200smart远程上下载程序

    如果通过巨控GRM532Y-C实现对S7-200smart 远程下载上载程序。
    的头像 发表于 04-11 11:56 3829次阅读
    巨控GRM532Y 实现<b class='flag-5'>S7-200smart</b>远程上下载程序

    组态王与S7-200SMART PLC以太网通信

    组态王与S7-200SMART PLC以太网通信,对于刚接触者有点难度,不知如何进行配置,如何通信,那么接下来教大家来一步一步来做通信
    的头像 发表于 09-07 16:26 5139次阅读

    工业智能物联网网关钡铼BL110网LAN采集西门子PLC S7-200Smart

    工业智能物联网网关钡铼BL110网LAN采集西门子PLC S7-200Smart
    的头像 发表于 09-30 17:53 1002次阅读

    西门子s7-200smarts7-1200PLC通信技术

    S7-1200与S7-200SMART S7 通讯的另外一种方法是S7-200SAMRT PLC做客服端,S7-1200做服务器。该方式需要
    发表于 11-17 20:16 7824次阅读

    西门子S7-200Smart如何转换Modbus

    西门子S7-200Smart Modbus网关
    的头像 发表于 11-03 18:41 3857次阅读
    西门子<b class='flag-5'>S7-200Smart</b>如何转换Modbus

    如何实现 S7-200smart系列PLC的本地数采及云端数采?

    客户创造更多的价值。S7-200SMARTCPU支持多种通信协议,可与PLC、触摸屏、变频器、伺服驱动器、上位机等连网通信S7-200SMART在工业场景应用广泛
    的头像 发表于 10-12 18:08 1182次阅读
    如何实现 <b class='flag-5'>S7-200smart</b>系列PLC的本地数采及云端数采?

    西门子S7-1200与S7-200SMART进行PN通信

    S7-200SMART编程软件自V2.4版本、CPU固件也是自2.4版本起起开始支持Profinet通信S7-200SMART即可以做IO控制器,也可以做IO设备。下面的例程
    的头像 发表于 07-10 16:05 4639次阅读
    西门子<b class='flag-5'>S7</b>-1200与<b class='flag-5'>S7-200SMART</b>进行PN<b class='flag-5'>通信</b>!