如何编写自由口协议程序,自由口通信的基本步骤

合集下载

实验十 自由口通信实验

实验十 自由口通信实验

实验十自由口编程实验一、实验目的了解PLC通信功能;初步掌握PLC自由口通信编程方法。

二、实验设备1、THSMS-A型实验装置二台2、安装了STEP7-Micro/WIN4.0编程软件的计算机一台3、PC/PPI编程电缆,网络连接器。

4、锁紧导线若干三、实验内容与步骤(1)输入以下程序,通过串口调试软件(可从网上下载,下图为某一款软件主界面)或windows超级终端(使用方法附后,如果你的计算机中没有,请找老师或者从网上下载)观察现象。

Network 1 // 网络标题// 传送:“S7-200你好”到VW100开始的五个字(十个字节)LD SM0.1MOVB 16#09, SMB30 //9600,8,N,1MOVW 16#5337, VW100 //“S”和“7”的ASCII码MOVW 16#2D32, VW102 //“-”和“2”的ASCII码MOVW 16#3030, VW104 //两个“0”的ASCII码MOVW 16#C4E3, VW106 //“你”字的汉字机内码,产生办法:找到汉字区位码,将区码和位码分别变为16进制,再分别加上A0即得MOVW 16#BAC3, VW108 //“好”的机内码MOVB 10, VB99 //缓冲区有10个字节(即“S7-200你好”),缓冲区格式见教材P145图7-22Network 2LD SM0.5 //秒脉冲,占空比50%EUXMT VB99, 0 //上升沿发送VB99中写明的字节数,从端口0发送(2)输入以下程序,通过串口调试软件(可从网上下载,下图为某一款软件主界面)或windows超级终端(使用方法附后,如果你的计算机中没有,请找老师或者从网上下载)观察现象。

主程序:Network 1 // 网络标题// 网络注释LD SM0.1MOVB 9, SMB30MOVB 1, VB100MOVB 'A', VB101Network 2LD SM0.1ATCH INT0, 8ENINetwork 3LD I0.1EUXMT VB100, 0中断程序:TITLE=中断程序注释Network 1 // 网络标题//SMB2中包含自由端口通信过程中从端口0 或端口1 收到的每个字符LDB= SMB2, 'A'= Q0.1程序所用符号表:拨动PLC开关进入运行状态,此时关闭STEP7软件,启动超级终端,在终端窗口分别输入CHINA123和chinAa123,观察PLC的Q0.1端子的灯亮来灭情况。

称重仪表自由口协议

称重仪表自由口协议
仪表通讯协议
1、通讯口设置
通讯方式 异步串行通讯接口,如 RS-485,RS-232 等 波特率 300~9600bps(可设定仪表参数自由更改,设定仪表参数 BT)
2、字节数据格式
. 一位起始位 . 八位数据位 . 一位停止位 . 无校验
1********1
起始位
数据位
停止位
3、通讯数据传输格式(固定帧长度)
6、读仪表内部参数帧
发送命令帧:
@ [DE] RO 帧数据 CRC CR
帧数据格式:三字节参数编号,ASCII 码。开放的参数如下: 如:读量程上限,编号为 3310,则帧数据为 3016,3316,3316
编号 1 2 3 4 5 6 7 8 9 11 12 13 14 15 17 18 19 20 21 30 31 32 33
40 30 30 37 52 44 30 31
仪器设备号
命令 标志 小数点
32 33 35 34 31 35 31 0D
数据
校验码
例子中测量值数据=1×10000+4×1000+5×100+3×10+2=1453210 实际测量值=测量值×小数点=14532×10-1=1453.210(如小数点为 2,则乘以 10-2,以此类推)
5、读仪表动态数据(实时测量值)帧
发送命令帧:
@ [DE] RD CRC CR
回送命令帧:
@ [DE] RD 帧数据 CRC CR
例:当前 1 号仪表—设备号[DE]=7 实时测量值 PV=1453.210,欲读仪表实时测量 值,方法如下:
4016xor3016 xor 3016 xor 3716 xor 5216 xor 4416 =6116(转为 ASCII 码则为 3616、3116) 发送命令

串口自定义通信协议程序

串口自定义通信协议程序

串口自定义通信协议程序摘要:一、什么是自定义串口通信协议二、自定义串口通信协议的应用实例三、如何实现自定义串口通信协议四、自定义串口通信协议的优缺点五、总结正文:一、什么是自定义串口通信协议自定义串口通信协议是指在串口通信过程中,通过约定好的规则和格式来进行数据传输的一套通信规则。

这套规则通常包括数据格式、传输速率、校验方式等,以便保证数据在传输过程中的准确性和完整性。

在电子设备、计算机外设、通信设备等领域都有广泛的应用。

二、自定义串口通信协议的应用实例以温度采集器与上位机的串行通信协议为例,可以实现温度采集数据上传和上位机控制每路温度测量通的开启功能。

具体的通信协议可以参考如下步骤来实现:首先选择层通信协议设计相应的通信协议,然后编写相关的下位机程序和上位机程序,最后实现通信协议的收发机制。

三、如何实现自定义串口通信协议实现自定义串口通信协议需要以下几个步骤:1.选择合适的硬件层通信协议。

常见的硬件层通信协议有RS-232、RS-485 等。

2.设计数据格式和传输速率。

根据实际需求,确定数据格式(如字节、字符等)和传输速率。

3.实现校验和错误检测。

为了保证数据传输的准确性,需要实现校验和错误检测机制,如奇偶校验、CRC 校验等。

4.编写上下位机程序。

根据通信协议的规则,编写下位机程序(如温度采集器)和上位机程序(如上位计算机)。

5.实现通信协议的收发机制。

通过硬件设备(如串口模块)或软件(如串口通信库)实现通信协议的收发机制。

四、自定义串口通信协议的优缺点优点:1.灵活性高:自定义串口通信协议可以根据实际需求进行设计,具有较高的灵活性。

2.适用范围广:串口通信协议可以应用于各种电子设备、计算机外设、通信设备等领域。

3.实现简单:相对于其他通信协议(如TCPIP),串口通信协议实现较为简单,成本较低。

缺点:1.传输速率有限:串口通信协议的传输速率有限,不适合高速数据传输。

2.抗干扰能力较弱:串口通信协议的抗干扰能力较弱,容易受到环境干扰。

s7-200自由口通信

s7-200自由口通信

S7-200自由口通讯一、基础知识介绍(名词理解,原理,工作机制)1、S7-200CPU的通讯口可以设置为自由口模式(如何设置成自由口模式?)。

选择自由口模式后,用户程序可以完全控制通讯端口的操作(如何控制通讯端口的操作),通讯协议也完全受用户程序控制(如何控制通讯协议)。

S7-200 CPU处于自由口通信模式时,通信功能完全由用户程序控制,所有的通信任务和信息定义均需由用户编程实现。

2、S7-200CPU上的通讯口在电气上是标准的RS-485半双工串行通讯口。

此串行字符通信的格式可以包含:○一个起始位。

○7或8位字符(数据字节)。

○一个奇偶校验位,或没有校验位。

○一个停止位。

○通信波特率可以设置为1200,2400,4800,9600,19200,38400,57600,115200 bit/s。

凡是符合这些格式的串行通信设备,都可以和S7-200 CPU通信。

借助自由口通信模式,S7-200 CPU 可与许多通信协议公开的其他设备、控制器进行通信,其波特率为1200~115200bit/s。

自由口通信是一种基于RS485 硬件基础上,允许应用程序控制S7-200 CPU 的通信端口、以实现一些自定义通信协议的通信方式。

3、自由口通讯(顾名思义很自由)可以通过用户程序灵活控制,没有固定模式。

S7-200 可通过自由口通讯协议访问下列设备:– 带用户端软件的PC机,– 条形码阅读器,– 串口打印机,– 并口打印机,– S7-200,– S7-300 with CP 340– 非Siemens PLC,– 调制解调器。

S7-200 CPU 通信端口是RS485 标准,因此如果通信对象是RS232 设备,则需要使用RS232/PPI 电缆。

4、“请求-响应”工作机制:S7-200 CPU可以作为主站先向从站发送数据请求,然后等待从站的数据响应,也可以作为从站,首先等待主站发送过来的数据请求,然后根据请求的内容,按规则把相关数据返回给主站。

自由口通讯

自由口通讯
宏指令编写自由通讯协议
本章主要讲述在 SKWorkshop(以下简称 SK)组态软件中如何用宏指令编写 自由通讯协议。SK 的自由通讯协议编写主要运用了内部自带的两个函数:
PUTCHARS(发送数据函数)和 GETCHARS(接收数据函数)。编程人员运用这两个函数 可以很方便的编写自己的设备协议。
首先新建一个工程,命名为:自由口通讯;通讯连接设置连接接口:COM1;设备服务 选择:Samkoon NULL PLC(或者建立工程后在连接中更改),如图 3-1:
}
else
//接收正确
{
LW2=Gdata[0]&0xff;
//数据处理
LB0=0;//处理Fra bibliotek毕,下次进入时发送
PUTCHARS(0,Pdata,0);
//清除缓冲区
}
}
在变量设定表里面建立如下 4 个变量:
LB0:内部地址 LB0,BOOL,读写;
LW0:内部地址 LW0,16 位整数,写;
LW1:内部地址 LW1,16 位整数,写;
//所要发送的数据
Pdata[1]=0x02;
Pdata[2]=0x03;
Pdata[3]=0x04;
PUTCHARS(0,Pdata,4);
//发送函数,发送数据到串口
LB0=1;
//发送完毕,下次进入不发送,等待接收
return;
//退出等待接收
}
else
{
result=GETCHARS(0,Gdata); //接收函数,把接收到的数据存在 Gdata 数组中
图 3-2
图 3-3 下载工程至触摸屏,用串口线连接电脑与触摸屏。电脑端打开串口调试助手, 设置串口参数与触摸屏参数一致。连接成功以后在接收区接收到如图 3-4 所示代 码

modbus自由口协议

modbus自由口协议

modbus自由口协议Modbus自由口协议协议概述Modbus自由口协议是一种通信协议,用于在不同设备之间传输数据。

该协议是基于Modbus协议的扩展,旨在提供更灵活的通信方式。

协议特点•可自定义消息格式和数据类型•支持点对点和多点通信•基于串行或以太网通信方式•简单易用的寻址和寻位功能基本消息格式Modbus自由口协议的消息格式如下:1.起始符:协议定义的起始字符,标识一个消息的起始。

2.设备地址:指定目标设备的地址,用于标识消息的接收方。

3.功能码:指定所需执行的功能。

4.数据:根据功能码的不同,包含不同类型的数据。

5.校验码:用于验证消息的完整性和准确性。

6.结束符:协议定义的结束字符,标识一个消息的结束。

功能码列表以下列出了常用的功能码:•01:读取线圈状态•02:读取输入状态•03:读取保持寄存器•04:读取输入寄存器•05:写单个线圈状态•06:写单个保持寄存器•0F:写多个线圈状态•10:写多个保持寄存器数据类型Modbus自由口协议支持多种数据类型,包括但不限于:•布尔型:表示开关状态,取值为0或1。

•整型:表示带符号的整数。

•无符号整型:表示不带符号的整数。

•浮点型:表示浮点数。

•字符串:表示文本信息。

使用示例以下是使用Modbus自由口协议的示例:1.读取保持寄存器:–设备地址:01–功能码:03–数据:起始地址为2000,连续读取10个寄存器2.写单个线圈状态:–设备地址:02–功能码:05–数据:写入地址为1000的线圈,状态为13.写多个保持寄存器:–设备地址:03–功能码:10–数据:起始地址为3000,写入3个保持寄存器,值分别为100, 200, 300注意事项•在使用Modbus自由口协议时,需根据具体设备的要求进行协议配置和参数设置。

•对于不同类型的数据,需按照协议规定进行正确的解析和处理。

•在通信过程中,应注意消息的完整性和准确性,可使用校验码进行验证。

以上是Modbus自由口协议的基本信息和使用说明。

一个自由口通信编程的实现流程

一个自由口通信编程的实现流程

一个自由口通信编程的实现流程需求:S7-200smart 通过自由口和2台(多台仪表) 通信。

每台仪表的通信数据:一个过程量(只读),5个参数(读写)。

仪表通信协议:自定义协议,消息字符ASCII码模式,写参数时,无返回消息。

轮询要求:过程量优先读取,最快刷新;参数值定时间隔读取,或者上位机指令读取;参数值有变更需求才写入,工作情况:读写参数 均通过上位机画面操作,正常不会出现多台仪表同时出现写请求,存在操作上的时间差。

构想方案:公用变量:站地址变量,通信状态变量,重试次数(超时次数上限/超限认为掉站),掉站恢复时间(掉站后,重试间隔时间)独占变量:写请求状态字节(每个站地址建一个变量)读请求状态字节(每个站地址建一个变量)超时次数(每个站地址建一个变量)掉站标志位(每个站地址建一个变量)*以上“变量”等同于存储地址1,采用站地址轮询策略:轮询到某个站地址时,先读取过程值,再检查写请求状态字节,是否存在写参数请求,若有,写参数通信,更新读请求状态字节,若没写参数请求,再检查读请求状态字节,是否存在读参数请求,若有,读参数通信,如没有,轮询一个站地址。

即每个站的通信次序为 读过程值--- 写一个参数---读一个参数 。

2,超时处理:轮询到某个站地址,读过程值或者读参数 返回数据没有超时,该站地址超时次数清零,若超时,该站地址超时次数加1,轮询下一个站地址。

3,掉站处理及重新询站:某站地址超时次数超过重试次数,判定掉站,掉站标志置位,下次轮询到该站地址,跳过,轮询下一个站地址。

掉站后,经过重试间隔时间,掉站标志复位,依次进入轮询。

4,读/写请求状态字节 及读/写处理状态字节从低位到高位(位0-位4),不用的位均置零,每一位均表示一个参数的读/写请求标志,当状态字节不为0,即表示本站存在读/写请求。

读/写参数时,从低位向高位查检索,查询到第一个“1”位,本次轮询只对这个参数进行读/写。

5,特别的,仪表在接收写参数消息帧时,没有返回消息,因此有写参数时,必须将该参数的读请求标志也置位,同时清除读参数中的其他标志位。

自由口通讯

自由口通讯

包头就是起始符,包尾就是结束符校验用的是CRC,校验码有很多种。

包头就是两个字节,两个##,换算成16进制就是23 23包尾是两个&&。

从站收到这样的请求,他先校验包头和包尾然后再接受CRC校验码再分析指令类型和数据段。

把指令类型和数据段叫做有效数据区。

数据段就是FF在这里就是这样定义的。

例:##(包尾0) 01(指令类型)FF(数据段)校验码(根据指令类型和数据段算出来)&&(包尾)把这串数据发出去,但这里没有地址信息,因为是两个设备在通讯,而不是一个主站和多个从站。

对方收到这串指令会判断指令类型,如果是01.就会立即回传实时数据从站格式:从站格式:不能同时发送和接收,因为半双工,也不能同时接收或发送两条。

编程要求:要自由口模式,所以要设成mm=01,要用端口0那就是SMB30,自由口波特率如果是9600波特,那bbb就是010,pp00不校验,一般每个字符都是8位,所以d是0.所以ppdbbbmm=00001001,8421码就是16进制的9,把16#09赋予SMB30.这里没有设的就是起始位跟停止位,在默认条件下,它只支持1个停止位跟1个起始位,如果有的协议要1.5或者2个起始位跟停止位就不行了缓冲区:缓冲区第一个字节是计数,后面就是信息的内容。

下图:TBL是vb500,那就是vb500里面放的我要发送的这串数据有多少个字符或者是字节如果有10个字节,就把10填到vb500,起始符如果有的话,就应该在vb501,往下总共就是10个字节。

接受RCV也一样,有多少字节,图里可以看出可以从vb500里读取,因为是半双工的,发送和接受不能同时进行,所以发送缓冲区和接收缓冲区可以是同一个,如图都是vb500,为了节省内存,当然也可以不是同一个。

接收就比较复杂,接收指令激活以后,会进入接收等待状态一直保持接收等待状态,但如果需要的话,可以给它一个时间,它就认为这次的通讯不成功,过了这个时间就不让它等待了。

如何实现SSMRT自由口通讯

如何实现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-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.选择合适的硬件接口:首先,需要选择合适的硬件接口,例如RS-232、RS-485 等,这些接口都有各自的特点和适用范围。

2.确定通信协议的格式:通信协议的格式包括数据位、停止位、奇偶校验等,需要根据实际情况进行选择。

3.定义通信协议的帧格式:通信协议的帧格式包括起始符、地址符、数据符、校验符等,需要根据实际情况进行定义。

4.编写通信程序:根据通信协议的帧格式,编写发送和接收程序,实现数据传输和远程控制功能。

四、实例:温度采集器与上位机的串口通信协议设计以温度采集器与上位机的串口通信协议设计为例,我们可以按照以下步骤进行:1.选择硬件接口:选择 RS-232 串口作为通信接口。

2.确定通信协议的格式:数据位为 8 位,停止位为 1 位,奇偶校验为无。

自由口协议

自由口协议

自由口协议自由口协议自由口协议参与者:所有自由主义者背景:自由主义是一种政治哲学,提倡个体自由、限制政府干预以及保护私有财产权利。

然而,由于不同人对自由的理解和解释存在差异,自由主义者之间常常出现争议和分歧。

为了促进自由主义者之间的交流和合作,特制定此自由口协议,以确保公正、平等和尊重。

第一条:言论自由每个人都有权利表达自己的意见和观点,无论是否与他人一致。

自由主义者应该尊重和支持其他人的言论自由,而不论是否同意对方的观点。

第二条:辩论和讨论辩论和讨论是自由主义者之间交流和思想碰撞的重要方式。

在辩论和讨论过程中,每个人都应该尊重彼此的意见和观点,不使用人身攻击、恶意攻击和辱骂等不当言行。

辩论和讨论应该基于事实和逻辑,而非情绪和主观偏见。

第三条:争议解决在自由主义者之间发生争议时,双方应该寻求建设性的解决方案,而非诉诸暴力和威胁。

双方应该以和平、合作和互利的精神,通过对话和协商来解决问题,并尊重彼此的权利和尊严。

第四条:个人自由每个人都有权利追求个人自由和幸福。

自由主义者应该支持并保护他人的自由权利,包括个人表达自己的意见、选择自己的生活方式、追求经济独立和实现自己的梦想等。

第五条:平等和正义自由主义者应该追求社会公平和正义。

他们应该反对任何形式的歧视、压迫和剥削,致力于建立一个平等和公正的社会。

自由主义者应该支持包容性政策和措施,以确保每个人都能够享受到平等的权利和机会。

第六条:政府限权自由主义者应该支持政府权力的限制和监督。

他们认为政府应该尽量少干涉个人自由,并保障私有财产权利。

自由主义者应该争取建立一个有限政府和法治社会,以确保个人自由和社会秩序的平衡。

第七条:国际合作自由主义者应该在国际事务中倡导和推动合作和互惠关系。

他们应该支持国际自由贸易和国际组织的发展,以促进全球的经济繁荣和和平稳定。

自由主义者应该反对保护主义、强权政治和冲突解决的暴力手段。

结论:自由主义者应该遵守以上自由口协议的规定,并将其视为行动准则。

串口通信协议编写过程

串口通信协议编写过程

串口通信协议编写过程1.确定通信需求:首先,要确定通信的目标和需求。

例如,是仅用于数据传输,还是需要实现一些控制命令?需要考虑数据传输的速率、数据帧格式以及错误检测恢复机制等。

2.选择数据帧格式:在确定了通信需求之后,需要选择合适的数据帧格式。

常用的数据帧格式包括字符格式和二进制格式。

字符格式通常使用ASCII码表示数据,而二进制格式直接传输二进制数据。

根据具体需求选择合适的格式。

3.设计数据帧结构:根据选择的数据帧格式,设计数据帧的结构。

数据帧通常由起始位、数据位、校验位和停止位等组成。

起始位用于标识帧的开始,数据位用于传输数据,校验位用于检测数据传输过程中的错误,停止位用于标识帧的结束。

4.确定命令和数据格式:如果需要实现控制命令,需要确定可以发送和接收的命令和数据格式。

可以定义不同的指令类型,并为每种指令定义参数格式和数据格式。

5.定义通信协议控制流程:根据通信需求,定义通信协议的控制流程。

例如,如果通信需要进行握手操作,需要定义握手协议的流程,包括请求握手、应答握手和确认握手等步骤。

6.设计错误检测和恢复机制:为了保证数据传输的可靠性,通常需要设计错误检测和恢复机制。

常用的错误检测和恢复机制包括奇偶校验、循环冗余校验(CRC)和重发机制等。

根据通信需求,选择合适的机制。

7.定义协议细节和约束:在编写协议的过程中,需要定义协议的各个细节和约束。

例如,定义数据帧的最大长度限制、通信速率的限制和错误恢复的时间间隔等。

8.编写协议文档:将协议的各个方面编写成文档,包括协议的结构、格式和控制流程等。

文档需要提供足够的信息,以便其他开发人员能够理解和实现该协议。

9.测试和验证协议:在完成协议编写之后,需要进行测试和验证。

可以编写测试用例,模拟不同的通信场景,确保协议的正确性和可靠性。

10.修改和优化协议:如果在测试和验证过程中发现问题,需要根据问题进行修改和优化。

可以根据实际需求进行协议的改进,提高通信的效率和可靠性。

关于自由口通讯协议

关于自由口通讯协议

关于自由口通讯协议此协议为亚控公司为实现组态王与德国西门子公司SIMATIC S7-200系列PLC之间的通讯而制定的串行通讯协议,采用主从的问答方式,上位机为主呼方,下位机为应答方。

协议格式如下,最后一字节为校验字节,校验字节为前面所有字节的按位异或值。

上位机从PLC中读数据:上位机发送读指令:BYTE1: PLC地址 (1~255)BYTE2: 0x00 (读指令代码)BYTE3: 寄存器类型(0-V, 1-Q, 2-I)BYTE4-5: 起始偏移地址(0-9999)BYTE6: 数据个数(1~32 n)BYTE7: 数据类型(1,2,4 m)BYTE8-11: 保留BYTE12: 校验字节PLC应答:读成功时:BYTE1: PLC地址 (1~255)BYTE2: 0x00 (读指令代码)BYTE3: 寄存器类型(0-V, 1-Q, 2-I)BYTE4-5: 起始偏移地址(0-9999)BYTE6: 数据个数(1~32 n)BYTE7: 数据类型(1,2,4 m)BYTE8-n*m+8: 数据BYTEn*m+9: 校验字节读失败时:BYTE1: PLC地址 (1~255)BYTE2: 0x80 (读指令失败代码)BYTE3: 寄存器类型(0-V, 1-Q, 2-I)BYTE4-5: 起始偏移地址(0-9999)BYTE6: 数据个数(1~32 n)BYTE7: 数据类型(1,2,4 m)BYTE8: 0x01(校验错代码)BYTE9-11: 保留BYTE12: 校验字节上位机向PLC中写入数据:上位机发送写指令:BYTE1: PLC地址 (1~255)BYTE2: 0x01 (写指令代码)BYTE3: 寄存器类型(0-V, 1-Q, 2-I)BYTE4-5: 起始偏移地址(0-9999)BYTE6: 数据个数(1 n)BYTE7: 数据类型(1,2,4 m)BYTE8-11: 写入数据BYTE12: 校验字节PLC应答:写成功时:BYTE1: PLC地址 (1~255)BYTE2: 0x01 (写指令代码)BYTE3: 寄存器类型(0-V, 1-Q, 2-I)BYTE4-5: 起始偏移地址(0-9999)BYTE6: 数据个数(1 n)BYTE7: 数据类型(1,2,4 m)BYTE8-11: 保留BYTE12: 校验字节写失败时:BYTE1: PLC地址 (1~255)BYTE2: 0x81 (写指令代码)BYTE3: 寄存器类型(0-V, 1-Q, 2-I)BYTE4-5: 起始偏移地址(0-9999)BYTE6: 数据个数(1 n)BYTE7: 数据类型(1,2,4 m)BYTE8: 0x01(校验错代码)BYTE9-11: 保留BYTE12: 校验字节由于采用自由口通信方式后,梯形图程序通过接收中断和发送中断以及发送指令(XMT)控制通信口的操作。

自由口通讯

自由口通讯

█控制通信口的工作模式:●SMB30(对端口0 即CPU 本体集成RS485 口);●SMB130(对端口1 即通信信号板);控制通信口的工作模式;█控制指令:XMT(发送)指令的使用比较简单。

RCV(接收)指令所需要的控制稍多一些。

●RCV指令的基本工作过程为:☛在逻辑条件满足时,启动(一次)RCV指令,进入接收等待状态☛监视通信端口,等待设置的消息起始条件满足,然后进入消息接收状态☛如果满足了设置的消息结束条件,则结束消息,然后退出接收状态所以,RCV指令启动后并不一定就接收消息,如果没有让它开始消息接收的条件,就一直处于等待接收的状态;如果消息始终没有开始或者结束,通信口就一直处于接收状态。

这时如果尝试执行XMT指令,就不会发送任何消息。

所以确保不同时执行XMT和RCV非常重要,可以使用发送完成中断和接收完成中断功能,在中断程序中启动另一个指令。

☛发送指令(XMT 指令)用于在自由口通信模式下将发送缓冲区(TBL)的数据通过指定的通信端口(PORT)发送出去。

XMT 1.所示。

表1. XMT 指令发送缓存区格式▼发送完成判断:如果将中断子程序连接到发送完成事件,CPU 将在发送完缓冲区的最后一个字符后产生一个中断事件(对于端口0 为中断事件9,对于端口 1 为中断事件26)。

如果不使用中断,也可以通过监视SM4.5(端口0 )或SM4.6(端口 1 )的上升沿信号来判断发送是否完成。

▶注意:使用S7-200 SMART CPU 通信端口1(SB CM01)时,必须在系统块中组态后,方可使用。

☛接收指令(RCV 指令)用于在自由口通信模式下通过指定的通信端口(PORT)接收数据,接收的数据存储到接收缓冲区(TBL),数据长度最多为255个字符。

RCV表1. RCV 指令接收缓存区格式▼接收完成判断:如果中断子程序连接到接收完成事件,CPU 将在接收到最后一个字符后产生一个中断事件(对于端口0 为中断事件23,对于端口 1 为中断事件24)。

s7200自由口通讯教程及编程实例(二)

s7200自由口通讯教程及编程实例(二)

S7-200自由口通讯教程及编程实例(二)排行榜收藏打印发给朋友举报发布者:admin热度19票浏览175次【共1条评论】【我要评论】时间:2009年11月11日19:03三、PLC编程现在,我们已经知道如何用AT指令发送短消息,剩下的工作是用PLC程序来发送这些AT指令。

S7-200的通讯端口为RS-485接口,RS-485接口为半双工接口,因此,编写PLC 程序的关键是避免在通讯端口上同时发送和接收。

我们下面将介绍一种标准的编程模式,按照这种模式编写自由口通讯程序可以有效的避免因同时发送和接收造成的通讯冲突,从而保证程序的正常运行。

1. 初始化Network 1LD SM0.1MOVB 9, SMB30MOVB 2#, SMB87MOVB '>', SMB88MOVW +5, SMW92MOVB 255, SMB94ATCH INT_0, 23ATCH INT_1, 9ENI将上面这段程序添加到主程序中,对PLC的端口0进行初始化。

这段程序以SM0.1为触发条件,每当PLC进入RUN状态时执行一次。

MOVB 9, SMB30该指令将端口0设置为9600,8,N,1 自由口方式MOVB 2#, SMB87SM87.7=1 允许端口0接收字符SM87.6=1 当检测到与SMB88中相同的字符时开始接收,并将该字符当作信息的首字符SM87.5=0 不检测信息的结束字符SM87.4=0 不检测端口空闲状态SM87.3=0 定时器为内部字符定时器,意思是PLC开始接收信息后(检测到起始字符),每接收到一个字符就启动定时器,当定时器到达在SMW92中设置的时间后,即认为定时器超时SM87.2=1 允许在定时器超时后停止接收,并产生接收完成中断SM87.1=0 忽略Break条件MOVB '>', SMB88设置接收起始字符为ASCII码的”>”,当TC35收到AT+CMGS=后将返回”>”,当PLC 收到”>”后发送PDU数据包MOVW +5, SMW92设置定时器超时时间为5 msMOVB 255, SMB94设置RCV指令接收的最大字符数位255ATCH INT_0, 23中断时间23为端口0接收完成中断,将该中断连接到中断0ATCH INT_1, 9中断时间9为端口0发送完成中断,将该中断连接到中断1ENI中断允许2. 接收TC35的信息Network 2LD SM0.0RCV VB100, 0在初始化程序中,端口0以被允许接收来自TC35的信息,在主程序中添加上面的程序将端口0置于接收状态。

自由口模式通信协议-最全资料PPT

自由口模式通信协议-最全资料PPT
任务5
自由口模式通信协议(Freeport Mode) 自由口模式通信是S7-200PLC独特的一种通信方式。自由口协议是指通过编写用
户程序来控制CPU通信端口的操作模式,可以用自定义的通信协议连接多种智能设备。 自由口通信可以使S7-200与任何通信协议公开的设备、控制器进行通信,即S7-200可 以由用户自己定义通信协议(如ASCII协议)。波特率为1.2~115.2 Kb/s。
自S7由-2口00协自议由是口指通通信过范编围写是用任何具有串行通信接口的设备,如打印机、变频器、 S7-200自系由列口PL通C,信用范于围两是个任P何L具C间有的串简行单通数信据接交口换的时设,备用,户如可打以印通机过、编变程频的器方、
缆 自自连由由接口 口可进 模协行 式议以自 通是由 信指通口 协通通 议过过信 编(Fr。写e双e用po绞rt Mo线de)进行连接;如果连接的智能设备具有RS-232接口,可以用PC/PPI电
自缆由连口 接协进议行是自指由通口过通编信写。用 S7-200系自列由P口L通C,信用范于围两是个任P何L具C间有的串简行单通数信据接交口换的时设,备用,户如可打以印通机过、编变程频的器方、
缆连接进行自由口通信。 自由口协议是指通过编写用
缆连接进行自由口通信。 如果连接的智能设备具有RS-232接口,可以用PC/PPI电
任务5
如果连接的智能S设7备-具2有0R0S自-232由接口口,可以通用P信C/P范PI电围是任何具有串行通信接口的设备,如打印机、变频器、
如果连接的智能设备具有RS-232接口,可以用PC/PPI电 可以通过双绞线进行连接;
条码阅读器、调制解调器、上位计算机等。当连接的智能设备具有RS-485接口时, 如自果由连 口接协的议智是能指设通备过具编有写用RS-232接口,可以用PC/PPI电

自由口通信详细设计[详细]

自由口通信详细设计[详细]

⾃由⼝通信详细设计[详细]详细设计1 地址符号的分配在编写库函数的时候,不能够使⽤绝对地址进⾏编程,必须使⽤符号地址,所以在编写程序之前须定义符号地址,符号地址的定义如下:表1 ⾃由⼝库函数符号地址定义2 错误代码定义在⾃由⼝通信中,当通信出现错误时,根据不同的错误类型,定义了⼀些错误代码.代码具体如下:表2 ⾃由⼝通信错误代码3 初始化初始化库函数的主要功能是设置⾃由⼝通信的端⼝、接收信息开始字符、接收信息结束字符、接收信息控制字节、空闲检测时间、发送或接收的最⼤字符数.为了贴近于实际情况,在初始化局部变量中添加了3个输⼊型局部变量.分别⽤于对通信端⼝、接收信息开始字符、接收信息结束字符的设置.局部变量表如下:表3 初始化局部变量定义4 ⾃由⼝在⾃由⼝库函数中添加了7个输⼊型的局部变量和2个输出型的局部变量,局部变量表如下:表4 ⾃由⼝局部变量定义⾃由⼝库函数的主要功能是完成数据的发送、接收、对接收到数据信息BCC校验、对BCC校验成功的数据帧进⾏解码,在程序上对数据的发送、对接收到数据信息BCC校验、对BCC校验成功的数据信息进⾏解码三个功能是通过顺序控制继电器指令来实现的,当满⾜条件时,分别调⽤不同的顺序控制继电器来实现功能.此外,由于库函数没有办法添加中断来检测数据帧的发送完成和接收完成,所以对于接收完成和发送完成是在该程序中通过检测特殊寄存器来实现的,该库函数的主体流程如图1.图1 ⾃由⼝库函数主体流程图4.1 数据发送所谓数据发送就是要将帧头、站地址、控制码、数据标识、数据域长度、数据域、BCC 校验码、帧尾组合成为⼀个数据帧发送出去.在该环节中有两个地⽅需要注意:其⼀,求取BCC 校验码时,需先取站地址开始处存储器⾥值与⼀个初值为0的地址符号存储器相异或,将异或所得结果再与下⼀个存储器相异或,⼀直到数据域的最后⼀个存储器,这个过程通过⼀个循环来实现,由于数据域长度的不确定,所以需要特别注意循环的次数确定;其⼆,求取到的BCC校验码在数据发送缓冲区中存放的具体位置,只知道BCC校验码是存放在数据域的后⾯,但是由于数据域长度的不确定导致了BCC 校验码存放的位置的不确定,故确定BCC校验码存放位置也是需要注意的.由⼝库函数的数据发送流程图如图2:图2 数据发送流程图4.2 对应答帧BCC校验对应答帧BCC校验是为了检测应答帧在数据传输的过程中是否出错,其校验的⽅法很简单,直接求取接收到的应答帧中站地址、控制码、数据标识、数据域长度、数据域的BCC校验码,将所得的结果与应答帧中传过来的BCC校验码⽐较,如果⼀致,表明数据传输过程中没有出错,如果不⼀致表明数据传送过程中出现了错误.对于校验发现出错的应答帧,不再对其进⾏解码,只需主站将错误信息代码通过错误代码存储器指⽰出来即可,BCC校验的流程图如图3:图3 BCC校验流程图4.3 数据解码数据解码是⾃由⼝通信中最为主要的⼀个部分,数据解码的结果是从应答帧返回的数据帧信息中找出主站需要的信息.在数据解码过程中需要进⾏⼀些列的容错判断,⽐如说:返回的应答帧的站地址是否正确;返回帧的数据标识是否⼀致;返回帧的数据域长度是否正确等等,只有当所有的信息都正确的情况下,才能将应答帧中数据域的内容取出放⼊指定地⽅.数据解码的流程图如图4:图4 数据解码流程图。

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

如何编写自由口协议程序,自由口通信的基本步骤
 前面以S7-200SMART与英威腾变频器进行自由口通信为例详细讲解了自由口通信的方法及步骤,本文再带大家一起来学习与V20变频器进行自由口通信的程序编写方法。

V20支持标准的modbusRTU协议,真正使用时可以使用modbus通信,本文主要是教大家如何编写自由口协议程序。

总结了一下自由口通信的基本步骤如下:
1.研究弄懂对方的通信协议。

 自由口也称自由协议或无协议通信,即通信双方没有共同的通信协议,只能临时根据某一方的协议进行发送和接收数据,以达到交换数据的目的。

那幺意味着每次书写的程序没有固定格式,不仅需要变成人员能掌握程序的编写,还要求编程人员能快速的读懂对方的通信协议。

 查阅V20变频器手册得知,FC3 - 读保持寄存器读保持寄存器命令格式: 
 变频器响应反馈数据格式:
 FC6 - 写单一寄存器命令格式:。

相关文档
最新文档