S7-200SMART自由口通讯是指在西门子S7-200SMART系列PLC上,利用其内置的自由口通讯功能与外部设备进行非标准的串行通信。自由口通讯允许用户自定义通信协议,以适应各种不同设备的通信需求。以下将详细介绍如何实现这一功能:
1. **自由口通讯协议的关键条件**:
- **空闲线检测**:这是检测通信线路是否空闲的一种方法,通过设置IL(空闲线检测)、SC(起始字符检测)和BK(Break检测)等参数,当线路上的空闲时间达到SMW90/SMW190设定的值(以毫秒为单位),则认为开始新的消息。
- **起始字符检测**:适用于ASCII协议,通过设置SC=1,当接收到SMB88/SMB188中定义的起始字符时,开始接收消息。
- **空闲线和起始字符**:结合了两种检测方法,先检测空闲线,再寻找起始字符,适合多设备通讯场景。
- **Break检测**:检测连续的0信号时间,用于识别消息的开始。
- **Break和起始字符**:Break检测后,寻找起始字符,确保消息的正确接收。
- **任意字符开场承受**:不设置起始字符,直接开始接收所有字符。
- **任意字符开场,消息定时器超过则停止接收**:在没有其他结束条件的情况下,消息超时后停止接收。
2. **SMB30寄存器**:
- SMB30用于设置通讯参数,如波特率、数据位、校验方式和通讯模式。例如,设置SMB30=16#05,表示8位数据、无校验、波特率19200,启用自由口模式。
3. **SMB87寄存器**:
- SMB87定义了接收消息的控制字节,包括启用消息功能、起始字符检测、结束字符检测、空闲线检测、定时器类型和消息超时等。
4. **其他关键参数**:
- **SMB88**:定义接收消息的起始字符。
- **SMB89**:定义接收消息的结束字符。
- **SMW90**:设置空闲线检测的时间段,单位为毫秒。
- **SMW92**:消息定时器的超时值,超过该值则停止接收。
- **SMB94**:设定最大接收字符数,用于限制接收的数据量。
5. **波特率计算**:
- 计算空闲线时间时,需要考虑到一个字符传输所需时间,例如,19200波特率下,传输一个字符大约需要1000000us/19200 *11*3毫秒(11位包括起始位、数据位、校验位和停止位)。
实现S7-200SMART的自由口通讯,需要根据具体协议配置这些参数,并编写相应的PLC程序来处理发送和接收数据。此外,还需要注意错误检测和纠正机制,确保数据的准确性和完整性。在实际应用中,可能还需要考虑串口握手协议、数据包的确认机制等,以优化通讯效果。