在研究S7-200 SMART时,了解到通过RS485接口可以实现以下几种通信方式:
(1)modbus RTU通信
(2)PPI协议通信
(3)USS协议通信
(4)自由口通信
1.自由口通信是指在PLC和通信设备之间没有共同通信协议时使用的一种通信方式。通常情况下,如果两者之间没有相同的通信协议,就需要使用自由口通信,也称为无协议通信。在自由口通信中,需要根据对方设备的通信数据格式编写一个临时协议。尽管编写自由口通信程序需要编程人员具备一定的技能和对对方通信数据格式的了解,但随着标准通信协议(如modbus、USS等)的普及,自由口通信的应用越来越少。但是对于一些小型设备,如扫码枪等,并没有集成标准通信协议,因此只能使用自由口通信。需要注意的是,modbus和USS实际上可以看作是自由口通信的一种特例。对于许多人来说,自由口通信可能会让人感到手足无措,但只要掌握了一定的规律,其实并不难。为此,我总结了自由口通信的基本步骤:
(1)理解对方的数据格式。
在串行通信中,数据是以位为单位进行传输的。为了确保数据的准确传输,通常会在数据前添加一个起始位、一个校验位和一个停止位(在无校验时为两个停止位)。如图1:
图1:异步通信的字符信息格式
(2)以Modbus RTU为例,我们来详细了解串口通信中数据的发送和接收过程。
Modbus RTU的数据格式如下:
初始位:一个(1)位。
数据位:有七(7)或八(8)个数据位,其中小有效位先发送。
奇偶校验位:一个(1)位,如果设置为无校验,则此位不存在。
停止位:有一个(1)位(在有校验时),或两个(2)位(在无校验时)。
下表给出了数据格式的详细描述:
11位字符帧(BIT1-BIT8为数据位):
10位字符帧(BIT1-BIT7为数据位):
在通信过程中,需要确保通信双方具有相同的波特率、数据格式和奇偶校验位。
波特率:通信速率,即每秒钟传输的位数,单位为比特/秒(bps)。
奇偶校验:偶校验的作用是在数据传输之前附加一个偶校验位,用于表示传输的数据中“1”的个数是奇数还是偶数。奇校验的作用是在数据传输之前附加一个奇校验位,用于表示传输的数据中“1”的个数是奇数还是偶数。
在一个字符帧中,数据位才是真正起作用的部分。起始位、校验位和停止位的添加只是为了正确传输数据位。在实际应用中,必须确保主站和从站的数据位、奇偶校验位和停止位设置一致。
在通信过程中,一个完整的通信报文包括多个数据帧,一般包含地址帧、功能码帧、数据帧和校验帧。在Modbus RTU中,一个报文发送完成后会保持3.5个字节的静默时间,然后再发送下一个报文。如图2:
图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。
2.了解了通信协议的数据格式后,接下来是编写自由口通信程序。下面以控制英威腾变频器的启停为例,详细介绍编写自由口通信程序的步骤:
(1)定义通信端口。
SMB30和SMB130分别为端口0和端口1的控制字节,提供了波特率、奇偶校验、数据位和通信协议的选择。如图3:
图3
通过字节传送指令将分析得到的控制字节数据写入到SMB30或SMB130中。如图4:
图4
例如,将2#01001001写入SMB30,则定义端口0的通信协议为自由协议,波特率为9600,数据位为8位,奇校验。
(2)按照发送指令XMT的缓冲区格式定义发送数据报文。
图5
按照发送指令XMT的缓冲区格式定义发送数据报文。在图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算法程序。
图6
触发发送指令XMT的方式如图7所示。
图7
关于接收数据,有两种方式:一种是利用RCV指令接收,这种方式较为复杂,在此不进行介绍;另一种是利用SMB2缓冲地址接收。当端口0接收到一个字符时,会触发8号中断,并将其存放于SMB2中。通常情况下,利用8号事件触发中断,在中断中将SMB2的数据转存到其他地址,否则下一个数据将覆盖上一个数据,直到接收完所有数据后,置位一个完成标志,延时一定时间再次触发发送指令。接收中断程序如图8所示。
图8
以上介绍了S7-200SMART的自由口通信。使用自由口通信时,编写程序并不是难点,关键在于理解对方通信数据格式。在以后的编程过程中,尽量选择支持标准协议的设备。如果确实需要使用自由口通信,也不必担心,只要按照上述步骤逐步完成,相信一定可以成功进行通信.(文章来源网络,仅供参考。评论处大家可以补充文章解释不对或欠缺的部分)
- 西门子S7-300PLC所有模拟量模块接线问题汇总 2024-06-28
- PLC与西门子触摸屏的RS-485通信,一步步详解 2024-06-28
- 西门子PLC与juedui值编码器的连接、实例和如何对编码器编程 2024-06-28
- 「详细图解」西门子S7-300PLC的电气安装。 2024-06-28
- 湖南西控-西门子S7-300系列PLC的使用要点 2024-06-28
- PLC的安装及其维护,看似简单,细节重要! 2024-06-28
- 西门子S7-300PLC在某钢厂水处理上的应用 2024-06-28
- 完美的PLC程序是什么样子 2024-06-28
- Siemens西门子6ES7193-4CF50-0AA0 2024-06-28
- SIEMENS西门子接头6ES7972-0BA52-0XA0 2024-06-28
- Siemens西门子代理商6EP1334-1LB00 2024-06-28
- Siemens西门子6ES7323-1BH01-0AA0 2024-06-28
- Siemens西门子6SL3130-7TE23-6AA3 2024-06-28
- Siemens西门子6SL3210-1SE21-0UA0 2024-06-28
- Siemens西门子6SL3210-1SE21-8UA0 2024-06-28
联系方式
- 电 话:17838383235
- 经理:徐嘉泉
- 手 机:17838383235
- 微 信:17838383235