三菱PLC FX系列编程口通信的若干问题

----最近一段时间,由于工作上的原因,接触到了PC机与PLC 编程口通信方面的开发。开发过程也走过不少的弯路,由于编程口通信协议未被三菱公司公开,所以很难找到一个系统的教材,在网上搜集了许多这方面的资料。最开始在VB上调试的时候非常顺利,按照其通信协议发送了一个字符串"ABCD1234" ,然后在PLC中收到。 当时以为向嵌入式Linux移植会很顺利,但是在定义了数据结构后,往端口发送数据PLC没有收到。对此进行了比较系统的分析。
----首先想到的是VB字符串与C字符串的差别。VB中运行时每一个英文字符都是双字节的Unicode字符,通过Lenb(Char)=2可以看出是双字节。然后就转而去研究Unicode编码问题,对字符进行Unicode编码还是不行。后来查到了VB串行口通信编码方面的资料,才知道VB中运行时字符会自动转换为Unicode,但是在输出时却又转为ASCII(指英文字符),VB真是个大骗子,上了一次大当。既然不是编码问题的话那肯定就是端口设置问题,或者就是别的什么未知问题。然后就去检查各个设置参数。VB里面打开COM1采用 Open "COM1:9600:N:1"的方式来打开串口,打开超级终端监视器,发现无论怎么调节其中的打开参数,都可以正确接收!至少在这里可以说明VB中指定的参数设置也是骗人的。然后就检查Linux程序里关于端口的设置并和通信协议进行比较,突然发现奇偶校验不对,其编程口为偶校验。修改完以后,运行程序,PLC指示灯亮了!
---- 通过以上的经历,总结了以下的经验:

1.VB中的字符编码是在内部自动转换的,所以不要在VB内部去测试其发送的数据。可以采用COM1,2端口用连线跳接的方式直接捕获其二进制值,这样才能清晰的看到VB发送了什么数据。(如果你还没有应用成功,处于调试阶段)
2.要保证每一个端口初始化参数的正确性,任何一个和编程口的设置不一样都不能成功通信。

2004-6-18
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 15
    评论
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值