PLC通过串口转发中文字符串

我这边有这样一种场景,上位机在远程服务器上,要向现场一台串口设备发送信息,信息包含中文、子母和数字混合一起。
想通过现场已组态好的PLC(300,1200都有)转发一下,就是把信息发送到PLC的DB块里,再由PLC经过串口发给现场的串口设备,保证信息(特别是中文)的完整转发。
请问各位大神:
这种方法可行吗;
如果可行需要怎么实现。
谢谢!

问题补充:
问题补充:
我这边用CPU315-2DP加CP341串口模块通过ASCII协议与串口设备连接,通讯设置:波特率9600,数据位8,停止位1,奇偶校验None
上位发送信息到DB1,然后程序通过P_SND_RK指令把DB1内的数据发送出去。
通过串口调试工具测试发现,字母和数字能够顺利发送,但是中文不行,DB块会显示乱码,串口会把它过滤掉。
如果上位机把中文、字母和数字混合发送,如“1A中国123ABC”
DB1接收的是“1A????123ABC”,通过串口转发出去的信息是“1A123ABC”,中间的“中国”没有了。
请问各位大神问题出在哪里

图片说明:

PLC通过串口转发中文字符串    PLC通过串口转发中文字符串    PLC通过串口转发中文字符串    PLC通过串口转发中文字符串    PLC通过串口转发中文字符串   

钻石用户推荐最佳答案

字母和数字的字符,在PLC中的类型为CHAR,占用一个字节,字符“1” 对应十六进制 16#31,字符"A" 对应十六进制 16#41 。
而汉字在PLC中需要占用两个字节,在某些支持数据类型 WCHAR 的PLC中可以正常显示汉字(例如S7-1500),而300PLC不支持 WCHAR 类型;
中国的“中”字需要两个字节存储,对应的十六进制数为 16#4e2d,“国”对应的十六进制数为 16#56fd;你可以试试把那4个问号的字节按照十六进制显示,看看是不是我这里说的 4e  2d  56  fd 。
串口调试助手不能正常显示,也是同样的道理,它不支持中文显示,你可以选择十六进制显示看看。
总结:虽然300PLC不支持显示汉字,但是可以利用它将每个汉字的两个字节原封不动的十六进制数传送出去就行,接收方是否能正确显示,那得看接收方是否支持汉字。

提问者对于答案的评价:

原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc347034.html

(1)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2021年7月4日
下一篇 2021年7月4日

相关推荐

发表回复

登录后才能评论