用200smart 扩展通讯口CM01采集舵角指示器发讯数据,串口调试助手可读取到舵角指示器的数据,4800bps,8-N-1格式的,发送数据的频率非常高,在连上PLC调试 角度变化时,采集数据没怎么变化,不知是不是中断程序这块编的有问题,中断程序中SMB186闪的频次高,数据不稳定,请教下各位老师主程序和中断程序中如何读取保存舵角指示器发讯的数据比较好?另如何根据ASCII码,使用200smart指令转化成可运算的十进制数据?
图片说明:
最佳答案
”4800bps,8-N-1“这些通讯数据特征,完全可以用modbus rtu通讯。
这个是类似扫描枪等项目读取时很常见的问题,如何采集这些数据,采集频次低了容易漏掉数据,采集频次高了,发现数据及不稳定。
你可以这样试试。
1)假设,定义一个定时中断(中断时间需要你多次测试,舍取一个合适的定时时间)。
2)将从站数据采集到一个连续的数据区,假设为10个(这个也需要根据实际确定采集次数)
3)在定时中断中,做取采集次数的平均值程序,完成后将这些参与计算的数据区清除。
主要定义接收指令的所有参数,必须符合从站数据格式,你测试时先确认这个问题。
提问者对于答案的评价:
感谢WWCWWC老师热心的帮忙!也谢谢sangshunyang和小楼听雨大侠的解惑。后面采取10ms定时中断SMB34,还有SMB187我是根据系统手册上关于RCV指令开始模式来定义,空闲线和起始字符检测,关于SMB189检测消息结束的值也能调入么
最佳答案作者回复:
调用起始符,结束符,或者信息定时器都可以的。
目的是让plc设别信息的开始,和2种方式信息的结束,如果plc检测到有你定义的结束符,或者在通讯过程中丢失的结束符,那么等待到信息定时器时间到,则仍然被判断为信息的结束。
原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc279734.html