整数INT时间S5Time及Time相互转换.docVIP

  • 93
  • 0
  • 约1.8千字
  • 约 5页
  • 2018-10-13 发布于重庆
  • 举报
整数INT时间S5Time及Time相互转换

整数INT_时间S5Time及Time相互转换的困惑 作为热线工程师,每天面临客户大量的各种技术问题,从产品功能、组态设置、参数含义、编程细节到故障诊断,林林总总。不过,总有一些共性的问题,常常在热线中出现。下面就是一个出镜频率很高的例子。? ?客户1:“西门子热线工程师,你好,我用第三方组态软件(如Intouch、iFix、组态王等),想在画面上设置定时器T的时间,以便人工及时修改。但组态软件中没有S5Time数据类型,怎么办?”? ?客户2:“我想在PLC程序中,用整数INT给定时器T的预设时间赋值,怎么做?”? ?客户3:“我用的第三方组态软件(如Intouch、iFix、组态王等),想在画面上设置PID积分时间,但FB41的积分时间TI是Time类型,组态软件中没有Time类型,怎么办?”? ?客户4:“在PLC程序中,数据类型S5Time如何转换到整数INT类型?”? ?以上四个客户,遇到的问题实质上是一样的,就是整数INT、时间S5Time及Time之间的相互转换。? ?如何转换,首先要弄清整数INT、时间S5Time及Time的数据结构。整数INT是16位的数据:? ?? ? ?时间S5Time是16位数据,BCD码格式:? ?? ? ?? ? ?时间Time是32位数据,类似于双整数DINT:? ?? ? ?由此可见,三者之间的转换即是整数INT、双整数DINT及BCD码之间的转换。可以根据数据结构特点,自己编程实现相互转换,这样比较复杂。利用库函数FC33/FC40是最简单方便的。方法如下:? ?1. 整数INT到时间S5Time的转换方法:? ?INT - I_DI指令 - DINT - MOVE指令 - Time - 库函数FC40 - S5Time。? ?? ? ?? ? ?? ? ?2. 整数INT到时间Time的转换方法:INT - I_DI指令 - DINT - MOVE指令 - Time。如图示:? ?? ? ?? ? ?? ?3. 时间S5Time到整数INT的转换方法:? ?S5Time - 库函数FC33 - Time - MOVE指令 - DINT - 取其高字部分,用MOVE指令 - INT。? ?? ? ?? ? ?? ? 主题:回复:CP341做从站modbus RTU与DCS通讯,给DCS的modbus地址怎么确定 2012-09-08 21:29:124楼 现在的进展是: ?PLC????????????????????DCS(Honeywell的PKS)接收的modbus地址 ?DB2.DBD0???????????????00001 ?DB2.DBD4???????????????00003 ?DB2.DBD8???????????????00005 ?DB2.DBD12?????????????00007 ?DB2.DBD16?????????????00009 ?DB2.DBD20?????????????000011 ?DB2.DBD24?????????????000013 ?DB2.DBD28?????????????000015 ?DB2.DBD32?????????????000017 ?DB2.DBD36?????????????000019 ?DB2.DBD40?????????????000021 ?DB2.DBD44?????????????000023 ?DB2.DBX46.0???????????000024?8 ?DB2.DBX46.1???????????000024?9 ?DB2.DBX47.4???????????000024?4 ?DB2.DBX47.5???????????000024?5 ?DB2.DBX47.6???????????000024?6 ?DB2.DBX47.7???????????000024?7 ?模拟量是DB块的地址除2加1???例如:DB2.DBD4?????4/2+1=3?????得出modbus地址00003 ?数字量是由一个字的16个位来确定的,且前8位和后8位调换??例如DB2.DBW46有16个位,到DCS后前8个位是8-15,后8个位是0-7 ?我的思路对吗?

文档评论(0)

1亿VIP精品文档

相关文档