隐魂123 发表于 2016-3-5 14:56:48

stm32仿三菱PLC要如何实现自由口通讯?

        接收串口数据是通过开启USART的RXNE中断,存放在缓冲区内并用指针指向该区域,通过配置stm32定时器,在中断里不断扫描并对接收指针指向的数据进行校验处理,并通过串口DMA将要发送的数据发送出去,对于Modbus协议这部分已经实现了,最近想实现自由口通讯这个功能,但对于PLC的自由口通讯不是很理解,不知道该如何下手。
        看了一些PLC该功能的介绍,我的理解是添加两个指令,一个是Send发送指令,另一个Rev接收指令,发送前需先确定好数据格式,然后将要发送的数据存放在某片数据寄存器内,当调用Send指令时,则通过串口DMA将存放在寄存器中的数据发送出去,发送完成将某个M标志位置位表示发送完成,梯形图中将该M标志位作为Rev指令的输入触发条件,准备接收数据,然后将数据存放在另一片数据寄存器中,这样就实现了发送接收的功能。
        但有些疑问,因为没有定义协议,底层代码中是不是只要实现可以发送,可以接收数据就行了;是不是就不需要对数据进行校验判断,只要原原本本的发要发的数据,接要接的数据就行了?如果连续不断地接收数据那接收到的数据岂不是一直会覆盖掉,这样的通讯又有何意义?

wenchm2015 发表于 2022-6-2 11:18:35

自由口通讯是西门子S7-200型PLC提出来的一种通信协议;
三菱FX-2N系列,没有自由口通信协议的说法,你可以用三菱FX2N的编程口与PC机(组态软件等)、触控屏通讯;也可以使用485(MODBUS)进行PLC与PLC通讯,或PLC与其他485(MODBUS)设备通讯;

baal 发表于 2022-6-2 20:45:37

本帖最后由 baal 于 2022-6-2 20:59 编辑

自由口协议许多PLC都有,用过欧姆龙三菱的,三菱3U系列就有,可以参考下,基本上就是自己编辑数据格式,然后发送,接收到数据会标志某些位,然后自行处理。还是很好用的,3U有crc指令,modbus可以实现,当然是简化过的。
页: [1]
查看完整版本: stm32仿三菱PLC要如何实现自由口通讯?