PLC与单片机串行通信技术PLC是可编程逻辑控制器,内部拥有存储程序,并具有编程功能。能够通过数字或模拟方式输入、输出运算、控制、定时等指令实现机械设备运行控制,单片机为微型计算机控制系统,属于大规模集成电路,对中央处理器、数据存储器、定时器等设备的数据处理功能进行整合运用,能够与各种生产系统兼容,相比较而言,PLC操作简单,具有较强抗干扰能力,可以在恶劣环境下高效执行控制指令。

因此,在工业控制领域,可以将利用PLC开发的各种功能模块嵌入单片机系统中,并通过建立串行通信系统维持PLC和单片机的可靠通信,确保各种控制功能顺利实现。其中,串行通信是从计算机总线或其他通道输入一位数据,然后通过连续单一处理完成数据通信的模式。借助串行端口,能够实现多位数据同时收发,达到并行通信的效果。而利用PLC与单片机串行通信,首先需做好PLC串口设置。

前两个字符都一样(是ab)所以系统以第三个字符来确定大小,依据是ACSII码,而在上面的三个字符串的答三个字符中b是最小的,因此abba最小。ascII码比较的。按字符逐个比较,每个字符的比较按照ASCII码值比较比如a的ASCII值就比b的ASCII值小对于abcdabbaabc三个字符串先比较第一字符都是a相等在比较第二个字符都是b相等然后比较第三个字符分别是cbc,b小于c所以中间的字符串最小。

uchardata*ser[32];表示ser中的每个元素是个指针,所以,strcat(str,ser[i]);后,str中的内容是ser[i]指向的RAM的内容,明显不是你串口中发送的内容。while(ser[i]!=\0)下面少了括号{strcat(str,ser[i]);i++;}另外,str是个变量,而你没有赋初值就开始使用,很有可能就把RAM中的不确定地址覆盖了。

错很多地方,先不说逻辑是否行得通了1、后面不要带;号!#defineucharunsignedchar;#defineuintunsignedint;2、这相当是二维的char数组了uchardata*ser[32]如果定义成二维的,和ser[i]temp;及while(ser[i]!=\0)等多处有矛盾。
3、C语言单片机怎字符串比较if的式子有问题,怎会有/号?if((RXDdata[0]G)/(RXDdata[1]N)&&(RXDdata[2]R)&&(RXDdata[1]I))应该是if((RXDdata[0]G)&&(RXDdata[1]N)&&(RXDdata[2]R)&&(RXDdata[1]I))吧。if((RXDdata[0]G)/(RXDdata[1]N)&&(RXDdata[2]R)&&(RXDdata[1]I))最后那个判断难道不是:&&(RXDdata[3]I))嘛。