Xi'An, China
CIPAC Meeting 2027

MT 30.6 - Water Determination

 

Content Handbook P

 

Reason for Revision

The method was editorially revised, the procedure for coulometric titration was included, a definition of ranges for sample weight was included and the description of equipment was revised.
MT 30.6 supersedes MT 30.5. 

Outline of method

The volumetric determination of water described in this method is based on a titration of the sample in a water free solvent with an iodine containing titrant. The water of the sample is consumed by reacting with the reagents (Karl Fischer reaction). The endpoint of the titration is detected electro-potentiometrically. Interferences by side reactions consuming Karl Fischer reagent lead to higher results (Note 1).

The sample is dissolved or dispersed in a suitable solvent and titrated with an iodine containing solution, called titrant, of known titer (water equivalent).

The optimum pH range for the volumetric Karl Fischer titration is weakly acidic (pH 5 - 7). Samples with pH values outside of this range should be buffered or neutralized using acid or base.

 

Scope

This method is intended for measuring the water content of plant protection products. Water determination by Karl Fischer method can be carried out by two different procedures:

• Volumetric titration (section A)
• Coulometric titration (section B)

Volumetric titration is preferably used for samples having a water content > 0.1% (m/m). The coulometric titration is much more sensitive to water and can be used in a range of 0.001% to 1% water content. The coulometric method is recommended for water contents below 0.5%.

These methods are applicable to all solid and liquid formulation types and materials compatible with the Karl Fischer reagents. Components interfering with the Karl Fischer reaction lead to false results and in most cases to higher values.

The methods are based on the use of automated titration systems.


Failed to start the session because headers have already been sent by "D:\www\www83\plugins\system\debug\src\Extension\Debug.php" at line 377. (500 Whoops, looks like something went wrong.)

RuntimeException RuntimeException

HTTP 500 Whoops, looks like something went wrong.

Failed to start the session because headers have already been sent by "D:\www\www83\plugins\system\debug\src\Extension\Debug.php" at line 377.

Exceptions 2

RuntimeException

  1. if ($this->isActive()) {
  2. throw new \RuntimeException('Failed to start the session: already started by PHP.');
  3. }
  4. if (ini_get('session.use_cookies') && headers_sent($file, $line)) {
  5. throw new \RuntimeException(
  6. sprintf('Failed to start the session because headers have already been sent by "%s" at line %d.', $file, $line)
  7. );
  8. }
  9. if (!session_start()) {
  1. $this->setId($session_clean);
  2. $cookie->set($session_name, '', ['expires' => time() - 3600 ]);
  3. }
  4. }
  5. parent::start();
  6. // Try loading data from the session
  7. if (!empty($_SESSION['joomla'])) {
  8. $this->data = unserialize(base64_decode($_SESSION['joomla']));
  9. }
  1. {
  2. if ($this->isStarted()) {
  3. return;
  4. }
  5. $this->store->start();
  6. $this->setState(SessionState::ACTIVE);
  7. // Initialise the session
  8. $this->setCounter();
  1. * @since 1.0
  2. */
  3. public function has($name)
  4. {
  5. if (!$this->isActive()) {
  6. $this->start();
  7. }
  8. return $this->store->has($name);
  9. }
  1. $name = $args[2] . '.' . $name;
  2. }
  3. }
  4. if (parent::has($name)) {
  5. // Parent is used because of b/c, can be changed in Joomla 6
  6. return parent::get($name, $default);
  7. }
  8. /*
Session->get() in D:\www\www83\libraries\src\Factory.php (line 372)
  1. __CLASS__
  2. ),
  3. E_USER_DEPRECATED
  4. );
  5. $instance = self::getApplication()->getSession()->get('user');
  6. if (\is_null($id)) {
  7. if (!($instance instanceof User)) {
  8. $instance = User::getInstance();
  9. }
  1. {
  2. $renderer = $this->_doc->loadRenderer('module');
  3. $buffer = '';
  4. $app = Factory::getApplication();
  5. $user = Factory::getUser();
  6. $frontediting = ($app->isClient('site') && $app->get('frontediting', 1) && !$user->guest);
  7. $menusEditing = ($app->get('frontediting', 1) == 2) && $user->authorise('core.edit', 'com_menus');
  8. foreach (ModuleHelper::getModules($position) as $mod) {
  9. $moduleHtml = $renderer->render($mod, $params, $content);
ModulesRenderer->render() in D:\www\www83\libraries\src\Document\HtmlDocument.php (line 578)
  1. $cbuffer[$hash] = $tmpdata;
  2. $cache->store($cbuffer, 'cbuffer_' . $type);
  3. } else {
  4. $this->setBuffer($renderer->render($name, $attribs, null), $type, $name, $title);
  5. }
  6. return parent::$_buffer[$type][$name][$title];
  7. }
HtmlDocument->getBuffer() in D:\www\www83\libraries\src\Document\HtmlDocument.php (line 897)
  1. $replace = [];
  2. $with = [];
  3. foreach ($this->_template_tags as $jdoc => $args) {
  4. $replace[] = $jdoc;
  5. $with[] = $this->getBuffer($args['type'], $args['name'], $args['attribs']);
  6. }
  7. return str_replace($replace, $with, $this->_template);
  8. }
  9. }
HtmlDocument->_renderTemplate() in D:\www\www83\libraries\src\Document\HtmlDocument.php (line 650)
  1. if (\array_key_exists('csp_nonce', $params) && $params['csp_nonce'] !== null) {
  2. $this->cspNonce = $params['csp_nonce'];
  3. }
  4. $data = $this->_renderTemplate();
  5. parent::render($caching, $params);
  6. return $data;
  7. }
HtmlDocument->render() in D:\www\www83\libraries\src\Document\ErrorDocument.php (line 139)
  1. $this->debug = $params['debug'] ?? false;
  2. $this->error = $this->_error;
  3. $params['file'] = 'error.php';
  4. return parent::render($cache, $params);
  5. }
  6. /**
  7. * Render the backtrace
  8. *
  1. ob_end_clean();
  2. }
  3. $this->getDocument()->setTitle(Text::_('Error') . ': ' . $error->getCode());
  4. return $this->getDocument()->render(
  5. false,
  6. [
  7. 'template' => $template->template,
  8. 'directory' => JPATH_THEMES,
  9. 'debug' => JDEBUG,
  1. 'subject' => $app,
  2. 'document' => $renderer->getDocument(),
  3. ])
  4. );
  5. $data = $renderer->render($error);
  6. // If nothing was rendered, just use the message from the Exception
  7. if (empty($data)) {
  8. $data = $error->getMessage();
  9. }
ExceptionHandler::render() in D:\www\www83\libraries\src\Exception\ExceptionHandler.php (line 76)
  1. * @since 3.10.0
  2. */
  3. public static function handleException(\Throwable $error)
  4. {
  5. static::logException($error);
  6. static::render($error);
  7. }
  8. /**
  9. * Render the error page based on an exception.
  10. *
ExceptionHandler::handleException() in D:\www\www83\libraries\src\Application\CMSApplication.php (line 334)
  1. );
  2. // Trigger the onError event.
  3. $this->dispatchEvent('onError', $event);
  4. ExceptionHandler::handleException($event->getError());
  5. }
  6. // Trigger the onBeforeRespond event.
  7. $this->dispatchEvent(
  8. 'onBeforeRespond',
CMSApplication->execute() in D:\www\www83\index.php (line 35)
  1. // Run the application - All executable code should be triggered through this file
  2. require_once dirname(__FILE__) . '/includes/app.php';
  3. $app = JFactory::getApplication('site');
  4. $app->execute();

RuntimeException

Failed to start the session because headers have already been sent by "D:\www\www83\plugins\system\debug\src\Extension\Debug.php" at line 377.

  1. if ($this->isActive()) {
  2. throw new \RuntimeException('Failed to start the session: already started by PHP.');
  3. }
  4. if (ini_get('session.use_cookies') && headers_sent($file, $line)) {
  5. throw new \RuntimeException(
  6. sprintf('Failed to start the session because headers have already been sent by "%s" at line %d.', $file, $line)
  7. );
  8. }
  9. if (!session_start()) {
  1. $this->setId($session_clean);
  2. $cookie->set($session_name, '', ['expires' => time() - 3600 ]);
  3. }
  4. }
  5. parent::start();
  6. // Try loading data from the session
  7. if (!empty($_SESSION['joomla'])) {
  8. $this->data = unserialize(base64_decode($_SESSION['joomla']));
  9. }
  1. {
  2. if ($this->isStarted()) {
  3. return;
  4. }
  5. $this->store->start();
  6. $this->setState(SessionState::ACTIVE);
  7. // Initialise the session
  8. $this->setCounter();
  1. * @since 1.0
  2. */
  3. public function has($name)
  4. {
  5. if (!$this->isActive()) {
  6. $this->start();
  7. }
  8. return $this->store->has($name);
  9. }
  1. $name = $args[2] . '.' . $name;
  2. }
  3. }
  4. if (parent::has($name)) {
  5. // Parent is used because of b/c, can be changed in Joomla 6
  6. return parent::get($name, $default);
  7. }
  8. /*
Session->get() in D:\www\www83\libraries\src\Factory.php (line 372)
  1. __CLASS__
  2. ),
  3. E_USER_DEPRECATED
  4. );
  5. $instance = self::getApplication()->getSession()->get('user');
  6. if (\is_null($id)) {
  7. if (!($instance instanceof User)) {
  8. $instance = User::getInstance();
  9. }
  1. *
  2. * @since 3.2
  3. */
  4. protected function initialiseApp($options = [])
  5. {
  6. $user = Factory::getUser();
  7. // If the user is a guest we populate it with the guest user group.
  8. if ($user->guest) {
  9. $guestUsergroup = ComponentHelper::getParams('com_users')->get('guest_usergroup', 1);
  10. $user->groups = [$guestUsergroup];
SiteApplication->initialiseApp() in D:\www\www83\libraries\src\Application\SiteApplication.php (line 237)
  1. * @since 3.2
  2. */
  3. protected function doExecute()
  4. {
  5. // Initialise the application
  6. $this->initialiseApp();
  7. // Mark afterInitialise in the profiler.
  8. JDEBUG ? $this->profiler->mark('afterInitialise') : null;
  9. // Route the application
SiteApplication->doExecute() in D:\www\www83\libraries\src\Application\CMSApplication.php (line 304)
  1. $this->sanityCheckSystemVariables();
  2. $this->setupLogging();
  3. $this->createExtensionNamespaceMap();
  4. // Perform application routines.
  5. $this->doExecute();
  6. // If we have an application document object, render it.
  7. if ($this->document instanceof \Joomla\CMS\Document\Document) {
  8. // Render the application output.
  9. $this->render();
CMSApplication->execute() in D:\www\www83\index.php (line 35)
  1. // Run the application - All executable code should be triggered through this file
  2. require_once dirname(__FILE__) . '/includes/app.php';
  3. $app = JFactory::getApplication('site');
  4. $app->execute();

Stack Traces 2

[2/2] RuntimeException
RuntimeException:
Failed to start the session because headers have already been sent by "D:\www\www83\plugins\system\debug\src\Extension\Debug.php" at line 377.

  at D:\www\www83\libraries\vendor\joomla\session\src\Storage\NativeStorage.php:453
  at Joomla\Session\Storage\NativeStorage->start()
     (D:\www\www83\libraries\src\Session\Storage\JoomlaStorage.php:313)
  at Joomla\CMS\Session\Storage\JoomlaStorage->start()
     (D:\www\www83\libraries\vendor\joomla\session\src\Session.php:396)
  at Joomla\Session\Session->start()
     (D:\www\www83\libraries\vendor\joomla\session\src\Session.php:327)
  at Joomla\Session\Session->has()
     (D:\www\www83\libraries\src\Session\Session.php:194)
  at Joomla\CMS\Session\Session->get()
     (D:\www\www83\libraries\src\Factory.php:372)
  at Joomla\CMS\Factory::getUser()
     (D:\www\www83\libraries\src\Document\Renderer\Html\ModulesRenderer.php:46)
  at Joomla\CMS\Document\Renderer\Html\ModulesRenderer->render()
     (D:\www\www83\libraries\src\Document\HtmlDocument.php:578)
  at Joomla\CMS\Document\HtmlDocument->getBuffer()
     (D:\www\www83\libraries\src\Document\HtmlDocument.php:897)
  at Joomla\CMS\Document\HtmlDocument->_renderTemplate()
     (D:\www\www83\libraries\src\Document\HtmlDocument.php:650)
  at Joomla\CMS\Document\HtmlDocument->render()
     (D:\www\www83\libraries\src\Document\ErrorDocument.php:139)
  at Joomla\CMS\Document\ErrorDocument->render()
     (D:\www\www83\libraries\src\Error\Renderer\HtmlRenderer.php:70)
  at Joomla\CMS\Error\Renderer\HtmlRenderer->render()
     (D:\www\www83\libraries\src\Exception\ExceptionHandler.php:142)
  at Joomla\CMS\Exception\ExceptionHandler::render()
     (D:\www\www83\libraries\src\Exception\ExceptionHandler.php:76)
  at Joomla\CMS\Exception\ExceptionHandler::handleException()
     (D:\www\www83\libraries\src\Application\CMSApplication.php:334)
  at Joomla\CMS\Application\CMSApplication->execute()
     (D:\www\www83\index.php:35)                
[1/2] RuntimeException
RuntimeException:
Failed to start the session because headers have already been sent by "D:\www\www83\plugins\system\debug\src\Extension\Debug.php" at line 377.

  at D:\www\www83\libraries\vendor\joomla\session\src\Storage\NativeStorage.php:453
  at Joomla\Session\Storage\NativeStorage->start()
     (D:\www\www83\libraries\src\Session\Storage\JoomlaStorage.php:313)
  at Joomla\CMS\Session\Storage\JoomlaStorage->start()
     (D:\www\www83\libraries\vendor\joomla\session\src\Session.php:396)
  at Joomla\Session\Session->start()
     (D:\www\www83\libraries\vendor\joomla\session\src\Session.php:327)
  at Joomla\Session\Session->has()
     (D:\www\www83\libraries\src\Session\Session.php:194)
  at Joomla\CMS\Session\Session->get()
     (D:\www\www83\libraries\src\Factory.php:372)
  at Joomla\CMS\Factory::getUser()
     (D:\www\www83\libraries\src\Application\SiteApplication.php:565)
  at Joomla\CMS\Application\SiteApplication->initialiseApp()
     (D:\www\www83\libraries\src\Application\SiteApplication.php:237)
  at Joomla\CMS\Application\SiteApplication->doExecute()
     (D:\www\www83\libraries\src\Application\CMSApplication.php:304)
  at Joomla\CMS\Application\CMSApplication->execute()
     (D:\www\www83\index.php:35)