实现S-SMART自由口通讯

合集下载

IFIX与SSMART通信步骤

IFIX与SSMART通信步骤

IFIX与SSMART通信步骤IFIX和SSMART是两个用于工业自动化系统的软件平台,它们可以通过通信来实现数据的传输与共享。

下面是IFIX与SSMART通信的步骤:1. 确定通信协议:首先需要确定IFIX和SSMART之间的通信协议,常用的通信协议有Modbus、OPC等。

根据实际需求,选择适合的通信协议进行通信。

2.配置IFIX和SSMART的通信设置:通过IFIX和SSMART提供的配置工具,设置通信参数。

这些参数包括通信端口、通信速率、通信协议类型等。

确保IFIX和SSMART可以正确地建立通信连接。

4.配置SSMART设备连接:在SSMART中,需要配置设备连接来接收IFIX传输的数据。

可以通过SSMART提供的设备连接配置工具,设置设备连接的名称、地址、通信协议等。

6.测试通信连接:在配置完成后,需要测试IFIX和SSMART之间的通信连接是否正常。

可以通过模拟数据或实际数据来进行测试,确保数据能够正常传输。

7.监控和调试:在实际应用中,需要监控和调试通信过程中的问题。

可以使用IFIX和SSMART提供的监控工具,查看通信状态、数据传输情况等,并进行故障排查和调试。

8.数据传输和处理:在通信连接正常后,IFIX会按照配置的数据采集间隔或触发条件,从数据源中采集数据,并通过通信协议将数据传输给SSMART。

SSMART接收到数据后,可以进行数据分析、处理和存储等操作。

9.故障处理与维护:在实际使用中,可能会遇到通信故障或其他问题。

需要及时处理故障,确保通信正常运行。

同时,定期进行维护和检查,确保通信连接的可靠性和稳定性。

总结:IFIX与SSMART通信的步骤包括确定通信协议、配置通信设置、配置数据源和设备连接、测试通信连接、监控和调试、数据传输和处理、故障处理与维护等。

通过以上步骤,可以实现IFIX和SSMART之间的数据传输与共享,提高工业自动化系统的效率和可靠性。

S SMART 通讯常见问题

S SMART 通讯常见问题

一:S7-200 SMART 通信协议与资源每个S7-200 SMART CPU 都提供一个以太网端口和一个RS485 端口(端口0),标准型CPU 额外支持SB CM01 信号板(端口1),信号板可通过STEP 7-Micro/WIN SMART 软件组态为RS232 通信端口或RS485 通信端口。

S7-200 SMART CPU 可实现CPU、编程设备和HMI(人机界面)之间的多种通信:?以太网:● CPU 与STEP 7-Micro/WIN SMART 软件之间的数据交换。

● CPU 与HMI 之间的数据交换。

● CPU 与其它S7-200 SMART CPU 之间的GET/PUT 通信。

● CPU 与第三方设备之间的Open IE( TCP、ISO on TCP、UDP) 通信。

RS485/RS232:● CPU 与HMI 之间的数据交换(PPI协议)。

● CPU 使用自由端口模式与其它设备之间的串行通信(例如:XMT/RCV 通信、Modbus RTU通信、USS通信等)。

S7-200 SMART CPU 可同时支持的最大通信连接资源数如下:以太网:● 1 个连接用于与STEP 7-Micro/WIN SMART 软件的通信。

● 8 个连接用于CPU 与HMI 之间的通信。

● 8 个连接用于CPU 与其它S7-200 SMART CPU 之间的GET/PUT 主动连接。

● 8 个连接用于CPU 与其它S7-200 SMART CPU 之间的GET/PUT 被动连接。

● 8 个连接用于CPU 与第三方设备之间的Open IE主动连接。

● 8 个连接用于CPU 与第三方设备之间的Open IE被动连接。

RS485/RS232:● 4 个连接用于CPU 与HMI 之间的通信(PPI协议)。

注意:●S7-200 SMART CPU以太网通信端口从版本开始支持TCP、UDP和ISO on TCP等开放式用户通信及Modbus TCP通信。

【电气工控自动化】S7-200 SMART与V20变频器进行自由口通信

【电气工控自动化】S7-200 SMART与V20变频器进行自由口通信

S7-200 SMART与V20变频器进行自由口通信学习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所示。

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

Modbus RTU代码系统如下:·1个起始位。

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

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

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

数据格式的描述如下表:11-bit字符帧(BITl-BIT8为数据位):起始位Bit1Bit2Bit3Bit4Bit5Bit6Bit7Bit8校验位停止位10-bit字符帧(BITl-BIT7为数据位):起始位Bit1Bit2Bit3Bit4Bit5Bit6Bit7校验位停止位通信中要保证通信双方要有相同的波特率,数据格式,奇偶校验位。

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

如何实现S7-200SMART自由口通讯

如何实现S7-200SMART自由口通讯

怎么样真止S7-200SMART自由心通讯之阳早格格创做自由心通讯协议的闭键条件定义开初接支消息战停止接支消息的条件.1、空忙线检测:树坐il=1,sc=0,bk=0,smw90/smw190>0空忙线条件定义为传输线路上的宁静大概者空忙的时间.SMW90/SMW190中是以ms为单位的空忙时间.正在该办法下,从真止接支指令开初起动空忙时间检测.正在传输线空忙的时间大于等于SMW90/SMW190中设定的时间之后接支的第一个字符动做新疑息的起初字符.接支消息功能将会忽略正在空忙时间到达之前接支到的所有字符,并会正在每个字符后里沉新开用空忙线定时器.空忙线时间应大于以指定波特率传递一个字符所需要的时间.空忙线时间的典型为以指定的波特率传递3个字符所需要的时间.传输速率为19200bit/s时间,可树坐空忙时间为2ms.对付于两进造协议,不特定起初字符的协议大概指定了消息之间最小时间隔断的协议,不妨将空忙线检测用做开初条件.2、起初字符检测:树坐il=0,sc=1,bk=0,忽略smw90/smw190起初字符是消息的第一个字符,以SMB88/SMB188中的起初字符动做接支到的消息开初的标记.接支消息功能忽略起初字符之前支到的字符,起初字符战起初字符之后支到的所有字符皆保存正在消息慢冲区中.起初字符检测普遍用于ASCII协议.3、空忙线战起初字符:树坐il=1,sc=1,bk=0,SMW90/SMW190大于0谦脚空忙线条件之后,接支消息功能查找指定的起初字符.如果接支到的字符不是smB88/smb188指定的起初字符,将开初沉新检测空忙线条件.正在谦脚空忙线条件之前接支到的以及起初字符之前接支到的字符皆将会被忽略.那种办法更加符合用于通讯链路上有多台设备的情况.4 、break检测:树坐il=0,sc=0,bk=1,检测smw90/smw190战smb88/smb188以接支到的break(断开)动做接支消息的开初.当接支到的数据脆持为0的时间大于完备字符(包罗起初位,数据位,奇奇校验位战停止位)传输的时间,表示检测到break.断开条件之前接支到的字符将忽略,断开条件之后接支到的任性字符皆市保存正在消息慢冲区中.5、break战起初字符:il=0,sc=1,bk=1,忽略smw90/smw190断开条件谦脚后,接支消息功能将查找指定的起初字符.如果接支到的字符不是起初字符,将沉新搜索断开条件.所有正在断开条件谦脚之前正在接支到起初字符之前接支的字符皆市忽略.起初字符战所有后绝字符所有存进消息慢冲区6、所有字符开初担当:树坐il=1,sc=0,bk=0,smw90/smw190=0忽略smb88/smb188中的起初字符.应为smw90/smw190中的空忙线时间为0,接支指令已经真止,便将坐时开初强造接支所有的任性字符,并将存进消息慢冲区.7、任性字符开初,消息定时器超出则中断接支消息:令il = 1,sc = 0,bk = 0,smw90/smw190 = 0,忽略smb88/smb188中的起初字符.以上树坐用于真止从任性字符开初接支消息.别的树坐c/m = 1,tmr =1,用smw92/smw192树坐以ms为单位的消息超常常间,用消息定时器监视接支是可超时.如果已谦脚其余中断条件,正在消息定时器超时的时间,将会末止接支消息功能.那对付自由心协议的主站利害常有用的.定义通讯的传输速度战模式SMB30=16#05=2# 00 0 001 01其中从下位到矮位依次:00:表示无校验0:表示8个数据位001:表示波特率1920001:表示自由心通讯定义接支消息统造字节SMB87=16#FC = 2#1111 1100其中从下位到矮位依次:en=1:开用担当消息功能sc=1:使用SMB88 的值监测数据的起初ec=1:使用SMB89 的值监测数据的末止il=1:使用SMW90 的值监测空忙条件c/m=1:定时器为消息定时器tmr=1:超出SMW92 中的时间段,则末止接支bk=0:忽略中断条件SM87.0=0 (无效)3.定义SMB88、SMB89、SMW90、SMW92、SMB94SMB88:定义开初字符为 2ASMB89:定义中断字符为 0ASMW90:空忙线时间段,单位:MSSMW92:消息定时器的超时值(单位:MS),若超出该时间段,则停止担当消息SMB94:要担当的最大字符数(1--255个字节);纵然已使用字符计数消息末止,此范畴也必须树坐为所需的最大数据接换区l SMW90=1000000us/19200 *11*3其中:1000000/19200得到传输1个位需要多万古间,一个字符11个位,检测空忙3.5个字符,约等于3个字符l SMW92=1000000us/19200 *11*20*1.5TBL:5.对接担当完毕中断战收支完毕中断,而且开搁中断6.接支完毕中断:由于咱们使用的RS485转USB的线缆是半单工,收支战接支需要隔断起码5ms的时间.所以接支完毕后先延时5ms正在收支.7.SMB34定时中断:延常常间到,真止收支指令,把先期接支到的数据再收支给PC.8.收支完毕中断:。

SSMART串口通讯和ID调节

SSMART串口通讯和ID调节

S7-200S M A R T串口通讯
2014-9-2
通过反复测试都没成功,后来发现做为连接RS485通讯的串口接头焊得有问题,应该是3+,8-,而实际悍成了7-,所以无法通讯,重焊后进行测试通讯成功。

1.主站简单测试程序
2.主站例程测试modbus_master_st40.smart
●保持寄存器读入
●开关量读入:
●开关量军写出:
●写入寄存器
Addr读写从站的数据地址:选择读写的数据类型
00001至0xxxx-开关量输出
10001至1xxxx-开关量输入
30001至3xxxx-模拟量输入
40001至4xxxx-保持寄存器
3.做为从站:
保持寄存器读取
通道值采集AIW16(第一个扩展AM06第一通道)
开关量输入点读取
当I0.0为1时
开关量输出点
通过测试发现,做从站时不能直接读取AQW通道的值和M寄存器中的值,技术支持建议所有需要传送的数据全部放在V区的连续寄存器中,只需要一个指令就可以全部读取,然后再解析就可以了。

4.PID调节
●设置向导中设置参数,
●调用设置好的PID子程序.
●调试
●发现AO的输出通道灯和DIAG灯报错(红灯),是因为没有接线的缘故,将通
道接到ADAM4017+的第二通道上后就正常了,显示绿灯。

●采集到的数据如下:
●在“工具”下面有PID控制面板,可以用于调试PID参数,观察调节变化曲
线。

西门子PLC 自由口通讯

西门子PLC 自由口通讯

1.自由口通讯基本概念1.1 自由口通信概述1.2 自由口通信要点1.3 发送和接收指令2.自由口通信使用指南2.1 通讯口初始化2.2 发送数据:2.3 接收数据2.4 自由口通信例程1.自由口通讯基本概念1.1 自由口通信概述S7-200PLC的通讯口支持RS485接口标准。

采用正负两根信号线作为传输线路。

工作模式采用串行半双工形式,在任意时刻只允许由一方发送数据,另一方接收数据。

数据传输采用异步方式,传输的单位是字符,收发双方以预先约定的传输速率,在时钟的作用下,传送这个字符中的每一位。

传输速率可以设置为1200、2400、4800、9600、19200、38400、57600、115200。

字符帧格式为一个起始位、7或8个数据位、一个奇/偶校验位或者无校验位、一个停止位。

字符传输从最低位开始,空闲线高电平、起始位低电平、停止位高电平。

字符传输时间取决于波特率。

数据发送可以是连续的也可以是断续的。

所谓连续的数据发送,是指在一个字符格式的停止位之后,立即发送下一个字符的起始位,之间没有空闲线时间。

而断续的数据发送,是指当一个字符帧发送后,总线维持空闲的状态,新字符起始位可以在任意时刻开始发送,即上一个字符的停止位和下一个字符的起始位之间有空闲线状态。

示例:用PLC连续的发送两个字符(16#55和16#EE)(程序如图3和图4),通过示波器测量CPU通讯端口管脚3/8之间的电压,波形如下图1.:图1.两个字符(16#55和16#EE)的波形图示例说明:16进制的16#55换算成2进制等于2#01010101,16进制的16#EE换算成2进制等于2#11101110。

如图所示,当数据线上没有字符发送时总线处于空闲状态(高电平),当PLC发送第一个字符16#55时,先发送该字符帧的起始位(低电平),再发送它的8个数据位,依次从数据位的最低位开始发送(分别为1、0、1、0、1、0、1、0),接着发送校验位(高电平或低电平或无)和停止位(高电平)。

S SMART CPU与S 进行TCP通信 SMART做客户端

S7-200 SMART 与S7-1200 之间TCP 通信— S7-200 SMART 作为客户端TCP 协议通信TCP 通信为面向连接的通信,需要双方都调用指令以建立连接及交换数据。

S7-200 SMART 与S7-1200 通过TCP 通信,在S7-1200 调用T-block 指令( TCON, TDISCON, TSEND, TRCV ) ,在S7-200 SMART 调用Open User Communication 库指令( TCP_CONNECT,DISCONNECT,TCP_SEND,TCP_RECV) 。

双方的发送和接收指令必须成对出现。

客户端:主动建立连接,可以理解为主站;服务器:被动建立连接,可以理解为从站。

?注意:S7-200 SMART 在CPU 硬件固件及编程软件版本均升级到之后才开始支持开放式通信。

编程软件版本低于,无Open User Communication 库指令;硬件固件低于,硬件不支持开放式通信协议。

S7-200 SMART TCP 连接资源:8个主动连接资源,8个被动连接资源S7-200 SMART TCP 通信数据量:1024 字节硬件和软件需求及所完成的通信任务硬件:?① S7-1200 CPU (IP 地址;子网掩码)② S7-200 SMART CPU (固件版本) ( IP 地址;子网掩码)③ PC (带以太网卡)④ TP 以太网电缆?软件:① STEP7 V13 SP1 Upd 9② STEP 7 Micro/WIN SMART (软件版本)?所完成的通信任务:① S7-200 SMART 发送10 个字节数据:(S7-200 SMART 侧)VB0~VB9 --> (S7-1200侧)~② S7-200 SMART 接收10 个字节数据:( S7-200 SMART 侧)VB2000~VB2009<--?(S7-1200 侧)?~ S7-200 SMART侧编程( 客户机侧组态编程)1.打开STEP 7 Micro/WIN SMART>项目树>指令树>库>Open User Communication?,调用TCP_CONNECT,如图1所示。

S7-200(SMART)的自由口通信运用的经历

S7-200(SMART)的自由口通信运用的经历初次试探自由口通信,从PLC读仪表数据开始,当时有一套比较老的设备,仪表是国外的,自定义的协议,国内集成商可能是仪表和接口板卡开发比较熟悉,或许是为了满足客户不同的PLC品牌需求,没有采用PLC和仪表直接通信,而是做了一块接口板,接口板和PLC之间采用数字量模式(对于PLC一侧DI 1 / DO 8+3+1+1),接口板和仪表之间采用RS232C通信。

PLC8个输出点相当于并口,3个输出点相当于读写参数编号,1个读写指令点,1个高低位指令点。

一同事有点高级语言的底子,用VB作了一个简单的读参数测试,可以接收到消息串。

于是本人饶有兴趣想试试PLC直接和仪表进行通信,翻看仪表的自定义协议,信息帧均是有指定的起始符和结束符,后面没有校验字符,现在回忆当时情况感觉还是有点幸运,如果校验复杂一点,可能就失去了继续深入的耐性了。

对照S7-200的系统手册,看XMT和RCV的指令介绍,当时对于通信指令和中断指令都不甚明了,需要一点点尝试,终于有点眉目,能够成功的读取一个参数,后来在慢慢的加入逻辑,读取多个参数,对于RCV接收机制和指令使用太过生疏,加上对中断也没有深入的概念,容易出现断线且无法恢复,后来逐渐加了一些重发之类的逻辑,形成了一个逻辑繁琐可读性极差的初级版本。

后来有一个需求,有用户使用了多套年岁较高的纺织机械,之前用的是西门子变频器和S7-200,西门子变频器老型号停产,需要更换新的型号,因为是基于通信给定频率,即使是更换西门子的新型号,也需要变动PLC频率给定部分的程序,用户干脆在一台机器上换了富士的变频器,找厂家改动了程序,后来有某国产变频器经销商想说服用户更换他家的变频器,用户答应给试机的机会,不过需要经销商来适配PLC程序,经过辗转,一同学找我给点建议,本人对通信的经验实在是可怜,不敢乱说,只能说程序是可以适配,但水平有限,经验不够,还是另找高手实施。

如何实现SSMRT自由口通讯

如何实现S S M R T自由口通讯RUSER redacted on the night of December 17,2020如何实现S7-200SMART自由口通讯自由口通讯协议的关键条件定义开始接收消息和停止接收消息的条件。

1、空闲线检测:设置il=1,sc=0,bk=0,smw90/smw190>0空闲线条件定义为传输线路上的安静或者空闲的时间。

SMW90/SMW190中是以ms 为单位的空闲时间。

在该方式下,从执行接收指令开始起动空闲时间检测。

在传输线空闲的时间大于等于SMW90/SMW190中设定的时间之后接收的第一个字符作为新信息的起始字符。

接收消息功能将会忽略在空闲时间到达之前接收到的任何字符,并会在每个字符后面重新启动空闲线定时器。

空闲线时间应大于以指定波特率传送一个字符所需要的时间。

空闲线时间的典型为以指定的波特率传送3个字符所需要的时间。

传输速率为19200bit/s时候,可设置空闲时间为2ms。

对于二进制协议,没有特定起始字符的协议或指定了消息之间最小时间间隔的协议,可以将空闲线检测用作开始条件。

2、起始字符检测:设置il=0,sc=1,bk=0,忽略smw90/smw190起始字符是消息的第一个字符,以SMB88/SMB188中的起始字符作为接收到的消息开始的标志。

接收消息功能忽略起始字符之前收到的字符,起始字符和起始字符之后收到的所有字符都存储在消息缓冲区中。

起始字符检测一般用于ASCII协议。

3、空闲线和起始字符:设置il=1,sc=1,bk=0,SMW90/SMW190大于0满足空闲线条件之后,接收消息功能查找指定的起始字符。

如果接收到的字符不是smB88/smb188指定的起始字符,将开始重新检测空闲线条件。

在满足空闲线条件之前接收到的以及起始字符之前接收到的字符都将会被忽略。

这种方式尤其适合用于通讯链路上有多台设备的情况。

4 、break检测:设置il=0,sc=0,bk=1,检测smw90/smw190和smb88/smb188以接收到的break(断开)作为接收消息的开始。

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

详细介绍S7-200SMART的自由口通信
学习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所示。

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

ModbusRTU代码系统如下:
·1个起始位。

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

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

如何实现S-SMART自由口通讯
————————————————————————————————作者:————————————————————————————————日期:
如何实现S7-200SMART自由口通讯
自由口通讯协议的关键条件
定义开始接收消息和停止接收消息的条件。

1、空闲线检测:设置il=1,sc=0,bk=0,smw90/smw190>0
空闲线条件定义为传输线路上的安静或者空闲的时间。

SMW90/SMW190中是以ms为单位的空闲时间。

在该方式下,从执行接收指令开始起动空闲时间检测。

在传输线空闲的时间大于等于SMW90/SMW190中设定的时间之后接收的第一个字符作为新信息的起始字符。

接收消息功能将会忽略在空闲时间到达之前接收到的任何字符,并会在每个字符后面重新启动空闲线定时器。

空闲线时间应大于以指定波特率传送一个字符所需要的时间。

空闲线时间的典型为以指定的波特率传送3个字符所需要的时间。

传输速率为19200bit/s时候,可设置空闲时间为2ms。

对于二进制协议,没有特定起始字符的协议或指定了消息之间最小时间间隔的协议,可以将空闲线检测用作开始条件。

2、起始字符检测:设置il=0,sc=1,bk=0,忽略smw90/smw190
起始字符是消息的第一个字符,以SMB88/SMB188中的起始字符作为接收到的消息开始的标志。

接收消息功能忽略起始字符之前收到的字符,起始字符和起始字符之后收到的所有字符都存储在消息缓冲区中。

起始字符检测一般用于ASCII协议。

3、空闲线和起始字符:设置il=1,sc=1,bk=0,SMW90/SMW190大于0
满足空闲线条件之后,接收消息功能查找指定的起始字符。

如果接收到的字符不是
smB88/smb188指定的起始字符,将开始重新检测空闲线条件。

在满足空闲线条件之前接收到的以及起始字符之前接收到的字符都将会被忽略。

这种方式尤其适合用于通讯链路上有多台设备的情况。

4 、break检测:设置il=0,sc=0,bk=1,检测smw90/smw190和smb88/smb188以接收到的break(断开)作为接收消息的开始。

当接收到的数据保持为0的时间大于完整字符(包含起始位,数据位,奇偶校验位和停止位)传输的时间,表示检测到break。

断开条件之前接收到的字符将忽略,断开条件之后接收到的任意字符都会存储在消息缓冲区中。

5、break和起始字符:il=0,sc=1,bk=1,忽略smw90/smw190
断开条件满足后,接收消息功能将查找指定的起始字符。

如果接收到的字符不是起始字符,将重新搜索断开条件。

所有在断开条件满足之前在接收到起始字符之前接收的字符都会忽略。

起始字符和所有后续字符一起存入消息缓冲区
6、任何字符开始接受:设置il=1,sc=0,bk=0,smw90/smw190=0
忽略smb88/smb188中的起始字符。

应为smw90/smw190中的空闲线时间为0,接收指令已经执行,便将立即开始强制接收所有的任意字符,并将存入消息缓冲区。

7、任意字符开始,消息定时器超过则结束接收消息:令il = 1,sc = 0,bk = 0,smw90/smw190 = 0,忽略smb88/smb188中的起始字符。

以上设置用于实现从任意字符开始接收消息。

此外设置c/m = 1,tmr =1,用smw92/smw192设置以ms为单位的消息超时时间,用消息定时器监视接收是否超时。

如果未满足其他结束条件,在消息定时器超时的时候,将会终止接收消息功能。

这对自由口协议的主站是非常有用的。

1.SMB30定义
定义通讯的传输速度和模式
SMB30=16#05=2# 00 0 001 01
其中从高位到低位依次:
00:表示无校验
0:表示8个数据位
001:表示波特率19200
01:表示自由口通讯
2.SMB87定义
定义接收消息控制字节
SMB87=16#FC = 2#1111 1100
其中从高位到低位依次:
en=1:启用接受消息功能
sc=1:使用SMB88 的值监测数据的起始
ec=1:使用SMB89 的值监测数据的终止
il=1:使用SMW90 的值监测空闲条件
c/m=1:定时器为消息定时器
tmr=1:超过SMW92 中的时间段,则终止接收
bk=0:忽略中断条件
SM87.0=0 (无效)
3.定义SMB88、SMB89、SMW90、SMW92、SMB94
SMB88:定义开始字符为 2A
SMB89:定义结束字符为 0A
SMW90:空闲线时间段,单位:MS
SMW92:消息定时器的超时值(单位:MS),若超过该时间段,则停止接受消息
SMB94:要接受的最大字符数(1--255个字节);即使未使用字符计数消息终止,此范围也必须设置为所需的最大数据交换区
l SMW90=1000000us/19200 *11*3
其中:1000000/19200得到传输1个位需要多长时间,一个字符11个位,检测空闲3.5个字符,约等于3个字符
l SMW92=1000000us/19200 *11*20*1.5
其中:20表示字节接收最大的字节数,与SMB94有关,1.5倍表示整个消息长度的倍数
4.执行接受指令
TBL:
5.连接接受完成中断和发送完成中断,并且开放中断
6.接收完成中断:
由于我们使用的RS485转USB的线缆是半双工,发送和接收需要间隔至少5ms的时间。

所以接收完成后先延时5ms在发送。

7.SMB34定时中断:
延时时间到,执行发送指令,把先期接收到的数据再发送给PC。

8.发送完成中断:。

相关文档
最新文档